use alienfile;
use Config;
use Path::Tiny qw(path);

plugin 'PkgConfig' => 'libmaxminddb';

share {
  start_url 'https://github.com/maxmind/libmaxminddb/releases/download/1.12.2/libmaxminddb-1.12.2.tar.gz';
  plugin 'Download';
  plugin 'Extract' => 'tar.gz';
  plugin 'Build::Autoconf';
  patch \&patch_build;
  build [
    '%{configure} --disable-binaries --disable-tests --disable-shared',
    '%{make}',
    '%{make} install',
  ];
};

sub patch_build {
  my $build = shift;

  my $extract = $build->install_prop->{extract};
  my $configure = path($extract, 'configure');
  my $pkgconfig = path($extract, 'src', 'libmaxminddb.pc.in');

  if ($^O eq 'MSWin32') {
    eval {
      $pkgconfig->edit(sub {
        s{-lmaxminddb\b}{-lmaxminddb -lws2_32}g;
      });
    };
  }
  elsif ($^O eq 'openbsd') {
    eval {
      $configure->edit(sub {
        s{(-fms-extensions.*?)^(EOF)}
        {$1#ifdef __clang__\n#error unsupported\n#endif\n$2}ms;
      });
      $configure->chmod('a+x');
    };
  }

  return;
}
