use strict;
use warnings;
use Env qw/@PATH/;
use XS::Install;
use Alien::cmake3;
# *bsds have libelf, and libdwarf fails to comile when it is off
my $bsd = ($^O =~ /bsd/);
my $libelf = !$bsd ? '-DDWARF_WITH_LIBELF=off' : '';
my $src_dir = "libdwarf";
my $bdir = "$src_dir/build";
unshift @PATH, Alien::cmake3->bin_dir;
mkdir $bdir unless -d $bdir;
my $result = system("cd $bdir && cmake -G \"Unix Makefiles\" $libelf -DBUILD_NON_SHARED=on -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=\"-O2 -fPIC\" ..");
die "FATAL: can't configure\n" if $result != 0;
my %params = (
NAME => 'XS::libdwarf',
CLIB => [{
DIR => "$bdir/libdwarf/",
FILE => 'libdwarf.a',
BUILD_CMD => '$(MAKE)',
}],
LINK => ('-lz' . ($bsd ? ' -lelf' : '')),
clean => {FILES => $bdir},
BIN_SHARE => {
INCLUDE => {
"$src_dir/libdwarf/" => '/libdwarf',
"$src_dir/build/libdwarf/" => '/libdwarf',
},
},
CONFIGURE_REQUIRES => {"Alien::cmake3" => '0.04'},
);
write_makefile(%params);