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

extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';

around _build_MakeFile_PL_template => sub {
    my $orig = shift;
    my $self = shift;

    my $dumper = Data::Dumper->new(
        [ $self->zilla->prereqs->requirements_for(qw(develop requires))->as_string_hash ],
        [ '*DEVELOP_REQUIRES' ]
    );
    $dumper->Sortkeys(1);
    $dumper->Indent(1);
    $dumper->Useqq(1);
    $dumper->Pad('  ');

    my $prereqs = $dumper->Dump =~ s/^\s*//r;

    my $fixup_prereqs = <<PREREQS;
if (\$ENV{RELEASE_TESTING}) {
  my $prereqs
  \$WriteMakefileArgs{BUILD_REQUIRES} = {
    %{ \$WriteMakefileArgs{BUILD_REQUIRES} },
    %DEVELOP_REQUIRES,
  };
}
PREREQS

    my $callparser_h = <<'CALLPARSER_H';
use Devel::CallParser 'callparser1_h', 'callparser_linkable';
use File::Spec::Functions 'abs2rel';
{
    open my $fh, '>', 'callparser1.h' or die $!;
    print { $fh } callparser1_h or die $!;
    close $fh or die $!;
}
my @linkable = map { abs2rel($_) } callparser_linkable;
unshift @linkable, '$(BASEEXT)$(OBJ_EXT)' if @linkable;
$WriteMakefileArgs{OBJECT} = join(' ', @linkable) if @linkable;
$WriteMakefileArgs{clean}{FILES} .= ' callparser1.h';
CALLPARSER_H

    my $template = $self->$orig(@_);
    $template =~ s/(WriteMakefile\()/$fixup_prereqs\n$callparser_h\n$1/;

    return $template;
};

__PACKAGE__->meta->make_immutable;
no Moose;