schwern / extutils-makemaker

Perl module which drives "perl Makefile.PL" to make Makefiles.

schwern (author)
Fri Apr 02 12:34:51 -0800 2004
commit  2d95d107dcd132c0afa2d957ec8327b9228076ce
tree    d587147d7cab1660b3cdf3c06f79b1abf08bcda0
parent  032815957e6b40b5d616423924186be5f0a79c6b
8909306c » schwern 2002-11-14 Putting in a simplified cla... 1 The Simplified MakeMaker class hierarchy
2 ****************************************
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 3
8909306c » schwern 2002-11-14 Putting in a simplified cla... 4 What 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
18 The object actually used is of the class MY which allows you to
19 override bits of MakeMaker inside your Makefile.PL by declaring
20 MY::foo() methods.
21
22
23 The Real MakeMaker class hierarchy
24 **********************************
25
26 You wish it was that simple.
27
28 Here's how it really works.
6f1b7515 » schwern 2002-02-10 Adding NOTES and TODO 29
63a67b2a » schwern 2002-11-12 Added information about PAC... 30 PACK### (created each call to ExtUtils::MakeMaker->new)
31 . |
32 (mixin) |
33 . |
34 MY (created by ExtUtils::MY) |
35 | |
2d95d107 » schwern 2004-04-02 Removing MM_MacOS from clas... 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
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 52
53
54 NOTE: Yes, this is a mess. See
55 http://archive.develooper.com/makemaker@perl.org/msg00134.html
56 for some history.
57
58 NOTE: When ExtUtils::MM is loaded it chooses a superclass for MM from
59 amongst the ExtUtils::MM_* modules based on the current operating
60 system.
61
62 NOTE: ExtUtils::MM_{Current OS} represents one of the ExtUtils::MM_*
2d95d107 » schwern 2004-04-02 Removing MM_MacOS from clas... 63 modules except ExtUtils::MM_Any chosen based on your operating system.
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 64
63a67b2a » schwern 2002-11-12 Added information about PAC... 65 NOTE: The main object used by MakeMaker is a PACK### object, *not*
66 ExtUtils::MakeMaker. It is, effectively, a subclass of MY,
2d95d107 » schwern 2004-04-02 Removing MM_MacOS from clas... 67 ExtUtils::Makemaker, ExtUtils::Liblist and ExtUtils::MM_{Current OS}
63a67b2a » schwern 2002-11-12 Added information about PAC... 68
69 NOTE: The methods in MY are simply copied into PACK### rather than
70 MY being a superclass of PACK###. I don't remember the rationale.
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 71
72 NOTE: ExtUtils::Liblist should be removed from the inheritence hiearchy
73 and simply be called as functions.
74
75 NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
6f1b7515 » schwern 2002-02-10 Adding NOTES and TODO 76
77
78 The MM_* hierarchy
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 79 ******************
6f1b7515 » schwern 2002-02-10 Adding NOTES and TODO 80
3856e937 » schwern 2002-11-12 Updated the MM_* class hier... 81 MM_Win95 MM_NW5
82 \ /
2d95d107 » schwern 2004-04-02 Removing MM_MacOS from clas... 83 MM_BeOS MM_Cygwin MM_OS2 MM_VMS MM_Win32 MM_DOS MM_UWIN
84 \ | | | / / /
85 ------------------------------------------------
d0daeab6 » schwern 2002-11-12 Better showing the relation... 86 | |
87 MM_Unix |
88 | |
89 MM_Any
90
91 NOTE: Each direct MM_Unix subclass is also an MM_Any subclass. This
92 is a temporary hack because MM_Unix overrides some MM_Any methods with
93 Unix specific code. It allows the non-Unix modules to see the
94 original MM_Any implementations.
a8cff51c » schwern 2002-11-12 This hierarchy now reflects... 95
96 NOTE: Modules like File::Spec and Exporter have been omitted for clarity.