on $_ => sub {
    requires 'Devel::CheckLib';
    requires 'Module::CPANfile';
} for qw(configure build);
# these are configure deps, but cpanm has a hard time picking them up

on runtime => sub {
    requires 'namespace::autoclean', '0.16';
    requires 'AnyEvent';
    requires 'Carp';
    requires 'Module::Runtime';
    requires 'Moo';
    requires 'Scope::Guard';
    requires 'Throwable';
    requires 'XSLoader';
};

on test => sub {
    requires 'namespace::clean';
    requires 'AnyEvent::Future';
    requires 'Storable';
    requires 'Test::Class::Moose', '0.55';
    requires 'Test::LeakTrace';
    requires 'Test::More';
    requires 'Try::Tiny';
};

on develop => sub {
    requires 'Digest::SHA';
    requires 'FindBin::libs';
    requires 'Module::Install::ExtraTests';
    requires 'Module::Install::ReadmePodFromPod';
    requires 'Module::Install::XSUtil';
    requires 'Test::Fatal';
    requires 'Test::Pod';
    requires 'Test::Strict';
};

feature 'async-interrupt', 'Async::Interrupt support' => sub {
    requires 'Async::Interrupt';
};

feature 'io-async', 'IO::Async support' => sub {
    requires 'IO::Async::Handle';
};

feature 'mojo', 'Mojolicious support' => sub {
    requires 'Mojolicious';
    requires 'Future::Mojo';
};

feature 'poe', 'POE support' => sub {
    requires 'POE';
    requires 'POE::Future';
};
