This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
parts/apicheck.pl: Handle const parameters
[perl5.git] / cpan / Compress-Raw-Bzip2 / Makefile.PL
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
10 my $WALL= '';
11 $WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ;
12 my $USE_PPPORT_H = ($ENV{PERL_CORE}) ? '' : '-DUSE_PPPORT_H';
13
14
15 my $BUILD_BZIP2 = defined($ENV{BUILD_BZIP2}) ? $ENV{BUILD_BZIP2} : 1;
16 my $BZIP2_LIB = defined($ENV{BZIP2_LIB}) ? $ENV{BZIP2_LIB} : 'bzip2-src';
17 my $BZIP2_INCLUDE = defined($ENV{BZIP2_INCLUDE}) ? $ENV{BZIP2_INCLUDE} : '.';
18
19 #ParseCONFIG() ;
20
21 UpDowngrade(getPerlFiles('MANIFEST')) 
22     unless $ENV{PERL_CORE};
23
24 WriteMakefile( 
25     NAME         => 'Compress::Raw::Bzip2',
26     VERSION_FROM => 'lib/Compress/Raw/Bzip2.pm',
27     INC          => "-I$BZIP2_INCLUDE" ,
28     DEFINE       => "$WALL -DBZ_NO_STDIO $USE_PPPORT_H" ,
29     XS           => { 'Bzip2.xs' => 'Bzip2.c'},
30     'clean'      => { FILES      => '*.c bzip2.h bzlib.h bzlib_private.h constants.h constants.xs' },
31    #'depend'     => { 'Makefile'   => 'config.in' },
32     'dist'       => { COMPRESS     => 'gzip', 
33                       TARFLAGS     => '-chvf',
34                       SUFFIX       => 'gz',
35                       DIST_DEFAULT => 'MyTrebleCheck tardist',
36                     },
37
38     (
39       $BUILD_BZIP2
40         ? bzip2_files($BZIP2_LIB)
41         : (LIBS => [ "-L$BZIP2_LIB -lbz2 " ])
42     ),
43       
44     (
45       $] >= 5.005
46         ? (ABSTRACT_FROM => 'lib/Compress/Raw/Bzip2.pm',
47             AUTHOR       => 'Paul Marquess <pmqs@cpan.org>')
48         : ()
49     ),
50
51     INSTALLDIRS => ($] > 5.010  && $] < 5.011 ? 'perl' : 'site'),
52
53      ( eval { ExtUtils::MakeMaker->VERSION(6.46) }  
54         ? ( META_MERGE  => {
55     
56                 "meta-spec" => { version => 2 },
57
58                 no_index => {
59                     directory => [ 't', 'private' ],
60                 },
61
62                 resources   => {
63                 
64                     bugtracker  => {
65                         web     => 'https://github.com/pmqs/Compress-Raw-Bzip2/issues'
66                     },
67
68                     homepage    => 'https://github.com/pmqs/Compress-Raw-Bzip2',
69
70                     repository  => {
71                         type    => 'git',
72                         url     => 'git://github.com/pmqs/Compress-Raw-Bzip2.git',
73                         web     => 'https://github.com/pmqs/Compress-Raw-Bzip2',
74                     },        
75                 },
76               } 
77             ) 
78         : ()
79     ),  
80
81     ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
82         ('LICENSE'  => 'perl')         : ()),    
83
84 ) ;
85
86 my @names = qw(
87                 BZ_RUN
88                 BZ_FLUSH
89                 BZ_FINISH
90
91                 BZ_OK
92                 BZ_RUN_OK
93                 BZ_FLUSH_OK
94                 BZ_FINISH_OK
95                 BZ_STREAM_END
96                 BZ_SEQUENCE_ERROR
97                 BZ_PARAM_ERROR
98                 BZ_MEM_ERROR
99                 BZ_DATA_ERROR
100                 BZ_DATA_ERROR_MAGIC
101                 BZ_IO_ERROR
102                 BZ_UNEXPECTED_EOF
103                 BZ_OUTBUFF_FULL
104                 BZ_CONFIG_ERROR
105         );
106
107 if (eval {require ExtUtils::Constant; 1}) {
108     # Check the constants above all appear in @EXPORT in Bzip2.pm
109     my %names = map { $_, 1} @names ; #, 'BZ_VERSION';
110     open F, "<lib/Compress/Raw/Bzip2.pm" or die "Cannot open Bzip2.pm: $!\n";
111     while (<F>)
112     {
113         last if /^\s*\@EXPORT\s+=\s+qw\(/ ;
114     }
115
116     while (<F>)
117     {
118         last if /^\s*\)/ ;
119         /(\S+)/ ;
120         delete $names{$1} if defined $1 ;
121     }
122     close F ;
123
124     if ( keys %names )
125     {
126         my $missing = join ("\n\t", sort keys %names) ;
127         die "The following names are missing from \@EXPORT in Bzip2.pm\n" .
128             "\t$missing\n" ;
129     }
130     
131     #push @names, {name => 'BZ_VERSION', type => 'PV' };
132
133     ExtUtils::Constant::WriteConstants(
134                                      NAME     => 'Bzip2',
135                                      NAMES    => \@names,
136                                      C_FILE   => 'constants.h',
137                                      XS_FILE  => 'constants.xs',
138                                                                        
139                                     );
140
141 else {
142     foreach my $name (qw( constants.h constants.xs ))
143     {
144         my $from = catfile('fallback', $name);
145         copy ($from, $name)
146           or die "Can't copy $from to $name: $!";
147     }
148 }
149
150
151 sub bzip2_files
152 {
153     my $dir = shift ;
154
155     my @c_files = qw(
156         blocksort.c
157         huffman.c
158         crctable.c
159         randtable.c
160         compress.c
161         decompress.c
162         bzlib.c
163     );
164
165     my @h_files = qw( bzlib.h  bzlib_private.h );
166
167     foreach my $file (@c_files, @h_files)
168       { copy(catfile($dir, $file), '.') }
169     
170     
171     @h_files = map { catfile($dir, $_)  } @h_files ;
172     my @o_files = map { "$_\$(OBJ_EXT)" } 'Bzip2', @c_files;
173     push @c_files, 'Bzip2.c' ;
174
175     return (
176         #'H'         =>  [ @h_files ],
177         'C'         =>  [ @c_files ] ,
178         #'OBJECT'    => qq[ @o_files ],
179         'OBJECT'    => q[ $(O_FILES) ],
180         
181
182            ) ;
183 }
184
185
186