ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/src/vendor/perl/dist/cpan/Compress-Raw-Zlib/Makefile.PL
Revision: 12126
Committed: Sat Dec 22 22:55:19 2018 UTC (5 years, 4 months ago) by laffer1
Content type: text/plain
File size: 11170 byte(s)
Log Message:
perl 5.28.0

File Contents

# Content
1 #! perl -w
2
3 use strict ;
4 require 5.006 ;
5
6 use lib '.';
7 use private::MakeUtil;
8 use ExtUtils::MakeMaker 5.16 ;
9 use ExtUtils::Install (); # only needed to check for version
10 use Config;
11
12 my $ZLIB_LIB ;
13 my $ZLIB_INCLUDE ;
14 my $BUILD_ZLIB = 0 ;
15 my $OLD_ZLIB = '' ;
16 my $WALL = '' ;
17 my $GZIP_OS_CODE = -1 ;
18 my $USE_PPPORT_H = ($ENV{PERL_CORE}) ? '' : '-DUSE_PPPORT_H';
19 my $OPTIMIZE = $Config{'optimize'};
20 if ($Config{'gccversion'} and $OPTIMIZE =~ /-g (gdb)? 3/x) {
21 $OPTIMIZE =~ s/-g(gdb)?3/-g/g; # [88936] out of memory with -g3 since 2.062
22 }
23
24 # Windows uses a different name for the zlib library
25 my $ZLIB_LIBRARY_NAME = $^O eq 'MSWin32' ? 'zlib' : 'z' ;
26
27 #$WALL = ' -pedantic ' if $Config{'cc'} =~ /gcc/ ;
28 #$WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ;
29
30 # Ticket #18986 says that ExtUtils::Install 1.39 fixes the in-use issue
31 # on win32/cygwin, so make the code below conditional on the version of
32 # ExtUtils::Install.
33
34 # Don't ask if MM_USE_DEFAULT is set -- enables perl core building on cygwin
35 if ($^O =~ /cygwin/i and $ExtUtils::Install::VERSION < 1.39
36 and not ($ENV{PERL_MM_USE_DEFAULT} or $ENV{PERL_CORE}))
37 {
38 print <<EOM ;
39
40 I see you are running Cygwin.
41
42 Please note that this module cannot be installed on Cygwin using the CPAN
43 shell. The CPAN Shell uses Compress::Raw::Zlib internally and it is not
44 possible to delete an active DLL.
45
46 If you are running the CPAN shell, please exit it and install this module
47 by hand by running 'make install' under the directory
48
49 ~/.cpan/build/Compress-Raw-Zlib-VERSION
50
51 EOM
52
53 print "Do you want to continue? [Y/N]: " ;
54 my $answer = <STDIN> ;
55
56 if ($answer =~ /^yes|y/i)
57 {
58 print "continuing...\n"
59 }
60 else
61 {
62 print "exiting...\n" ;
63 exit 1 ;
64 }
65
66
67 }
68
69 ParseCONFIG() ;
70
71 UpDowngrade(getPerlFiles('MANIFEST'))
72 unless $ENV{PERL_CORE};
73
74 WriteMakefile(
75 NAME => 'Compress::Raw::Zlib',
76 VERSION_FROM => 'lib/Compress/Raw/Zlib.pm',
77 INC => "-I$ZLIB_INCLUDE" ,
78 DEFINE => "-DNO_VIZ -DZ_SOLO $OLD_ZLIB $WALL -DGZIP_OS_CODE=$GZIP_OS_CODE $USE_PPPORT_H" ,
79 XS => { 'Zlib.xs' => 'Zlib.c'},
80 'depend' => { 'Makefile' => 'config.in' },
81 'clean' => { FILES => '*.c constants.h constants.xs' },
82 'dist' => { COMPRESS => 'gzip',
83 TARFLAGS => '-chvf',
84 SUFFIX => 'gz',
85 DIST_DEFAULT => 'MyTrebleCheck tardist',
86 },
87
88 (
89 $BUILD_ZLIB
90 ? zlib_files($ZLIB_LIB)
91 : (LIBS => [ "-L$ZLIB_LIB -l$ZLIB_LIBRARY_NAME " ])
92 ),
93 OPTIMIZE => $OPTIMIZE,
94
95 INSTALLDIRS => ($] >= 5.009 && $] < 5.011 ? 'perl' : 'site'),
96
97 META_MERGE => {
98 no_index => {
99 directory => [ 't', 'private' ],
100 },
101 },
102
103 ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
104 ('LICENSE' => 'perl') : ()),
105
106 ) ;
107
108 sub version_Macro
109 {
110 my $ver = shift ;
111
112 return [ "#if ZLIB_VERNUM >= 0x$ver\n", "#endif\n" ];
113 }
114
115 my @names = qw(
116
117 DEF_WBITS
118 MAX_MEM_LEVEL
119 MAX_WBITS
120 OS_CODE
121
122 Z_ASCII
123 Z_BEST_COMPRESSION
124 Z_BEST_SPEED
125 Z_BINARY
126 Z_BLOCK
127 Z_BUF_ERROR
128 Z_DATA_ERROR
129 Z_DEFAULT_COMPRESSION
130 Z_DEFAULT_STRATEGY
131 Z_DEFLATED
132 Z_ERRNO
133 Z_FILTERED
134 Z_FINISH
135 Z_FIXED
136 Z_FULL_FLUSH
137 Z_HUFFMAN_ONLY
138 Z_MEM_ERROR
139 Z_NEED_DICT
140 Z_NO_COMPRESSION
141 Z_NO_FLUSH
142 Z_NULL
143 Z_OK
144 Z_PARTIAL_FLUSH
145 Z_RLE
146 Z_STREAM_END
147 Z_STREAM_ERROR
148 Z_SYNC_FLUSH
149 Z_UNKNOWN
150 Z_VERSION_ERROR
151
152 );
153 #ZLIB_VERNUM
154
155 my %verSpecificNames = (
156 Z_TREES => '1240',
157 );
158
159 if (eval {require ExtUtils::Constant; 1}) {
160 # Check the constants above all appear in @EXPORT in Zlib.pm
161 my %names = %verSpecificNames, map { $_, 1} @names, 'ZLIB_VERSION';
162 open F, "<lib/Compress/Raw/Zlib.pm" or die "Cannot open Zlib.pm: $!\n";
163 while (<F>)
164 {
165 last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
166 }
167
168 while (<F>)
169 {
170 last if /^\s*\)/ ;
171 /(\S+)/ ;
172 delete $names{$1} if defined $1 ;
173 }
174 close F ;
175
176 if ( keys %names )
177 {
178 my $missing = join ("\n\t", sort keys %names) ;
179 die "The following names are missing from \@EXPORT in Zlib.pm\n" .
180 "\t$missing\n" ;
181 }
182
183 push @names, { name => 'ZLIB_VERSION', type => 'PV' };
184
185 push @names, map { { name => $_,
186 macro => version_Macro $verSpecificNames{$_}
187 }
188 }
189 keys %verSpecificNames ;
190
191 ExtUtils::Constant::WriteConstants(
192 NAME => 'Zlib',
193 NAMES => \@names,
194 C_FILE => 'constants.h',
195 XS_FILE => 'constants.xs',
196
197 );
198
199 }
200 else {
201 foreach my $name (qw( constants.h constants.xs ))
202 {
203 my $from = catfile('fallback', $name);
204 copy ($from, $name)
205 or die "Can't copy $from to $name: $!";
206 }
207 }
208
209 sub ParseCONFIG
210 {
211 my ($k, $v) ;
212 my @badkey = () ;
213 my %Info = () ;
214 my @Options = qw( INCLUDE LIB BUILD_ZLIB OLD_ZLIB GZIP_OS_CODE ) ;
215 my %ValidOption = map {$_, 1} @Options ;
216 my %Parsed = %ValidOption ;
217 my $CONFIG = 'config.in' ;
218
219 print "Parsing $CONFIG...\n" ;
220
221 open(F, "<$CONFIG") or die "Cannot open file $CONFIG: $!\n" ;
222 while (<F>) {
223 s/^\s*|\s*$//g ;
224 next if /^\s*$/ or /^\s*#/ ;
225 s/\s*#\s*$// ;
226
227 ($k, $v) = split(/\s+=\s+/, $_, 2) ;
228 $k = uc $k ;
229 if ($ValidOption{$k}) {
230 delete $Parsed{$k} ;
231 $Info{$k} = $v ;
232 }
233 else {
234 push(@badkey, $k) ;
235 }
236 }
237 close F ;
238
239 print "Unknown keys in $CONFIG ignored [@badkey]\n"
240 if @badkey ;
241
242 # check parsed values
243 my @missing = () ;
244 die "The following keys are missing from $CONFIG [@missing]\n"
245 if @missing = keys %Parsed ;
246
247 $ZLIB_INCLUDE = defined $ENV{'ZLIB_INCLUDE'}
248 ? $ENV{'ZLIB_INCLUDE'}
249 : $Info{'INCLUDE'} ;
250 $ZLIB_LIB = defined $ENV{'ZLIB_LIB'}
251 ?$ENV{'ZLIB_LIB'}
252 : $Info{'LIB'} ;
253
254 if ($^O eq 'VMS') {
255 $ZLIB_INCLUDE = VMS::Filespec::vmspath($ZLIB_INCLUDE);
256 $ZLIB_LIB = VMS::Filespec::vmspath($ZLIB_LIB);
257 }
258
259 my $y = defined $ENV{'OLD_ZLIB'}
260 ? $ENV{'OLD_ZLIB'}
261 : $Info{'OLD_ZLIB'} ;
262 $OLD_ZLIB = '-DOLD_ZLIB' if $y and $y =~ /^yes|on|true|1$/i;
263
264 my $x = defined $ENV{'BUILD_ZLIB'}
265 ? $ENV{'BUILD_ZLIB'}
266 : $Info{'BUILD_ZLIB'} ;
267
268 if ($x and $x =~ /^yes|on|true|1$/i ) {
269
270 $BUILD_ZLIB = 1 ;
271
272 # ZLIB_LIB & ZLIB_INCLUDE must point to the same place when
273 # BUILD_ZLIB is specified.
274 die "INCLUDE & LIB must be the same when BUILD_ZLIB is True\n"
275 if $ZLIB_LIB ne $ZLIB_INCLUDE ;
276
277 # Check the zlib source directory exists
278 die "LIB/INCLUDE directory '$ZLIB_LIB' does not exits\n"
279 unless -d $ZLIB_LIB ;
280
281 # check for a well known file
282 die "LIB/INCLUDE directory, '$ZLIB_LIB', doesn't seem to have the zlib source files\n"
283 unless -e catfile($ZLIB_LIB, 'zlib.h') ;
284
285
286 # write the Makefile
287 print "Building Zlib enabled\n" ;
288 }
289
290 $GZIP_OS_CODE = defined $ENV{'GZIP_OS_CODE'}
291 ? $ENV{'GZIP_OS_CODE'}
292 : $Info{'GZIP_OS_CODE'} ;
293
294 die "GZIP_OS_CODE not 'AUTO_DETECT' or a number between 0 and 255\n"
295 unless uc $GZIP_OS_CODE eq 'AUTO_DETECT'
296 || ( $GZIP_OS_CODE =~ /^(\d+)$/ && $1 >= 0 && $1 <= 255) ;
297
298 if (uc $GZIP_OS_CODE eq 'AUTO_DETECT')
299 {
300 print "Auto Detect Gzip OS Code..\n" ;
301 $GZIP_OS_CODE = getOSCode() ;
302 }
303
304 my $name = getOSname($GZIP_OS_CODE);
305 print "Setting Gzip OS Code to $GZIP_OS_CODE [$name]\n" ;
306
307 print <<EOM if 0 ;
308 INCLUDE [$ZLIB_INCLUDE]
309 LIB [$ZLIB_LIB]
310 GZIP_OS_CODE [$GZIP_OS_CODE]
311 OLD_ZLIB [$OLD_ZLIB]
312 BUILD_ZLIB [$BUILD_ZLIB]
313
314 EOM
315
316 print "Looks Good.\n" ;
317
318 }
319
320
321
322 sub zlib_files
323 {
324 my $dir = shift ;
325
326 my @h_files = ();
327 my @c_files = ();
328
329 if (-f catfile($dir, "infback.c")) {
330 # zlib 1.2.0 or greater
331 #
332 @h_files = qw(crc32.h inffast.h inflate.h trees.h zconf.in.h
333 zutil.h deflate.h inffixed.h inftrees.h zconf.h
334 zlib.h
335 );
336 @c_files = qw(adler32 crc32 infback inflate uncompr
337 compress deflate inffast inftrees
338 trees zutil
339 );
340 }
341 else {
342 # zlib 1.1.x
343
344 @h_files = qw(deflate.h infcodes.h inftrees.h zconf.h zutil.h
345 infblock.h inffast.h infutil.h zlib.h
346 );
347 @c_files = qw(adler32 compress crc32 uncompr
348 deflate trees zutil inflate infblock
349 inftrees infcodes infutil inffast
350 );
351 }
352
353 @h_files = map { catfile($dir, $_) } @h_files ;
354 my @o_files = map { "$_\$(OBJ_EXT)" } 'Zlib', @c_files;
355 @c_files = map { "$_.c" } 'Zlib', @c_files ;
356
357 foreach my $file (@c_files)
358 { copy(catfile($dir, $file), '.') }
359
360 return (
361 #'H' => [ @h_files ],
362 'C' => [ @c_files ] ,
363 #'OBJECT' => qq[ @o_files ],
364 'OBJECT' => q[ $(O_FILES) ],
365
366
367 ) ;
368 }
369
370
371
372 use vars qw ( @GZIP_OS_Names %OSnames) ;
373
374 BEGIN
375 {
376 @GZIP_OS_Names = (
377 [ '' => 0, 'MS-DOS' ],
378 [ 'amigaos' => 1, 'Amiga' ],
379 [ 'VMS' => 2, 'VMS' ],
380 [ '' => 3, 'Unix/Default' ],
381 [ '' => 4, 'VM/CMS' ],
382 [ '' => 5, 'Atari TOS' ],
383 [ 'os2' => 6, 'HPFS (OS/2, NT)' ],
384 [ 'MacOS' => 7, 'Macintosh' ],
385 [ '' => 8, 'Z-System' ],
386 [ '' => 9, 'CP/M' ],
387 [ '' => 10, 'TOPS-20' ],
388 [ '' => 11, 'NTFS (NT)' ],
389 [ '' => 12, 'SMS QDOS' ],
390 [ '' => 13, 'Acorn RISCOS' ],
391 [ 'MSWin32' => 14, 'VFAT file system (Win95, NT)' ],
392 [ '' => 15, 'MVS' ],
393 [ 'beos' => 16, 'BeOS' ],
394 [ '' => 17, 'Tandem/NSK' ],
395 [ '' => 18, 'THEOS' ],
396 [ '' => 255, 'Unknown OS' ],
397 );
398
399 %OSnames = map { $$_[1] => $$_[2] }
400 @GZIP_OS_Names ;
401 }
402
403 sub getOSCode
404 {
405 my $default = 3 ; # Unix is the default
406
407 my $uname = $^O;
408
409 for my $h (@GZIP_OS_Names)
410 {
411 my ($pattern, $code, $name) = @$h;
412
413 return $code
414 if $pattern && $uname eq $pattern ;
415 }
416
417 return $default ;
418 }
419
420 sub getOSname
421 {
422 my $code = shift ;
423
424 return $OSnames{$code} || 'Unknown OS' ;
425 }
426
427 # end of file Makefile.PL
428