use strict;
use warnings;

use Module::Build;

my $build = Module::Build->new(
   module_name => 'IO::Async',
   requires => {
      'Future' => '0.33', # ->catch
      'Future::Utils' => '0.18', # try_repeat
      'Exporter' => '5.57',
      'File::stat' => 0,
      'IO::Poll' => 0,
      'List::Util' => 0,
      # Require Socket 2.029 on MSWin32 because of AF_UNIX (RT133018)
      ( 'Socket' => ( $^O eq "MSWin32" ? '2.029' : '2.007' ) ),
      'Storable' => 0,
      'Struct::Dumb' => 0,
      'Time::HiRes' => 0,

      # Fails on perl 5.8.3 for unknown reasons
      'perl' => '5.008004',
   },
   recommends => {
      'IO::Socket::IP' => 0,
   },
   test_requires => {
      'File::Temp' => 0,
      'Test::Fatal' => 0,
      'Test::Future::IO::Impl' => 0,
      'Test::Identity' => 0,
      'Test::Metrics::Any' => 0,
      'Test::More' => '0.88',
      'Test::Refcount' => 0,
   },
   configure_requires => {
      'Module::Build' => '0.4004', # test_requires
   },
   license => 'perl',
   create_license => 1,
   create_readme  => 1,
   meta_merge => {
      resources => {
         x_IRC => "irc://irc.perl.org/#io-async",
      },
   },
);

$build->create_build_script;