diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl')
-rw-r--r-- | upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl | 1119 |
1 files changed, 1119 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl b/upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl new file mode 100644 index 00000000..858fbfc7 --- /dev/null +++ b/upstream/debian-unstable/man3/ExtUtils::MM_Any.3perl @@ -0,0 +1,1119 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "ExtUtils::MM_Any 3perl" +.TH ExtUtils::MM_Any 3perl 2024-01-12 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +ExtUtils::MM_Any \- Platform\-agnostic MM methods +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 1 +\& FOR INTERNAL USE ONLY! +\& +\& package ExtUtils::MM_SomeOS; +\& +\& # Temporarily, you have to subclass both. Put MM_Any first. +\& require ExtUtils::MM_Any; +\& require ExtUtils::MM_Unix; +\& @ISA = qw(ExtUtils::MM_Any ExtUtils::Unix); +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +\&\fBFOR INTERNAL USE ONLY!\fR +.PP +ExtUtils::MM_Any is a superclass for the ExtUtils::MM_* set of +modules. It contains methods which are either inherently +cross-platform or are written in a cross-platform manner. +.PP +Subclass off of ExtUtils::MM_Any \fIand\fR ExtUtils::MM_Unix. This is a +temporary solution. +.PP +\&\fBTHIS MAY BE TEMPORARY!\fR +.SH METHODS +.IX Header "METHODS" +Any methods marked \fIAbstract\fR must be implemented by subclasses. +.SS "Cross-platform helper methods" +.IX Subsection "Cross-platform helper methods" +These are methods which help writing cross-platform code. +.PP +\fIos_flavor Abstract\fR +.IX Subsection "os_flavor Abstract" +.PP +.Vb 1 +\& my @os_flavor = $mm\->os_flavor; +.Ve +.PP +\&\f(CW@os_flavor\fR is the style of operating system this is, usually +corresponding to the MM_*.pm file we're using. +.PP +The first element of \f(CW@os_flavor\fR is the major family (ie. Unix, +Windows, VMS, OS/2, etc...) and the rest are sub families. +.PP +Some examples: +.PP +.Vb 6 +\& Cygwin98 (\*(AqUnix\*(Aq, \*(AqCygwin\*(Aq, \*(AqCygwin9x\*(Aq) +\& Windows (\*(AqWin32\*(Aq) +\& Win98 (\*(AqWin32\*(Aq, \*(AqWin9x\*(Aq) +\& Linux (\*(AqUnix\*(Aq, \*(AqLinux\*(Aq) +\& MacOS X (\*(AqUnix\*(Aq, \*(AqDarwin\*(Aq, \*(AqMacOS\*(Aq, \*(AqMacOS X\*(Aq) +\& OS/2 (\*(AqOS/2\*(Aq) +.Ve +.PP +This is used to write code for styles of operating system. +See \fBos_flavor_is()\fR for use. +.PP +\fIos_flavor_is\fR +.IX Subsection "os_flavor_is" +.PP +.Vb 2 +\& my $is_this_flavor = $mm\->os_flavor_is($this_flavor); +\& my $is_this_flavor = $mm\->os_flavor_is(@one_of_these_flavors); +.Ve +.PP +Checks to see if the current operating system is one of the given flavors. +.PP +This is useful for code like: +.PP +.Vb 6 +\& if( $mm\->os_flavor_is(\*(AqUnix\*(Aq) ) { +\& $out = \`foo 2>&1\`; +\& } +\& else { +\& $out = \`foo\`; +\& } +.Ve +.PP +\fIcan_load_xs\fR +.IX Subsection "can_load_xs" +.PP +.Vb 1 +\& my $can_load_xs = $self\->can_load_xs; +.Ve +.PP +Returns true if we have the ability to load XS. +.PP +This is important because miniperl, used to build XS modules in the +core, can not load XS. +.PP +\fIcan_run\fR +.IX Subsection "can_run" +.PP +.Vb 2 +\& use ExtUtils::MM; +\& my $runnable = MM\->can_run($Config{make}); +.Ve +.PP +If called in a scalar context it will return the full path to the binary +you asked for if it was found, or \f(CW\*(C`undef\*(C'\fR if it was not. +.PP +If called in a list context, it will return a list of the full paths to instances +of the binary where found in \f(CW\*(C`PATH\*(C'\fR, or an empty list if it was not found. +.PP +Copied from IPC::Cmd, but modified into +a method (and removed \f(CW$INSTANCES\fR capability). +.PP +\fIcan_redirect_error\fR +.IX Subsection "can_redirect_error" +.PP +.Vb 1 +\& $useredirect = MM\->can_redirect_error; +.Ve +.PP +True if on an OS where qx operator (or backticks) can redirect \f(CW\*(C`STDERR\*(C'\fR +onto \f(CW\*(C`STDOUT\*(C'\fR. +.PP +\fIis_make_type\fR +.IX Subsection "is_make_type" +.PP +.Vb 1 +\& my $is_dmake = $self\->is_make_type(\*(Aqdmake\*(Aq); +.Ve +.PP +Returns true if \f(CW\*(C`$self\->make\*(C'\fR is the given type; possibilities are: +.PP +.Vb 4 +\& gmake GNU make +\& dmake +\& nmake +\& bsdmake BSD pmake\-derived +.Ve +.PP +\fIcan_dep_space\fR +.IX Subsection "can_dep_space" +.PP +.Vb 1 +\& my $can_dep_space = $self\->can_dep_space; +.Ve +.PP +Returns true if \f(CW\*(C`make\*(C'\fR can handle (probably by quoting) +dependencies that contain a space. Currently known true for GNU make, +false for BSD pmake derivative. +.PP +\fIquote_dep\fR +.IX Subsection "quote_dep" +.PP +.Vb 1 +\& $text = $mm\->quote_dep($text); +.Ve +.PP +Method that protects Makefile single-value constants (mainly filenames), +so that make will still treat them as single values even if they +inconveniently have spaces in. If the make program being used cannot +achieve such protection and the given text would need it, throws an +exception. +.PP +\fIsplit_command\fR +.IX Subsection "split_command" +.PP +.Vb 1 +\& my @cmds = $MM\->split_command($cmd, @args); +.Ve +.PP +Most OS have a maximum command length they can execute at once. Large +modules can easily generate commands well past that limit. Its +necessary to split long commands up into a series of shorter commands. +.PP +\&\f(CW\*(C`split_command\*(C'\fR will return a series of \f(CW@cmds\fR each processing part of +the args. Collectively they will process all the arguments. Each +individual line in \f(CW@cmds\fR will not be longer than the +\&\f(CW$self\fR\->max_exec_len being careful to take into account macro expansion. +.PP +\&\f(CW$cmd\fR should include any switches and repeated initial arguments. +.PP +If no \f(CW@args\fR are given, no \f(CW@cmds\fR will be returned. +.PP +Pairs of arguments will always be preserved in a single command, this +is a heuristic for things like pm_to_blib and pod2man which work on +pairs of arguments. This makes things like this safe: +.PP +.Vb 1 +\& $self\->split_command($cmd, %pod2man); +.Ve +.PP +\fImake_type\fR +.IX Subsection "make_type" +.PP +Returns a suitable string describing the type of makefile being written. +.PP +\fIstashmeta\fR +.IX Subsection "stashmeta" +.PP +.Vb 1 +\& my @recipelines = $MM\->stashmeta($text, $file); +.Ve +.PP +Generates a set of \f(CW@recipelines\fR which will result in the literal +\&\f(CW$text\fR ending up in literal \f(CW$file\fR when the recipe is executed. Call +it once, with all the text you want in \f(CW$file\fR. Make macros will not +be expanded, so the locations will be fixed at configure-time, not +at build-time. +.PP +\fIecho\fR +.IX Subsection "echo" +.PP +.Vb 3 +\& my @commands = $MM\->echo($text); +\& my @commands = $MM\->echo($text, $file); +\& my @commands = $MM\->echo($text, $file, \e%opts); +.Ve +.PP +Generates a set of \f(CW@commands\fR which print the \f(CW$text\fR to a \f(CW$file\fR. +.PP +If \f(CW$file\fR is not given, output goes to STDOUT. +.PP +If \f(CW$opts\fR{append} is true the \f(CW$file\fR will be appended to rather than +overwritten. Default is to overwrite. +.PP +If \f(CW$opts\fR{allow_variables} is true, make variables of the form +\&\f(CW\*(C`$(...)\*(C'\fR will not be escaped. Other \f(CW\*(C`$\*(C'\fR will. Default is to escape +all \f(CW\*(C`$\*(C'\fR. +.PP +Example of use: +.PP +.Vb 1 +\& my $make = join \*(Aq\*(Aq, map "\et$_\en", $MM\->echo($text, $file); +.Ve +.PP +\fIwraplist\fR +.IX Subsection "wraplist" +.PP +.Vb 1 +\& my $args = $mm\->wraplist(@list); +.Ve +.PP +Takes an array of items and turns them into a well-formatted list of +arguments. In most cases this is simply something like: +.PP +.Vb 3 +\& FOO \e +\& BAR \e +\& BAZ +.Ve +.PP +\fImaketext_filter\fR +.IX Subsection "maketext_filter" +.PP +.Vb 1 +\& my $filter_make_text = $mm\->maketext_filter($make_text); +.Ve +.PP +The text of the Makefile is run through this method before writing to +disk. It allows systems a chance to make portability fixes to the +Makefile. +.PP +By default it does nothing. +.PP +This method is protected and not intended to be called outside of +MakeMaker. +.PP +\fIcd Abstract\fR +.IX Subsection "cd Abstract" +.PP +.Vb 1 +\& my $subdir_cmd = $MM\->cd($subdir, @cmds); +.Ve +.PP +This will generate a make fragment which runs the \f(CW@cmds\fR in the given +\&\f(CW$dir\fR. The rough equivalent to this, except cross platform. +.PP +.Vb 1 +\& cd $subdir && $cmd +.Ve +.PP +Currently \f(CW$dir\fR can only go down one level. "foo" is fine. "foo/bar" is +not. "../foo" is right out. +.PP +The resulting \f(CW$subdir_cmd\fR has no leading tab nor trailing newline. This +makes it easier to embed in a make string. For example. +.PP +.Vb 6 +\& my $make = sprintf <<\*(AqCODE\*(Aq, $subdir_cmd; +\& foo : +\& $(ECHO) what +\& %s +\& $(ECHO) mouche +\& CODE +.Ve +.PP +\fIoneliner Abstract\fR +.IX Subsection "oneliner Abstract" +.PP +.Vb 2 +\& my $oneliner = $MM\->oneliner($perl_code); +\& my $oneliner = $MM\->oneliner($perl_code, \e@switches); +.Ve +.PP +This will generate a perl one-liner safe for the particular platform +you're on based on the given \f(CW$perl_code\fR and \f(CW@switches\fR (a \-e is +assumed) suitable for using in a make target. It will use the proper +shell quoting and escapes. +.PP +$(PERLRUN) will be used as perl. +.PP +Any newlines in \f(CW$perl_code\fR will be escaped. Leading and trailing +newlines will be stripped. Makes this idiom much easier: +.PP +.Vb 4 +\& my $code = $MM\->oneliner(<<\*(AqCODE\*(Aq, [...switches...]); +\&some code here +\&another line here +\&CODE +.Ve +.PP +Usage might be something like: +.PP +.Vb 3 +\& # an echo emulation +\& $oneliner = $MM\->oneliner(\*(Aqprint "Foo\en"\*(Aq); +\& $make = \*(Aq$oneliner > somefile\*(Aq; +.Ve +.PP +Dollar signs in the \f(CW$perl_code\fR will be protected from make using the +\&\f(CW\*(C`quote_literal\*(C'\fR method, unless they are recognised as being a make +variable, \f(CW\*(C`$(varname)\*(C'\fR, in which case they will be left for make +to expand. Remember to quote make macros else it might be used as a +bareword. For example: +.PP +.Vb 2 +\& # Assign the value of the $(VERSION_FROM) make macro to $vf. +\& $oneliner = $MM\->oneliner(\*(Aq$vf = "$(VERSION_FROM)"\*(Aq); +.Ve +.PP +Its currently very simple and may be expanded sometime in the figure +to include more flexible code and switches. +.PP +\fIquote_literal Abstract\fR +.IX Subsection "quote_literal Abstract" +.PP +.Vb 2 +\& my $safe_text = $MM\->quote_literal($text); +\& my $safe_text = $MM\->quote_literal($text, \e%options); +.Ve +.PP +This will quote \f(CW$text\fR so it is interpreted literally in the shell. +.PP +For example, on Unix this would escape any single-quotes in \f(CW$text\fR and +put single-quotes around the whole thing. +.PP +If \f(CW$options\fR{allow_variables} is true it will leave \f(CW\*(Aq$(FOO)\*(Aq\fR make +variables untouched. If false they will be escaped like any other +\&\f(CW\*(C`$\*(C'\fR. Defaults to true. +.PP +\fIescape_dollarsigns\fR +.IX Subsection "escape_dollarsigns" +.PP +.Vb 1 +\& my $escaped_text = $MM\->escape_dollarsigns($text); +.Ve +.PP +Escapes stray \f(CW\*(C`$\*(C'\fR so they are not interpreted as make variables. +.PP +It lets by \f(CW\*(C`$(...)\*(C'\fR. +.PP +\fIescape_all_dollarsigns\fR +.IX Subsection "escape_all_dollarsigns" +.PP +.Vb 1 +\& my $escaped_text = $MM\->escape_all_dollarsigns($text); +.Ve +.PP +Escapes all \f(CW\*(C`$\*(C'\fR so they are not interpreted as make variables. +.PP +\fIescape_newlines Abstract\fR +.IX Subsection "escape_newlines Abstract" +.PP +.Vb 1 +\& my $escaped_text = $MM\->escape_newlines($text); +.Ve +.PP +Shell escapes newlines in \f(CW$text\fR. +.PP +\fImax_exec_len Abstract\fR +.IX Subsection "max_exec_len Abstract" +.PP +.Vb 1 +\& my $max_exec_len = $MM\->max_exec_len; +.Ve +.PP +Calculates the maximum command size the OS can exec. Effectively, +this is the max size of a shell command line. +.PP +\fImake\fR +.IX Subsection "make" +.PP +.Vb 1 +\& my $make = $MM\->make; +.Ve +.PP +Returns the make variant we're generating the Makefile for. This attempts +to do some normalization on the information from \f(CW%Config\fR or the user. +.SS Targets +.IX Subsection "Targets" +These are methods which produce make targets. +.PP +\fIall_target\fR +.IX Subsection "all_target" +.PP +Generate the default target 'all'. +.PP +\fIblibdirs_target\fR +.IX Subsection "blibdirs_target" +.PP +.Vb 1 +\& my $make_frag = $mm\->blibdirs_target; +.Ve +.PP +Creates the blibdirs target which creates all the directories we use +in blib/. +.PP +The blibdirs.ts target is deprecated. Depend on blibdirs instead. +.PP +\fIclean (o)\fR +.IX Subsection "clean (o)" +.PP +Defines the clean target. +.PP +\fIclean_subdirs_target\fR +.IX Subsection "clean_subdirs_target" +.PP +.Vb 1 +\& my $make_frag = $MM\->clean_subdirs_target; +.Ve +.PP +Returns the clean_subdirs target. This is used by the clean target to +call clean on any subdirectories which contain Makefiles. +.PP +\fIdir_target\fR +.IX Subsection "dir_target" +.PP +.Vb 1 +\& my $make_frag = $mm\->dir_target(@directories); +.Ve +.PP +Generates targets to create the specified directories and set its +permission to PERM_DIR. +.PP +Because depending on a directory to just ensure it exists doesn't work +too well (the modified time changes too often) \fBdir_target()\fR creates a +\&.exists file in the created directory. It is this you should depend on. +For portability purposes you should use the $(DIRFILESEP) macro rather +than a '/' to separate the directory from the file. +.PP +.Vb 1 +\& yourdirectory$(DIRFILESEP).exists +.Ve +.PP +\fIdistdir\fR +.IX Subsection "distdir" +.PP +Defines the scratch directory target that will hold the distribution +before tar-ing (or shar-ing). +.PP +\fIdist_test\fR +.IX Subsection "dist_test" +.PP +Defines a target that produces the distribution in the +scratch directory, and runs 'perl Makefile.PL; make ;make test' in that +subdirectory. +.PP +\fIxs_dlsyms_arg\fR +.IX Subsection "xs_dlsyms_arg" +.PP +Returns command-line arg(s) to linker for file listing dlsyms to export. +Defaults to returning empty string, can be overridden by e.g. AIX. +.PP +\fIxs_dlsyms_ext\fR +.IX Subsection "xs_dlsyms_ext" +.PP +Returns file-extension for \f(CW\*(C`xs_make_dlsyms\*(C'\fR method's output file, +including any "." character. +.PP +\fIxs_dlsyms_extra\fR +.IX Subsection "xs_dlsyms_extra" +.PP +Returns any extra text to be prepended to the \f(CW$extra\fR argument of +\&\f(CW\*(C`xs_make_dlsyms\*(C'\fR. +.PP +\fIxs_dlsyms_iterator\fR +.IX Subsection "xs_dlsyms_iterator" +.PP +Iterates over necessary shared objects, calling \f(CW\*(C`xs_make_dlsyms\*(C'\fR method +for each with appropriate arguments. +.PP +\fIxs_make_dlsyms\fR +.IX Subsection "xs_make_dlsyms" +.PP +.Vb 12 +\& $self\->xs_make_dlsyms( +\& \e%attribs, # hashref from %attribs in caller +\& "$self\->{BASEEXT}.def", # output file for Makefile target +\& \*(AqMakefile.PL\*(Aq, # dependency +\& $self\->{NAME}, # shared object\*(Aqs "name" +\& $self\->{DLBASE}, # last ::\-separated part of name +\& $attribs{DL_FUNCS} || $self\->{DL_FUNCS} || {}, # various params +\& $attribs{FUNCLIST} || $self\->{FUNCLIST} || [], +\& $attribs{IMPORTS} || $self\->{IMPORTS} || {}, +\& $attribs{DL_VARS} || $self\->{DL_VARS} || [], +\& # optional extra param that will be added as param to Mksymlists +\& ); +.Ve +.PP +Utility method that returns Makefile snippet to call \f(CW\*(C`Mksymlists\*(C'\fR. +.PP +\fIdynamic (o)\fR +.IX Subsection "dynamic (o)" +.PP +Defines the dynamic target. +.PP +\fImakemakerdflt_target\fR +.IX Subsection "makemakerdflt_target" +.PP +.Vb 1 +\& my $make_frag = $mm\->makemakerdflt_target +.Ve +.PP +Returns a make fragment with the makemakerdeflt_target specified. +This target is the first target in the Makefile, is the default target +and simply points off to 'all' just in case any make variant gets +confused or something gets snuck in before the real 'all' target. +.PP +\fImanifypods_target\fR +.IX Subsection "manifypods_target" +.PP +.Vb 1 +\& my $manifypods_target = $self\->manifypods_target; +.Ve +.PP +Generates the manifypods target. This target generates man pages from +all POD files in MAN1PODS and MAN3PODS. +.PP +\fImetafile_target\fR +.IX Subsection "metafile_target" +.PP +.Vb 1 +\& my $target = $mm\->metafile_target; +.Ve +.PP +Generate the metafile target. +.PP +Writes the file META.yml (YAML encoded meta-data) and META.json +(JSON encoded meta-data) about the module in the distdir. +The format follows Module::Build's as closely as possible. +.PP +\fImetafile_data\fR +.IX Subsection "metafile_data" +.PP +.Vb 1 +\& my $metadata_hashref = $mm\->metafile_data(\e%meta_add, \e%meta_merge); +.Ve +.PP +Returns the data which MakeMaker turns into the META.yml file +and the META.json file. It is always in version 2.0 of the format. +.PP +Values of \f(CW%meta_add\fR will overwrite any existing metadata in those +keys. \f(CW%meta_merge\fR will be merged with them. +.PP +\fImetafile_file\fR +.IX Subsection "metafile_file" +.PP +.Vb 1 +\& my $meta_yml = $mm\->metafile_file(@metadata_pairs); +.Ve +.PP +Turns the \f(CW@metadata_pairs\fR into YAML. +.PP +This method does not implement a complete YAML dumper, being limited +to dump a hash with values which are strings, undef's or nested hashes +and arrays of strings. No quoting/escaping is done. +.PP +\fIdistmeta_target\fR +.IX Subsection "distmeta_target" +.PP +.Vb 1 +\& my $make_frag = $mm\->distmeta_target; +.Ve +.PP +Generates the distmeta target to add META.yml and META.json to the MANIFEST +in the distdir. +.PP +\fImymeta\fR +.IX Subsection "mymeta" +.PP +.Vb 1 +\& my $mymeta = $mm\->mymeta; +.Ve +.PP +Generate MYMETA information as a hash either from an existing CPAN Meta file +(META.json or META.yml) or from internal data. +.PP +\fIwrite_mymeta\fR +.IX Subsection "write_mymeta" +.PP +.Vb 1 +\& $self\->write_mymeta( $mymeta ); +.Ve +.PP +Write MYMETA information to MYMETA.json and MYMETA.yml. +.PP +\fIrealclean (o)\fR +.IX Subsection "realclean (o)" +.PP +Defines the realclean target. +.PP +\fIrealclean_subdirs_target\fR +.IX Subsection "realclean_subdirs_target" +.PP +.Vb 1 +\& my $make_frag = $MM\->realclean_subdirs_target; +.Ve +.PP +Returns the realclean_subdirs target. This is used by the realclean +target to call realclean on any subdirectories which contain Makefiles. +.PP +\fIsignature_target\fR +.IX Subsection "signature_target" +.PP +.Vb 1 +\& my $target = $mm\->signature_target; +.Ve +.PP +Generate the signature target. +.PP +Writes the file SIGNATURE with "cpansign \-s". +.PP +\fIdistsignature_target\fR +.IX Subsection "distsignature_target" +.PP +.Vb 1 +\& my $make_frag = $mm\->distsignature_target; +.Ve +.PP +Generates the distsignature target to add SIGNATURE to the MANIFEST in the +distdir. +.PP +\fIspecial_targets\fR +.IX Subsection "special_targets" +.PP +.Vb 1 +\& my $make_frag = $mm\->special_targets +.Ve +.PP +Returns a make fragment containing any targets which have special +meaning to make. For example, .SUFFIXES and .PHONY. +.SS "Init methods" +.IX Subsection "Init methods" +Methods which help initialize the MakeMaker object and macros. +.PP +\fIinit_ABSTRACT\fR +.IX Subsection "init_ABSTRACT" +.PP +.Vb 1 +\& $mm\->init_ABSTRACT +.Ve +.PP +\fIinit_INST\fR +.IX Subsection "init_INST" +.PP +.Vb 1 +\& $mm\->init_INST; +.Ve +.PP +Called by init_main. Sets up all INST_* variables except those related +to XS code. Those are handled in init_xs. +.PP +\fIinit_INSTALL\fR +.IX Subsection "init_INSTALL" +.PP +.Vb 1 +\& $mm\->init_INSTALL; +.Ve +.PP +Called by init_main. Sets up all INSTALL_* variables (except +INSTALLDIRS) and *PREFIX. +.PP +\fIinit_INSTALL_from_PREFIX\fR +.IX Subsection "init_INSTALL_from_PREFIX" +.PP +.Vb 1 +\& $mm\->init_INSTALL_from_PREFIX; +.Ve +.PP +\fIinit_from_INSTALL_BASE\fR +.IX Subsection "init_from_INSTALL_BASE" +.PP +.Vb 1 +\& $mm\->init_from_INSTALL_BASE +.Ve +.PP +\fIinit_VERSION Abstract\fR +.IX Subsection "init_VERSION Abstract" +.PP +.Vb 1 +\& $mm\->init_VERSION +.Ve +.PP +Initialize macros representing versions of MakeMaker and other tools +.PP +MAKEMAKER: path to the MakeMaker module. +.PP +MM_VERSION: ExtUtils::MakeMaker Version +.PP +MM_REVISION: ExtUtils::MakeMaker version control revision (for backwards + compat) +.PP +VERSION: version of your module +.PP +VERSION_MACRO: which macro represents the version (usually 'VERSION') +.PP +VERSION_SYM: like version but safe for use as an RCS revision number +.PP +DEFINE_VERSION: \-D line to set the module version when compiling +.PP +XS_VERSION: version in your .xs file. Defaults to $(VERSION) +.PP +XS_VERSION_MACRO: which macro represents the XS version. +.PP +XS_DEFINE_VERSION: \-D line to set the xs version when compiling. +.PP +Called by init_main. +.PP +\fIinit_tools\fR +.IX Subsection "init_tools" +.PP +.Vb 1 +\& $MM\->init_tools(); +.Ve +.PP +Initializes the simple macro definitions used by \fBtools_other()\fR and +places them in the \f(CW$MM\fR object. These use conservative cross platform +versions and should be overridden with platform specific versions for +performance. +.PP +Defines at least these macros. +.PP +.Vb 1 +\& Macro Description +\& +\& NOOP Do nothing +\& NOECHO Tell make not to display the command itself +\& +\& SHELL Program used to run shell commands +\& +\& ECHO Print text adding a newline on the end +\& RM_F Remove a file +\& RM_RF Remove a directory +\& TOUCH Update a file\*(Aqs timestamp +\& TEST_F Test for a file\*(Aqs existence +\& TEST_S Test the size of a file +\& CP Copy a file +\& CP_NONEMPTY Copy a file if it is not empty +\& MV Move a file +\& CHMOD Change permissions on a file +\& FALSE Exit with non\-zero +\& TRUE Exit with zero +\& +\& UMASK_NULL Nullify umask +\& DEV_NULL Suppress all command output +.Ve +.PP +\fIinit_others\fR +.IX Subsection "init_others" +.PP +.Vb 1 +\& $MM\->init_others(); +.Ve +.PP +Initializes the macro definitions having to do with compiling and +linking used by \fBtools_other()\fR and places them in the \f(CW$MM\fR object. +.PP +If there is no description, its the same as the parameter to +\&\fBWriteMakefile()\fR documented in ExtUtils::MakeMaker. +.PP +\fItools_other\fR +.IX Subsection "tools_other" +.PP +.Vb 1 +\& my $make_frag = $MM\->tools_other; +.Ve +.PP +Returns a make fragment containing definitions for the macros \fBinit_others()\fR +initializes. +.PP +\fIinit_DIRFILESEP Abstract\fR +.IX Subsection "init_DIRFILESEP Abstract" +.PP +.Vb 2 +\& $MM\->init_DIRFILESEP; +\& my $dirfilesep = $MM\->{DIRFILESEP}; +.Ve +.PP +Initializes the DIRFILESEP macro which is the separator between the +directory and filename in a filepath. ie. / on Unix, \e on Win32 and +nothing on VMS. +.PP +For example: +.PP +.Vb 2 +\& # instead of $(INST_ARCHAUTODIR)/extralibs.ld +\& $(INST_ARCHAUTODIR)$(DIRFILESEP)extralibs.ld +.Ve +.PP +Something of a hack but it prevents a lot of code duplication between +MM_* variants. +.PP +Do not use this as a separator between directories. Some operating +systems use different separators between subdirectories as between +directories and filenames (for example: VOLUME:[dir1.dir2]file on VMS). +.PP +\fIinit_linker Abstract\fR +.IX Subsection "init_linker Abstract" +.PP +.Vb 1 +\& $mm\->init_linker; +.Ve +.PP +Initialize macros which have to do with linking. +.PP +PERL_ARCHIVE: path to libperl.a equivalent to be linked to dynamic +extensions. +.PP +PERL_ARCHIVE_AFTER: path to a library which should be put on the +linker command line \fIafter\fR the external libraries to be linked to +dynamic extensions. This may be needed if the linker is one-pass, and +Perl includes some overrides for C RTL functions, such as \fBmalloc()\fR. +.PP +EXPORT_LIST: name of a file that is passed to linker to define symbols +to be exported. +.PP +Some OSes do not need these in which case leave it blank. +.PP +\fIinit_platform\fR +.IX Subsection "init_platform" +.PP +.Vb 1 +\& $mm\->init_platform +.Ve +.PP +Initialize any macros which are for platform specific use only. +.PP +A typical one is the version number of your OS specific module. +(ie. MM_Unix_VERSION or MM_VMS_VERSION). +.PP +\fIinit_MAKE\fR +.IX Subsection "init_MAKE" +.PP +.Vb 1 +\& $mm\->init_MAKE +.Ve +.PP +Initialize MAKE from either a MAKE environment variable or \f(CW$Config\fR{make}. +.SS Tools +.IX Subsection "Tools" +A grab bag of methods to generate specific macros and commands. +.PP +\fImanifypods\fR +.IX Subsection "manifypods" +.PP +Defines targets and routines to translate the pods into manpages and +put them into the INST_* directories. +.PP +\fIPOD2MAN_macro\fR +.IX Subsection "POD2MAN_macro" +.PP +.Vb 1 +\& my $pod2man_macro = $self\->POD2MAN_macro +.Ve +.PP +Returns a definition for the POD2MAN macro. This is a program +which emulates the pod2man utility. You can add more switches to the +command by simply appending them on the macro. +.PP +Typical usage: +.PP +.Vb 1 +\& $(POD2MAN) \-\-section=3 \-\-perm_rw=$(PERM_RW) podfile1 man_page1 ... +.Ve +.PP +\fItest_via_harness\fR +.IX Subsection "test_via_harness" +.PP +.Vb 1 +\& my $command = $mm\->test_via_harness($perl, $tests); +.Ve +.PP +Returns a \f(CW$command\fR line which runs the given set of \f(CW$tests\fR with +Test::Harness and the given \f(CW$perl\fR. +.PP +Used on the t/*.t files. +.PP +\fItest_via_script\fR +.IX Subsection "test_via_script" +.PP +.Vb 1 +\& my $command = $mm\->test_via_script($perl, $script); +.Ve +.PP +Returns a \f(CW$command\fR line which just runs a single test without +Test::Harness. No checks are done on the results, they're just +printed. +.PP +Used for test.pl, since they don't always follow Test::Harness +formatting. +.PP +\fItool_autosplit\fR +.IX Subsection "tool_autosplit" +.PP +Defines a simple perl call that runs autosplit. May be deprecated by +pm_to_blib soon. +.PP +\fIarch_check\fR +.IX Subsection "arch_check" +.PP +.Vb 4 +\& my $arch_ok = $mm\->arch_check( +\& $INC{"Config.pm"}, +\& File::Spec\->catfile($Config{archlibexp}, "Config.pm") +\& ); +.Ve +.PP +A sanity check that what Perl thinks the architecture is and what +Config thinks the architecture is are the same. If they're not it +will return false and show a diagnostic message. +.PP +When building Perl it will always return true, as nothing is installed +yet. +.PP +The interface is a bit odd because this is the result of a +quick refactoring. Don't rely on it. +.SS "File::Spec wrappers" +.IX Subsection "File::Spec wrappers" +ExtUtils::MM_Any is a subclass of File::Spec. The methods noted here +override File::Spec. +.PP +\fIcatfile\fR +.IX Subsection "catfile" +.PP +File::Spec <= 0.83 has a bug where the file part of catfile is not +canonicalized. This override fixes that bug. +.SS Misc +.IX Subsection "Misc" +Methods I can't really figure out where they should go yet. +.PP +\fIfind_tests\fR +.IX Subsection "find_tests" +.PP +.Vb 1 +\& my $test = $mm\->find_tests; +.Ve +.PP +Returns a string suitable for feeding to the shell to return all +tests in t/*.t. +.PP +\fIfind_tests_recursive\fR +.IX Subsection "find_tests_recursive" +.PP +.Vb 1 +\& my $tests = $mm\->find_tests_recursive; +.Ve +.PP +Returns a string suitable for feeding to the shell to return all +tests in t/ but recursively. Equivalent to +.PP +.Vb 1 +\& my $tests = $mm\->find_tests_recursive_in(\*(Aqt\*(Aq); +.Ve +.PP +\fIfind_tests_recursive_in\fR +.IX Subsection "find_tests_recursive_in" +.PP +.Vb 1 +\& my $tests = $mm\->find_tests_recursive_in($dir); +.Ve +.PP +Returns a string suitable for feeding to the shell to return all +tests in \f(CW$dir\fR recursively. +.PP +\fIextra_clean_files\fR +.IX Subsection "extra_clean_files" +.PP +.Vb 1 +\& my @files_to_clean = $MM\->extra_clean_files; +.Ve +.PP +Returns a list of OS specific files to be removed in the clean target in +addition to the usual set. +.PP +\fIinstallvars\fR +.IX Subsection "installvars" +.PP +.Vb 1 +\& my @installvars = $mm\->installvars; +.Ve +.PP +A list of all the INSTALL* variables without the INSTALL prefix. Useful +for iteration or building related variable sets. +.PP +\fIlibscan\fR +.IX Subsection "libscan" +.PP +.Vb 1 +\& my $wanted = $self\->libscan($path); +.Ve +.PP +Takes a path to a file or dir and returns an empty string if we don't +want to include this file in the library. Otherwise it returns the +the \f(CW$path\fR unchanged. +.PP +Mainly used to exclude version control administrative directories +and base-level \fIREADME.pod\fR from installation. +.PP +\fIplatform_constants\fR +.IX Subsection "platform_constants" +.PP +.Vb 1 +\& my $make_frag = $mm\->platform_constants +.Ve +.PP +Returns a make fragment defining all the macros initialized in +\&\fBinit_platform()\fR rather than put them in \fBconstants()\fR. +.PP +\fIpost_constants (o)\fR +.IX Subsection "post_constants (o)" +.PP +Returns an empty string per default. Dedicated to overrides from +within Makefile.PL after all constants have been defined. +.PP +\fIpost_initialize (o)\fR +.IX Subsection "post_initialize (o)" +.PP +Returns an empty string per default. Used in Makefile.PLs to add some +chunk of text to the Makefile after the object is initialized. +.PP +\fIpostamble (o)\fR +.IX Subsection "postamble (o)" +.PP +Returns an empty string. Can be used in Makefile.PLs to write some +text to the Makefile at the end. +.SH AUTHOR +.IX Header "AUTHOR" +Michael G Schwern <schwern@pobox.com> and the denizens of +makemaker@perl.org with code from ExtUtils::MM_Unix and +ExtUtils::MM_Win32. |