use 5.008; use ExtUtils::MakeMaker; use Data::Dumper; use File::Find; my @search_in = ( '/usr/local/include', '/usr/lib/gcc-lib', '/usr/include' ); push @search_in, $ENV{HOME} if defined( $ENV{HOME} ); my $CRYPT_LIB_HEADER = 'cryptlib.h'; my $PERL_CRYPT_LIB_HEADER = $ENV{PERL_CRYPT_LIB_HEADER}; unless ( defined $PERL_CRYPT_LIB_HEADER ) { print "Looking for '$CRYPT_LIB_HEADER', in:\n"; print "\t- $_\n" foreach @search_in; print "Please wait... "; my @found = qx{find @search_in -type f -iname '$CRYPT_LIB_HEADER' 2>/dev/null}; if ( scalar(@found) == 0 ) { print "NOT FOUND", "\n"; print "$0 ABORTED!", "\n"; print "\n"; print "You need CryptLib source code distribution in order to build PerlCryptLib.", "\n"; exit 1; } print "DONE", "\n"; print "Found(ed):", "\n"; my %found = (); my $recent = 0; foreach my $h (@found) { chomp $h; print "\t", $h; my $v = qx{grep 'CRYPTLIB_VERSION' $h 2>/dev/null}; $v =~ m/(\d+)/; $found{$1} = $h; $recent = int($1) if int($1) gt $recent; print "\t", "(Ver. ", $1, ")"; print "\n"; } # if ( scalar(@found) > 1 ) { # print "$0 ABORTED!", "\n"; # print "\n"; # print "You have to set environment variable PERL_CRYPT_LIB_HEADER to specify which one of the headers founded is to be used.", "\n"; # print "\n"; # print "ie:", "\n"; # print "\n"; # print "export PERL_CRYPT_LIB_HEADER='$found[0]'", "\n"; # print "\n"; # exit 1; # } # $PERL_CRYPT_LIB_HEADER = $found[0]; $PERL_CRYPT_LIB_HEADER = $found{$recent}; print "Using version '$recent' from '$found{$recent}'\n"; } print "Writing 'PerlCryptLib.ph', please wait... "; print qx{perl ./GenPerl.pl $PERL_CRYPT_LIB_HEADER ./PerlCryptLib.ph 1>/dev/null}; if ( $? != 0 ) { print "ERROR $?", "\n"; exit 1; } print "OK", "\n"; WriteMakefile( 'NAME' => 'PerlCryptLib', 'DISTNAME' => 'PerlCryptLib', 'VERSION_FROM' => 'PerlCryptLib.pm', 'PREREQ_PM' => {}, 'PM' => { 'PerlCryptLib.pm' => '$(INST_LIBDIR)/PerlCryptLib.pm', 'PerlCryptLib.ph' => '$(INST_LIBDIR)/PerlCryptLib.ph' }, ( $] >= 5.005 ? ( ABSTRACT => 'PerlCryptLib - Perl interface to Peter Guttman\'s cryptlib API', AUTHOR => 'Alvaro Livraghi ' ) : () ), , 'LIBS' => [ join( " ", map { "-L$_" } split ":", $ENV{LD_LIBRARY_PATH} ) . ' -lresolv -lpthread -lcl' ], 'DEFINE' => "-DCRYPTLIB_H=\\\"$PERL_CRYPT_LIB_HEADER\\\"", 'INC' => '-I.', 'clean' => { FILE => '*.ph .*_h __debug*' }, 'realclean' => { FILES => '*.ph .*_h __debug* *.inc' } ); if ( eval { require ExtUtils::Constant; 1 } ) { my @names = (); ExtUtils::Constant::WriteConstants( NAME => 'PerlCryptLib', NAMES => \@names, DEFAULT_TYPE => 'IV', C_FILE => 'const-c.inc', XS_FILE => 'const-xs.inc' ); print join( "\n", @names ), "\n"; } else { use File::Copy; use File::Spec; foreach my $file ( 'const-c.inc', 'const-xs.inc' ) { my $fallback = File::Spec->catfile( 'fallback', $file ); copy( $fallback, $file ) or die "Can't copy $fallback to $file: $!"; } }