use strict;
use warnings;
use 5.8.8;
use ExtUtils::MakeMaker 6.30;
use Config;
eval { build_dropbear() };
if ($@)
{
warn "Unable to build dropbear: $@\n";
warn "Aborted.\n";
exit 0; # tell cpan testers that this is not a failure
}
my $objs
= qx[make -s -f printvar.mak -f dropbear/Makefile print-dropbearobjs print-LIBTOM_LIBS 2>/dev/null];
my $libs
= qx[make -s -f printvar.mak -f dropbear/Makefile print-LIBS 2>/dev/null];
$objs = join " ", map {"dropbear/$_"} split( /\s+/xms, $objs );
$libs .= ' -lcrypt';
my %WriteMakefileArgs = (
##{ $plugin->get_default(qw/ABSTRACT/) ##}
##{ $plugin->get_default(qw/AUTHOR/) ##}
##{ $plugin->get_default(qw/DISTNAME/) ##}
##{ $plugin->get_default(qw/LICENSE/) ##}
##{ $plugin->get_default(qw/NAME/) ##}
##{ $plugin->get_default(qw/MIN_PERL_VERSION/) ##}
##{ $plugin->get_default(qw/VERSION/) ##}
test => { TESTS => "t/*.t" },
INC => '-I. -Idropbear -Idropbear/libtomcrypt/src/headers',
LDFROM => '$(OBJECT)' . " $objs",
LIBS => $libs,
##{ $plugin->get_prereqs(1) ##}
);
my %FallbackPrereqs = (
##{ $plugin->get_prereqs(0) ##}
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } )
{
delete $WriteMakefileArgs{TEST_REQUIRES};
delete $WriteMakefileArgs{BUILD_REQUIRES};
$WriteMakefileArgs{PREREQ_PM} = {
%{ $FallbackPrereqs{PREREQ_PM} },
%{ $FallbackPrereqs{BUILD_REQUIRES} },
};
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
WriteMakefile(%WriteMakefileArgs);
sub run
{
my ($cmd) = @_;
warn "$cmd\n";
my $ret = system($cmd);
die "Error running $cmd ($!)\n"
unless $ret == 0;
}
sub build_dropbear
{
my $db_src = 'dropbear/';
local $ENV{DESTDIR}; # do not let Perl module config leak through
local $ENV{CFLAGS} = $Config{cccdlflags} . ' ' . $Config{ccflags};
local $ENV{LDFLAGS} = $Config{ldflags} . ' ' . $Config{ccdlflags};
local $ENV{CPPFLAGS} = $Config{cppflags};
return
if -e "$db_src/dropbear";
run("cd $db_src && make distclean")
if -f "$db_src/Makefile";
run("cd $db_src && patch -N -i ../dropbear.patch")
if !-f "$db_src/libdropbear.h";
run("cd $db_src && ./configure");
run("cd $db_src && make");
}