The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package inc::MakeMaker;

use Moose;
use lib 'inc';
use MMHelper;

extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';
with 'Dist::Zilla::Role::MetaProvider';

override _build_MakeFile_PL_template => sub {
    my ($self) = @_;

    my $tmpl = super();

    my $ccflags = MMHelper::ccflags_dyn();
    $tmpl =~ s/^(WriteMakefile\()/\$WriteMakefileArgs{CCFLAGS} = $ccflags;\n\n$1/m;

    $tmpl =~ s/^(WriteMakefile\()/\$WriteMakefileArgs{PREREQ_PM}->{'B::Hooks::EndOfScope'} = 0 if \$] < 5.013008;\n\n$1/m;

    $tmpl =~ s/^(use ExtUtils::MakeMaker)/MMHelper::header_generator() . "\n$1"/em
        or die;

    return $tmpl;
};

sub metadata {
    return { dynamic_config => 1 };
}

override _build_WriteMakefile_args => sub {
    my ($self) = @_;
    my $args = super();

    return {
        %{ $args },
        MMHelper::mm_args(),
    };
};

after register_prereqs => sub {
    my ($self) = @_;

    $self->zilla->register_prereqs(
        { phase => 'configure' },
        'IO::File'           => 0,
        'Devel::CallChecker' => 0,
        'Devel::CallParser'  => 0,
    );
};

1;