7 use ExtUtils::MakeMaker 5.16 ;
8 use ExtUtils::Install (); # only needed to check for version
15 my $GZIP_OS_CODE = -1 ;
16 my $USE_PPPORT_H = ($ENV{PERL_CORE}) ? '' : '-DUSE_PPPORT_H';
18 #$WALL = ' -pedantic ' if $Config{'cc'} =~ /gcc/ ;
19 #$WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ;
21 # Ticket #18986 says that ExtUtils::Install 1.39 fixes the in-use issue
22 # on win32/cygwin, so make the code below conditional on the version of
25 # Don't ask if MM_USE_DEFAULT is set -- enables perl core building on cygwin
26 if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39
27 and not ($ENV{PERL_MM_USE_DEFAULT} or $ENV{PERL_CORE}))
31 I see you are running Cygwin.
33 Please note that this module cannot be installed on Cygwin using the CPAN
34 shell. The CPAN Shell uses Compress::Raw::Zlib internally and it is not
35 possible to delete an active DLL.
37 If you are running the CPAN shell, please exit it and install this module
38 by hand by running 'make install' under the directory
40 ~/.cpan/build/Compress-Raw-Zlib-VERSION
44 print "Do you want to continue? [Y/N]: " ;
45 my $answer = <STDIN> ;
47 if ($answer =~ /^yes|y/i)
49 print "continuing...\n"
53 print "exiting...\n" ;
62 UpDowngrade(getPerlFiles('MANIFEST'))
63 unless $ENV{PERL_CORE};
66 NAME => 'Compress::Raw::Zlib',
67 VERSION_FROM => 'lib/Compress/Raw/Zlib.pm',
68 INC => "-I$ZLIB_INCLUDE" ,
69 DEFINE => "$OLD_ZLIB $WALL -DGZIP_OS_CODE=$GZIP_OS_CODE $USE_PPPORT_H" ,
70 XS => { 'Zlib.xs' => 'Zlib.c'},
71 'depend' => { 'Makefile' => 'config.in' },
72 'clean' => { FILES => '*.c constants.h constants.xs' },
73 'dist' => { COMPRESS => 'gzip',
76 DIST_DEFAULT => 'MyTrebleCheck tardist',
81 ? zlib_files($ZLIB_LIB)
82 : (LIBS => [ "-L$ZLIB_LIB -lz " ])
85 INSTALLDIRS => ($] >= 5.009 ? 'perl' : 'site'),
87 ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
88 ('LICENSE' => 'perl') : ()),
106 Z_DEFAULT_COMPRESSION
132 if (eval {require ExtUtils::Constant; 1}) {
133 # Check the constants above all appear in @EXPORT in Zlib.pm
134 my %names = map { $_, 1} @names, 'ZLIB_VERSION';
135 open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
138 last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
145 delete $names{$1} if defined $1 ;
151 my $missing = join ("\n\t", sort keys %names) ;
152 die "The following names are missing from \@EXPORT in Zlib.pm\n" .
156 push @names, {name => 'ZLIB_VERSION', type => 'PV' };
158 ExtUtils::Constant::WriteConstants(
161 C_FILE => 'constants.h',
162 XS_FILE => 'constants.xs',
167 foreach my $name (qw( constants.h constants.xs ))
169 my $from = catfile('fallback', $name);
171 or die "Can't copy $from to $name: $!";
180 my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
181 my %ValidOption = map {$_, 1} @Options ;
182 my %Parsed = %ValidOption ;
183 my $CONFIG = 'config.in' ;
185 print "Parsing $CONFIG...\n" ;
187 open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
190 next if /^\s*$/ or /^\s*#/ ;
193 ($k, $v) = split(/\s+=\s+/, $_, 2) ;
195 if ($ValidOption{$k}) {
205 print "Unknown keys in $CONFIG ignored [@badkey]\n"
208 # check parsed values
210 die "The following keys are missing from $CONFIG [@missing]\n"
211 if @missing = keys %Parsed ;
213 $ZLIB_INCLUDE = $ENV{'ZLIB_INCLUDE'} || $Info{'INCLUDE'} ;
214 $ZLIB_LIB = $ENV{'ZLIB_LIB'} || $Info{'LIB'} ;
217 $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
218 $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
221 my $y = $ENV{'OLD_ZLIB'} || $Info{'OLD_ZLIB'} ;
222 $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
224 my $x = $ENV{'BUILD_ZLIB'} || $Info{'BUILD_ZLIB'} ;
226 if ($x and $x =~ /^yes|on|true|1$/i ) {
230 # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
231 # BUILD_ZLIB is specified.
232 die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
233 if $ZLIB_LIB ne $ZLIB_INCLUDE ;
235 # Check the zlib source directory exists
236 die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
237 unless -d $ZLIB_LIB ;
239 # check for a well known file
240 die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
241 unless -e catfile($ZLIB_LIB, 'zlib.h') ;
245 print "Building Zlib enabled\n" ;
248 $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
249 ? $ENV{'GZIP_OS_CODE'}
250 : $Info{'GZIP_OS_CODE'} ;
252 die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
253 unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
254 || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
256 if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
258 print "Auto Detect Gzip OS Code..\n" ;
259 $GZIP_OS_CODE = getOSCode() ;
262 my $name = getOSname($GZIP_OS_CODE);
263 print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
266 INCLUDE [$ZLIB_INCLUDE]
268 GZIP_OS_CODE [$GZIP_OS_CODE]
270 BUILD_ZLIB [$BUILD_ZLIB]
274 print "Looks Good.\n" ;
287 if (-f catfile($dir, "infback.c")) {
288 # zlib 1.2.0 or greater
290 @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
291 zutil.h deflate.h inffixed.h inftrees.h zconf.h
294 @c_files = qw(adler32 crc32 infback inflate uncompr
295 compress deflate inffast inftrees
302 @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
303 infblock.h inffast.h infutil.h zlib.h
305 @c_files = qw(adler32 compress crc32 uncompr
306 deflate trees zutil inflate infblock
307 inftrees infcodes infutil inffast
311 @h_files = map { catfile($dir, $_) } @h_files ;
312 my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
313 @c_files = map { "$_.c" } 'Zlib', @c_files ;
315 foreach my $file (@c_files)
316 { copy(catfile($dir, $file), '.') }
319 #'H' => [ @h_files ],
320 'C' => [ @c_files ] ,
321 #'OBJECT' => qq[ @o_files ],
322 'OBJECT' => q[ $(O_FILES) ],
330 use vars qw ( @GZIP_OS_Names %OSnames) ;
335 [ '' => 0, 'MS-DOS' ],
336 [ 'amigaos' => 1, 'Amiga' ],
337 [ 'VMS' => 2, 'VMS' ],
338 [ '' => 3, 'Unix/Default' ],
339 [ '' => 4, 'VM/CMS' ],
340 [ '' => 5, 'Atari TOS' ],
341 [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
342 [ 'MacOS' => 7, 'Macintosh' ],
343 [ '' => 8, 'Z-System' ],
345 [ '' => 10, 'TOPS-20' ],
346 [ '' => 11, 'NTFS (NT)' ],
347 [ '' => 12, 'SMS QDOS' ],
348 [ '' => 13, 'Acorn RISCOS' ],
349 [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
351 [ 'beos' => 16, 'BeOS' ],
352 [ '' => 17, 'Tandem/NSK' ],
353 [ '' => 18, 'THEOS' ],
354 [ '' => 255, 'Unknown OS' ],
357 %OSnames = map { $$_[1] => $$_[2] }
363 my $default = 3 ; # Unix is the default
367 for my $h (@GZIP_OS_Names)
369 my ($pattern, $code, $name) = @$h;
372 if $pattern && $uname eq $pattern ;
382 return $OSnames{$code} || 'Unknown OS' ;
385 # end of file Makefile.PL