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