summaryrefslogtreecommitdiff
path: root/cpan/Compress-Raw-Zlib/Makefile.PL
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2009-10-01 14:56:12 +0100
committerNicholas Clark <nick@ccl4.org>2009-10-01 14:56:12 +0100
commitc6f84bbd389ea6d2856b77528c846aeabb0d3ec8 (patch)
tree402a91566730446509597fd1c9c566e1d1b1ad2f /cpan/Compress-Raw-Zlib/Makefile.PL
parentd371e02a597f759bb8188a51ce0eaac8bb8ce869 (diff)
downloadperl-c6f84bbd389ea6d2856b77528c846aeabb0d3ec8.tar.gz
Move Compress::Raw::Zlib from ext/ to cpan/
Diffstat (limited to 'cpan/Compress-Raw-Zlib/Makefile.PL')
-rw-r--r--cpan/Compress-Raw-Zlib/Makefile.PL386
1 files changed, 386 insertions, 0 deletions
diff --git a/cpan/Compress-Raw-Zlib/Makefile.PL b/cpan/Compress-Raw-Zlib/Makefile.PL
new file mode 100644
index 0000000000..d141df42a0
--- /dev/null
+++ b/cpan/Compress-Raw-Zlib/Makefile.PL
@@ -0,0 +1,386 @@
+#! perl -w
+
+use strict ;
+require 5.004 ;
+
+use private::MakeUtil;
+use ExtUtils::MakeMaker 5.16 ;
+use ExtUtils::Install (); # only needed to check for version
+
+my $ZLIB_LIB ;
+my $ZLIB_INCLUDE ;
+my $BUILD_ZLIB = 0 ;
+my $OLD_ZLIB = '' ;
+my $WALL = '' ;
+my $GZIP_OS_CODE = -1 ;
+my $USE_PPPORT_H = ($ENV{PERL_CORE}) ? '' : '-DUSE_PPPORT_H';
+
+#$WALL = ' -pedantic ' if $Config{'cc'} =~ /gcc/ ;
+#$WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ;
+
+# Ticket #18986 says that ExtUtils::Install 1.39 fixes the in-use issue
+# on win32/cygwin, so make the code below conditional on the version of
+# ExtUtils::Install.
+
+# Don't ask if MM_USE_DEFAULT is set -- enables perl core building on cygwin
+if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39
+ and not ($ENV{PERL_MM_USE_DEFAULT} or $ENV{PERL_CORE}))
+{
+ print <<EOM ;
+
+I see you are running Cygwin.
+
+Please note that this module cannot be installed on Cygwin using the CPAN
+shell. The CPAN Shell uses Compress::Raw::Zlib internally and it is not
+possible to delete an active DLL.
+
+If you are running the CPAN shell, please exit it and install this module
+by hand by running 'make install' under the directory
+
+ ~/.cpan/build/Compress-Raw-Zlib-VERSION
+
+EOM
+
+ print "Do you want to continue? [Y/N]: " ;
+ my $answer = <STDIN> ;
+
+ if ($answer =~ /^yes|y/i)
+ {
+ print "continuing...\n"
+ }
+ else
+ {
+ print "exiting...\n" ;
+ exit 1 ;
+ }
+
+
+}
+
+ParseCONFIG() ;
+
+UpDowngrade(getPerlFiles('MANIFEST'))
+ unless $ENV{PERL_CORE};
+
+WriteMakefile(
+ NAME => 'Compress::Raw::Zlib',
+ VERSION_FROM => 'lib/Compress/Raw/Zlib.pm',
+ INC => "-I$ZLIB_INCLUDE" ,
+ DEFINE => "$OLD_ZLIB $WALL -DGZIP_OS_CODE=$GZIP_OS_CODE $USE_PPPORT_H" ,
+ XS => { 'Zlib.xs' => 'Zlib.c'},
+ 'depend' => { 'Makefile' => 'config.in' },
+ 'clean' => { FILES => '*.c constants.h constants.xs' },
+ 'dist' => { COMPRESS => 'gzip',
+ TARFLAGS => '-chvf',
+ SUFFIX => 'gz',
+ DIST_DEFAULT => 'MyTrebleCheck tardist',
+ },
+
+ (
+ $BUILD_ZLIB
+ ? zlib_files($ZLIB_LIB)
+ : (LIBS => [ "-L$ZLIB_LIB -lz " ])
+ ),
+
+ INSTALLDIRS => ($] >= 5.009 ? 'perl' : 'site'),
+
+ ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
+ ('LICENSE' => 'perl') : ()),
+
+) ;
+
+my @names = qw(
+
+ DEF_WBITS
+ MAX_MEM_LEVEL
+ MAX_WBITS
+ OS_CODE
+
+ Z_ASCII
+ Z_BEST_COMPRESSION
+ Z_BEST_SPEED
+ Z_BINARY
+ Z_BLOCK
+ Z_BUF_ERROR
+ Z_DATA_ERROR
+ Z_DEFAULT_COMPRESSION
+ Z_DEFAULT_STRATEGY
+ Z_DEFLATED
+ Z_ERRNO
+ Z_FILTERED
+ Z_FINISH
+ Z_FIXED
+ Z_FULL_FLUSH
+ Z_HUFFMAN_ONLY
+ Z_MEM_ERROR
+ Z_NEED_DICT
+ Z_NO_COMPRESSION
+ Z_NO_FLUSH
+ Z_NULL
+ Z_OK
+ Z_PARTIAL_FLUSH
+ Z_RLE
+ Z_STREAM_END
+ Z_STREAM_ERROR
+ Z_SYNC_FLUSH
+ Z_UNKNOWN
+ Z_VERSION_ERROR
+
+);
+ #ZLIB_VERNUM
+
+if (eval {require ExtUtils::Constant; 1}) {
+ # Check the constants above all appear in @EXPORT in Zlib.pm
+ my %names = map { $_, 1} @names, 'ZLIB_VERSION';
+ open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
+ while (<F>)
+ {
+ last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
+ }
+
+ while (<F>)
+ {
+ last if /^\s*\)/ ;
+ /(\S+)/ ;
+ delete $names{$1} if defined $1 ;
+ }
+ close F ;
+
+ if ( keys %names )
+ {
+ my $missing = join ("\n\t", sort keys %names) ;
+ die "The following names are missing from \@EXPORT in Zlib.pm\n" .
+ "\t$missing\n" ;
+ }
+
+ push @names, {name => 'ZLIB_VERSION', type => 'PV' };
+
+ ExtUtils::Constant::WriteConstants(
+ NAME => 'Zlib',
+ NAMES => \@names,
+ C_FILE => 'constants.h',
+ XS_FILE => 'constants.xs',
+
+ );
+}
+else {
+ foreach my $name (qw( constants.h constants.xs ))
+ {
+ my $from = catfile('fallback', $name);
+ copy ($from, $name)
+ or die "Can't copy $from to $name: $!";
+ }
+}
+
+sub ParseCONFIG
+{
+ my ($k, $v) ;
+ my @badkey = () ;
+ my %Info = () ;
+ my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
+ my %ValidOption = map {$_, 1} @Options ;
+ my %Parsed = %ValidOption ;
+ my $CONFIG = 'config.in' ;
+
+ print "Parsing $CONFIG...\n" ;
+
+ open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
+ while (<F>) {
+ s/^\s*|\s*$//g ;
+ next if /^\s*$/ or /^\s*#/ ;
+ s/\s*#\s*$// ;
+
+ ($k, $v) = split(/\s+=\s+/, $_, 2) ;
+ $k = uc $k ;
+ if ($ValidOption{$k}) {
+ delete $Parsed{$k} ;
+ $Info{$k} = $v ;
+ }
+ else {
+ push(@badkey, $k) ;
+ }
+ }
+ close F ;
+
+ print "Unknown keys in $CONFIG ignored [@badkey]\n"
+ if @badkey ;
+
+ # check parsed values
+ my @missing = () ;
+ die "The following keys are missing from $CONFIG [@missing]\n"
+ if @missing = keys %Parsed ;
+
+ $ZLIB_INCLUDE = $ENV{'ZLIB_INCLUDE'} || $Info{'INCLUDE'} ;
+ $ZLIB_LIB = $ENV{'ZLIB_LIB'} || $Info{'LIB'} ;
+
+ if ($^O eq 'VMS') {
+ $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
+ $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
+ }
+
+ my $y = $ENV{'OLD_ZLIB'} || $Info{'OLD_ZLIB'} ;
+ $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
+
+ my $x = $ENV{'BUILD_ZLIB'} || $Info{'BUILD_ZLIB'} ;
+
+ if ($x and $x =~ /^yes|on|true|1$/i ) {
+
+ $BUILD_ZLIB = 1 ;
+
+ # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
+ # BUILD_ZLIB is specified.
+ die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
+ if $ZLIB_LIB ne $ZLIB_INCLUDE ;
+
+ # Check the zlib source directory exists
+ die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
+ unless -d $ZLIB_LIB ;
+
+ # check for a well known file
+ die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
+ unless -e catfile($ZLIB_LIB, 'zlib.h') ;
+
+
+ # write the Makefile
+ print "Building Zlib enabled\n" ;
+ }
+
+ $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
+ ? $ENV{'GZIP_OS_CODE'}
+ : $Info{'GZIP_OS_CODE'} ;
+
+ die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
+ unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
+ || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
+
+ if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
+ {
+ print "Auto Detect Gzip OS Code..\n" ;
+ $GZIP_OS_CODE = getOSCode() ;
+ }
+
+ my $name = getOSname($GZIP_OS_CODE);
+ print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
+
+ print <<EOM if 0 ;
+ INCLUDE [$ZLIB_INCLUDE]
+ LIB [$ZLIB_LIB]
+ GZIP_OS_CODE [$GZIP_OS_CODE]
+ OLD_ZLIB [$OLD_ZLIB]
+ BUILD_ZLIB [$BUILD_ZLIB]
+
+EOM
+
+ print "Looks Good.\n" ;
+
+}
+
+
+
+sub zlib_files
+{
+ my $dir = shift ;
+
+ my @h_files = ();
+ my @c_files = ();
+
+ if (-f catfile($dir, "infback.c")) {
+ # zlib 1.2.0 or greater
+ #
+ @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
+ zutil.h deflate.h inffixed.h inftrees.h zconf.h
+ zlib.h
+ );
+ @c_files = qw(adler32 crc32 infback inflate uncompr
+ compress deflate inffast inftrees
+ trees zutil
+ );
+ }
+ else {
+ # zlib 1.1.x
+
+ @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
+ infblock.h inffast.h infutil.h zlib.h
+ );
+ @c_files = qw(adler32 compress crc32 uncompr
+ deflate trees zutil inflate infblock
+ inftrees infcodes infutil inffast
+ );
+ }
+
+ @h_files = map { catfile($dir, $_) } @h_files ;
+ my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
+ @c_files = map { "$_.c" } 'Zlib', @c_files ;
+
+ foreach my $file (@c_files)
+ { copy(catfile($dir, $file), '.') }
+
+ return (
+ #'H' => [ @h_files ],
+ 'C' => [ @c_files ] ,
+ #'OBJECT' => qq[ @o_files ],
+ 'OBJECT' => q[ $(O_FILES) ],
+
+
+ ) ;
+}
+
+
+
+use vars qw ( @GZIP_OS_Names %OSnames) ;
+
+BEGIN
+{
+ @GZIP_OS_Names = (
+ [ '' => 0, 'MS-DOS' ],
+ [ 'amigaos' => 1, 'Amiga' ],
+ [ 'VMS' => 2, 'VMS' ],
+ [ '' => 3, 'Unix/Default' ],
+ [ '' => 4, 'VM/CMS' ],
+ [ '' => 5, 'Atari TOS' ],
+ [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
+ [ 'MacOS' => 7, 'Macintosh' ],
+ [ '' => 8, 'Z-System' ],
+ [ '' => 9, 'CP/M' ],
+ [ '' => 10, 'TOPS-20' ],
+ [ '' => 11, 'NTFS (NT)' ],
+ [ '' => 12, 'SMS QDOS' ],
+ [ '' => 13, 'Acorn RISCOS' ],
+ [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
+ [ '' => 15, 'MVS' ],
+ [ 'beos' => 16, 'BeOS' ],
+ [ '' => 17, 'Tandem/NSK' ],
+ [ '' => 18, 'THEOS' ],
+ [ '' => 255, 'Unknown OS' ],
+ );
+
+ %OSnames = map { $$_[1] => $$_[2] }
+ @GZIP_OS_Names ;
+}
+
+sub getOSCode
+{
+ my $default = 3 ; # Unix is the default
+
+ my $uname = $^O;
+
+ for my $h (@GZIP_OS_Names)
+ {
+ my ($pattern, $code, $name) = @$h;
+
+ return $code
+ if $pattern && $uname eq $pattern ;
+ }
+
+ return $default ;
+}
+
+sub getOSname
+{
+ my $code = shift ;
+
+ return $OSnames{$code} || 'Unknown OS' ;
+}
+
+# end of file Makefile.PL
+