use alienfile;

unless($^O =~ /^(linux|darwin)$/)
{
  print "This Alien only works on Linux (supported by NewRelic) and macOS (not supported by NewRelic)";
  exit;
}

probe sub { 'share' };

share {
  requires 'Alien::libpcre';

  my $version = '1.3.0';

  start_url "https://github.com/newrelic/c-sdk/archive/v1.3.0.tar.gz";
  plugin Download => ();
  plugin Extract  => 'tar.gz';

  my @patch = (
    '%{patch} -p1 < %{.install.patch}/notice-error-with-stacktrace.diff',
    '%{patch} -p1 < %{.install.patch}/hostname.diff',
    # https://github.com/newrelic/c-sdk/pull/25/commits/75852032b5565e7a0c6aa59715c9e52028ce0a93
    '%{patch} -p1 < %{.install.patch}/clang-fallthrough.diff',
    '%{patch} -p1 < %{.install.patch}/header-guard.diff',
    '%{patch} -p1 < %{.install.patch}/realloc-oldptr.diff',
  );
  push @patch, '%{patch} -p1 < %{.install.patch}/macos.diff' if $^O eq 'darwin';

  my $so = $^O eq 'linux' ? 'so' : 'dylib';

  patch \@patch;

  build [
    "make libnewrelic.a libnewrelic.$so",
    'mkdir -p %{.install.prefix}/lib %{.install.prefix}/include %{.install.prefix}/dynamic',
    'cp -a libnewrelic.a %{.install.prefix}/lib',
    "cp -a libnewrelic.$so %{.install.prefix}/dynamic",
    'cp -a include/libnewrelic.h %{.install.prefix}/include',
  ];

  gather sub {
    my $build = shift;
    my $prefix = $build->runtime_prop->{prefix};
    $build->runtime_prop->{cflags}        = "-I$prefix/include ";
    $build->runtime_prop->{cflags_static} = "-I$prefix/include ";
    $build->runtime_prop->{libs}          = "-L$prefix/lib -lnewrelic ";
    $build->runtime_prop->{libs_static}   = "-L$prefix/lib -lnewrelic ";
    $build->runtime_prop->{version}       = $version;
  };
}