1 package inc::MMPackageStash;
4 extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';
6 # XXX: this is pretty gross, it should be possible to clean this up later
7 around _build_MakeFile_PL_template => sub {
12 my $can_cc = <<'CAN_CC';
16 # check if we can run some command
21 return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
23 for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
25 my $abs = File::Spec->catfile($dir, $_[1]);
26 return $abs if (-x $abs or $abs = MM->maybe_command($abs));
32 # can we locate a (the) C compiler
34 my @chunks = split(/ /, $Config::Config{cc}) or return;
36 # $Config{cc} may contain args; try to find out the program part
38 return can_run("@chunks") || (pop(@chunks), next);
45 my $template = $self->$orig(@_);
47 my $xs_version = $self->zilla->prereqs->requirements_for('runtime', 'recommends')->as_string_hash->{'Package::Stash::XS'};
49 $template =~ s/(WriteMakefile\()/\$WriteMakefileArgs{PREREQ_PM}{'Package::Stash::XS'} = $xs_version\n if can_cc();\n\n$1/;
51 return $template . $can_cc;
54 __PACKAGE__->meta->make_immutable;