use alienfile;

use Config;

meta->around_hook( gather_system => sub {
  my $orig = shift;
  my ($build) = @_;
  $orig->(@_);
  if( ! exists $build->runtime_prop->{ffi_name} ) {
    $build->runtime_prop->{ffi_name} = 'z';
  }
});
plugin PkgConfig => 'zlib';

share {
  start_url 'https://zlib.net/';
  plugin Download => (
    filter  => qr/^zlib.*\.tar\.gz$/,
    version => qr/([0-9\.]+)/,
  );
  plugin Extract => 'tar.gz';
  if( $^O ne 'MSWin32' ) {
    build [
      sub {
        $ENV{CFLAGS} = '-fPIC';
      },
      './configure --prefix=%{.install.prefix}',
      '%{make}',
      '%{make} install',
    ];
  } elsif( $^O eq 'MSWin32' && $Config{cc} eq 'gcc' ) {
    my @PATH_ARGS = (
      'prefix=%{.install.prefix}',
      'INCLUDE_PATH=%{.install.prefix}/include',
      'LIBRARY_PATH=%{.install.prefix}/lib',
      'BINARY_PATH=%{.install.prefix}/bin',
    );
    my @SHARED_ARGS = ( 'SHARED_MODE=1', );
    my @MAKE_ARGS = (
      qw(-f win32/Makefile.gcc), @PATH_ARGS, @SHARED_ARGS
    );
    build [
      [ '%{make}' , @MAKE_ARGS,  ],
      [ '%{make}' , @MAKE_ARGS, 'install' ],
    ];
  }
  plugin 'Gather::IsolateDynamic';
}
