#! perl -w use strict ; require 5.004 ; use private::MakeUtil; use ExtUtils::MakeMaker 5.16 ; my $WALL= ''; $WALL = ' -Wall -Wno-comment ' if $Config{'cc'} =~ /gcc/ ; my $USE_PPPORT_H = ($ENV{PERL_CORE}) ? '' : '-DUSE_PPPORT_H'; my $BUILD_BZIP2 = defined($ENV{BUILD_BZIP2}) ? $ENV{BUILD_BZIP2} : 1; my $BZIP2_LIB = defined($ENV{BZIP2_LIB}) ? $ENV{BZIP2_LIB} : 'bzip2-src'; my $BZIP2_INCLUDE = defined($ENV{BZIP2_INCLUDE}) ? $ENV{BZIP2_INCLUDE} : '.'; #ParseCONFIG() ; UpDowngrade(getPerlFiles('MANIFEST')) unless $ENV{PERL_CORE}; WriteMakefile( NAME => 'Compress::Raw::Bzip2', VERSION_FROM => 'lib/Compress/Raw/Bzip2.pm', INC => "-I$BZIP2_INCLUDE" , DEFINE => "$WALL -DBZ_NO_STDIO $USE_PPPORT_H" , XS => { 'Bzip2.xs' => 'Bzip2.c'}, 'clean' => { FILES => '*.c bzip2.h bzlib.h bzlib_private.h constants.h constants.xs' }, #'depend' => { 'Makefile' => 'config.in' }, 'dist' => { COMPRESS => 'gzip', TARFLAGS => '-chvf', SUFFIX => 'gz', DIST_DEFAULT => 'MyTrebleCheck tardist', }, ( $BUILD_BZIP2 ? bzip2_files($BZIP2_LIB) : (LIBS => [ "-L$BZIP2_LIB -lbz2 " ]) ), ( $] >= 5.005 ? (ABSTRACT_FROM => 'lib/Compress/Raw/Bzip2.pm', AUTHOR => 'Paul Marquess ') : () ), INSTALLDIRS => ($] > 5.010 ? 'perl' : 'site'), ((ExtUtils::MakeMaker->VERSION() gt '6.30') ? ('LICENSE' => 'perl') : ()), ) ; my @names = qw( BZ_RUN BZ_FLUSH BZ_FINISH BZ_OK BZ_RUN_OK BZ_FLUSH_OK BZ_FINISH_OK BZ_STREAM_END BZ_SEQUENCE_ERROR BZ_PARAM_ERROR BZ_MEM_ERROR BZ_DATA_ERROR BZ_DATA_ERROR_MAGIC BZ_IO_ERROR BZ_UNEXPECTED_EOF BZ_OUTBUFF_FULL BZ_CONFIG_ERROR ); if (eval {require ExtUtils::Constant; 1}) { # Check the constants above all appear in @EXPORT in Bzip2.pm my %names = map { $_, 1} @names ; #, 'BZ_VERSION'; open F, ") { last if /^\s*\@EXPORT\s+=\s+qw\(/ ; } while () { last if /^\s*\)/ ; /(\S+)/ ; delete $names{$1} if defined $1 ; } close F ; if ( keys %names ) { my $missing = join ("\n\t", sort keys %names) ; die "The following names are missing from \@EXPORT in Bzip2.pm\n" . "\t$missing\n" ; } #push @names, {name => 'BZ_VERSION', type => 'PV' }; ExtUtils::Constant::WriteConstants( NAME => 'Bzip2', NAMES => \@names, C_FILE => 'constants.h', XS_FILE => 'constants.xs', ); } else { foreach my $name (qw( constants.h constants.xs )) { my $from = catfile('fallback', $name); copy ($from, $name) or die "Can't copy $from to $name: $!"; } } sub bzip2_files { my $dir = shift ; my @c_files = qw( blocksort.c huffman.c crctable.c randtable.c compress.c decompress.c bzlib.c ); my @h_files = qw( bzlib.h bzlib_private.h ); foreach my $file (@c_files, @h_files) { copy(catfile($dir, $file), '.') } @h_files = map { catfile($dir, $_) } @h_files ; my @o_files = map { "$_\$(OBJ_EXT)" } 'Bzip2', @c_files; push @c_files, 'Bzip2.c' ; return ( #'H' => [ @h_files ], 'C' => [ @c_files ] , #'OBJECT' => qq[ @o_files ], 'OBJECT' => q[ $(O_FILES) ], ) ; }