Alien-Libarchive
view release on metacpan or search on metacpan
inc/My/ModuleBuild.pm view on Meta::CPAN
sub ACTION_build
{
my $self = shift;
if($self->config_data('install_type') eq 'share')
{
unless($self->config_data('already_built'))
{
my $prefix = _catdir($FindBin::Bin, 'share', 'libarchive019' );
local $ENV{CONFIG_SITE} = _catfile($FindBin::Bin, '_alien', 'config.site');
do {
my $lib = _catdir($prefix, 'lib');
my $inc = _catdir($prefix, 'include');
my $dll = _catdir($prefix, 'dll');
mkdir(_catdir($FindBin::Bin, '_alien'));
open my $fh, '>', $ENV{CONFIG_SITE};
print $fh "#!/bin/sh\n",
"if [ -n \"\$CPPFLAGS\" ] ; then\n",
" CPPFLAGS=\"\$CPPFLAGS -I$inc\"\n",
"else\n",
" CPPFLAGS=\"-I$inc\"\n",
"fi;\n",
"if [ -n \"\$LDFLAGS\" ] ; then\n",
" LDFLAGS=\"\$LDFLAGS -L$lib -L$dll\"\n",
"else\n",
" LDFLAGS=\"-L$lib -L$dll\"\n",
"fi;\n";
close $fh;
};
if(eval { require Alien::LZO::Installer; })
{
my $build = eval { Alien::LZO::Installer->system_install };
unless($build)
{
my $build_dir = _catdir($FindBin::Bin, '_alien_lzo');
mkdir $build_dir unless -d $build_dir;
$build = eval { Alien::LZO::Installer->build_install($prefix, dir => $build_dir) };
}
}
if(eval { require Alien::bz2::Installer; })
{
my $build = eval { Alien::bz2::Installer->system_install };
unless($build)
{
my $build_dir = _catdir($FindBin::Bin, '_alien_bz2');
mkdir $build_dir unless -d $build_dir;
$build = eval { Alien::bz2::Installer->build_install($prefix, dir => $build_dir) };
if(defined $build)
{
if($^O eq 'MSWin32')
{
my $dir = _catdir($prefix, 'dll');
mkdir $dir;
my $la = _catfile($dir, 'libbz2.la');
open my $fh, '>', $la;
binmode $fh;
print $fh _bz2_la_file($prefix);
close $fh;
}
}
}
}
my $build_dir = _catdir($FindBin::Bin, '_alien_libarchive');
mkdir $build_dir unless -d $build_dir;
mkdir $prefix unless -d $prefix;
my $build = Alien::Libarchive::Installer->build_install( $prefix, dir => $build_dir );
$self->config_data( cflags => [grep !/^-I/, @{ _list $build->cflags }] );
$self->config_data( libs => [grep !/^-L/, @{ _list $build->libs }] );
if($self->config_data('msvc'))
{
$self->config_data( libs => [grep !/^(\/|-)libpath/i, @{ _list $build->libs }] );
}
$self->config_data( version => $build->version );
printf "cflags: %s\n", join ' ', @{ $self->config_data('cflags') };
printf "libs: %s\n", join ' ', @{ $self->config_data('libs') };
printf "msvc: %d\n", $self->config_data('msvc');
do {
opendir my $dh, _catdir($prefix, 'dll');
my @list = grep { ! -l _catfile($prefix, 'dll', $_) }
grep { /\.so/ || /\.(dll|dylib)$/ }
grep !/^(libbz2|bzip2.dll|liblzo2)/,
grep !/^\./,
sort
readdir $dh;
closedir $dh;
print "dlls:\n";
print " - $_\n" for @list;
$self->config_data( dlls => \@list );
};
$self->config_data( already_built => 1 );
}
}
$self->SUPER::ACTION_build(@_);
my $module = $self->module_name;
my @parts = split /::/, $module;
my $arch_dir = File::Spec->catdir($self->blib, 'arch', 'auto', @parts);
File::Path::mkpath($arch_dir, 0, oct(777)) unless -d $arch_dir;
open my $fh, '>', File::Spec->catfile($arch_dir, $parts[-1].".txt");
close $fh;
}
my $bz2_la_template;
sub _bz2_la_file
{
my($prefix) = @_;
unless(defined $bz2_la_template)
{
$bz2_la_template = do { local $/; <DATA> };
}
( run in 0.892 second using v1.01-cache-2.11-cpan-acebb50784d )