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',
88 ? zlib_files($ZLIB_LIB)
89 : (LIBS => [ "-L$ZLIB_LIB -lz " ])
94 ? (ABSTRACT_FROM => 'lib/Compress/Raw/Zlib.pm',
95 AUTHOR => 'Paul Marquess <pmqs@cpan.org>')
99 ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
100 ('LICENSE' => 'perl') : ()),
118 Z_DEFAULT_COMPRESSION
144 if (eval {require ExtUtils::Constant; 1}) {
145 # Check the constants above all appear in @EXPORT in Zlib.pm
146 my %names = map { $_, 1} @names, 'ZLIB_VERSION';
147 open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
150 last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
157 delete $names{$1} if defined $1 ;
163 my $missing = join ("\n\t", sort keys %names) ;
164 die "The following names are missing from \@EXPORT in Zlib.pm\n" .
168 push @names, {name => 'ZLIB_VERSION', type => 'PV' };
170 ExtUtils::Constant::WriteConstants(
173 C_FILE => 'constants.h',
174 XS_FILE => 'constants.xs',
179 foreach my $name (qw( constants.h constants.xs ))
181 my $from = catfile('fallback', $name);
183 or die "Can't copy $from to $name: $!";
192 my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
193 my %ValidOption = map {$_, 1} @Options ;
194 my %Parsed = %ValidOption ;
195 my $CONFIG = 'config.in' ;
197 print "Parsing $CONFIG...\n" ;
199 open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
202 next if /^\s*$/ or /^\s*#/ ;
205 ($k, $v) = split(/\s+=\s+/, $_, 2) ;
207 if ($ValidOption{$k}) {
217 print "Unknown keys in $CONFIG ignored [@badkey]\n"
220 # check parsed values
222 die "The following keys are missing from $CONFIG [@missing]\n"
223 if @missing = keys %Parsed ;
225 $ZLIB_INCLUDE = $ENV{'ZLIB_INCLUDE'} || $Info{'INCLUDE'} ;
226 $ZLIB_LIB = $ENV{'ZLIB_LIB'} || $Info{'LIB'} ;
229 $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
230 $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
233 my $y = $ENV{'OLD_ZLIB'} || $Info{'OLD_ZLIB'} ;
234 $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
236 my $x = $ENV{'BUILD_ZLIB'} || $Info{'BUILD_ZLIB'} ;
238 if ($x and $x =~ /^yes|on|true|1$/i ) {
242 # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
243 # BUILD_ZLIB is specified.
244 die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
245 if $ZLIB_LIB ne $ZLIB_INCLUDE ;
247 # Check the zlib source directory exists
248 die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
249 unless -d $ZLIB_LIB ;
251 # check for a well known file
252 die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
253 unless -e catfile($ZLIB_LIB, 'zlib.h') ;
257 print "Building Zlib enabled\n" ;
260 $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
261 ? $ENV{'GZIP_OS_CODE'}
262 : $Info{'GZIP_OS_CODE'} ;
264 die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
265 unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
266 || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
268 if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
270 print "Auto Detect Gzip OS Code..\n" ;
271 $GZIP_OS_CODE = getOSCode() ;
274 my $name = getOSname($GZIP_OS_CODE);
275 print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
278 INCLUDE [$ZLIB_INCLUDE]
280 GZIP_OS_CODE [$GZIP_OS_CODE]
282 BUILD_ZLIB [$BUILD_ZLIB]
286 print "Looks Good.\n" ;
299 if (-f catfile($dir, "infback.c")) {
300 # zlib 1.2.0 or greater
302 @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
303 zutil.h deflate.h inffixed.h inftrees.h zconf.h
306 @c_files = qw(adler32 crc32 infback inflate uncompr
307 compress deflate inffast inftrees
314 @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
315 infblock.h inffast.h infutil.h zlib.h
317 @c_files = qw(adler32 compress crc32 uncompr
318 deflate trees zutil inflate infblock
319 inftrees infcodes infutil inffast
323 @h_files = map { catfile($dir, $_) } @h_files ;
324 my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
325 @c_files = map { "$_.c" } 'Zlib', @c_files ;
327 foreach my $file (@c_files)
328 { copy(catfile($dir, $file), '.') }
331 #'H' => [ @h_files ],
332 'C' => [ @c_files ] ,
333 #'OBJECT' => qq[ @o_files ],
334 'OBJECT' => q[ $(O_FILES) ],
342 use vars qw ( @GZIP_OS_Names %OSnames) ;
347 [ '' => 0, 'MS-DOS' ],
348 [ 'amigaos' => 1, 'Amiga' ],
349 [ 'VMS' => 2, 'VMS' ],
350 [ '' => 3, 'Unix/Default' ],
351 [ '' => 4, 'VM/CMS' ],
352 [ '' => 5, 'Atari TOS' ],
353 [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
354 [ 'MacOS' => 7, 'Macintosh' ],
355 [ '' => 8, 'Z-System' ],
357 [ '' => 10, 'TOPS-20' ],
358 [ '' => 11, 'NTFS (NT)' ],
359 [ '' => 12, 'SMS QDOS' ],
360 [ '' => 13, 'Acorn RISCOS' ],
361 [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
363 [ 'beos' => 16, 'BeOS' ],
364 [ '' => 17, 'Tandem/NSK' ],
365 [ '' => 18, 'THEOS' ],
366 [ '' => 255, 'Unknown OS' ],
369 %OSnames = map { $$_[1] => $$_[2] }
375 my $default = 3 ; # Unix is the default
379 for my $h (@GZIP_OS_Names)
381 my ($pattern, $code, $name) = @$h;
384 if $pattern && $uname eq $pattern ;
394 return $OSnames{$code} || 'Unknown OS' ;
397 # end of file Makefile.PL