home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December (Special) / PCWorld_2005-12_Special_cd.bin / Bezpecnost / lsti / lsti.exe / framework-2.5.exe / NOTES < prev    next >
Text File  |  2005-01-27  |  4KB  |  103 lines

  1. The Simplified MakeMaker class hierarchy
  2. ****************************************
  3.  
  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.
  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              ExtUtils::MM_{Current OS}
  39.                |         |                              .
  40.                |         |                              
  41.     ExtUtils::Liblist    ExtUtils::MakeMaker            .
  42.           |                                             
  43.     ExtUtils::Liblist::Kid                              .
  44.  
  45.                                                 (variable subclass)
  46.  
  47.                                                         .
  48.  
  49.     ExtUtils::MM_{NonUnix}. . . . . . . . . . . . . . . .
  50.             |
  51.     ExtUtils::MM_Unix . . . . . . . . . . . . . . . . . .
  52.             |
  53.     ExtUtils::MM_Any
  54.  
  55.  
  56. NOTE: Yes, this is a mess.  See
  57. http://archive.develooper.com/makemaker@perl.org/msg00134.html
  58. for some history.
  59.  
  60. NOTE: When ExtUtils::MM is loaded it chooses a superclass for MM from
  61. amongst the ExtUtils::MM_* modules based on the current operating
  62. system.
  63.  
  64. NOTE: ExtUtils::MM_{Current OS} represents one of the ExtUtils::MM_*
  65. modules except ExtUtils::MM_Any.
  66.  
  67. NOTE: ExtUtils::MM_{NonUnix} represents all of the ExtUtils::MM_*
  68. modules except ExtUtils::MM_Any and ExtUtils::MM_Unix.
  69.  
  70. NOTE: The main object used by MakeMaker is a PACK### object, *not*
  71. ExtUtils::MakeMaker.  It is, effectively, a subclass of MY,
  72. ExtUtils::Makemaker, ExtUtils::Liblist and an ExtUtils::MM_* class
  73. appropriate for your operating system.
  74.  
  75. NOTE: The methods in MY are simply copied into PACK### rather than
  76. MY being a superclass of PACK###.  I don't remember the rationale.
  77.  
  78. NOTE: ExtUtils::Liblist should be removed from the inheritence hiearchy
  79. and simply be called as functions.
  80.  
  81. NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
  82.  
  83.  
  84. The MM_* hierarchy
  85. ******************
  86.  
  87.                                MM_Win95   MM_NW5
  88.                                     \      /
  89. MM_BeOS  MM_Cygwin  MM_OS2  MM_VMS  MM_Win32  MM_DOS  MM_MacOS  MM_UWIN
  90.       \        |      |         |        /      /       /       /
  91.        ---------------------------------------------------------
  92.                            |       |
  93.                         MM_Unix    |
  94.                               |    |
  95.                               MM_Any
  96.  
  97. NOTE: Each direct MM_Unix subclass is also an MM_Any subclass.  This
  98. is a temporary hack because MM_Unix overrides some MM_Any methods with
  99. Unix specific code.  It allows the non-Unix modules to see the
  100. original MM_Any implementations.
  101.  
  102. NOTE: Modules like File::Spec and Exporter have been omitted for clarity.
  103.