in reply to Re^2: ExtUtils::MakeMaker, Makefile.PL: modify existing targets like "all" (as in make all) or "install"
in thread ExtUtils::MakeMaker, Makefile.PL: modify existing targets like "all" (as in make all) or "install"

Weird. I was going from Overriding MakeMaker Methods, where it claims that stuffing things into MY:: will make them override the rest.

This is somewhat mildly corroborated by the EU:MM object hierarchy but I have to shamefully admit that I did not test this.

  • Comment on Re^3: ExtUtils::MakeMaker, Makefile.PL: modify existing targets like "all" (as in make all) or "install"
  • Download Code

Replies are listed 'Best First'.
Re^4: ExtUtils::MakeMaker, Makefile.PL: modify existing targets like "all" (as in make all) or "install"
by bliako (Abbot) on Sep 18, 2025 at 08:26 UTC

    Oh I found something in ExtUtils::MM_Unix:

    Not all of the methods below are overridable in a Makefile.PL. Overridable methods are marked as (o). All methods are overridable by a platform specific MM_*.pm file.

    So, for example sub MY::c_o { "hello" } works but sub MY::all_target{ ... } does not.

    I ended up using all_targets(o) like this (note that I am using the 2nd method you mentioned, i.e. overriding by creating the MY package explicitly because I want access to the SUPER:

    ... WriteMakefile(%WriteMakefileArgs); package MY; sub top_targets { my $self = shift; my $orig_all = $self->SUPER::top_targets(); # translations target at the end here: $orig_all =~ s/\blinkext\b/linkext translations/; return $orig_all }

    This works but I am absolutely not sure I have the order of the targets right.