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',
87 ? zlib_files($ZLIB_LIB)
88 : (LIBS => [ "-L$ZLIB_LIB -lz " ])
93 ? (ABSTRACT_FROM => 'lib/Compress/Raw/Zlib.pm',
94 AUTHOR => 'Paul Marquess <pmqs@cpan.org>')
98 ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
99 ('LICENSE' => 'perl') : ()),
117 Z_DEFAULT_COMPRESSION
143 if (eval {require ExtUtils::Constant; 1}) {
144 # Check the constants above all appear in @EXPORT in Zlib.pm
145 my %names = map { $_, 1} @names, 'ZLIB_VERSION';
146 open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
149 last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
156 delete $names{$1} if defined $1 ;
162 my $missing = join ("\n\t", sort keys %names) ;
163 die "The following names are missing from \@EXPORT in Zlib.pm\n" .
167 push @names, {name => 'ZLIB_VERSION', type => 'PV' };
169 ExtUtils::Constant::WriteConstants(
172 C_FILE => 'constants.h',
173 XS_FILE => 'constants.xs',
178 foreach my $name (qw( constants.h constants.xs ))
180 my $from = catfile('fallback', $name);
182 or die "Can't copy $from to $name: $!";
191 my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
192 my %ValidOption = map {$_, 1} @Options ;
193 my %Parsed = %ValidOption ;
194 my $CONFIG = 'config.in' ;
196 print "Parsing $CONFIG...\n" ;
198 open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
201 next if /^\s*$/ or /^\s*#/ ;
204 ($k, $v) = split(/\s+=\s+/, $_, 2) ;
206 if ($ValidOption{$k}) {
216 print "Unknown keys in $CONFIG ignored [@badkey]\n"
219 # check parsed values
221 die "The following keys are missing from $CONFIG [@missing]\n"
222 if @missing = keys %Parsed ;
224 $ZLIB_INCLUDE = $ENV{'ZLIB_INCLUDE'} || $Info{'INCLUDE'} ;
225 $ZLIB_LIB = $ENV{'ZLIB_LIB'} || $Info{'LIB'} ;
228 $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
229 $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
232 my $y = $ENV{'OLD_ZLIB'} || $Info{'OLD_ZLIB'} ;
233 $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
235 my $x = $ENV{'BUILD_ZLIB'} || $Info{'BUILD_ZLIB'} ;
237 if ($x and $x =~ /^yes|on|true|1$/i ) {
241 # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
242 # BUILD_ZLIB is specified.
243 die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
244 if $ZLIB_LIB ne $ZLIB_INCLUDE ;
246 # Check the zlib source directory exists
247 die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
248 unless -d $ZLIB_LIB ;
250 # check for a well known file
251 die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
252 unless -e catfile($ZLIB_LIB, 'zlib.h') ;
256 print "Building Zlib enabled\n" ;
259 $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
260 ? $ENV{'GZIP_OS_CODE'}
261 : $Info{'GZIP_OS_CODE'} ;
263 die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
264 unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
265 || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
267 if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
269 print "Auto Detect Gzip OS Code..\n" ;
270 $GZIP_OS_CODE = getOSCode() ;
273 my $name = getOSname($GZIP_OS_CODE);
274 print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
277 INCLUDE [$ZLIB_INCLUDE]
279 GZIP_OS_CODE [$GZIP_OS_CODE]
281 BUILD_ZLIB [$BUILD_ZLIB]
285 print "Looks Good.\n" ;
298 if (-f catfile($dir, "infback.c")) {
299 # zlib 1.2.0 or greater
301 @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
302 zutil.h deflate.h inffixed.h inftrees.h zconf.h
305 @c_files = qw(adler32 crc32 infback inflate uncompr
306 compress deflate inffast inftrees
313 @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
314 infblock.h inffast.h infutil.h zlib.h
316 @c_files = qw(adler32 compress crc32 uncompr
317 deflate trees zutil inflate infblock
318 inftrees infcodes infutil inffast
322 @h_files = map { catfile($dir, $_) } @h_files ;
323 my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
324 @c_files = map { "$_.c" } 'Zlib', @c_files ;
326 foreach my $file (@c_files)
327 { copy(catfile($dir, $file), '.') }
330 #'H' => [ @h_files ],
331 'C' => [ @c_files ] ,
332 #'OBJECT' => qq[ @o_files ],
333 'OBJECT' => q[ $(O_FILES) ],
341 use vars qw ( @GZIP_OS_Names %OSnames) ;
346 [ '' => 0, 'MS-DOS' ],
347 [ 'amigaos' => 1, 'Amiga' ],
348 [ 'VMS' => 2, 'VMS' ],
349 [ '' => 3, 'Unix/Default' ],
350 [ '' => 4, 'VM/CMS' ],
351 [ '' => 5, 'Atari TOS' ],
352 [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
353 [ 'MacOS' => 7, 'Macintosh' ],
354 [ '' => 8, 'Z-System' ],
356 [ '' => 10, 'TOPS-20' ],
357 [ '' => 11, 'NTFS (NT)' ],
358 [ '' => 12, 'SMS QDOS' ],
359 [ '' => 13, 'Acorn RISCOS' ],
360 [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
362 [ 'beos' => 16, 'BeOS' ],
363 [ '' => 17, 'Tandem/NSK' ],
364 [ '' => 18, 'THEOS' ],
365 [ '' => 255, 'Unknown OS' ],
368 %OSnames = map { $$_[1] => $$_[2] }
374 my $default = 3 ; # Unix is the default
378 for my $h (@GZIP_OS_Names)
380 my ($pattern, $code, $name) = @$h;
383 if $pattern && $uname eq $pattern ;
393 return $OSnames{$code} || 'Unknown OS' ;
396 # end of file Makefile.PL