ModPerl::MM - A "subclass" of ExtUtils::MakeMaker for mod_perl 2.0
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'),
...
);
User Contributed Perl Documentation
build::sparcv9::docs::api::ModPerl::MM(3)
NAME
ModPerl::MM -- A "subclass" of ExtUtils::MakeMaker for mod_perl 2.0
Synopsis
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 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.
"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.
In case the functionality of "ModPerl::MM" methods needs to be
extended, rather than completely overriden, 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 developers may want to prevent from "ModPerl::MM" to
override 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 overriden by "ModPerl::MM", add to your
Makefile.PL:
sub MY::constants { shift->MM::constants(@_); }";
"ModPerl::MM" overrides the following methods:
"ModPerl::MM::MY::post_initialize"
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 overriden 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);
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
+---------------+-----------------------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------------------------------+
|Availability | web/server/apache-24/module/apache-perl |
+---------------+-----------------------------------------+
|Stability | Uncommitted |
+---------------+-----------------------------------------+
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at
https://github.com/oracle/solaris-userland. The original community
source was downloaded from
https://www.apache.org/dist/perl/mod_perl-2.0.12.tar.gz.
Further information about this software can be found on the open source
community website at https://perl.apache.org/.
perl v5.32.0 2022-01-30
build::sparcv9::docs::api::ModPerl::MM(3)