use alienfile;

probe sub { 'share' };

share {
  requires 'Alien::m4' => '0.11';
  requires 'Path::Tiny' => 0;

  if($^O eq 'MSWin32')
  {
    meta->prop->{env}->{PERL} = '/usr/bin/perl' if meta->prop->{platform}->{system_type} eq 'windows-mingw';
  }
  else
  {
    meta->prop->{env}->{PERL} = $^X;
  }

  if($^O eq 'openbsd')
  {
    requires 'Alien::autoconf' => '0.02';
    requires 'Alien::automake' => '0.03';
  }

  plugin Download => (
    url => 'ftp://ftp.gnu.org/gnu/libtool',
    filter => qr/^libtool-.*\.tar\.gz$/,
    version => qr/([0-9\.]+)/,
  );
  plugin Extract => 'tar.gz',
  plugin 'Build::Autoconf' => ( msys_version => '0.08' );
  
  patch sub {
    my($libtoolize) = Path::Tiny->new('libtoolize.in');
    $libtoolize->edit_lines(sub {
      s{['"]\@prefix\@['"]}{\`alien_libtool_root\`}g;
      s{\@datadir\@}{\$prefix/share}g;
      s{\@pkgauxdir\@}{\$prefix/share/libtool/build-aux}g;
      s{\@pkgdatadir\@}{\$prefix/share/libtool}g;
      s{\@aclocaldir\@}{\$prefix/share/aclocal}g;
    });
    my($makefile) = Path::Tiny->new('Makefile.in');
    $makefile->edit_lines(sub {
      s{\@HELP2MAN\@}{perl -e1 --}g;
    });
  };
  
  meta->after_hook(
    gather_share => sub {
      my($build) = @_;
      {
        my $exe = Path::Tiny->new('bin/alien_libtool_root');
        my $perl = $ENV{PERL} || '/usr/bin/perl';
        $exe->spew(
          "#!$perl\n",
          "use File::Spec;\n",
          "my(\$v,\$d) = File::Spec->splitpath(File::Spec->rel2abs(__FILE__));\n",
          "my \@d = File::Spec->splitdir(\$d);\n",
          "pop \@d for 1..2;\n",
          "my \$dist_dir = File::Spec->catpath(\$v,File::Spec->catdir(\@d), '');\n",
          "print \$dist_dir\n",
        );
        $exe->chmod('0700');
      }
    },
  );
};
