source: for-distributions/trunk/bin/windows/perl/lib/ExtUtils/NOTES@ 14489

Last change on this file since 14489 was 14489, checked in by oranfry, 17 years ago

upgrading to perl 5.8

File size: 3.4 KB
Line 
1The Simplified MakeMaker class hierarchy
2****************************************
3
4What most people need to know.
5
6(Subclasses on top.)
7
8 MY
9 |
10 ExtUtils::MakeMaker
11 |
12 ExtUtils::MM_{Current OS}
13 |
14 ExtUtils::MM_Unix
15 |
16 ExtUtils::MM_Any
17
18The object actually used is of the class MY which allows you to
19override bits of MakeMaker inside your Makefile.PL by declaring
20MY::foo() methods.
21
22
23The Real MakeMaker class hierarchy
24**********************************
25
26You wish it was that simple.
27
28Here's how it really works.
29
30 PACK### (created each call to ExtUtils::MakeMaker->new)
31 . |
32 (mixin) |
33 . |
34 MY (created by ExtUtils::MY) |
35 | |
36 ExtUtils::MY MM (created by ExtUtils::MM)
37 | |
38 ExtUtils::MM
39 | | |-----------------------
40 | | |
41 ExtUtils::Liblist ExtUtils::MakeMaker |
42 | |
43 ExtUtils::Liblist::Kid |
44 |
45 |
46 |
47 ExtUtils::MM_{Current OS} (if necessary)
48 |
49 ExtUtils::MM_Unix
50 |
51 ExtUtils::MM_Any
52
53
54NOTE: Yes, this is a mess. See
55http://archive.develooper.com/[email protected]/msg00134.html
56for some history.
57
58NOTE: When ExtUtils::MM is loaded it chooses a superclass for MM from
59amongst the ExtUtils::MM_* modules based on the current operating
60system.
61
62NOTE: ExtUtils::MM_{Current OS} represents one of the ExtUtils::MM_*
63modules except ExtUtils::MM_Any chosen based on your operating system.
64
65NOTE: The main object used by MakeMaker is a PACK### object, *not*
66ExtUtils::MakeMaker. It is, effectively, a subclass of MY,
67ExtUtils::Makemaker, ExtUtils::Liblist and ExtUtils::MM_{Current OS}
68
69NOTE: The methods in MY are simply copied into PACK### rather than
70MY being a superclass of PACK###. I don't remember the rationale.
71
72NOTE: ExtUtils::Liblist should be removed from the inheritence hiearchy
73and simply be called as functions.
74
75NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
76
77
78The MM_* hierarchy
79******************
80
81 MM_Win95 MM_NW5
82 \ /
83MM_BeOS MM_Cygwin MM_OS2 MM_VMS MM_Win32 MM_DOS MM_UWIN
84 \ | | | / / /
85 ------------------------------------------------
86 | |
87 MM_Unix |
88 | |
89 MM_Any
90
91NOTE: Each direct MM_Unix subclass is also an MM_Any subclass. This
92is a temporary hack because MM_Unix overrides some MM_Any methods with
93Unix specific code. It allows the non-Unix modules to see the
94original MM_Any implementations.
95
96NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
Note: See TracBrowser for help on using the repository browser.