7 use ExtUtils::MakeMaker 5.16 ;
8 use ExtUtils::Install (); # only needed to check for version
15 my $GZIP_OS_CODE = -1 ;
17 #$WALL = ' -pedantic ' if $Config{'cc'} =~ /gcc/ ;
18 #$WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ;
20 # Ticket #18986 says that ExtUtils::Install 1.39 fixes the in-use issue
21 # on win32/cygwin, so make the code below conditional on the version of
24 # Don't ask if MM_USE_DEFAULT is set -- enables perl core building on cygwin
25 if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39
26 and not ($ENV{PERL_MM_USE_DEFAULT} or $ENV{PERL_CORE}))
30 I see you are running Cygwin.
32 Please note that this module cannot be installed on Cygwin using the CPAN
33 shell. The CPAN Shell uses Compress::Raw::Zlib internally and it is not
34 possible to delete an active DLL.
36 If you are running the CPAN shell, please exit it and install this module
37 by hand by running 'make install' under the directory
39 ~/.cpan/build/Compress-Raw-Zlib-VERSION
43 print "Do you want to continue? [Y/N]: " ;
44 my $answer = <STDIN> ;
46 if ($answer =~ /^yes|y/i)
48 print "continuing...\n"
52 print "exiting...\n" ;
61 UpDowngrade(getPerlFiles('MANIFEST'))
62 unless $ENV{PERL_CORE};
65 NAME => 'Compress::Raw::Zlib',
66 VERSION_FROM => 'lib/Compress/Raw/Zlib.pm',
67 INC => "-I$ZLIB_INCLUDE" ,
68 DEFINE => "$OLD_ZLIB $WALL -DGZIP_OS_CODE=$GZIP_OS_CODE" ,
69 XS => { 'Zlib.xs' => 'Zlib.c'},
70 'depend' => { 'Makefile' => 'config.in' },
71 'clean' => { FILES => '*.c constants.h constants.xs' },
72 'dist' => { COMPRESS => 'gzip',
75 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>')
114 Z_DEFAULT_COMPRESSION
140 if (eval {require ExtUtils::Constant; 1}) {
141 # Check the constants above all appear in @EXPORT in Zlib.pm
142 my %names = map { $_, 1} @names, 'ZLIB_VERSION';
143 open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
146 last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
153 delete $names{$1} if defined $1 ;
159 my $missing = join ("\n\t", sort keys %names) ;
160 die "The following names are missing from \@EXPORT in Zlib.pm\n" .
164 push @names, {name => 'ZLIB_VERSION', type => 'PV' };
166 ExtUtils::Constant::WriteConstants(
169 C_FILE => 'constants.h',
170 XS_FILE => 'constants.xs',
175 foreach my $name (qw( constants.h constants.xs ))
177 my $from = catfile('fallback', $name);
179 or die "Can't copy $from to $name: $!";
188 my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
189 my %ValidOption = map {$_, 1} @Options ;
190 my %Parsed = %ValidOption ;
191 my $CONFIG = 'config.in' ;
193 print "Parsing $CONFIG...\n" ;
195 open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
198 next if /^\s*$/ or /^\s*#/ ;
201 ($k, $v) = split(/\s+=\s+/, $_, 2) ;
203 if ($ValidOption{$k}) {
213 print "Unknown keys in $CONFIG ignored [@badkey]\n"
216 # check parsed values
218 die "The following keys are missing from $CONFIG [@missing]\n"
219 if @missing = keys %Parsed ;
221 $ZLIB_INCLUDE = $ENV{'ZLIB_INCLUDE'} || $Info{'INCLUDE'} ;
222 $ZLIB_LIB = $ENV{'ZLIB_LIB'} || $Info{'LIB'} ;
225 $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
226 $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
229 my $y = $ENV{'OLD_ZLIB'} || $Info{'OLD_ZLIB'} ;
230 $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
232 my $x = $ENV{'BUILD_ZLIB'} || $Info{'BUILD_ZLIB'} ;
234 if ($x and $x =~ /^yes|on|true|1$/i ) {
238 # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
239 # BUILD_ZLIB is specified.
240 die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
241 if $ZLIB_LIB ne $ZLIB_INCLUDE ;
243 # Check the zlib source directory exists
244 die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
245 unless -d $ZLIB_LIB ;
247 # check for a well known file
248 die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
249 unless -e catfile($ZLIB_LIB, 'zlib.h') ;
253 print "Building Zlib enabled\n" ;
256 $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
257 ? $ENV{'GZIP_OS_CODE'}
258 : $Info{'GZIP_OS_CODE'} ;
260 die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
261 unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
262 || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
264 if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
266 print "Auto Detect Gzip OS Code..\n" ;
267 $GZIP_OS_CODE = getOSCode() ;
270 my $name = getOSname($GZIP_OS_CODE);
271 print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
274 INCLUDE [$ZLIB_INCLUDE]
276 GZIP_OS_CODE [$GZIP_OS_CODE]
278 BUILD_ZLIB [$BUILD_ZLIB]
282 print "Looks Good.\n" ;
295 if (-f catfile($dir, "infback.c")) {
296 # zlib 1.2.0 or greater
298 @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
299 zutil.h deflate.h inffixed.h inftrees.h zconf.h
302 @c_files = qw(adler32 crc32 infback inflate uncompr
303 compress deflate inffast inftrees
310 @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
311 infblock.h inffast.h infutil.h zlib.h
313 @c_files = qw(adler32 compress crc32 uncompr
314 deflate trees zutil inflate infblock
315 inftrees infcodes infutil inffast
319 @h_files = map { catfile($dir, $_) } @h_files ;
320 my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
321 @c_files = map { "$_.c" } 'Zlib', @c_files ;
323 foreach my $file (@c_files)
324 { copy(catfile($dir, $file), '.') }
327 #'H' => [ @h_files ],
328 'C' => [ @c_files ] ,
329 #'OBJECT' => qq[ @o_files ],
330 'OBJECT' => q[ $(O_FILES) ],
338 use vars qw ( @GZIP_OS_Names %OSnames) ;
343 [ '' => 0, 'MS-DOS' ],
344 [ 'amigaos' => 1, 'Amiga' ],
345 [ 'VMS' => 2, 'VMS' ],
346 [ '' => 3, 'Unix/Default' ],
347 [ '' => 4, 'VM/CMS' ],
348 [ '' => 5, 'Atari TOS' ],
349 [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
350 [ 'MacOS' => 7, 'Macintosh' ],
351 [ '' => 8, 'Z-System' ],
353 [ '' => 10, 'TOPS-20' ],
354 [ '' => 11, 'NTFS (NT)' ],
355 [ '' => 12, 'SMS QDOS' ],
356 [ '' => 13, 'Acorn RISCOS' ],
357 [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
359 [ 'beos' => 16, 'BeOS' ],
360 [ '' => 17, 'Tandem/NSK' ],
361 [ '' => 18, 'THEOS' ],
362 [ '' => 255, 'Unknown OS' ],
365 %OSnames = map { $$_[1] => $$_[2] }
371 my $default = 3 ; # Unix is the default
375 for my $h (@GZIP_OS_Names)
377 my ($pattern, $code, $name) = @$h;
380 if $pattern && $uname eq $pattern ;
390 return $OSnames{$code} || 'Unknown OS' ;
393 # end of file Makefile.PL