home *** CD-ROM | disk | FTP | other *** search
- 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.
-