home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _03bb0439754cd1923f79ad333c8bc32b < prev    next >
Text File  |  2000-03-23  |  51KB  |  1,163 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>ExtUtils::MakeMaker - create an extension Makefile</TITLE>
  5. <LINK REL="stylesheet" HREF="../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> ExtUtils::MakeMaker - create an extension Makefile</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <UL>
  26.  
  27.         <LI><A HREF="#how to write a makefile.pl">How To Write A Makefile.PL</A></LI>
  28.         <LI><A HREF="#default makefile behaviour">Default Makefile Behaviour</A></LI>
  29.         <LI><A HREF="#make test">make test</A></LI>
  30.         <LI><A HREF="#make testdb">make testdb</A></LI>
  31.         <LI><A HREF="#make install">make install</A></LI>
  32.         <LI><A HREF="#prefix and lib attribute">PREFIX and LIB attribute</A></LI>
  33.         <LI><A HREF="#afs users">AFS users</A></LI>
  34.         <LI><A HREF="#static linking of a new perl binary">Static Linking of a new Perl Binary</A></LI>
  35.         <LI><A HREF="#determination of perl library and installation locations">Determination of Perl Library and Installation Locations</A></LI>
  36.         <LI><A HREF="#which architecture dependent directory">Which architecture dependent directory?</A></LI>
  37.         <LI><A HREF="#using attributes and parameters">Using Attributes and Parameters</A></LI>
  38.         <LI><A HREF="#additional lowercase attributes">Additional lowercase attributes</A></LI>
  39.         <LI><A HREF="#overriding makemaker methods">Overriding MakeMaker Methods</A></LI>
  40.         <LI><A HREF="#hintsfile support">Hintsfile support</A></LI>
  41.         <LI><A HREF="#distribution support">Distribution Support</A></LI>
  42.         <LI><A HREF="#disabling an extension">Disabling an extension</A></LI>
  43.     </UL>
  44.  
  45.     <LI><A HREF="#environment">ENVIRONMENT</A></LI>
  46.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  47.     <LI><A HREF="#authors">AUTHORS</A></LI>
  48. </UL>
  49. <!-- INDEX END -->
  50.  
  51. <HR>
  52. <P>
  53. <H1><A NAME="name">NAME</A></H1>
  54. <P>ExtUtils::MakeMaker - create an extension Makefile</P>
  55. <P>
  56. <HR>
  57. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  58. <UL>
  59. <LI>Linux</LI>
  60. <LI>Solaris</LI>
  61. <LI>Windows</LI>
  62. </UL>
  63. <HR>
  64. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  65. <P><CODE>use ExtUtils::MakeMaker;</CODE></P>
  66. <P><CODE>WriteMakefile( ATTRIBUTE => VALUE [, ...] );</CODE></P>
  67. <P>which is really</P>
  68. <P><CODE>MM->new(\%att)->flush;</CODE></P>
  69. <P>
  70. <HR>
  71. <H1><A NAME="description">DESCRIPTION</A></H1>
  72. <P>This utility is designed to write a Makefile for an extension module
  73. from a Makefile.PL. It is based on the Makefile.SH model provided by
  74. Andy Dougherty and the perl5-porters.</P>
  75. <P>It splits the task of generating the Makefile into several subroutines
  76. that can be individually overridden.  Each subroutine returns the text
  77. it wishes to have written to the Makefile.</P>
  78. <P>MakeMaker is object oriented. Each directory below the current
  79. directory that contains a Makefile.PL. Is treated as a separate
  80. object. This makes it possible to write an unlimited number of
  81. Makefiles with a single invocation of WriteMakefile().</P>
  82. <P>
  83. <H2><A NAME="how to write a makefile.pl">How To Write A Makefile.PL</A></H2>
  84. <P>The short answer is: Don't.</P>
  85. <PRE>
  86.         Always begin with h2xs.
  87.         Always begin with h2xs!
  88.         ALWAYS BEGIN WITH H2XS!</PRE>
  89. <P>even if you're not building around a header file, and even if you
  90. don't have an XS component.</P>
  91. <P>Run <CODE>h2xs(1)</CODE> before you start thinking about writing a module. For so
  92. called pm-only modules that consist of <CODE>*.pm</CODE> files only, h2xs has
  93. the <CODE>-X</CODE> switch. This will generate dummy files of all kinds that are
  94. useful for the module developer.</P>
  95. <P>The medium answer is:</P>
  96. <PRE>
  97.     use ExtUtils::MakeMaker;
  98.     WriteMakefile( NAME => "Foo::Bar" );</PRE>
  99. <P>The long answer is the rest of the manpage :-)</P>
  100. <P>
  101. <H2><A NAME="default makefile behaviour">Default Makefile Behaviour</A></H2>
  102. <P>The generated Makefile enables the user of the extension to invoke</P>
  103. <PRE>
  104.   perl Makefile.PL # optionally "perl Makefile.PL verbose"
  105.   make
  106.   make test        # optionally set TEST_VERBOSE=1
  107.   make install     # See below</PRE>
  108. <P>The Makefile to be produced may be altered by adding arguments of the
  109. form <CODE>KEY=VALUE</CODE>. E.g.</P>
  110. <PRE>
  111.   perl Makefile.PL PREFIX=/tmp/myperl5</PRE>
  112. <P>Other interesting targets in the generated Makefile are</P>
  113. <PRE>
  114.   make config     # to check if the Makefile is up-to-date
  115.   make clean      # delete local temp files (Makefile gets renamed)
  116.   make realclean  # delete derived files (including ./blib)
  117.   make ci         # check in all the files in the MANIFEST file
  118.   make dist       # see below the Distribution Support section</PRE>
  119. <P>
  120. <H2><A NAME="make test">make test</A></H2>
  121. <P>MakeMaker checks for the existence of a file named <EM>test.pl</EM> in the
  122. current directory and if it exists it adds commands to the test target
  123. of the generated Makefile that will execute the script with the proper
  124. set of perl <CODE>-I</CODE> options.</P>
  125. <P>MakeMaker also checks for any files matching glob(``t/*.t''). It will
  126. add commands to the test target of the generated Makefile that execute
  127. all matching files via the <A HREF="../../lib/Test/Harness.html">the Test::Harness manpage</A> module with the <CODE>-I</CODE>
  128. switches set correctly.</P>
  129. <P>
  130. <H2><A NAME="make testdb">make testdb</A></H2>
  131. <P>A useful variation of the above is the target <CODE>testdb</CODE>. It runs the
  132. test under the Perl debugger (see <A HREF="../../lib/Pod/perldebug.html">the perldebug manpage</A>). If the file
  133. <EM>test.pl</EM> exists in the current directory, it is used for the test.</P>
  134. <P>If you want to debug some other testfile, set <CODE>TEST_FILE</CODE> variable
  135. thusly:</P>
  136. <PRE>
  137.   make testdb TEST_FILE=t/mytest.t</PRE>
  138. <P>By default the debugger is called using <CODE>-d</CODE> option to perl. If you
  139. want to specify some other option, set <CODE>TESTDB_SW</CODE> variable:</P>
  140. <PRE>
  141.   make testdb TESTDB_SW=-Dx</PRE>
  142. <P>
  143. <H2><A NAME="make install">make install</A></H2>
  144. <P>make alone puts all relevant files into directories that are named by
  145. the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_HTMLLIBDIR,
  146. INST_HTMLSCRIPTDIR, INST_MAN1DIR, and INST_MAN3DIR.  All these default
  147. to something below ./blib if you are <EM>not</EM> building below the perl
  148. source directory. If you <EM>are</EM> building below the perl source,
  149. INST_LIB and INST_ARCHLIB default to ../../lib, and INST_SCRIPT is not
  150. defined.</P>
  151. <P>The <EM>install</EM> target of the generated Makefile copies the files found
  152. below each of the INST_* directories to their INSTALL*
  153. counterparts. Which counterparts are chosen depends on the setting of
  154. INSTALLDIRS according to the following table:</P>
  155. <PRE>
  156.                                  INSTALLDIRS set to
  157.                               perl                site</PRE>
  158. <PRE>
  159.     INST_ARCHLIB        INSTALLARCHLIB        INSTALLSITEARCH
  160.     INST_LIB            INSTALLPRIVLIB        INSTALLSITELIB
  161.     INST_HTMLLIBDIR     INSTALLHTMLPRIVLIBDIR INSTALLHTMLSITELIBDIR
  162.     INST_HTMLSCRIPTDIR            INSTALLHTMLSCRIPTDIR
  163.     INST_BIN                      INSTALLBIN
  164.     INST_SCRIPT                   INSTALLSCRIPT
  165.     INST_MAN1DIR                  INSTALLMAN1DIR
  166.     INST_MAN3DIR                  INSTALLMAN3DIR</PRE>
  167. <P>The INSTALL... macros in turn default to their %Config
  168. ($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts.</P>
  169. <P>You can check the values of these variables on your system with</P>
  170. <PRE>
  171.     perl '-V:install.*'</PRE>
  172. <P>And to check the sequence in which the library directories are
  173. searched by perl, run</P>
  174. <PRE>
  175.     perl -le 'print join $/, @INC'</PRE>
  176. <P>
  177. <H2><A NAME="prefix and lib attribute">PREFIX and LIB attribute</A></H2>
  178. <P>PREFIX and LIB can be used to set several INSTALL* attributes in one
  179. go. The quickest way to install a module in a non-standard place might
  180. be</P>
  181. <PRE>
  182.     perl Makefile.PL LIB=~/lib</PRE>
  183. <P>This will install the module's architecture-independent files into
  184. ~/lib, the architecture-dependent files into ~/lib/$archname/auto.</P>
  185. <P>Another way to specify many INSTALL directories with a single
  186. parameter is PREFIX.</P>
  187. <PRE>
  188.     perl Makefile.PL PREFIX=~</PRE>
  189. <P>This will replace the string specified by $Config{prefix} in all
  190. $Config{install*} values.</P>
  191. <P>Note, that in both cases the tilde expansion is done by MakeMaker, not
  192. by perl by default, nor by make. Conflicts between parameters LIB,
  193. PREFIX and the various INSTALL* arguments are resolved so that 
  194. XXX</P>
  195. <P>If the user has superuser privileges, and is not working on AFS
  196. (Andrew File System) or relatives, then the defaults for
  197. INSTALLPRIVLIB, INSTALLARCHLIB, INSTALLSCRIPT, etc. will be appropriate,
  198. and this incantation will be the best:</P>
  199. <PRE>
  200.     perl Makefile.PL; make; make test
  201.     make install</PRE>
  202. <P>make install per default writes some documentation of what has been
  203. done into the file <CODE>$(INSTALLARCHLIB)/perllocal.pod</CODE>. This feature
  204. can be bypassed by calling make pure_install.</P>
  205. <P>
  206. <H2><A NAME="afs users">AFS users</A></H2>
  207. <P>will have to specify the installation directories as these most
  208. probably have changed since perl itself has been installed. They will
  209. have to do this by calling</P>
  210. <PRE>
  211.     perl Makefile.PL INSTALLSITELIB=/afs/here/today \
  212.         INSTALLSCRIPT=/afs/there/now INSTALLMAN3DIR=/afs/for/manpages
  213.     make</PRE>
  214. <P>Be careful to repeat this procedure every time you recompile an
  215. extension, unless you are sure the AFS installation directories are
  216. still valid.</P>
  217. <P>
  218. <H2><A NAME="static linking of a new perl binary">Static Linking of a new Perl Binary</A></H2>
  219. <P>An extension that is built with the above steps is ready to use on
  220. systems supporting dynamic loading. On systems that do not support
  221. dynamic loading, any newly created extension has to be linked together
  222. with the available resources. MakeMaker supports the linking process
  223. by creating appropriate targets in the Makefile whenever an extension
  224. is built. You can invoke the corresponding section of the makefile with</P>
  225. <PRE>
  226.     make perl</PRE>
  227. <P>That produces a new perl binary in the current directory with all
  228. extensions linked in that can be found in INST_ARCHLIB , SITELIBEXP,
  229. and PERL_ARCHLIB. To do that, MakeMaker writes a new Makefile, on
  230. UNIX, this is called Makefile.aperl (may be system dependent). If you
  231. want to force the creation of a new perl, it is recommended, that you
  232. delete this Makefile.aperl, so the directories are searched-through
  233. for linkable libraries again.</P>
  234. <P>The binary can be installed into the directory where perl normally
  235. resides on your machine with</P>
  236. <PRE>
  237.     make inst_perl</PRE>
  238. <P>To produce a perl binary with a different name than <CODE>perl</CODE>, either say</P>
  239. <PRE>
  240.     perl Makefile.PL MAP_TARGET=myperl
  241.     make myperl
  242.     make inst_perl</PRE>
  243. <P>or say</P>
  244. <PRE>
  245.     perl Makefile.PL
  246.     make myperl MAP_TARGET=myperl
  247.     make inst_perl MAP_TARGET=myperl</PRE>
  248. <P>In any case you will be prompted with the correct invocation of the
  249. <CODE>inst_perl</CODE> target that installs the new binary into INSTALLBIN.</P>
  250. <P>make inst_perl per default writes some documentation of what has been
  251. done into the file <CODE>$(INSTALLARCHLIB)/perllocal.pod</CODE>. This
  252. can be bypassed by calling make pure_inst_perl.</P>
  253. <P>Warning: the inst_perl: target will most probably overwrite your
  254. existing perl binary. Use with care!</P>
  255. <P>Sometimes you might want to build a statically linked perl although
  256. your system supports dynamic loading. In this case you may explicitly
  257. set the linktype with the invocation of the Makefile.PL or make:</P>
  258. <PRE>
  259.     perl Makefile.PL LINKTYPE=static    # recommended</PRE>
  260. <P>or</P>
  261. <PRE>
  262.     make LINKTYPE=static                # works on most systems</PRE>
  263. <P>
  264. <H2><A NAME="determination of perl library and installation locations">Determination of Perl Library and Installation Locations</A></H2>
  265. <P>MakeMaker needs to know, or to guess, where certain things are
  266. located.  Especially INST_LIB and INST_ARCHLIB (where to put the files
  267. during the <CODE>make(1)</CODE> run), PERL_LIB and PERL_ARCHLIB (where to read
  268. existing modules from), and PERL_INC (header files and <CODE>libperl*.*</CODE>).</P>
  269. <P>Extensions may be built either using the contents of the perl source
  270. directory tree or from the installed perl library. The recommended way
  271. is to build extensions after you have run 'make install' on perl
  272. itself. You can do that in any directory on your hard disk that is not
  273. below the perl source tree. The support for extensions below the ext
  274. directory of the perl distribution is only good for the standard
  275. extensions that come with perl.</P>
  276. <P>If an extension is being built below the <CODE>ext/</CODE> directory of the perl
  277. source then MakeMaker will set PERL_SRC automatically (e.g.,
  278. <CODE>../..</CODE>).  If PERL_SRC is defined and the extension is recognized as
  279. a standard extension, then other variables default to the following:</P>
  280. <PRE>
  281.   PERL_INC     = PERL_SRC
  282.   PERL_LIB     = PERL_SRC/lib
  283.   PERL_ARCHLIB = PERL_SRC/lib
  284.   INST_LIB     = PERL_LIB
  285.   INST_ARCHLIB = PERL_ARCHLIB</PRE>
  286. <P>If an extension is being built away from the perl source then MakeMaker
  287. will leave PERL_SRC undefined and default to using the installed copy
  288. of the perl library. The other variables default to the following:</P>
  289. <PRE>
  290.   PERL_INC     = $archlibexp/CORE
  291.   PERL_LIB     = $privlibexp
  292.   PERL_ARCHLIB = $archlibexp
  293.   INST_LIB     = ./blib/lib
  294.   INST_ARCHLIB = ./blib/arch</PRE>
  295. <P>If perl has not yet been installed then PERL_SRC can be defined on the
  296. command line as shown in the previous section.</P>
  297. <P>
  298. <H2><A NAME="which architecture dependent directory">Which architecture dependent directory?</A></H2>
  299. <P>If you don't want to keep the defaults for the INSTALL* macros,
  300. MakeMaker helps you to minimize the typing needed: the usual
  301. relationship between INSTALLPRIVLIB and INSTALLARCHLIB is determined
  302. by Configure at perl compilation time. MakeMaker supports the user who
  303. sets INSTALLPRIVLIB. If INSTALLPRIVLIB is set, but INSTALLARCHLIB not,
  304. then MakeMaker defaults the latter to be the same subdirectory of
  305. INSTALLPRIVLIB as Configure decided for the counterparts in %Config ,
  306. otherwise it defaults to INSTALLPRIVLIB. The same relationship holds
  307. for INSTALLSITELIB and INSTALLSITEARCH.</P>
  308. <P>MakeMaker gives you much more freedom than needed to configure
  309. internal variables and get different results. It is worth to mention,
  310. that <CODE>make(1)</CODE> also lets you configure most of the variables that are
  311. used in the Makefile. But in the majority of situations this will not
  312. be necessary, and should only be done if the author of a package
  313. recommends it (or you know what you're doing).</P>
  314. <P>
  315. <H2><A NAME="using attributes and parameters">Using Attributes and Parameters</A></H2>
  316. <P>The following attributes can be specified as arguments to <CODE>WriteMakefile()</CODE>
  317. or as NAME=VALUE pairs on the command line:</P>
  318. <DL>
  319. <DT><STRONG><A NAME="item_AUTHOR">AUTHOR</A></STRONG><BR>
  320. <DD>
  321. String containing name (and email address) of package author(s). Is used
  322. in PPD (Perl Package Description) files for PPM (Perl Package Manager).
  323. <P></P>
  324. <DT><STRONG><A NAME="item_ABSTRACT">ABSTRACT</A></STRONG><BR>
  325. <DD>
  326. One line description of the module. Will be included in PPD file.
  327. <P></P>
  328. <DT><STRONG><A NAME="item_ABSTRACT_FROM">ABSTRACT_FROM</A></STRONG><BR>
  329. <DD>
  330. Name of the file that contains the package description. MakeMaker looks
  331. for a line in the POD matching /^($package\s-\s)(.*)/. This is typically
  332. the first line in the ``=head1 NAME'' section. $2 becomes the abstract.
  333. <P></P>
  334. <DT><STRONG><A NAME="item_BINARY_LOCATION">BINARY_LOCATION</A></STRONG><BR>
  335. <DD>
  336. Used when creating PPD files for binary packages.  It can be set to a
  337. full or relative path or URL to the binary archive for a particular
  338. architecture.  For example:
  339. <PRE>
  340.         perl Makefile.PL BINARY_LOCATION=x86/Agent.tar.gz</PRE>
  341. <P>builds a PPD package that references a binary of the <CODE>Agent</CODE> package,
  342. located in the <CODE>x86</CODE> directory relative to the PPD itself.</P>
  343. <P></P>
  344. <DT><STRONG><A NAME="item_C">C</A></STRONG><BR>
  345. <DD>
  346. Ref to array of *.c file names. Initialised from a directory scan
  347. and the values portion of the XS attribute hash. This is not
  348. currently used by MakeMaker but may be handy in Makefile.PLs.
  349. <P></P>
  350. <DT><STRONG><A NAME="item_CAPI">CAPI</A></STRONG><BR>
  351. <DD>
  352. [This attribute is obsolete in Perl 5.6.  PERL_OBJECT builds are C-compatible
  353. by default.]
  354. <P>Switch to force usage of the Perl C API even when compiling for PERL_OBJECT.</P>
  355. <P>Note that this attribute is passed through to any recursive build,
  356. but if and only if the submodule's Makefile.PL itself makes no mention
  357. of the 'CAPI' attribute.</P>
  358. <P></P>
  359. <DT><STRONG><A NAME="item_CCFLAGS">CCFLAGS</A></STRONG><BR>
  360. <DD>
  361. String that will be included in the compiler call command line between
  362. the arguments INC and OPTIMIZE.
  363. <P></P>
  364. <DT><STRONG><A NAME="item_CONFIG">CONFIG</A></STRONG><BR>
  365. <DD>
  366. Arrayref. E.g. [qw(archname manext)] defines ARCHNAME & MANEXT from
  367. config.sh. MakeMaker will add to CONFIG the following values anyway:
  368. ar
  369. cc
  370. cccdlflags
  371. ccdlflags
  372. dlext
  373. dlsrc
  374. ld
  375. lddlflags
  376. ldflags
  377. libc
  378. lib_ext
  379. obj_ext
  380. ranlib
  381. sitelibexp
  382. sitearchexp
  383. so
  384. <P></P>
  385. <DT><STRONG><A NAME="item_CONFIGURE">CONFIGURE</A></STRONG><BR>
  386. <DD>
  387. CODE reference. The subroutine should return a hash reference. The
  388. hash may contain further attributes, e.g. {LIBS => ...}, that have to
  389. be determined by some evaluation method.
  390. <P></P>
  391. <DT><STRONG><A NAME="item_DEFINE">DEFINE</A></STRONG><BR>
  392. <DD>
  393. Something like <CODE>"-DHAVE_UNISTD_H"</CODE>
  394. <P></P>
  395. <DT><STRONG><A NAME="item_DIR">DIR</A></STRONG><BR>
  396. <DD>
  397. Ref to array of subdirectories containing Makefile.PLs e.g. [ 'sdbm'
  398. ] in ext/SDBM_File
  399. <P></P>
  400. <DT><STRONG><A NAME="item_DISTNAME">DISTNAME</A></STRONG><BR>
  401. <DD>
  402. Your name for distributing the package (by tar file). This defaults to
  403. NAME above.
  404. <P></P>
  405. <DT><STRONG><A NAME="item_DL_FUNCS">DL_FUNCS</A></STRONG><BR>
  406. <DD>
  407. Hashref of symbol names for routines to be made available as universal
  408. symbols.  Each key/value pair consists of the package name and an
  409. array of routine names in that package.  Used only under AIX, OS/2,
  410. VMS and Win32 at present.  The routine names supplied will be expanded
  411. in the same way as XSUB names are expanded by the <A HREF="#item_XS"><CODE>XS()</CODE></A> macro.
  412. Defaults to
  413. <PRE>
  414.   {"$(NAME)" => ["boot_$(NAME)" ] }</PRE>
  415. <P>e.g.</P>
  416. <PRE>
  417.   {"RPC" => [qw( boot_rpcb rpcb_gettime getnetconfigent )],
  418.    "NetconfigPtr" => [ 'DESTROY'] }</PRE>
  419. <P>Please see the <A HREF="../../lib/ExtUtils/Mksymlists.html">the ExtUtils::Mksymlists manpage</A> documentation for more information
  420. about the DL_FUNCS, DL_VARS and FUNCLIST attributes.</P>
  421. <P></P>
  422. <DT><STRONG><A NAME="item_DL_VARS">DL_VARS</A></STRONG><BR>
  423. <DD>
  424. Array of symbol names for variables to be made available as universal symbols.
  425. Used only under AIX, OS/2, VMS and Win32 at present.  Defaults to [].
  426. (e.g. [ qw(Foo_version Foo_numstreams Foo_tree ) ])
  427. <P></P>
  428. <DT><STRONG><A NAME="item_EXCLUDE_EXT">EXCLUDE_EXT</A></STRONG><BR>
  429. <DD>
  430. Array of extension names to exclude when doing a static build.  This
  431. is ignored if INCLUDE_EXT is present.  Consult INCLUDE_EXT for more
  432. details.  (e.g.  [ qw( Socket POSIX ) ] )
  433. <P>This attribute may be most useful when specified as a string on the
  434. command line:  perl Makefile.PL EXCLUDE_EXT='Socket Safe'</P>
  435. <P></P>
  436. <DT><STRONG><A NAME="item_EXE_FILES">EXE_FILES</A></STRONG><BR>
  437. <DD>
  438. Ref to array of executable files. The files will be copied to the
  439. INST_SCRIPT directory. Make realclean will delete them from there
  440. again.
  441. <P></P>
  442. <DT><STRONG><A NAME="item_FIRST_MAKEFILE">FIRST_MAKEFILE</A></STRONG><BR>
  443. <DD>
  444. The name of the Makefile to be produced. Defaults to the contents of
  445. MAKEFILE, but can be overridden. This is used for the second Makefile
  446. that will be produced for the MAP_TARGET.
  447. <P></P>
  448. <DT><STRONG><A NAME="item_FULLPERL">FULLPERL</A></STRONG><BR>
  449. <DD>
  450. Perl binary able to run this extension.
  451. <P></P>
  452. <DT><STRONG><A NAME="item_FUNCLIST">FUNCLIST</A></STRONG><BR>
  453. <DD>
  454. This provides an alternate means to specify function names to be
  455. exported from the extension.  Its value is a reference to an
  456. array of function names to be exported by the extension.  These
  457. names are passed through unaltered to the linker options file.
  458. <P></P>
  459. <DT><STRONG><A NAME="item_H">H</A></STRONG><BR>
  460. <DD>
  461. Ref to array of *.h file names. Similar to C.
  462. <P></P>
  463. <DT><STRONG><A NAME="item_HTMLLIBPODS">HTMLLIBPODS</A></STRONG><BR>
  464. <DD>
  465. Hashref of .pm and .pod files.  MakeMaker will default this to all
  466.  .pod and any .pm files that include POD directives.  The files listed
  467. here will be converted to HTML format and installed as was requested
  468. at Configure time.
  469. <P></P>
  470. <DT><STRONG><A NAME="item_HTMLSCRIPTPODS">HTMLSCRIPTPODS</A></STRONG><BR>
  471. <DD>
  472. Hashref of pod-containing files.  MakeMaker will default this to all
  473. EXE_FILES files that include POD directives.  The files listed
  474. here will be converted to HTML format and installed as was requested
  475. at Configure time.
  476. <P></P>
  477. <DT><STRONG><A NAME="item_IMPORTS">IMPORTS</A></STRONG><BR>
  478. <DD>
  479. This attribute is used to specify names to be imported into the
  480. extension. It is only used on OS/2 and Win32.
  481. <P></P>
  482. <DT><STRONG><A NAME="item_INC">INC</A></STRONG><BR>
  483. <DD>
  484. Include file dirs eg: <CODE>"-I/usr/5include -I/path/to/inc"</CODE>
  485. <P></P>
  486. <DT><STRONG><A NAME="item_INCLUDE_EXT">INCLUDE_EXT</A></STRONG><BR>
  487. <DD>
  488. Array of extension names to be included when doing a static build.
  489. MakeMaker will normally build with all of the installed extensions when
  490. doing a static build, and that is usually the desired behavior.  If
  491. INCLUDE_EXT is present then MakeMaker will build only with those extensions
  492. which are explicitly mentioned. (e.g.  [ qw( Socket POSIX ) ])
  493. <P>It is not necessary to mention DynaLoader or the current extension when
  494. filling in INCLUDE_EXT.  If the INCLUDE_EXT is mentioned but is empty then
  495. only DynaLoader and the current extension will be included in the build.</P>
  496. <P>This attribute may be most useful when specified as a string on the
  497. command line:  perl Makefile.PL INCLUDE_EXT='POSIX Socket Devel::Peek'</P>
  498. <P></P>
  499. <DT><STRONG><A NAME="item_INSTALLARCHLIB">INSTALLARCHLIB</A></STRONG><BR>
  500. <DD>
  501. Used by 'make install', which copies files from INST_ARCHLIB to this
  502. directory if INSTALLDIRS is set to perl.
  503. <P></P>
  504. <DT><STRONG><A NAME="item_INSTALLBIN">INSTALLBIN</A></STRONG><BR>
  505. <DD>
  506. Directory to install binary files (e.g. tkperl) into.
  507. <P></P>
  508. <DT><STRONG><A NAME="item_INSTALLDIRS">INSTALLDIRS</A></STRONG><BR>
  509. <DD>
  510. Determines which of the two sets of installation directories to
  511. choose: installprivlib and installarchlib versus installsitelib and
  512. installsitearch. The first pair is chosen with INSTALLDIRS=perl, the
  513. second with INSTALLDIRS=site. Default is site.
  514. <P></P>
  515. <DT><STRONG><A NAME="item_INSTALLHTMLPRIVLIBDIR">INSTALLHTMLPRIVLIBDIR</A></STRONG><BR>
  516. <DD>
  517. This directory gets the HTML pages at 'make install' time. Defaults to
  518. $Config{installhtmlprivlibdir}.
  519. <P></P>
  520. <DT><STRONG><A NAME="item_INSTALLHTMLSCRIPTDIR">INSTALLHTMLSCRIPTDIR</A></STRONG><BR>
  521. <DD>
  522. This directory gets the HTML pages at 'make install' time. Defaults to
  523. $Config{installhtmlscriptdir}.
  524. <P></P>
  525. <DT><STRONG><A NAME="item_INSTALLHTMLSITELIBDIR">INSTALLHTMLSITELIBDIR</A></STRONG><BR>
  526. <DD>
  527. This directory gets the HTML pages at 'make install' time. Defaults to
  528. $Config{installhtmlsitelibdir}.
  529. <P></P>
  530. <DT><STRONG><A NAME="item_INSTALLMAN1DIR">INSTALLMAN1DIR</A></STRONG><BR>
  531. <DD>
  532. This directory gets the man pages at 'make install' time. Defaults to
  533. $Config{installman1dir}.
  534. <P></P>
  535. <DT><STRONG><A NAME="item_INSTALLMAN3DIR">INSTALLMAN3DIR</A></STRONG><BR>
  536. <DD>
  537. This directory gets the man pages at 'make install' time. Defaults to
  538. $Config{installman3dir}.
  539. <P></P>
  540. <DT><STRONG><A NAME="item_INSTALLPRIVLIB">INSTALLPRIVLIB</A></STRONG><BR>
  541. <DD>
  542. Used by 'make install', which copies files from INST_LIB to this
  543. directory if INSTALLDIRS is set to perl.
  544. <P></P>
  545. <DT><STRONG><A NAME="item_INSTALLSCRIPT">INSTALLSCRIPT</A></STRONG><BR>
  546. <DD>
  547. Used by 'make install' which copies files from INST_SCRIPT to this
  548. directory.
  549. <P></P>
  550. <DT><STRONG><A NAME="item_INSTALLSITEARCH">INSTALLSITEARCH</A></STRONG><BR>
  551. <DD>
  552. Used by 'make install', which copies files from INST_ARCHLIB to this
  553. directory if INSTALLDIRS is set to site (default).
  554. <P></P>
  555. <DT><STRONG><A NAME="item_INSTALLSITELIB">INSTALLSITELIB</A></STRONG><BR>
  556. <DD>
  557. Used by 'make install', which copies files from INST_LIB to this
  558. directory if INSTALLDIRS is set to site (default).
  559. <P></P>
  560. <DT><STRONG><A NAME="item_INST_ARCHLIB">INST_ARCHLIB</A></STRONG><BR>
  561. <DD>
  562. Same as INST_LIB for architecture dependent files.
  563. <P></P>
  564. <DT><STRONG><A NAME="item_INST_BIN">INST_BIN</A></STRONG><BR>
  565. <DD>
  566. Directory to put real binary files during 'make'. These will be copied
  567. to INSTALLBIN during 'make install'
  568. <P></P>
  569. <DT><STRONG><A NAME="item_INST_EXE">INST_EXE</A></STRONG><BR>
  570. <DD>
  571. Old name for INST_SCRIPT. Deprecated. Please use INST_SCRIPT if you
  572. need to use it.
  573. <P></P>
  574. <DT><STRONG><A NAME="item_INST_LIB">INST_LIB</A></STRONG><BR>
  575. <DD>
  576. Directory where we put library files of this extension while building
  577. it.
  578. <P></P>
  579. <DT><STRONG><A NAME="item_INST_HTMLLIBDIR">INST_HTMLLIBDIR</A></STRONG><BR>
  580. <DD>
  581. Directory to hold the man pages in HTML format at 'make' time
  582. <P></P>
  583. <DT><STRONG><A NAME="item_INST_HTMLSCRIPTDIR">INST_HTMLSCRIPTDIR</A></STRONG><BR>
  584. <DD>
  585. Directory to hold the man pages in HTML format at 'make' time
  586. <P></P>
  587. <DT><STRONG><A NAME="item_INST_MAN1DIR">INST_MAN1DIR</A></STRONG><BR>
  588. <DD>
  589. Directory to hold the man pages at 'make' time
  590. <P></P>
  591. <DT><STRONG><A NAME="item_INST_MAN3DIR">INST_MAN3DIR</A></STRONG><BR>
  592. <DD>
  593. Directory to hold the man pages at 'make' time
  594. <P></P>
  595. <DT><STRONG><A NAME="item_INST_SCRIPT">INST_SCRIPT</A></STRONG><BR>
  596. <DD>
  597. Directory, where executable files should be installed during
  598. 'make'. Defaults to ``./blib/script'', just to have a dummy location during
  599. testing. make install will copy the files in INST_SCRIPT to
  600. INSTALLSCRIPT.
  601. <P></P>
  602. <DT><STRONG><A NAME="item_PERL_MALLOC_OK">PERL_MALLOC_OK</A></STRONG><BR>
  603. <DD>
  604. defaults to 0.  Should be set to TRUE if the extension can work with
  605. the memory allocation routines substituted by the Perl <CODE>malloc()</CODE> subsystem.
  606. This should be applicable to most extensions with exceptions of those
  607. <UL>
  608. <LI>
  609. with bugs in memory allocations which are caught by Perl's malloc();
  610. <P></P>
  611. <LI>
  612. which interact with the memory allocator in other ways than via
  613. malloc(), realloc(), free(), calloc(), <CODE>sbrk()</CODE> and brk();
  614. <P></P>
  615. <LI>
  616. which rely on special alignment which is not provided by Perl's malloc().
  617. <P></P></UL>
  618. <P><STRONG>NOTE.</STRONG>  Negligence to set this flag in <EM>any one</EM> of loaded extension
  619. nullifies many advantages of Perl's malloc(), such as better usage of
  620. system resources, error detection, memory usage reporting, catchable failure
  621. of memory allocations, etc.</P>
  622. <DT><STRONG><A NAME="item_LDFROM">LDFROM</A></STRONG><BR>
  623. <DD>
  624. defaults to ``$(OBJECT)'' and is used in the ld command to specify
  625. what files to link/load from (also see dynamic_lib below for how to
  626. specify ld flags)
  627. <P></P>
  628. <DT><STRONG><A NAME="item_LIB">LIB</A></STRONG><BR>
  629. <DD>
  630. LIB can only be set at <CODE>perl Makefile.PL</CODE> time. It has the effect of
  631. setting both INSTALLPRIVLIB and INSTALLSITELIB to that value regardless any
  632. <P></P>
  633. <DT><STRONG><A NAME="item_LIBPERL_A">LIBPERL_A</A></STRONG><BR>
  634. <DD>
  635. The filename of the perllibrary that will be used together with this
  636. extension. Defaults to libperl.a.
  637. <P></P>
  638. <DT><STRONG><A NAME="item_LIBS">LIBS</A></STRONG><BR>
  639. <DD>
  640. An anonymous array of alternative library
  641. specifications to be searched for (in order) until
  642. at least one library is found. E.g.
  643. <PRE>
  644.   'LIBS' => ["-lgdbm", "-ldbm -lfoo", "-L/path -ldbm.nfs"]</PRE>
  645. <P>Mind, that any element of the array
  646. contains a complete set of arguments for the ld
  647. command. So do not specify</P>
  648. <PRE>
  649.   'LIBS' => ["-ltcl", "-ltk", "-lX11"]</PRE>
  650. <P>See ODBM_File/Makefile.PL for an example, where an array is needed. If
  651. you specify a scalar as in</P>
  652. <PRE>
  653.   'LIBS' => "-ltcl -ltk -lX11"</PRE>
  654. <P>MakeMaker will turn it into an array with one element.</P>
  655. <P></P>
  656. <DT><STRONG><A NAME="item_LINKTYPE">LINKTYPE</A></STRONG><BR>
  657. <DD>
  658. 'static' or 'dynamic' (default unless usedl=undef in
  659. config.sh). Should only be used to force static linking (also see
  660. linkext below).
  661. <P></P>
  662. <DT><STRONG><A NAME="item_MAKEAPERL">MAKEAPERL</A></STRONG><BR>
  663. <DD>
  664. Boolean which tells MakeMaker, that it should include the rules to
  665. make a perl. This is handled automatically as a switch by
  666. MakeMaker. The user normally does not need it.
  667. <P></P>
  668. <DT><STRONG><A NAME="item_MAKEFILE">MAKEFILE</A></STRONG><BR>
  669. <DD>
  670. The name of the Makefile to be produced.
  671. <P></P>
  672. <DT><STRONG><A NAME="item_MAN1PODS">MAN1PODS</A></STRONG><BR>
  673. <DD>
  674. Hashref of pod-containing files. MakeMaker will default this to all
  675. EXE_FILES files that include POD directives. The files listed
  676. here will be converted to man pages and installed as was requested
  677. at Configure time.
  678. <P></P>
  679. <DT><STRONG><A NAME="item_MAN3PODS">MAN3PODS</A></STRONG><BR>
  680. <DD>
  681. Hashref of .pm and .pod files. MakeMaker will default this to all
  682.  .pod and any .pm files that include POD directives. The files listed
  683. here will be converted to man pages and installed as was requested
  684. at Configure time.
  685. <P></P>
  686. <DT><STRONG><A NAME="item_MAP_TARGET">MAP_TARGET</A></STRONG><BR>
  687. <DD>
  688. If it is intended, that a new perl binary be produced, this variable
  689. may hold a name for that binary. Defaults to perl
  690. <P></P>
  691. <DT><STRONG><A NAME="item_MYEXTLIB">MYEXTLIB</A></STRONG><BR>
  692. <DD>
  693. If the extension links to a library that it builds set this to the
  694. name of the library (see SDBM_File)
  695. <P></P>
  696. <DT><STRONG><A NAME="item_NAME">NAME</A></STRONG><BR>
  697. <DD>
  698. Perl module name for this extension (DBD::Oracle). This will default
  699. to the directory name but should be explicitly defined in the
  700. Makefile.PL.
  701. <P></P>
  702. <DT><STRONG><A NAME="item_NEEDS_LINKING">NEEDS_LINKING</A></STRONG><BR>
  703. <DD>
  704. MakeMaker will figure out if an extension contains linkable code
  705. anywhere down the directory tree, and will set this variable
  706. accordingly, but you can speed it up a very little bit if you define
  707. this boolean variable yourself.
  708. <P></P>
  709. <DT><STRONG><A NAME="item_NOECHO">NOECHO</A></STRONG><BR>
  710. <DD>
  711. Defaults to <CODE>@</CODE>. By setting it to an empty string you can generate a
  712. Makefile that echos all commands. Mainly used in debugging MakeMaker
  713. itself.
  714. <P></P>
  715. <DT><STRONG><A NAME="item_NORECURS">NORECURS</A></STRONG><BR>
  716. <DD>
  717. Boolean.  Attribute to inhibit descending into subdirectories.
  718. <P></P>
  719. <DT><STRONG><A NAME="item_NO_VC">NO_VC</A></STRONG><BR>
  720. <DD>
  721. In general, any generated Makefile checks for the current version of
  722. MakeMaker and the version the Makefile was built under. If NO_VC is
  723. set, the version check is neglected. Do not write this into your
  724. Makefile.PL, use it interactively instead.
  725. <P></P>
  726. <DT><STRONG><A NAME="item_OBJECT">OBJECT</A></STRONG><BR>
  727. <DD>
  728. List of object files, defaults to '$(BASEEXT)$(OBJ_EXT)', but can be a long
  729. string containing all object files, e.g. ``tkpBind.o
  730. tkpButton.o tkpCanvas.o''
  731. <P></P>
  732. <DT><STRONG><A NAME="item_OPTIMIZE">OPTIMIZE</A></STRONG><BR>
  733. <DD>
  734. Defaults to <CODE>-O</CODE>. Set it to <CODE>-g</CODE> to turn debugging on. The flag is
  735. passed to subdirectory makes.
  736. <P></P>
  737. <DT><STRONG><A NAME="item_PERL">PERL</A></STRONG><BR>
  738. <DD>
  739. Perl binary for tasks that can be done by miniperl
  740. <P></P>
  741. <DT><STRONG><A NAME="item_PERLMAINCC">PERLMAINCC</A></STRONG><BR>
  742. <DD>
  743. The call to the program that is able to compile perlmain.c. Defaults
  744. to $(CC).
  745. <P></P>
  746. <DT><STRONG><A NAME="item_PERL_ARCHLIB">PERL_ARCHLIB</A></STRONG><BR>
  747. <DD>
  748. Same as above for architecture dependent files.
  749. <P></P>
  750. <DT><STRONG><A NAME="item_PERL_LIB">PERL_LIB</A></STRONG><BR>
  751. <DD>
  752. Directory containing the Perl library to use.
  753. <P></P>
  754. <DT><STRONG><A NAME="item_PERL_SRC">PERL_SRC</A></STRONG><BR>
  755. <DD>
  756. Directory containing the Perl source code (use of this should be
  757. avoided, it may be undefined)
  758. <P></P>
  759. <DT><STRONG><A NAME="item_PERM_RW">PERM_RW</A></STRONG><BR>
  760. <DD>
  761. Desired permission for read/writable files. Defaults to <CODE>644</CODE>.
  762. See also <A HREF="../../lib/ExtUtils/MM_Unix.html#perm_rw">perm_rw in the MM_Unix manpage</A>.
  763. <P></P>
  764. <DT><STRONG><A NAME="item_PERM_RWX">PERM_RWX</A></STRONG><BR>
  765. <DD>
  766. Desired permission for executable files. Defaults to <CODE>755</CODE>.
  767. See also <A HREF="../../lib/ExtUtils/MM_Unix.html#perm_rwx">perm_rwx in the MM_Unix manpage</A>.
  768. <P></P>
  769. <DT><STRONG><A NAME="item_PL_FILES">PL_FILES</A></STRONG><BR>
  770. <DD>
  771. Ref to hash of files to be processed as perl programs. MakeMaker
  772. will default to any found *.PL file (except Makefile.PL) being keys
  773. and the basename of the file being the value. E.g.
  774. <PRE>
  775.   {'foobar.PL' => 'foobar'}</PRE>
  776. <P>The *.PL files are expected to produce output to the target files
  777. themselves. If multiple files can be generated from the same *.PL
  778. file then the value in the hash can be a reference to an array of
  779. target file names. E.g.</P>
  780. <PRE>
  781.   {'foobar.PL' => ['foobar1','foobar2']}</PRE>
  782. <P></P>
  783. <DT><STRONG><A NAME="item_PM">PM</A></STRONG><BR>
  784. <DD>
  785. Hashref of .pm files and *.pl files to be installed.  e.g.
  786. <PRE>
  787.   {'name_of_file.pm' => '$(INST_LIBDIR)/install_as.pm'}</PRE>
  788. <P>By default this will include *.pm and *.pl and the files found in
  789. the PMLIBDIRS directories.  Defining PM in the
  790. Makefile.PL will override PMLIBDIRS.</P>
  791. <P></P>
  792. <DT><STRONG><A NAME="item_PMLIBDIRS">PMLIBDIRS</A></STRONG><BR>
  793. <DD>
  794. Ref to array of subdirectories containing library files.  Defaults to
  795. [ 'lib', $(BASEEXT) ]. The directories will be scanned and <EM>any</EM> files
  796. they contain will be installed in the corresponding location in the
  797. library.  A <CODE>libscan()</CODE> method can be used to alter the behaviour.
  798. Defining PM in the Makefile.PL will override PMLIBDIRS.
  799. <P></P>
  800. <DT><STRONG><A NAME="item_POLLUTE">POLLUTE</A></STRONG><BR>
  801. <DD>
  802. Release 5.005 grandfathered old global symbol names by providing preprocessor
  803. macros for extension source compatibility.  As of release 5.6, these
  804. preprocessor definitions are not available by default.  The POLLUTE flag
  805. specifies that the old names should still be defined:
  806. <PRE>
  807.   perl Makefile.PL POLLUTE=1</PRE>
  808. <P>Please inform the module author if this is necessary to successfully install
  809. a module under 5.6 or later.</P>
  810. <P></P>
  811. <DT><STRONG><A NAME="item_PPM_INSTALL_EXEC">PPM_INSTALL_EXEC</A></STRONG><BR>
  812. <DD>
  813. Name of the executable used to run <A HREF="#item_PPM_INSTALL_SCRIPT"><CODE>PPM_INSTALL_SCRIPT</CODE></A> below. (e.g. perl)
  814. <P></P>
  815. <DT><STRONG><A NAME="item_PPM_INSTALL_SCRIPT">PPM_INSTALL_SCRIPT</A></STRONG><BR>
  816. <DD>
  817. Name of the script that gets executed by the Perl Package Manager after
  818. the installation of a package.
  819. <P></P>
  820. <DT><STRONG><A NAME="item_PREFIX">PREFIX</A></STRONG><BR>
  821. <DD>
  822. Can be used to set the three INSTALL* attributes in one go (except for
  823. probably INSTALLMAN1DIR, if it is not below PREFIX according to
  824. %Config).  They will have PREFIX as a common directory node and will
  825. branch from that node into lib/, lib/ARCHNAME or whatever Configure
  826. decided at the build time of your perl (unless you override one of
  827. them, of course).
  828. <P></P>
  829. <DT><STRONG><A NAME="item_PREREQ_PM">PREREQ_PM</A></STRONG><BR>
  830. <DD>
  831. Hashref: Names of modules that need to be available to run this
  832. extension (e.g. Fcntl for SDBM_File) are the keys of the hash and the
  833. desired version is the value. If the required version number is 0, we
  834. only check if any version is installed already.
  835. <P></P>
  836. <DT><STRONG><A NAME="item_SKIP">SKIP</A></STRONG><BR>
  837. <DD>
  838. Arryref. E.g. [qw(name1 name2)] skip (do not write) sections of the
  839. Makefile. Caution! Do not use the SKIP attribute for the negligible
  840. speedup. It may seriously damage the resulting Makefile. Only use it
  841. if you really need it.
  842. <P></P>
  843. <DT><STRONG><A NAME="item_TYPEMAPS">TYPEMAPS</A></STRONG><BR>
  844. <DD>
  845. Ref to array of typemap file names.  Use this when the typemaps are
  846. in some directory other than the current directory or when they are
  847. not named <STRONG>typemap</STRONG>.  The last typemap in the list takes
  848. precedence.  A typemap in the current directory has highest
  849. precedence, even if it isn't listed in TYPEMAPS.  The default system
  850. typemap has lowest precedence.
  851. <P></P>
  852. <DT><STRONG><A NAME="item_VERSION">VERSION</A></STRONG><BR>
  853. <DD>
  854. Your version number for distributing the package.  This defaults to
  855. 0.1.
  856. <P></P>
  857. <DT><STRONG><A NAME="item_VERSION_FROM">VERSION_FROM</A></STRONG><BR>
  858. <DD>
  859. Instead of specifying the VERSION in the Makefile.PL you can let
  860. MakeMaker parse a file to determine the version number. The parsing
  861. routine requires that the file named by VERSION_FROM contains one
  862. single line to compute the version number. The first line in the file
  863. that contains the regular expression
  864. <PRE>
  865.     /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/</PRE>
  866. <P>will be evaluated with <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval()</CODE></A> and the value of the named variable
  867. <STRONG>after</STRONG> the <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval()</CODE></A> will be assigned to the VERSION attribute of the
  868. MakeMaker object. The following lines will be parsed o.k.:</P>
  869. <PRE>
  870.     $VERSION = '1.00';
  871.     *VERSION = \'1.01';
  872.     ( $VERSION ) = '$Revision: 1.222 $ ' =~ /\$Revision:\s+([^\s]+)/;
  873.     $FOO::VERSION = '1.10';
  874.     *FOO::VERSION = \'1.11';</PRE>
  875. <P>but these will fail:</P>
  876. <PRE>
  877.     my $VERSION = '1.01';
  878.     local $VERSION = '1.02';
  879.     local $FOO::VERSION = '1.30';</PRE>
  880. <P>The file named in VERSION_FROM is not added as a dependency to
  881. Makefile. This is not really correct, but it would be a major pain
  882. during development to have to rewrite the Makefile for any smallish
  883. change in that file. If you want to make sure that the Makefile
  884. contains the correct VERSION macro after any change of the file, you
  885. would have to do something like</P>
  886. <PRE>
  887.     depend => { Makefile => '$(VERSION_FROM)' }</PRE>
  888. <P>See attribute <A HREF="#item_depend"><CODE>depend</CODE></A> below.</P>
  889. <P></P>
  890. <DT><STRONG><A NAME="item_XS">XS</A></STRONG><BR>
  891. <DD>
  892. Hashref of .xs files. MakeMaker will default this.  e.g.
  893. <PRE>
  894.   {'name_of_file.xs' => 'name_of_file.c'}</PRE>
  895. <P>The .c files will automatically be included in the list of files
  896. deleted by a make clean.</P>
  897. <P></P>
  898. <DT><STRONG><A NAME="item_XSOPT">XSOPT</A></STRONG><BR>
  899. <DD>
  900. String of options to pass to xsubpp.  This might include <CODE>-C++</CODE> or
  901. <CODE>-extern</CODE>.  Do not include typemaps here; the TYPEMAP parameter exists for
  902. that purpose.
  903. <P></P>
  904. <DT><STRONG><A NAME="item_XSPROTOARG">XSPROTOARG</A></STRONG><BR>
  905. <DD>
  906. May be set to an empty string, which is identical to <CODE>-prototypes</CODE>, or
  907. <CODE>-noprototypes</CODE>. See the xsubpp documentation for details. MakeMaker
  908. defaults to the empty string.
  909. <P></P>
  910. <DT><STRONG><A NAME="item_XS_VERSION">XS_VERSION</A></STRONG><BR>
  911. <DD>
  912. Your version number for the .xs file of this package.  This defaults
  913. to the value of the VERSION attribute.
  914. <P></P></DL>
  915. <P>
  916. <H2><A NAME="additional lowercase attributes">Additional lowercase attributes</A></H2>
  917. <P>can be used to pass parameters to the methods which implement that
  918. part of the Makefile.</P>
  919. <DL>
  920. <DT><STRONG><A NAME="item_clean">clean</A></STRONG><BR>
  921. <DD>
  922. <PRE>
  923.   {FILES => "*.xyz foo"}</PRE>
  924. <DT><STRONG><A NAME="item_depend">depend</A></STRONG><BR>
  925. <DD>
  926. <PRE>
  927.   {ANY_TARGET => ANY_DEPENDECY, ...}</PRE>
  928. <DT><STRONG><A NAME="item_dist">dist</A></STRONG><BR>
  929. <DD>
  930. <PRE>
  931.   {TARFLAGS => 'cvfF', COMPRESS => 'gzip', SUFFIX => '.gz',
  932.   SHAR => 'shar -m', DIST_CP => 'ln', ZIP => '/bin/zip',
  933.   ZIPFLAGS => '-rl', DIST_DEFAULT => 'private tardist' }</PRE>
  934. <P>If you specify COMPRESS, then SUFFIX should also be altered, as it is
  935. needed to tell make the target file of the compression. Setting
  936. DIST_CP to ln can be useful, if you need to preserve the timestamps on
  937. your files. DIST_CP can take the values 'cp', which copies the file,
  938. 'ln', which links the file, and 'best' which copies symbolic links and
  939. links the rest. Default is 'best'.</P>
  940. <DT><STRONG><A NAME="item_dynamic_lib">dynamic_lib</A></STRONG><BR>
  941. <DD>
  942. <PRE>
  943.   {ARMAYBE => 'ar', OTHERLDFLAGS => '...', INST_DYNAMIC_DEP => '...'}</PRE>
  944. <DT><STRONG><A NAME="item_linkext">linkext</A></STRONG><BR>
  945. <DD>
  946. <PRE>
  947.   {LINKTYPE => 'static', 'dynamic' or ''}</PRE>
  948. <P>NB: Extensions that have nothing but *.pm files had to say</P>
  949. <PRE>
  950.   {LINKTYPE => ''}</PRE>
  951. <P>with Pre-5.0 MakeMakers. Since version 5.00 of MakeMaker such a line
  952. can be deleted safely. MakeMaker recognizes when there's nothing to
  953. be linked.</P>
  954. <DT><STRONG><A NAME="item_macro">macro</A></STRONG><BR>
  955. <DD>
  956. <PRE>
  957.   {ANY_MACRO => ANY_VALUE, ...}</PRE>
  958. <DT><STRONG><A NAME="item_realclean">realclean</A></STRONG><BR>
  959. <DD>
  960. <PRE>
  961.   {FILES => '$(INST_ARCHAUTODIR)/*.xyz'}</PRE>
  962. <DT><STRONG><A NAME="item_test">test</A></STRONG><BR>
  963. <DD>
  964. <PRE>
  965.   {TESTS => 't/*.t'}</PRE>
  966. <DT><STRONG><A NAME="item_tool_autosplit">tool_autosplit</A></STRONG><BR>
  967. <DD>
  968. <PRE>
  969.   {MAXLEN => 8}</PRE>
  970. </DL>
  971. <P>
  972. <H2><A NAME="overriding makemaker methods">Overriding MakeMaker Methods</A></H2>
  973. <P>If you cannot achieve the desired Makefile behaviour by specifying
  974. attributes you may define private subroutines in the Makefile.PL.
  975. Each subroutines returns the text it wishes to have written to
  976. the Makefile. To override a section of the Makefile you can
  977. either say:</P>
  978. <PRE>
  979.         sub MY::c_o { "new literal text" }</PRE>
  980. <P>or you can edit the default by saying something like:</P>
  981. <PRE>
  982.         sub MY::c_o {
  983.             package MY; # so that "SUPER" works right
  984.             my $inherited = shift->SUPER::c_o(@_);
  985.             $inherited =~ s/old text/new text/;
  986.             $inherited;
  987.         }</PRE>
  988. <P>If you are running experiments with embedding perl as a library into
  989. other applications, you might find MakeMaker is not sufficient. You'd
  990. better have a look at ExtUtils::Embed which is a collection of utilities
  991. for embedding.</P>
  992. <P>If you still need a different solution, try to develop another
  993. subroutine that fits your needs and submit the diffs to
  994. <EM><A HREF="mailto:perl5-porters@perl.org">perl5-porters@perl.org</A></EM> or <EM>comp.lang.perl.moderated</EM> as appropriate.</P>
  995. <P>For a complete description of all MakeMaker methods see <A HREF="../../lib/ExtUtils/MM_Unix.html">the ExtUtils::MM_Unix manpage</A>.</P>
  996. <P>Here is a simple example of how to add a new target to the generated
  997. Makefile:</P>
  998. <PRE>
  999.     sub MY::postamble {
  1000.         '
  1001.     $(MYEXTLIB): sdbm/Makefile
  1002.             cd sdbm && $(MAKE) all
  1003.     ';
  1004.     }</PRE>
  1005. <P>
  1006. <H2><A NAME="hintsfile support">Hintsfile support</A></H2>
  1007. <P>MakeMaker.pm uses the architecture specific information from
  1008. Config.pm. In addition it evaluates architecture specific hints files
  1009. in a <CODE>hints/</CODE> directory. The hints files are expected to be named
  1010. like their counterparts in <CODE>PERL_SRC/hints</CODE>, but with an <CODE>.pl</CODE> file
  1011. name extension (eg. <CODE>next_3_2.pl</CODE>). They are simply <A HREF="../../lib/Pod/perlfunc.html#item_eval"><CODE>eval</CODE></A>ed by
  1012. MakeMaker within the <CODE>WriteMakefile()</CODE> subroutine, and can be used to
  1013. execute commands as well as to include special variables. The rules
  1014. which hintsfile is chosen are the same as in Configure.</P>
  1015. <P>The hintsfile is eval()ed immediately after the arguments given to
  1016. WriteMakefile are stuffed into a hash reference $self but before this
  1017. reference becomes blessed. So if you want to do the equivalent to
  1018. override or create an attribute you would say something like</P>
  1019. <PRE>
  1020.     $self->{LIBS} = ['-ldbm -lucb -lc'];</PRE>
  1021. <P>
  1022. <H2><A NAME="distribution support">Distribution Support</A></H2>
  1023. <P>For authors of extensions MakeMaker provides several Makefile
  1024. targets. Most of the support comes from the ExtUtils::Manifest module,
  1025. where additional documentation can be found.</P>
  1026. <DL>
  1027. <DT><STRONG><A NAME="item_make_distcheck">make distcheck</A></STRONG><BR>
  1028. <DD>
  1029. reports which files are below the build directory but not in the
  1030. MANIFEST file and vice versa. (See ExtUtils::Manifest::fullcheck() for
  1031. details)
  1032. <P></P>
  1033. <DT><STRONG><A NAME="item_make_skipcheck">make skipcheck</A></STRONG><BR>
  1034. <DD>
  1035. reports which files are skipped due to the entries in the
  1036. <CODE>MANIFEST.SKIP</CODE> file (See ExtUtils::Manifest::skipcheck() for
  1037. details)
  1038. <P></P>
  1039. <DT><STRONG><A NAME="item_make_distclean">make distclean</A></STRONG><BR>
  1040. <DD>
  1041. does a realclean first and then the distcheck. Note that this is not
  1042. needed to build a new distribution as long as you are sure that the
  1043. MANIFEST file is ok.
  1044. <P></P>
  1045. <DT><STRONG><A NAME="item_make_manifest">make manifest</A></STRONG><BR>
  1046. <DD>
  1047. rewrites the MANIFEST file, adding all remaining files found (See
  1048. ExtUtils::Manifest::mkmanifest() for details)
  1049. <P></P>
  1050. <DT><STRONG><A NAME="item_make_distdir">make distdir</A></STRONG><BR>
  1051. <DD>
  1052. Copies all the files that are in the MANIFEST file to a newly created
  1053. directory with the name <CODE>$(DISTNAME)-$(VERSION)</CODE>. If that directory
  1054. exists, it will be removed first.
  1055. <P></P>
  1056. <DT><STRONG><A NAME="item_make_disttest">make disttest</A></STRONG><BR>
  1057. <DD>
  1058. Makes a distdir first, and runs a <CODE>perl Makefile.PL</CODE>, a make, and
  1059. a make test in that directory.
  1060. <P></P>
  1061. <DT><STRONG><A NAME="item_make_tardist">make tardist</A></STRONG><BR>
  1062. <DD>
  1063. First does a distdir. Then a command $(PREOP) which defaults to a null
  1064. command, followed by $(TOUNIX), which defaults to a null command under
  1065. UNIX, and will convert files in distribution directory to UNIX format
  1066. otherwise. Next it runs <CODE>tar</CODE> on that directory into a tarfile and
  1067. deletes the directory. Finishes with a command $(POSTOP) which
  1068. defaults to a null command.
  1069. <P></P>
  1070. <DT><STRONG><A NAME="item_make_dist">make dist</A></STRONG><BR>
  1071. <DD>
  1072. Defaults to $(DIST_DEFAULT) which in turn defaults to tardist.
  1073. <P></P>
  1074. <DT><STRONG><A NAME="item_make_uutardist">make uutardist</A></STRONG><BR>
  1075. <DD>
  1076. Runs a tardist first and uuencodes the tarfile.
  1077. <P></P>
  1078. <DT><STRONG><A NAME="item_make_shdist">make shdist</A></STRONG><BR>
  1079. <DD>
  1080. First does a distdir. Then a command $(PREOP) which defaults to a null
  1081. command. Next it runs <CODE>shar</CODE> on that directory into a sharfile and
  1082. deletes the intermediate directory again. Finishes with a command
  1083. $(POSTOP) which defaults to a null command.  Note: For shdist to work
  1084. properly a <CODE>shar</CODE> program that can handle directories is mandatory.
  1085. <P></P>
  1086. <DT><STRONG><A NAME="item_make_zipdist">make zipdist</A></STRONG><BR>
  1087. <DD>
  1088. First does a distdir. Then a command $(PREOP) which defaults to a null
  1089. command. Runs <CODE>$(ZIP) $(ZIPFLAGS)</CODE> on that directory into a
  1090. zipfile. Then deletes that directory. Finishes with a command
  1091. $(POSTOP) which defaults to a null command.
  1092. <P></P>
  1093. <DT><STRONG><A NAME="item_make_ci">make ci</A></STRONG><BR>
  1094. <DD>
  1095. Does a $(CI) and a $(RCS_LABEL) on all files in the MANIFEST file.
  1096. <P></P></DL>
  1097. <P>Customization of the dist targets can be done by specifying a hash
  1098. reference to the dist attribute of the WriteMakefile call. The
  1099. following parameters are recognized:</P>
  1100. <PRE>
  1101.     CI           ('ci -u')
  1102.     COMPRESS     ('gzip --best')
  1103.     POSTOP       ('@ :')
  1104.     PREOP        ('@ :')
  1105.     TO_UNIX      (depends on the system)
  1106.     RCS_LABEL    ('rcs -q -Nv$(VERSION_SYM):')
  1107.     SHAR         ('shar')
  1108.     SUFFIX       ('.gz')
  1109.     TAR          ('tar')
  1110.     TARFLAGS     ('cvf')
  1111.     ZIP          ('zip')
  1112.     ZIPFLAGS     ('-r')</PRE>
  1113. <P>An example:</P>
  1114. <PRE>
  1115.     WriteMakefile( 'dist' => { COMPRESS=>"bzip2", SUFFIX=>".bz2" })</PRE>
  1116. <P>
  1117. <H2><A NAME="disabling an extension">Disabling an extension</A></H2>
  1118. <P>If some events detected in <EM>Makefile.PL</EM> imply that there is no way
  1119. to create the Module, but this is a normal state of things, then you
  1120. can create a <EM>Makefile</EM> which does nothing, but succeeds on all the
  1121. ``usual'' build targets.  To do so, use</P>
  1122. <PRE>
  1123.    ExtUtils::MakeMaker::WriteEmptyMakefile();</PRE>
  1124. <P>instead of WriteMakefile().</P>
  1125. <P>This may be useful if other modules expect this module to be <EM>built</EM>
  1126. OK, as opposed to <EM>work</EM> OK (say, this system-dependent module builds
  1127. in a subdirectory of some other distribution, or is listed as a
  1128. dependency in a CPAN::Bundle, but the functionality is supported by
  1129. different means on the current architecture).</P>
  1130. <P>
  1131. <HR>
  1132. <H1><A NAME="environment">ENVIRONMENT</A></H1>
  1133. <DL>
  1134. <DT><STRONG><A NAME="item_PERL_MM_OPT">PERL_MM_OPT</A></STRONG><BR>
  1135. <DD>
  1136. Command line options used by <CODE>MakeMaker->new()</CODE>, and thus by
  1137. <CODE>WriteMakefile()</CODE>.  The string is split on whitespace, and the result
  1138. is processed before any actual command line arguments are processed.
  1139. <P></P></DL>
  1140. <P>
  1141. <HR>
  1142. <H1><A NAME="see also">SEE ALSO</A></H1>
  1143. <P>ExtUtils::MM_Unix, ExtUtils::Manifest, ExtUtils::testlib,
  1144. ExtUtils::Install, ExtUtils::Embed</P>
  1145. <P>
  1146. <HR>
  1147. <H1><A NAME="authors">AUTHORS</A></H1>
  1148. <P>Andy Dougherty <<EM><A HREF="mailto:doughera@lafcol.lafayette.edu">doughera@lafcol.lafayette.edu</A></EM>>, Andreas König
  1149. <<EM><A HREF="mailto:A.Koenig@franz.ww.TU-Berlin.DE">A.Koenig@franz.ww.TU-Berlin.DE</A></EM>>, Tim Bunce <<EM><A HREF="mailto:Tim.Bunce@ig.co.uk">Tim.Bunce@ig.co.uk</A></EM>>.
  1150. VMS support by Charles Bailey <<EM><A HREF="mailto:bailey@newman.upenn.edu">bailey@newman.upenn.edu</A></EM>>.  OS/2
  1151. support by Ilya Zakharevich <<EM><A HREF="mailto:ilya@math.ohio-state.edu">ilya@math.ohio-state.edu</A></EM>>.  Contact the
  1152. makemaker mailing list <CODE>mailto:makemaker@franz.ww.tu-berlin.de</CODE>, if
  1153. you have any questions.</P>
  1154. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  1155. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  1156. <STRONG><P CLASS=block> ExtUtils::MakeMaker - create an extension Makefile</P></STRONG>
  1157. </TD></TR>
  1158. </TABLE>
  1159.  
  1160. </BODY>
  1161.  
  1162. </HTML>
  1163.