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);