docs::a...erl::MM(3)

πŸ“¦ version 2.0.13, in nixos 26.05, nixpkgs unstable

NAME πŸ’–

ModPerl::MM -- A "subclass" of ExtUtils::MakeMaker for mod_perl 2.0.

okay bestie, you're reading docs::a...erl::MM(3) from the User Contributed Perl Documentation. This is the mod_perl 2.0 MakeMaker glow-up. πŸ¦‹

SYNOPSIS ✨

okay so here's the group-chat recap of how you use it:

use ModPerl::MM;

# ModPerl::MM takes care of doing all the dirty job of overriding
ModPerl::MM::WriteMakefile(...);

# if there is a need to extend the default methods
sub MY::constants {
    my $self = shift;
    $self->ModPerl::MM::MY::constants;
    # do something else;
}

# or prevent overriding completely
sub MY::constants { shift->MM::constants(@_); }";

# override the default value of WriteMakefile's attribute
my $extra_inc = "/foo/include";
ModPerl::MM::WriteMakefile(
    ...
    INC => $extra_inc,
    ...
);

# extend the default value of WriteMakefile's attribute
my $extra_inc = "/foo/include";
ModPerl::MM::WriteMakefile(
    ...
    INC => join " ", $extra_inc, ModPerl::MM::get_def_opt('INC'),
    ...
);

DESCRIPTION 🌸

ModPerl::MM is a "subclass" of ExtUtils::MakeMaker for mod_perl 2.0, to a degree of sub-classability of ExtUtils::MakeMaker.

When ModPerl::MM::WriteMakefile() is used instead of ExtUtils::MakeMaker::WriteMakefile(), ModPerl::MM overrides several ExtUtils::MakeMaker methods behind the scenes and supplies default WriteMakefile() arguments adjusted for a mod_perl 2.0 build. It's written in such a way so that normally 3rd party module developers for mod_perl 2.0 don't need to mess with Makefile.PL at all. Slay. πŸ’…

MY::" Default Methods 🧚

ModPerl::MM overrides method foo as long as Makefile.PL hasn't already specified a method MY::foo. If the latter happens, ModPerl::MM will DWIM and do nothing. No cap.

In case the functionality of ModPerl::MM methods needs to be extended, rather than completely overridden, the ModPerl::MM methods can be called internally. For example, if you need to modify constants in addition to the modifications applied by ModPerl::MM::MY::constants, call the ModPerl::MM::MY::constants method (notice that it resides in the package ModPerl::MM::MY and not ModPerl::MM), then do your extra manipulations on constants:

# if there is a need to extend the methods
sub MY::constants {
    my $self = shift;
    $self->ModPerl::MM::MY::constants;
    # do something else;
}

In certain cases a developer may want to prevent ModPerl::MM from overriding certain methods. In that case an explicit override in Makefile.PL will do the job. For example, if you don't want the constants() method to be overridden by ModPerl::MM, add this to your Makefile.PL:

sub MY::constants { shift->MM::constants(@_); }";

ModPerl::MM overrides the following methods:

"ModPerl::MM::MY::post_initialize"

🚨 Deprecated alert: this method is deprecated.

WriteMakefile() Default Arguments πŸŽ€

ModPerl::MM::WriteMakefile supplies default arguments such as INC and TYPEMAPS unless they weren't passed to ModPerl::MM::WriteMakefile from Makefile.PL.

If the default values aren't satisfying, these should be overridden in Makefile.PL. For example, to supply an empty INC, explicitly set the argument in Makefile.PL:

ModPerl::MM::WriteMakefile(
    ...
    INC => '',
    ...
);

If instead of fully overriding the default arguments you want to extend or modify them, they can be retrieved using the ModPerl::MM::get_def_opt() function. The following example appends an extra value to the default INC attribute:

my $extra_inc = "/foo/include";
ModPerl::MM::WriteMakefile(
    ...
    INC => join " ", $extra_inc, ModPerl::MM::get_def_opt('INC'),
    ...
);

ModPerl::MM supplies default values for the following ModPerl::MM::WriteMakefile attributes:

"CCFLAGS"

"LIBS"

"INC"

"OPTIMIZE"

"LDDLFLAGS"

"TYPEMAPS"

"dynamic_lib"

"OTHERLDFLAGS":

dynamic_lib => { OTHERLDFLAGS => ... }

"macro"

"MOD_INSTALL":

macro => { MOD_INSTALL => ... }

makes sure that Apache-Test/ is added to @INC.

Public API πŸ‘‘

The following functions are a part of the public API. They are described elsewhere in this document.

WriteMakefile()

ModPerl::MM::WriteMakefile(...);

get_def_opt()

my $def_val = ModPerl::MM::get_def_opt($key);

okay bestie, that's the whole page πŸ’– it's from perl v5.42.3, dated 2023-10-21, and the manual is docs::a...erl::MM(3). go build something iconic. periodt. 🌈✨

πŸ“¦ where this page comes from