1ExtUtils::MM_Unix(3)  User Contributed Perl Documentation ExtUtils::MM_Unix(3)
2
3
4

NAME

6       ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker
7

SYNOPSIS

9         require ExtUtils::MM_Unix;
10

DESCRIPTION

12       The methods provided by this package are designed to be used in
13       conjunction with ExtUtils::MakeMaker. When MakeMaker writes a Makefile,
14       it creates one or more objects that inherit their methods from a
15       package MM. MM itself doesn't provide any methods, but it ISA
16       ExtUtils::MM_Unix class. The inheritance tree of MM lets operating
17       specific packages take the responsibility for all the methods provided
18       by MM_Unix. We are trying to reduce the number of the necessary
19       overrides by defining rather primitive operations within
20       ExtUtils::MM_Unix.
21
22       If you are going to write a platform specific MM package, please try to
23       limit the necessary overrides to primitive methods, and if it is not
24       possible to do so, let's work out how to achieve that gain.
25
26       If you are overriding any of these methods in your Makefile.PL (in the
27       MY class), please report that to the makemaker mailing list. We are
28       trying to minimize the necessary method overrides and switch to data
29       driven Makefile.PLs wherever possible. In the long run less methods
30       will be overridable via the MY class.
31

METHODS

33       The following description of methods is still under development. Please
34       refer to the code for not suitably documented sections and complain
35       loudly to the makemaker@perl.org mailing list.  Better yet, provide a
36       patch.
37
38       Not all of the methods below are overridable in a Makefile.PL.
39       Overridable methods are marked as (o). All methods are overridable by a
40       platform specific MM_*.pm file.
41
42       Cross-platform methods are being moved into MM_Any.  If you can't find
43       something that used to be in here, look in MM_Any.
44
45   Methods
46       os_flavor
47           Simply says that we're Unix.
48
49       c_o (o)
50           Defines the suffix rules to compile different flavors of C files to
51           object files.
52
53       xs_obj_opt
54           Takes the object file as an argument, and returns the portion of
55           compile command-line that will output to the specified object file.
56
57       dbgoutflag
58           Returns a CC flag that tells the CC to emit a separate debugging
59           symbol file when compiling an object file.
60
61       cflags (o)
62           Does very much the same as the cflags script in the perl
63           distribution. It doesn't return the whole compiler command line,
64           but initializes all of its parts. The const_cccmd method then
65           actually returns the definition of the CCCMD macro which uses these
66           parts.
67
68       const_cccmd (o)
69           Returns the full compiler call for C programs and stores the
70           definition in CONST_CCCMD.
71
72       const_config (o)
73           Sets SHELL if needed, then defines a couple of constants in the
74           Makefile that are imported from %Config.
75
76       const_loadlibs (o)
77           Defines EXTRALIBS, LDLOADLIBS, BSLOADLIBS, LD_RUN_PATH. See
78           ExtUtils::Liblist for details.
79
80       constants (o)
81             my $make_frag = $mm->constants;
82
83           Prints out macros for lots of constants.
84
85       depend (o)
86           Same as macro for the depend attribute.
87
88       init_DEST
89             $mm->init_DEST
90
91           Defines the DESTDIR and DEST* variables paralleling the INSTALL*.
92
93       init_dist
94             $mm->init_dist;
95
96           Defines a lot of macros for distribution support.
97
98             macro         description                     default
99
100             TAR           tar command to use              tar
101             TARFLAGS      flags to pass to TAR            cvf
102
103             ZIP           zip command to use              zip
104             ZIPFLAGS      flags to pass to ZIP            -r
105
106             COMPRESS      compression command to          gzip --best
107                           use for tarfiles
108             SUFFIX        suffix to put on                .gz
109                           compressed files
110
111             SHAR          shar command to use             shar
112
113             PREOP         extra commands to run before
114                           making the archive
115             POSTOP        extra commands to run after
116                           making the archive
117
118             TO_UNIX       a command to convert linefeeds
119                           to Unix style in your archive
120
121             CI            command to checkin your         ci -u
122                           sources to version control
123             RCS_LABEL     command to label your sources   rcs -Nv$(VERSION_SYM): -q
124                           just after CI is run
125
126             DIST_CP       $how argument to manicopy()     best
127                           when the distdir is created
128
129             DIST_DEFAULT  default target to use to        tardist
130                           create a distribution
131
132             DISTVNAME     name of the resulting archive   $(DISTNAME)-$(VERSION)
133                           (minus suffixes)
134
135       dist (o)
136             my $dist_macros = $mm->dist(%overrides);
137
138           Generates a make fragment defining all the macros initialized in
139           init_dist.
140
141           %overrides can be used to override any of the above.
142
143       dist_basics (o)
144           Defines the targets distclean, distcheck, skipcheck, manifest,
145           veryclean.
146
147       dist_ci (o)
148           Defines a check in target for RCS.
149
150       dist_core (o)
151             my $dist_make_fragment = $MM->dist_core;
152
153           Puts the targets necessary for 'make dist' together into one make
154           fragment.
155
156       dist_target
157             my $make_frag = $MM->dist_target;
158
159           Returns the 'dist' target to make an archive for distribution.
160           This target simply checks to make sure the Makefile is up-to-date
161           and depends on $(DIST_DEFAULT).
162
163       tardist_target
164             my $make_frag = $MM->tardist_target;
165
166           Returns the 'tardist' target which is simply so 'make tardist'
167           works.  The real work is done by the dynamically named
168           tardistfile_target() method, tardist should have that as a
169           dependency.
170
171       zipdist_target
172             my $make_frag = $MM->zipdist_target;
173
174           Returns the 'zipdist' target which is simply so 'make zipdist'
175           works.  The real work is done by the dynamically named
176           zipdistfile_target() method, zipdist should have that as a
177           dependency.
178
179       tarfile_target
180             my $make_frag = $MM->tarfile_target;
181
182           The name of this target is the name of the tarball generated by
183           tardist.  This target does the actual work of turning the distdir
184           into a tarball.
185
186       zipfile_target
187             my $make_frag = $MM->zipfile_target;
188
189           The name of this target is the name of the zip file generated by
190           zipdist.  This target does the actual work of turning the distdir
191           into a zip file.
192
193       uutardist_target
194             my $make_frag = $MM->uutardist_target;
195
196           Converts the tarfile into a uuencoded file
197
198       shdist_target
199             my $make_frag = $MM->shdist_target;
200
201           Converts the distdir into a shell archive.
202
203       dlsyms (o)
204           Used by some OS' to define DL_FUNCS and DL_VARS and write the *.exp
205           files.
206
207           Normally just returns an empty string.
208
209       dynamic_bs (o)
210           Defines targets for bootstrap files.
211
212       dynamic_lib (o)
213           Defines how to produce the *.so (or equivalent) files.
214
215       xs_dynamic_lib_macros
216           Defines the macros for the "dynamic_lib" section.
217
218       xs_make_dynamic_lib
219           Defines the recipes for the "dynamic_lib" section.
220
221       exescan
222           Deprecated method. Use libscan instead.
223
224       extliblist
225           Called by init_others, and calls ext ExtUtils::Liblist. See
226           ExtUtils::Liblist for details.
227
228       find_perl
229           Finds the executables PERL and FULLPERL
230
231       fixin
232             $mm->fixin(@files);
233
234           Inserts the sharpbang or equivalent magic number to a set of
235           @files.
236
237       force (o)
238           Writes an empty FORCE: target.
239
240       guess_name
241           Guess the name of this package by examining the working directory's
242           name. MakeMaker calls this only if the developer has not supplied a
243           NAME attribute.
244
245       has_link_code
246           Returns true if C, XS, MYEXTLIB or similar objects exist within
247           this object that need a compiler. Does not descend into
248           subdirectories as needs_linking() does.
249
250       init_dirscan
251           Scans the directory structure and initializes DIR, XS, XS_FILES, C,
252           C_FILES, O_FILES, H, H_FILES, PL_FILES, EXE_FILES.
253
254           Called by init_main.
255
256       init_MANPODS
257           Determines if man pages should be generated and initializes
258           MAN1PODS and MAN3PODS as appropriate.
259
260       init_MAN1PODS
261           Initializes MAN1PODS from the list of EXE_FILES.
262
263       init_MAN3PODS
264           Initializes MAN3PODS from the list of PM files.
265
266       init_PM
267           Initializes PMLIBDIRS and PM from PMLIBDIRS.
268
269       init_DIRFILESEP
270           Using / for Unix.  Called by init_main.
271
272       init_main
273           Initializes AR, AR_STATIC_ARGS, BASEEXT, CONFIG, DISTNAME, DLBASE,
274           EXE_EXT, FULLEXT, FULLPERL, FULLPERLRUN, FULLPERLRUNINST, INST_*,
275           INSTALL*, INSTALLDIRS, LIB_EXT, LIBPERL_A, MAP_TARGET, NAME,
276           OBJ_EXT, PARENT_NAME, PERL, PERL_ARCHLIB, PERL_INC, PERL_LIB,
277           PERL_SRC, PERLRUN, PERLRUNINST, PREFIX, VERSION, VERSION_SYM,
278           XS_VERSION.
279
280       init_tools
281           Initializes tools to use their common (and faster) Unix commands.
282
283       init_linker
284           Unix has no need of special linker flags.
285
286       init_PERL
287               $mm->init_PERL;
288
289           Called by init_main.  Sets up ABSPERL, PERL, FULLPERL and all the
290           *PERLRUN* permutations.
291
292               PERL is allowed to be miniperl
293               FULLPERL must be a complete perl
294
295               ABSPERL is PERL converted to an absolute path
296
297               *PERLRUN contains everything necessary to run perl, find it's
298                    libraries, etc...
299
300               *PERLRUNINST is *PERLRUN + everything necessary to find the
301                    modules being built.
302
303       init_platform
304       platform_constants
305           Add MM_Unix_VERSION.
306
307       init_PERM
308             $mm->init_PERM
309
310           Called by init_main.  Initializes PERL_*
311
312       init_xs
313               $mm->init_xs
314
315           Sets up macros having to do with XS code.  Currently just
316           INST_STATIC, INST_DYNAMIC and INST_BOOT.
317
318       install (o)
319           Defines the install target.
320
321       installbin (o)
322           Defines targets to make and to install EXE_FILES.
323
324       linkext (o)
325           Defines the linkext target which in turn defines the LINKTYPE.
326
327       lsdir
328           Takes as arguments a directory name and a regular expression.
329           Returns all entries in the directory that match the regular
330           expression.
331
332       macro (o)
333           Simple subroutine to insert the macros defined by the macro
334           attribute into the Makefile.
335
336       makeaperl (o)
337           Called by staticmake. Defines how to write the Makefile to produce
338           a static new perl.
339
340           By default the Makefile produced includes all the static extensions
341           in the perl library. (Purified versions of library files, e.g.,
342           DynaLoader_pure_p1_c0_032.a are automatically ignored to avoid link
343           errors.)
344
345       xs_static_lib_is_xs (o)
346           Called by a utility method of makeaperl. Checks whether a given
347           file is an XS library by seeing whether it defines any symbols
348           starting with "boot_" (with an optional leading underscore - needed
349           on MacOS).
350
351       makefile (o)
352           Defines how to rewrite the Makefile.
353
354       maybe_command
355           Returns true, if the argument is likely to be a command.
356
357       needs_linking (o)
358           Does this module need linking? Looks into subdirectory objects (see
359           also has_link_code())
360
361       parse_abstract
362           parse a file and return what you think is the ABSTRACT
363
364       parse_version
365               my $version = MM->parse_version($file);
366
367           Parse a $file and return what $VERSION is set to by the first
368           assignment.  It will return the string "undef" if it can't figure
369           out what $VERSION is. $VERSION should be for all to see, so "our
370           $VERSION" or plain $VERSION are okay, but "my $VERSION" is not.
371
372           "package Foo VERSION" is also checked for.  The first version
373           declaration found is used, but this may change as it differs from
374           how Perl does it.
375
376           parse_version() will try to "use version" before checking for
377           $VERSION so the following will work.
378
379               $VERSION = qv(1.2.3);
380
381       pasthru (o)
382           Defines the string that is passed to recursive make calls in
383           subdirectories. The variables like "PASTHRU_DEFINE" are used in
384           each level, and passed downwards on the command-line with e.g. the
385           value of that level's DEFINE. Example:
386
387               # Level 0 has DEFINE = -Dfunky
388               # This code will define level 0's PASTHRU=PASTHRU_DEFINE="$(DEFINE)
389               #     $(PASTHRU_DEFINE)"
390               # Level 0's $(CCCMD) will include macros $(DEFINE) and $(PASTHRU_DEFINE)
391               # So will level 1's, so when level 1 compiles, it will get right values
392               # And so ad infinitum
393
394       perl_script
395           Takes one argument, a file name, and returns the file name, if the
396           argument is likely to be a perl script. On MM_Unix this is true for
397           any ordinary, readable file.
398
399       perldepend (o)
400           Defines the dependency from all *.h files that come with the perl
401           distribution.
402
403       pm_to_blib
404           Defines target that copies all files in the hash PM to their
405           destination and autosplits them. See "DESCRIPTION" in
406           ExtUtils::Install
407
408       ppd Defines target that creates a PPD (Perl Package Description) file
409           for a binary distribution.
410
411       prefixify
412             $MM->prefixify($var, $prefix, $new_prefix, $default);
413
414           Using either $MM->{uc $var} || $Config{lc $var}, it will attempt to
415           replace it's $prefix with a $new_prefix.
416
417           Should the $prefix fail to match AND a PREFIX was given as an
418           argument to WriteMakefile() it will set it to the $new_prefix +
419           $default.  This is for systems whose file layouts don't neatly fit
420           into our ideas of prefixes.
421
422           This is for heuristics which attempt to create directory structures
423           that mirror those of the installed perl.
424
425           For example:
426
427               $MM->prefixify('installman1dir', '/usr', '/home/foo', 'man/man1');
428
429           this will attempt to remove '/usr' from the front of the
430           $MM->{INSTALLMAN1DIR} path (initializing it to
431           $Config{installman1dir} if necessary) and replace it with
432           '/home/foo'.  If this fails it will simply use
433           '/home/foo/man/man1'.
434
435       processPL (o)
436           Defines targets to run *.PL files.
437
438       specify_shell
439           Specify SHELL if needed - not done on Unix.
440
441       quote_paren
442           Backslashes parentheses "()" in command line arguments.  Doesn't
443           handle recursive Makefile "$(...)" constructs, but handles simple
444           ones.
445
446       replace_manpage_separator
447             my $man_name = $MM->replace_manpage_separator($file_path);
448
449           Takes the name of a package, which may be a nested package, in the
450           form 'Foo/Bar.pm' and replaces the slash with "::" or something
451           else safe for a man page file name.  Returns the replacement.
452
453       cd
454       oneliner
455       quote_literal
456           Quotes macro literal value suitable for being used on a command
457           line so that when expanded by make, will be received by command as
458           given to this method:
459
460             my $quoted = $mm->quote_literal(q{it isn't});
461             # returns:
462             #   'it isn'\''t'
463             print MAKEFILE "target:\n\techo $quoted\n";
464             # when run "make target", will output:
465             #   it isn't
466
467       escape_newlines
468       max_exec_len
469           Using POSIX::ARG_MAX.  Otherwise falling back to 4096.
470
471       static (o)
472           Defines the static target.
473
474       xs_make_static_lib
475           Defines the recipes for the "static_lib" section.
476
477       static_lib_closures
478           Records "$(EXTRALIBS)" in extralibs.ld and $(PERL_SRC)/ext.libs.
479
480       static_lib_fixtures
481           Handles copying "$(MYEXTLIB)" as starter for final static library
482           that then gets added to.
483
484       static_lib_pure_cmd
485           Defines how to run the archive utility.
486
487       staticmake (o)
488           Calls makeaperl.
489
490       subdir_x (o)
491           Helper subroutine for subdirs
492
493       subdirs (o)
494           Defines targets to process subdirectories.
495
496       test (o)
497           Defines the test targets.
498
499       test_via_harness (override)
500           For some reason which I forget, Unix machines like to have
501           PERL_DL_NONLAZY set for tests.
502
503       test_via_script (override)
504           Again, the PERL_DL_NONLAZY thing.
505
506       tool_xsubpp (o)
507           Determines typemaps, xsubpp version, prototype behaviour.
508
509       all_target
510           Build man pages, too
511
512       top_targets (o)
513           Defines the targets all, subdirs, config, and O_FILES
514
515       writedoc
516           Obsolete, deprecated method. Not used since Version 5.21.
517
518       xs_c (o)
519           Defines the suffix rules to compile XS files to C.
520
521       xs_cpp (o)
522           Defines the suffix rules to compile XS files to C++.
523
524       xs_o (o)
525           Defines suffix rules to go from XS to object files directly. This
526           was originally only intended for broken make implementations, but
527           is now necessary for per-XS file under "XSMULTI", since each XS
528           file might have an individual "$(VERSION)".
529

SEE ALSO

531       ExtUtils::MakeMaker
532
533
534
535perl v5.34.0                      2022-01-21              ExtUtils::MM_Unix(3)
Impressum