Alien-Libarchive
view release on metacpan or search on metacpan
lib/Alien/Libarchive.pm view on Meta::CPAN
package Alien::Libarchive;
use strict;
use warnings;
use File::ShareDir ();
use File::Spec;
use Alien::Libarchive::ConfigData;
use constant _share_dir => File::ShareDir::dist_dir('Alien-Libarchive');
use constant _alien_libarchive019 => 1;
# ABSTRACT: Build and make available libarchive
our $VERSION = '0.28'; # VERSION
my $cf = 'Alien::Libarchive::ConfigData';
sub _catfile {
my $path = File::Spec->catfile(@_);
$path =~ s{\\}{/}g if $^O eq 'MSWin32';
$path;
}
sub _catdir {
my $path = File::Spec->catdir(@_);
$path =~ s{\\}{/}g if $^O eq 'MSWin32';
$path;
}
sub new
{
my($class) = @_;
bless {}, $class;
}
sub cflags
{
my($class) = @_;
my @cflags = @{ $cf->config("cflags") };
unshift @cflags, '-I' . _catdir(_share_dir, 'libarchive019', 'include' )
if $class->install_type eq 'share';
wantarray ? @cflags : "@cflags";
}
sub libs
{
my($class) = @_;
my @libs = @{ $cf->config("libs") };
if($class->install_type eq 'share')
{
if($cf->config('msvc'))
{
unshift @libs, '/libpath:' . _catdir(_share_dir, 'libarchive019', 'lib');
@libs = map { s{^.*(\\|/)}{} if m/archive_static\.lib$/; $_ } @libs;
}
else
{
unshift @libs, '-L' . _catdir(_share_dir, 'libarchive019', 'lib');
}
}
wantarray ? @libs : "@libs";
}
sub dlls
{
my($class) = @_;
my @list;
if($class->install_type eq 'system')
{
require Alien::Libarchive::Installer;
@list = Alien::Libarchive::Installer->system_install( alien => 0, test => 'ffi' )->dlls;
}
else
{
@list = map { _catfile(_share_dir, 'libarchive019', 'dll', $_) }
@{ $cf->config("dlls") };
}
wantarray ? @list : $list[0];
}
sub version
{
$cf->config("version");
}
sub install_type
{
$cf->config("install_type");
( run in 1.040 second using v1.01-cache-2.11-cpan-ecdf5575e8d )