home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2005 December (Special)
/
PCWorld_2005-12_Special_cd.bin
/
Bezpecnost
/
lsti
/
lsti.exe
/
framework-2.5.exe
/
NOTES
< prev
next >
Wrap
Text File
|
2005-01-27
|
4KB
|
103 lines
The Simplified MakeMaker class hierarchy
****************************************
What most people need to know.
(Subclasses on top.)
MY
|
ExtUtils::MakeMaker
|
ExtUtils::MM_{Current OS}
|
ExtUtils::MM_Unix
|
ExtUtils::MM_Any
The object actually used is of the class MY which allows you to
override bits of MakeMaker inside your Makefile.PL by declaring
MY::foo() methods.
The Real MakeMaker class hierarchy
**********************************
You wish it was that simple.
Here's how it really works.
PACK### (created each call to ExtUtils::MakeMaker->new)
. |
(mixin) |
. |
MY (created by ExtUtils::MY) |
| |
ExtUtils::MY MM (created by ExtUtils::MM)
| | |
ExtUtils::MM ExtUtils::MM_{Current OS}
| | .
| |
ExtUtils::Liblist ExtUtils::MakeMaker .
|
ExtUtils::Liblist::Kid .
(variable subclass)
.
ExtUtils::MM_{NonUnix}. . . . . . . . . . . . . . . .
|
ExtUtils::MM_Unix . . . . . . . . . . . . . . . . . .
|
ExtUtils::MM_Any
NOTE: Yes, this is a mess. See
http://archive.develooper.com/makemaker@perl.org/msg00134.html
for some history.
NOTE: When ExtUtils::MM is loaded it chooses a superclass for MM from
amongst the ExtUtils::MM_* modules based on the current operating
system.
NOTE: ExtUtils::MM_{Current OS} represents one of the ExtUtils::MM_*
modules except ExtUtils::MM_Any.
NOTE: ExtUtils::MM_{NonUnix} represents all of the ExtUtils::MM_*
modules except ExtUtils::MM_Any and ExtUtils::MM_Unix.
NOTE: The main object used by MakeMaker is a PACK### object, *not*
ExtUtils::MakeMaker. It is, effectively, a subclass of MY,
ExtUtils::Makemaker, ExtUtils::Liblist and an ExtUtils::MM_* class
appropriate for your operating system.
NOTE: The methods in MY are simply copied into PACK### rather than
MY being a superclass of PACK###. I don't remember the rationale.
NOTE: ExtUtils::Liblist should be removed from the inheritence hiearchy
and simply be called as functions.
NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
The MM_* hierarchy
******************
MM_Win95 MM_NW5
\ /
MM_BeOS MM_Cygwin MM_OS2 MM_VMS MM_Win32 MM_DOS MM_MacOS MM_UWIN
\ | | | / / / /
---------------------------------------------------------
| |
MM_Unix |
| |
MM_Any
NOTE: Each direct MM_Unix subclass is also an MM_Any subclass. This
is a temporary hack because MM_Unix overrides some MM_Any methods with
Unix specific code. It allows the non-Unix modules to see the
original MM_Any implementations.
NOTE: Modules like File::Spec and Exporter have been omitted for clarity.