diff options
author | Michael G. Schwern <schwern@pobox.com> | 2003-03-30 18:42:58 -0800 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-03-31 09:54:52 +0000 |
commit | 479d2113ccb2226821ef75027b9186d1d0e367e9 (patch) | |
tree | a9b0815b35ca20eb8b0e60c5a7881b0ed3033e7e /lib/ExtUtils/NOTES | |
parent | f18b2318c1a1ea8f33016f2bf34abc4ac137b8e3 (diff) | |
download | perl-479d2113ccb2226821ef75027b9186d1d0e367e9.tar.gz |
ExtUtils::MakeMaker 6.03 -> 6.06_05ish
Message-ID: <20030331104257.GB15327@windhund.schwern.org>
p4raw-id: //depot/perl@19099
Diffstat (limited to 'lib/ExtUtils/NOTES')
-rw-r--r-- | lib/ExtUtils/NOTES | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/lib/ExtUtils/NOTES b/lib/ExtUtils/NOTES new file mode 100644 index 0000000000..837167c026 --- /dev/null +++ b/lib/ExtUtils/NOTES @@ -0,0 +1,102 @@ +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. |