schwern / extutils-makemaker
- Source
- Commits
- Network (8)
- Issues (0)
- Downloads (85)
- Wiki (1)
- Graphs
-
Tree:
2d95d10
commit 2d95d107dcd132c0afa2d957ec8327b9228076ce
tree d587147d7cab1660b3cdf3c06f79b1abf08bcda0
parent 032815957e6b40b5d616423924186be5f0a79c6b
tree d587147d7cab1660b3cdf3c06f79b1abf08bcda0
parent 032815957e6b40b5d616423924186be5f0a79c6b
extutils-makemaker / NOTES
| 8909306c » | schwern | 2002-11-14 | 1 | The Simplified MakeMaker class hierarchy | |
| 2 | **************************************** | ||||
| a8cff51c » | schwern | 2002-11-12 | 3 | ||
| 8909306c » | schwern | 2002-11-14 | 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 | 29 | ||
| 63a67b2a » | schwern | 2002-11-12 | 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 | 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 | 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 | 63 | modules except ExtUtils::MM_Any chosen based on your operating system. | |
| a8cff51c » | schwern | 2002-11-12 | 64 | ||
| 63a67b2a » | schwern | 2002-11-12 | 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 | 67 | ExtUtils::Makemaker, ExtUtils::Liblist and ExtUtils::MM_{Current OS} | |
| 63a67b2a » | schwern | 2002-11-12 | 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 | 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 | 76 | ||
| 77 | |||||
| 78 | The MM_* hierarchy | ||||
| a8cff51c » | schwern | 2002-11-12 | 79 | ****************** | |
| 6f1b7515 » | schwern | 2002-02-10 | 80 | ||
| 3856e937 » | schwern | 2002-11-12 | 81 | MM_Win95 MM_NW5 | |
| 82 | \ / | ||||
| 2d95d107 » | schwern | 2004-04-02 | 83 | MM_BeOS MM_Cygwin MM_OS2 MM_VMS MM_Win32 MM_DOS MM_UWIN | |
| 84 | \ | | | / / / | ||||
| 85 | ------------------------------------------------ | ||||
| d0daeab6 » | schwern | 2002-11-12 | 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 | 95 | ||
| 96 | NOTE: Modules like File::Spec and Exporter have been omitted for clarity. | ||||
