summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm')
-rw-r--r--chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm1782
1 files changed, 0 insertions, 1782 deletions
diff --git a/chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm b/chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm
deleted file mode 100644
index b48ffea9505..00000000000
--- a/chromium/third_party/cygwin/lib/perl5/5.10/ExtUtils/MM_Any.pm
+++ /dev/null
@@ -1,1782 +0,0 @@
-package ExtUtils::MM_Any;
-
-use strict;
-our $VERSION = '6.44';
-
-use Carp;
-use File::Spec;
-BEGIN { our @ISA = qw(File::Spec); }
-
-# We need $Verbose
-use ExtUtils::MakeMaker qw($Verbose);
-
-use ExtUtils::MakeMaker::Config;
-
-
-# So we don't have to keep calling the methods over and over again,
-# we have these globals to cache the values. Faster and shrtr.
-my $Curdir = __PACKAGE__->curdir;
-my $Rootdir = __PACKAGE__->rootdir;
-my $Updir = __PACKAGE__->updir;
-
-
-=head1 NAME
-
-ExtUtils::MM_Any - Platform-agnostic MM methods
-
-=head1 SYNOPSIS
-
- 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);
-
-=head1 DESCRIPTION
-
-B<FOR INTERNAL USE ONLY!>
-
-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.
-
-Subclass off of ExtUtils::MM_Any I<and> ExtUtils::MM_Unix. This is a
-temporary solution.
-
-B<THIS MAY BE TEMPORARY!>
-
-
-=head1 METHODS
-
-Any methods marked I<Abstract> must be implemented by subclasses.
-
-
-=head2 Cross-platform helper methods
-
-These are methods which help writing cross-platform code.
-
-
-
-=head3 os_flavor I<Abstract>
-
- my @os_flavor = $mm->os_flavor;
-
-@os_flavor is the style of operating system this is, usually
-corresponding to the MM_*.pm file we're using.
-
-The first element of @os_flavor is the major family (ie. Unix,
-Windows, VMS, OS/2, etc...) and the rest are sub families.
-
-Some examples:
-
- Cygwin98 ('Unix', 'Cygwin', 'Cygwin9x')
- Windows NT ('Win32', 'WinNT')
- Win98 ('Win32', 'Win9x')
- Linux ('Unix', 'Linux')
- MacOS X ('Unix', 'Darwin', 'MacOS', 'MacOS X')
- OS/2 ('OS/2')
-
-This is used to write code for styles of operating system.
-See os_flavor_is() for use.
-
-
-=head3 os_flavor_is
-
- my $is_this_flavor = $mm->os_flavor_is($this_flavor);
- my $is_this_flavor = $mm->os_flavor_is(@one_of_these_flavors);
-
-Checks to see if the current operating system is one of the given flavors.
-
-This is useful for code like:
-
- if( $mm->os_flavor_is('Unix') ) {
- $out = `foo 2>&1`;
- }
- else {
- $out = `foo`;
- }
-
-=cut
-
-sub os_flavor_is {
- my $self = shift;
- my %flavors = map { ($_ => 1) } $self->os_flavor;
- return (grep { $flavors{$_} } @_) ? 1 : 0;
-}
-
-
-=head3 split_command
-
- my @cmds = $MM->split_command($cmd, @args);
-
-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.
-
-C<split_command> will return a series of @cmds each processing part of
-the args. Collectively they will process all the arguments. Each
-individual line in @cmds will not be longer than the
-$self->max_exec_len being careful to take into account macro expansion.
-
-$cmd should include any switches and repeated initial arguments.
-
-If no @args are given, no @cmds will be returned.
-
-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:
-
- $self->split_command($cmd, %pod2man);
-
-
-=cut
-
-sub split_command {
- my($self, $cmd, @args) = @_;
-
- my @cmds = ();
- return(@cmds) unless @args;
-
- # If the command was given as a here-doc, there's probably a trailing
- # newline.
- chomp $cmd;
-
- # set aside 30% for macro expansion.
- my $len_left = int($self->max_exec_len * 0.70);
- $len_left -= length $self->_expand_macros($cmd);
-
- do {
- my $arg_str = '';
- my @next_args;
- while( @next_args = splice(@args, 0, 2) ) {
- # Two at a time to preserve pairs.
- my $next_arg_str = "\t ". join ' ', @next_args, "\n";
-
- if( !length $arg_str ) {
- $arg_str .= $next_arg_str
- }
- elsif( length($arg_str) + length($next_arg_str) > $len_left ) {
- unshift @args, @next_args;
- last;
- }
- else {
- $arg_str .= $next_arg_str;
- }
- }
- chop $arg_str;
-
- push @cmds, $self->escape_newlines("$cmd \n$arg_str");
- } while @args;
-
- return @cmds;
-}
-
-
-sub _expand_macros {
- my($self, $cmd) = @_;
-
- $cmd =~ s{\$\((\w+)\)}{
- defined $self->{$1} ? $self->{$1} : "\$($1)"
- }e;
- return $cmd;
-}
-
-
-=head3 echo
-
- my @commands = $MM->echo($text);
- my @commands = $MM->echo($text, $file);
- my @commands = $MM->echo($text, $file, $appending);
-
-Generates a set of @commands which print the $text to a $file.
-
-If $file is not given, output goes to STDOUT.
-
-If $appending is true the $file will be appended to rather than
-overwritten.
-
-=cut
-
-sub echo {
- my($self, $text, $file, $appending) = @_;
- $appending ||= 0;
-
- my @cmds = map { '$(NOECHO) $(ECHO) '.$self->quote_literal($_) }
- split /\n/, $text;
- if( $file ) {
- my $redirect = $appending ? '>>' : '>';
- $cmds[0] .= " $redirect $file";
- $_ .= " >> $file" foreach @cmds[1..$#cmds];
- }
-
- return @cmds;
-}
-
-
-=head3 wraplist
-
- my $args = $mm->wraplist(@list);
-
-Takes an array of items and turns them into a well-formatted list of
-arguments. In most cases this is simply something like:
-
- FOO \
- BAR \
- BAZ
-
-=cut
-
-sub wraplist {
- my $self = shift;
- return join " \\\n\t", @_;
-}
-
-
-=head3 maketext_filter
-
- my $filter_make_text = $mm->maketext_filter($make_text);
-
-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.
-
-By default it does nothing.
-
-This method is protected and not intended to be called outside of
-MakeMaker.
-
-=cut
-
-sub maketext_filter { return $_[1] }
-
-
-=head3 cd I<Abstract>
-
- my $subdir_cmd = $MM->cd($subdir, @cmds);
-
-This will generate a make fragment which runs the @cmds in the given
-$dir. The rough equivalent to this, except cross platform.
-
- cd $subdir && $cmd
-
-Currently $dir can only go down one level. "foo" is fine. "foo/bar" is
-not. "../foo" is right out.
-
-The resulting $subdir_cmd has no leading tab nor trailing newline. This
-makes it easier to embed in a make string. For example.
-
- my $make = sprintf <<'CODE', $subdir_cmd;
- foo :
- $(ECHO) what
- %s
- $(ECHO) mouche
- CODE
-
-
-=head3 oneliner I<Abstract>
-
- my $oneliner = $MM->oneliner($perl_code);
- my $oneliner = $MM->oneliner($perl_code, \@switches);
-
-This will generate a perl one-liner safe for the particular platform
-you're on based on the given $perl_code and @switches (a -e is
-assumed) suitable for using in a make target. It will use the proper
-shell quoting and escapes.
-
-$(PERLRUN) will be used as perl.
-
-Any newlines in $perl_code will be escaped. Leading and trailing
-newlines will be stripped. Makes this idiom much easier:
-
- my $code = $MM->oneliner(<<'CODE', [...switches...]);
-some code here
-another line here
-CODE
-
-Usage might be something like:
-
- # an echo emulation
- $oneliner = $MM->oneliner('print "Foo\n"');
- $make = '$oneliner > somefile';
-
-All dollar signs must be doubled in the $perl_code if you expect them
-to be interpreted normally, otherwise it will be considered a make
-macro. Also remember to quote make macros else it might be used as a
-bareword. For example:
-
- # Assign the value of the $(VERSION_FROM) make macro to $vf.
- $oneliner = $MM->oneliner('$$vf = "$(VERSION_FROM)"');
-
-Its currently very simple and may be expanded sometime in the figure
-to include more flexible code and switches.
-
-
-=head3 quote_literal I<Abstract>
-
- my $safe_text = $MM->quote_literal($text);
-
-This will quote $text so it is interpreted literally in the shell.
-
-For example, on Unix this would escape any single-quotes in $text and
-put single-quotes around the whole thing.
-
-
-=head3 escape_newlines I<Abstract>
-
- my $escaped_text = $MM->escape_newlines($text);
-
-Shell escapes newlines in $text.
-
-
-=head3 max_exec_len I<Abstract>
-
- my $max_exec_len = $MM->max_exec_len;
-
-Calculates the maximum command size the OS can exec. Effectively,
-this is the max size of a shell command line.
-
-=for _private
-$self->{_MAX_EXEC_LEN} is set by this method, but only for testing purposes.
-
-
-=head3 make
-
- my $make = $MM->make;
-
-Returns the make variant we're generating the Makefile for. This attempts
-to do some normalization on the information from %Config or the user.
-
-=cut
-
-sub make {
- my $self = shift;
-
- my $make = lc $self->{MAKE};
-
- # Truncate anything like foomake6 to just foomake.
- $make =~ s/^(\w+make).*/$1/;
-
- # Turn gnumake into gmake.
- $make =~ s/^gnu/g/;
-
- return $make;
-}
-
-
-=head2 Targets
-
-These are methods which produce make targets.
-
-
-=head3 all_target
-
-Generate the default target 'all'.
-
-=cut
-
-sub all_target {
- my $self = shift;
-
- return <<'MAKE_EXT';
-all :: pure_all
- $(NOECHO) $(NOOP)
-MAKE_EXT
-
-}
-
-
-=head3 blibdirs_target
-
- my $make_frag = $mm->blibdirs_target;
-
-Creates the blibdirs target which creates all the directories we use
-in blib/.
-
-The blibdirs.ts target is deprecated. Depend on blibdirs instead.
-
-
-=cut
-
-sub blibdirs_target {
- my $self = shift;
-
- my @dirs = map { uc "\$(INST_$_)" } qw(libdir archlib
- autodir archautodir
- bin script
- man1dir man3dir
- );
-
- my @exists = map { $_.'$(DFSEP).exists' } @dirs;
-
- my $make = sprintf <<'MAKE', join(' ', @exists);
-blibdirs : %s
- $(NOECHO) $(NOOP)
-
-# Backwards compat with 6.18 through 6.25
-blibdirs.ts : blibdirs
- $(NOECHO) $(NOOP)
-
-MAKE
-
- $make .= $self->dir_target(@dirs);
-
- return $make;
-}
-
-
-=head3 clean (o)
-
-Defines the clean target.
-
-=cut
-
-sub clean {
-# --- Cleanup and Distribution Sections ---
-
- my($self, %attribs) = @_;
- my @m;
- push(@m, '
-# Delete temporary files but do not touch installed files. We don\'t delete
-# the Makefile here so a later make realclean still has a makefile to use.
-
-clean :: clean_subdirs
-');
-
- my @files = values %{$self->{XS}}; # .c files from *.xs files
- my @dirs = qw(blib);
-
- # Normally these are all under blib but they might have been
- # redefined.
- # XXX normally this would be a good idea, but the Perl core sets
- # INST_LIB = ../../lib rather than actually installing the files.
- # So a "make clean" in an ext/ directory would blow away lib.
- # Until the core is adjusted let's leave this out.
-# push @dirs, qw($(INST_ARCHLIB) $(INST_LIB)
-# $(INST_BIN) $(INST_SCRIPT)
-# $(INST_MAN1DIR) $(INST_MAN3DIR)
-# $(INST_LIBDIR) $(INST_ARCHLIBDIR) $(INST_AUTODIR)
-# $(INST_STATIC) $(INST_DYNAMIC)
-# );
-
-
- if( $attribs{FILES} ) {
- # Use @dirs because we don't know what's in here.
- push @dirs, ref $attribs{FILES} ?
- @{$attribs{FILES}} :
- split /\s+/, $attribs{FILES} ;
- }
-
- push(@files, qw[$(MAKE_APERL_FILE)
- perlmain.c tmon.out mon.out so_locations
- blibdirs.ts pm_to_blib pm_to_blib.ts
- *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT)
- $(BOOTSTRAP) $(BASEEXT).bso
- $(BASEEXT).def lib$(BASEEXT).def
- $(BASEEXT).exp $(BASEEXT).x
- ]);
-
- push(@files, $self->catfile('$(INST_ARCHAUTODIR)','extralibs.all'));
- push(@files, $self->catfile('$(INST_ARCHAUTODIR)','extralibs.ld'));
-
- # core files
- push(@files, qw[core core.*perl.*.? *perl.core]);
- push(@files, map { "core." . "[0-9]"x$_ } (1..5));
-
- # OS specific things to clean up. Use @dirs since we don't know
- # what might be in here.
- push @dirs, $self->extra_clean_files;
-
- # Occasionally files are repeated several times from different sources
- { my(%f) = map { ($_ => 1) } @files; @files = keys %f; }
- { my(%d) = map { ($_ => 1) } @dirs; @dirs = keys %d; }
-
- push @m, map "\t$_\n", $self->split_command('- $(RM_F)', @files);
- push @m, map "\t$_\n", $self->split_command('- $(RM_RF)', @dirs);
-
- # Leave Makefile.old around for realclean
- push @m, <<'MAKE';
- - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
-MAKE
-
- push(@m, "\t$attribs{POSTOP}\n") if $attribs{POSTOP};
-
- join("", @m);
-}
-
-
-=head3 clean_subdirs_target
-
- my $make_frag = $MM->clean_subdirs_target;
-
-Returns the clean_subdirs target. This is used by the clean target to
-call clean on any subdirectories which contain Makefiles.
-
-=cut
-
-sub clean_subdirs_target {
- my($self) = shift;
-
- # No subdirectories, no cleaning.
- return <<'NOOP_FRAG' unless @{$self->{DIR}};
-clean_subdirs :
- $(NOECHO) $(NOOP)
-NOOP_FRAG
-
-
- my $clean = "clean_subdirs :\n";
-
- for my $dir (@{$self->{DIR}}) {
- my $subclean = $self->oneliner(sprintf <<'CODE', $dir);
-chdir '%s'; system '$(MAKE) clean' if -f '$(FIRST_MAKEFILE)';
-CODE
-
- $clean .= "\t$subclean\n";
- }
-
- return $clean;
-}
-
-
-=head3 dir_target
-
- my $make_frag = $mm->dir_target(@directories);
-
-Generates targets to create the specified directories and set its
-permission to 0755.
-
-Because depending on a directory to just ensure it exists doesn't work
-too well (the modified time changes too often) dir_target() 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 seperate the directory from the file.
-
- yourdirectory$(DIRFILESEP).exists
-
-=cut
-
-sub dir_target {
- my($self, @dirs) = @_;
-
- my $make = '';
- foreach my $dir (@dirs) {
- $make .= sprintf <<'MAKE', ($dir) x 7;
-%s$(DFSEP).exists :: Makefile.PL
- $(NOECHO) $(MKPATH) %s
- $(NOECHO) $(CHMOD) 755 %s
- $(NOECHO) $(TOUCH) %s$(DFSEP).exists
-
-MAKE
-
- }
-
- return $make;
-}
-
-
-=head3 distdir
-
-Defines the scratch directory target that will hold the distribution
-before tar-ing (or shar-ing).
-
-=cut
-
-# For backwards compatibility.
-*dist_dir = *distdir;
-
-sub distdir {
- my($self) = shift;
-
- my $meta_target = $self->{NO_META} ? '' : 'distmeta';
- my $sign_target = !$self->{SIGN} ? '' : 'distsignature';
-
- return sprintf <<'MAKE_FRAG', $meta_target, $sign_target;
-create_distdir :
- $(RM_RF) $(DISTVNAME)
- $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
- -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
-
-distdir : create_distdir %s %s
- $(NOECHO) $(NOOP)
-
-MAKE_FRAG
-
-}
-
-
-=head3 dist_test
-
-Defines a target that produces the distribution in the
-scratchdirectory, and runs 'perl Makefile.PL; make ;make test' in that
-subdirectory.
-
-=cut
-
-sub dist_test {
- my($self) = shift;
-
- my $mpl_args = join " ", map qq["$_"], @ARGV;
-
- my $test = $self->cd('$(DISTVNAME)',
- '$(ABSPERLRUN) Makefile.PL '.$mpl_args,
- '$(MAKE) $(PASTHRU)',
- '$(MAKE) test $(PASTHRU)'
- );
-
- return sprintf <<'MAKE_FRAG', $test;
-disttest : distdir
- %s
-
-MAKE_FRAG
-
-
-}
-
-
-=head3 dynamic (o)
-
-Defines the dynamic target.
-
-=cut
-
-sub dynamic {
-# --- Dynamic Loading Sections ---
-# Note: $(INST_BOOT) moved to dynamic_lib to get rid of empty .bs
-
- my($self) = shift;
- '
-dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC)
- $(NOECHO) $(NOOP)
-';
-}
-
-
-=head3 makemakerdflt_target
-
- my $make_frag = $mm->makemakerdflt_target
-
-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.
-
-=cut
-
-sub makemakerdflt_target {
- return <<'MAKE_FRAG';
-makemakerdflt : all
- $(NOECHO) $(NOOP)
-MAKE_FRAG
-
-}
-
-
-=head3 manifypods_target
-
- my $manifypods_target = $self->manifypods_target;
-
-Generates the manifypods target. This target generates man pages from
-all POD files in MAN1PODS and MAN3PODS.
-
-=cut
-
-sub manifypods_target {
- my($self) = shift;
-
- my $man1pods = '';
- my $man3pods = '';
- my $dependencies = '';
-
- # populate manXpods & dependencies:
- foreach my $name (keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}}) {
- $dependencies .= " \\\n\t$name";
- }
-
- my $manify = <<END;
-manifypods : pure_all $dependencies
-END
-
- my @man_cmds;
- foreach my $section (qw(1 3)) {
- my $pods = $self->{"MAN${section}PODS"};
- push @man_cmds, $self->split_command(<<CMD, %$pods);
- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW)
-CMD
- }
-
- $manify .= "\t\$(NOECHO) \$(NOOP)\n" unless @man_cmds;
- $manify .= join '', map { "$_\n" } @man_cmds;
-
- return $manify;
-}
-
-
-=head3 metafile_target
-
- my $target = $mm->metafile_target;
-
-Generate the metafile target.
-
-Writes the file META.yml YAML encoded meta-data about the module in
-the distdir. The format follows Module::Build's as closely as
-possible.
-
-=cut
-
-sub metafile_target {
- my $self = shift;
-
- return <<'MAKE_FRAG' if $self->{NO_META};
-metafile :
- $(NOECHO) $(NOOP)
-MAKE_FRAG
-
- my $prereq_pm = '';
- foreach my $mod ( sort { lc $a cmp lc $b } keys %{$self->{PREREQ_PM}} ) {
- my $ver = $self->{PREREQ_PM}{$mod};
- $prereq_pm .= sprintf "\n %-30s %s", "$mod:", $ver;
- }
-
- my $author_value = defined $self->{AUTHOR}
- ? "\n - $self->{AUTHOR}"
- : undef;
-
- # Use a list to preserve order.
- my @meta_to_mm = (
- name => $self->{DISTNAME},
- version => $self->{VERSION},
- abstract => $self->{ABSTRACT},
- license => $self->{LICENSE},
- author => $author_value,
- generated_by =>
- "ExtUtils::MakeMaker version $ExtUtils::MakeMaker::VERSION",
- distribution_type => $self->{PM} ? 'module' : 'script',
- );
-
- my $meta = "--- #YAML:1.0\n";
-
- while( @meta_to_mm ) {
- my($key, $val) = splice @meta_to_mm, 0, 2;
-
- $val = '~' unless defined $val;
-
- $meta .= sprintf "%-20s %s\n", "$key:", $val;
- };
-
- $meta .= <<"YAML";
-requires: $prereq_pm
-meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.3.html
- version: 1.3
-YAML
-
- $meta .= $self->{EXTRA_META} if $self->{EXTRA_META};
-
- my @write_meta = $self->echo($meta, 'META_new.yml');
-
- return sprintf <<'MAKE_FRAG', join("\n\t", @write_meta);
-metafile : create_distdir
- $(NOECHO) $(ECHO) Generating META.yml
- %s
- -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
-MAKE_FRAG
-
-}
-
-
-=head3 distmeta_target
-
- my $make_frag = $mm->distmeta_target;
-
-Generates the distmeta target to add META.yml to the MANIFEST in the
-distdir.
-
-=cut
-
-sub distmeta_target {
- my $self = shift;
-
- my $add_meta = $self->oneliner(<<'CODE', ['-MExtUtils::Manifest=maniadd']);
-eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) }
- or print "Could not add META.yml to MANIFEST: $${'@'}\n"
-CODE
-
- my $add_meta_to_distdir = $self->cd('$(DISTVNAME)', $add_meta);
-
- return sprintf <<'MAKE', $add_meta_to_distdir;
-distmeta : create_distdir metafile
- $(NOECHO) %s
-
-MAKE
-
-}
-
-
-=head3 realclean (o)
-
-Defines the realclean target.
-
-=cut
-
-sub realclean {
- my($self, %attribs) = @_;
-
- my @dirs = qw($(DISTVNAME));
- my @files = qw($(FIRST_MAKEFILE) $(MAKEFILE_OLD));
-
- # Special exception for the perl core where INST_* is not in blib.
- # This cleans up the files built from the ext/ directory (all XS).
- if( $self->{PERL_CORE} ) {
- push @dirs, qw($(INST_AUTODIR) $(INST_ARCHAUTODIR));
- push @files, values %{$self->{PM}};
- }
-
- if( $self->has_link_code ){
- push @files, qw($(OBJECT));
- }
-
- if( $attribs{FILES} ) {
- if( ref $attribs{FILES} ) {
- push @dirs, @{ $attribs{FILES} };
- }
- else {
- push @dirs, split /\s+/, $attribs{FILES};
- }
- }
-
- # Occasionally files are repeated several times from different sources
- { my(%f) = map { ($_ => 1) } @files; @files = keys %f; }
- { my(%d) = map { ($_ => 1) } @dirs; @dirs = keys %d; }
-
- my $rm_cmd = join "\n\t", map { "$_" }
- $self->split_command('- $(RM_F)', @files);
- my $rmf_cmd = join "\n\t", map { "$_" }
- $self->split_command('- $(RM_RF)', @dirs);
-
- my $m = sprintf <<'MAKE', $rm_cmd, $rmf_cmd;
-# Delete temporary files (via clean) and also delete dist files
-realclean purge :: clean realclean_subdirs
- %s
- %s
-MAKE
-
- $m .= "\t$attribs{POSTOP}\n" if $attribs{POSTOP};
-
- return $m;
-}
-
-
-=head3 realclean_subdirs_target
-
- my $make_frag = $MM->realclean_subdirs_target;
-
-Returns the realclean_subdirs target. This is used by the realclean
-target to call realclean on any subdirectories which contain Makefiles.
-
-=cut
-
-sub realclean_subdirs_target {
- my $self = shift;
-
- return <<'NOOP_FRAG' unless @{$self->{DIR}};
-realclean_subdirs :
- $(NOECHO) $(NOOP)
-NOOP_FRAG
-
- my $rclean = "realclean_subdirs :\n";
-
- foreach my $dir (@{$self->{DIR}}) {
- foreach my $makefile ('$(MAKEFILE_OLD)', '$(FIRST_MAKEFILE)' ) {
- my $subrclean .= $self->oneliner(sprintf <<'CODE', $dir, ($makefile) x 2);
-chdir '%s'; system '$(MAKE) $(USEMAKEFILE) %s realclean' if -f '%s';
-CODE
-
- $rclean .= sprintf <<'RCLEAN', $subrclean;
- - %s
-RCLEAN
-
- }
- }
-
- return $rclean;
-}
-
-
-=head3 signature_target
-
- my $target = $mm->signature_target;
-
-Generate the signature target.
-
-Writes the file SIGNATURE with "cpansign -s".
-
-=cut
-
-sub signature_target {
- my $self = shift;
-
- return <<'MAKE_FRAG';
-signature :
- cpansign -s
-MAKE_FRAG
-
-}
-
-
-=head3 distsignature_target
-
- my $make_frag = $mm->distsignature_target;
-
-Generates the distsignature target to add SIGNATURE to the MANIFEST in the
-distdir.
-
-=cut
-
-sub distsignature_target {
- my $self = shift;
-
- my $add_sign = $self->oneliner(<<'CODE', ['-MExtUtils::Manifest=maniadd']);
-eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }
- or print "Could not add SIGNATURE to MANIFEST: $${'@'}\n"
-CODE
-
- my $sign_dist = $self->cd('$(DISTVNAME)' => 'cpansign -s');
-
- # cpansign -s complains if SIGNATURE is in the MANIFEST yet does not
- # exist
- my $touch_sig = $self->cd('$(DISTVNAME)' => '$(TOUCH) SIGNATURE');
- my $add_sign_to_dist = $self->cd('$(DISTVNAME)' => $add_sign );
-
- return sprintf <<'MAKE', $add_sign_to_dist, $touch_sig, $sign_dist
-distsignature : create_distdir
- $(NOECHO) %s
- $(NOECHO) %s
- %s
-
-MAKE
-
-}
-
-
-=head3 special_targets
-
- my $make_frag = $mm->special_targets
-
-Returns a make fragment containing any targets which have special
-meaning to make. For example, .SUFFIXES and .PHONY.
-
-=cut
-
-sub special_targets {
- my $make_frag = <<'MAKE_FRAG';
-.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
-
-.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
-
-MAKE_FRAG
-
- $make_frag .= <<'MAKE_FRAG' if $ENV{CLEARCASE_ROOT};
-.NO_CONFIG_REC: Makefile
-
-MAKE_FRAG
-
- return $make_frag;
-}
-
-
-
-
-=head2 Init methods
-
-Methods which help initialize the MakeMaker object and macros.
-
-
-=head3 init_ABSTRACT
-
- $mm->init_ABSTRACT
-
-=cut
-
-sub init_ABSTRACT {
- my $self = shift;
-
- if( $self->{ABSTRACT_FROM} and $self->{ABSTRACT} ) {
- warn "Both ABSTRACT_FROM and ABSTRACT are set. ".
- "Ignoring ABSTRACT_FROM.\n";
- return;
- }
-
- if ($self->{ABSTRACT_FROM}){
- $self->{ABSTRACT} = $self->parse_abstract($self->{ABSTRACT_FROM}) or
- carp "WARNING: Setting ABSTRACT via file ".
- "'$self->{ABSTRACT_FROM}' failed\n";
- }
-}
-
-=head3 init_INST
-
- $mm->init_INST;
-
-Called by init_main. Sets up all INST_* variables except those related
-to XS code. Those are handled in init_xs.
-
-=cut
-
-sub init_INST {
- my($self) = shift;
-
- $self->{INST_ARCHLIB} ||= $self->catdir($Curdir,"blib","arch");
- $self->{INST_BIN} ||= $self->catdir($Curdir,'blib','bin');
-
- # INST_LIB typically pre-set if building an extension after
- # perl has been built and installed. Setting INST_LIB allows
- # you to build directly into, say $Config{privlibexp}.
- unless ($self->{INST_LIB}){
- if ($self->{PERL_CORE}) {
- if (defined $Cross::platform) {
- $self->{INST_LIB} = $self->{INST_ARCHLIB} =
- $self->catdir($self->{PERL_LIB},"..","xlib",
- $Cross::platform);
- }
- else {
- $self->{INST_LIB} = $self->{INST_ARCHLIB} = $self->{PERL_LIB};
- }
- } else {
- $self->{INST_LIB} = $self->catdir($Curdir,"blib","lib");
- }
- }
-
- my @parentdir = split(/::/, $self->{PARENT_NAME});
- $self->{INST_LIBDIR} = $self->catdir('$(INST_LIB)', @parentdir);
- $self->{INST_ARCHLIBDIR} = $self->catdir('$(INST_ARCHLIB)', @parentdir);
- $self->{INST_AUTODIR} = $self->catdir('$(INST_LIB)', 'auto',
- '$(FULLEXT)');
- $self->{INST_ARCHAUTODIR} = $self->catdir('$(INST_ARCHLIB)', 'auto',
- '$(FULLEXT)');
-
- $self->{INST_SCRIPT} ||= $self->catdir($Curdir,'blib','script');
-
- $self->{INST_MAN1DIR} ||= $self->catdir($Curdir,'blib','man1');
- $self->{INST_MAN3DIR} ||= $self->catdir($Curdir,'blib','man3');
-
- return 1;
-}
-
-
-=head3 init_INSTALL
-
- $mm->init_INSTALL;
-
-Called by init_main. Sets up all INSTALL_* variables (except
-INSTALLDIRS) and *PREFIX.
-
-=cut
-
-sub init_INSTALL {
- my($self) = shift;
-
- if( $self->{ARGS}{INSTALL_BASE} and $self->{ARGS}{PREFIX} ) {
- die "Only one of PREFIX or INSTALL_BASE can be given. Not both.\n";
- }
-
- if( $self->{ARGS}{INSTALL_BASE} ) {
- $self->init_INSTALL_from_INSTALL_BASE;
- }
- else {
- $self->init_INSTALL_from_PREFIX;
- }
-}
-
-
-=head3 init_INSTALL_from_PREFIX
-
- $mm->init_INSTALL_from_PREFIX;
-
-=cut
-
-sub init_INSTALL_from_PREFIX {
- my $self = shift;
-
- $self->init_lib2arch;
-
- # There are often no Config.pm defaults for these new man variables so
- # we fall back to the old behavior which is to use installman*dir
- foreach my $num (1, 3) {
- my $k = 'installsiteman'.$num.'dir';
-
- $self->{uc $k} ||= uc "\$(installman${num}dir)"
- unless $Config{$k};
- }
-
- foreach my $num (1, 3) {
- my $k = 'installvendorman'.$num.'dir';
-
- unless( $Config{$k} ) {
- $self->{uc $k} ||= $Config{usevendorprefix}
- ? uc "\$(installman${num}dir)"
- : '';
- }
- }
-
- $self->{INSTALLSITEBIN} ||= '$(INSTALLBIN)'
- unless $Config{installsitebin};
- $self->{INSTALLSITESCRIPT} ||= '$(INSTALLSCRIPT)'
- unless $Config{installsitescript};
-
- unless( $Config{installvendorbin} ) {
- $self->{INSTALLVENDORBIN} ||= $Config{usevendorprefix}
- ? $Config{installbin}
- : '';
- }
- unless( $Config{installvendorscript} ) {
- $self->{INSTALLVENDORSCRIPT} ||= $Config{usevendorprefix}
- ? $Config{installscript}
- : '';
- }
-
-
- my $iprefix = $Config{installprefixexp} || $Config{installprefix} ||
- $Config{prefixexp} || $Config{prefix} || '';
- my $vprefix = $Config{usevendorprefix} ? $Config{vendorprefixexp} : '';
- my $sprefix = $Config{siteprefixexp} || '';
-
- # 5.005_03 doesn't have a siteprefix.
- $sprefix = $iprefix unless $sprefix;
-
-
- $self->{PREFIX} ||= '';
-
- if( $self->{PREFIX} ) {
- @{$self}{qw(PERLPREFIX SITEPREFIX VENDORPREFIX)} =
- ('$(PREFIX)') x 3;
- }
- else {
- $self->{PERLPREFIX} ||= $iprefix;
- $self->{SITEPREFIX} ||= $sprefix;
- $self->{VENDORPREFIX} ||= $vprefix;
-
- # Lots of MM extension authors like to use $(PREFIX) so we
- # put something sensible in there no matter what.
- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)';
- }
-
- my $arch = $Config{archname};
- my $version = $Config{version};
-
- # default style
- my $libstyle = $Config{installstyle} || 'lib/perl5';
- my $manstyle = '';
-
- if( $self->{LIBSTYLE} ) {
- $libstyle = $self->{LIBSTYLE};
- $manstyle = $self->{LIBSTYLE} eq 'lib/perl5' ? 'lib/perl5' : '';
- }
-
- # Some systems, like VOS, set installman*dir to '' if they can't
- # read man pages.
- for my $num (1, 3) {
- $self->{'INSTALLMAN'.$num.'DIR'} ||= 'none'
- unless $Config{'installman'.$num.'dir'};
- }
-
- my %bin_layouts =
- (
- bin => { s => $iprefix,
- t => 'perl',
- d => 'bin' },
- vendorbin => { s => $vprefix,
- t => 'vendor',
- d => 'bin' },
- sitebin => { s => $sprefix,
- t => 'site',
- d => 'bin' },
- script => { s => $iprefix,
- t => 'perl',
- d => 'bin' },
- vendorscript=> { s => $vprefix,
- t => 'vendor',
- d => 'bin' },
- sitescript => { s => $sprefix,
- t => 'site',
- d => 'bin' },
- );
-
- my %man_layouts =
- (
- man1dir => { s => $iprefix,
- t => 'perl',
- d => 'man/man1',
- style => $manstyle, },
- siteman1dir => { s => $sprefix,
- t => 'site',
- d => 'man/man1',
- style => $manstyle, },
- vendorman1dir => { s => $vprefix,
- t => 'vendor',
- d => 'man/man1',
- style => $manstyle, },
-
- man3dir => { s => $iprefix,
- t => 'perl',
- d => 'man/man3',
- style => $manstyle, },
- siteman3dir => { s => $sprefix,
- t => 'site',
- d => 'man/man3',
- style => $manstyle, },
- vendorman3dir => { s => $vprefix,
- t => 'vendor',
- d => 'man/man3',
- style => $manstyle, },
- );
-
- my %lib_layouts =
- (
- privlib => { s => $iprefix,
- t => 'perl',
- d => '',
- style => $libstyle, },
- vendorlib => { s => $vprefix,
- t => 'vendor',
- d => '',
- style => $libstyle, },
- sitelib => { s => $sprefix,
- t => 'site',
- d => 'site_perl',
- style => $libstyle, },
-
- archlib => { s => $iprefix,
- t => 'perl',
- d => "$version/$arch",
- style => $libstyle },
- vendorarch => { s => $vprefix,
- t => 'vendor',
- d => "$version/$arch",
- style => $libstyle },
- sitearch => { s => $sprefix,
- t => 'site',
- d => "site_perl/$version/$arch",
- style => $libstyle },
- );
-
-
- # Special case for LIB.
- if( $self->{LIB} ) {
- foreach my $var (keys %lib_layouts) {
- my $Installvar = uc "install$var";
-
- if( $var =~ /arch/ ) {
- $self->{$Installvar} ||=
- $self->catdir($self->{LIB}, $Config{archname});
- }
- else {
- $self->{$Installvar} ||= $self->{LIB};
- }
- }
- }
-
- my %type2prefix = ( perl => 'PERLPREFIX',
- site => 'SITEPREFIX',
- vendor => 'VENDORPREFIX'
- );
-
- my %layouts = (%bin_layouts, %man_layouts, %lib_layouts);
- while( my($var, $layout) = each(%layouts) ) {
- my($s, $t, $d, $style) = @{$layout}{qw(s t d style)};
- my $r = '$('.$type2prefix{$t}.')';
-
- print STDERR "Prefixing $var\n" if $Verbose >= 2;
-
- my $installvar = "install$var";
- my $Installvar = uc $installvar;
- next if $self->{$Installvar};
-
- $d = "$style/$d" if $style;
- $self->prefixify($installvar, $s, $r, $d);
-
- print STDERR " $Installvar == $self->{$Installvar}\n"
- if $Verbose >= 2;
- }
-
- # Generate these if they weren't figured out.
- $self->{VENDORARCHEXP} ||= $self->{INSTALLVENDORARCH};
- $self->{VENDORLIBEXP} ||= $self->{INSTALLVENDORLIB};
-
- return 1;
-}
-
-
-=head3 init_from_INSTALL_BASE
-
- $mm->init_from_INSTALL_BASE
-
-=cut
-
-my %map = (
- lib => [qw(lib perl5)],
- arch => [('lib', 'perl5', $Config{archname})],
- bin => [qw(bin)],
- man1dir => [qw(man man1)],
- man3dir => [qw(man man3)]
- );
-$map{script} = $map{bin};
-
-sub init_INSTALL_from_INSTALL_BASE {
- my $self = shift;
-
- @{$self}{qw(PREFIX VENDORPREFIX SITEPREFIX PERLPREFIX)} =
- '$(INSTALL_BASE)';
-
- my %install;
- foreach my $thing (keys %map) {
- foreach my $dir (('', 'SITE', 'VENDOR')) {
- my $uc_thing = uc $thing;
- my $key = "INSTALL".$dir.$uc_thing;
-
- $install{$key} ||=
- $self->catdir('$(INSTALL_BASE)', @{$map{$thing}});
- }
- }
-
- # Adjust for variable quirks.
- $install{INSTALLARCHLIB} ||= delete $install{INSTALLARCH};
- $install{INSTALLPRIVLIB} ||= delete $install{INSTALLLIB};
-
- foreach my $key (keys %install) {
- $self->{$key} ||= $install{$key};
- }
-
- return 1;
-}
-
-
-=head3 init_VERSION I<Abstract>
-
- $mm->init_VERSION
-
-Initialize macros representing versions of MakeMaker and other tools
-
-MAKEMAKER: path to the MakeMaker module.
-
-MM_VERSION: ExtUtils::MakeMaker Version
-
-MM_REVISION: ExtUtils::MakeMaker version control revision (for backwards
- compat)
-
-VERSION: version of your module
-
-VERSION_MACRO: which macro represents the version (usually 'VERSION')
-
-VERSION_SYM: like version but safe for use as an RCS revision number
-
-DEFINE_VERSION: -D line to set the module version when compiling
-
-XS_VERSION: version in your .xs file. Defaults to $(VERSION)
-
-XS_VERSION_MACRO: which macro represents the XS version.
-
-XS_DEFINE_VERSION: -D line to set the xs version when compiling.
-
-Called by init_main.
-
-=cut
-
-sub init_VERSION {
- my($self) = shift;
-
- $self->{MAKEMAKER} = $ExtUtils::MakeMaker::Filename;
- $self->{MM_VERSION} = $ExtUtils::MakeMaker::VERSION;
- $self->{MM_REVISION}= $ExtUtils::MakeMaker::Revision;
- $self->{VERSION_FROM} ||= '';
-
- if ($self->{VERSION_FROM}){
- $self->{VERSION} = $self->parse_version($self->{VERSION_FROM});
- if( $self->{VERSION} eq 'undef' ) {
- carp("WARNING: Setting VERSION via file ".
- "'$self->{VERSION_FROM}' failed\n");
- }
- }
-
- # strip blanks
- if (defined $self->{VERSION}) {
- $self->{VERSION} =~ s/^\s+//;
- $self->{VERSION} =~ s/\s+$//;
- }
- else {
- $self->{VERSION} = '';
- }
-
-
- $self->{VERSION_MACRO} = 'VERSION';
- ($self->{VERSION_SYM} = $self->{VERSION}) =~ s/\W/_/g;
- $self->{DEFINE_VERSION} = '-D$(VERSION_MACRO)=\"$(VERSION)\"';
-
-
- # Graham Barr and Paul Marquess had some ideas how to ensure
- # version compatibility between the *.pm file and the
- # corresponding *.xs file. The bottomline was, that we need an
- # XS_VERSION macro that defaults to VERSION:
- $self->{XS_VERSION} ||= $self->{VERSION};
-
- $self->{XS_VERSION_MACRO} = 'XS_VERSION';
- $self->{XS_DEFINE_VERSION} = '-D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"';
-
-}
-
-
-=head3 init_others I<Abstract>
-
- $MM->init_others();
-
-Initializes the macro definitions used by tools_other() and places them
-in the $MM object.
-
-If there is no description, its the same as the parameter to
-WriteMakefile() documented in ExtUtils::MakeMaker.
-
-Defines at least these macros.
-
- Macro Description
-
- NOOP Do nothing
- NOECHO Tell make not to display the command itself
-
- MAKEFILE
- FIRST_MAKEFILE
- MAKEFILE_OLD
- MAKE_APERL_FILE File used by MAKE_APERL
-
- 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's timestamp
- TEST_F Test for a file's existence
- CP Copy a file
- MV Move a file
- CHMOD Change permissions on a
- file
-
- UMASK_NULL Nullify umask
- DEV_NULL Suppress all command output
-
-
-=head3 init_DIRFILESEP I<Abstract>
-
- $MM->init_DIRFILESEP;
- my $dirfilesep = $MM->{DIRFILESEP};
-
-Initializes the DIRFILESEP macro which is the seperator between the
-directory and filename in a filepath. ie. / on Unix, \ on Win32 and
-nothing on VMS.
-
-For example:
-
- # instead of $(INST_ARCHAUTODIR)/extralibs.ld
- $(INST_ARCHAUTODIR)$(DIRFILESEP)extralibs.ld
-
-Something of a hack but it prevents a lot of code duplication between
-MM_* variants.
-
-Do not use this as a seperator between directories. Some operating
-systems use different seperators between subdirectories as between
-directories and filenames (for example: VOLUME:[dir1.dir2]file on VMS).
-
-=head3 init_linker I<Abstract>
-
- $mm->init_linker;
-
-Initialize macros which have to do with linking.
-
-PERL_ARCHIVE: path to libperl.a equivalent to be linked to dynamic
-extensions.
-
-PERL_ARCHIVE_AFTER: path to a library which should be put on the
-linker command line I<after> 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 malloc().
-
-EXPORT_LIST: name of a file that is passed to linker to define symbols
-to be exported.
-
-Some OSes do not need these in which case leave it blank.
-
-
-=head3 init_platform
-
- $mm->init_platform
-
-Initialize any macros which are for platform specific use only.
-
-A typical one is the version number of your OS specific mocule.
-(ie. MM_Unix_VERSION or MM_VMS_VERSION).
-
-=cut
-
-sub init_platform {
- return '';
-}
-
-
-=head3 init_MAKE
-
- $mm->init_MAKE
-
-Initialize MAKE from either a MAKE environment variable or $Config{make}.
-
-=cut
-
-sub init_MAKE {
- my $self = shift;
-
- $self->{MAKE} ||= $ENV{MAKE} || $Config{make};
-}
-
-
-=head2 Tools
-
-A grab bag of methods to generate specific macros and commands.
-
-
-
-=head3 manifypods
-
-Defines targets and routines to translate the pods into manpages and
-put them into the INST_* directories.
-
-=cut
-
-sub manifypods {
- my $self = shift;
-
- my $POD2MAN_macro = $self->POD2MAN_macro();
- my $manifypods_target = $self->manifypods_target();
-
- return <<END_OF_TARGET;
-
-$POD2MAN_macro
-
-$manifypods_target
-
-END_OF_TARGET
-
-}
-
-
-=head3 POD2MAN_macro
-
- my $pod2man_macro = $self->POD2MAN_macro
-
-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.
-
-Typical usage:
-
- $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) podfile1 man_page1 ...
-
-=cut
-
-sub POD2MAN_macro {
- my $self = shift;
-
-# Need the trailing '--' so perl stops gobbling arguments and - happens
-# to be an alternative end of line seperator on VMS so we quote it
- return <<'END_OF_DEF';
-POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
-POD2MAN = $(POD2MAN_EXE)
-END_OF_DEF
-}
-
-
-=head3 test_via_harness
-
- my $command = $mm->test_via_harness($perl, $tests);
-
-Returns a $command line which runs the given set of $tests with
-Test::Harness and the given $perl.
-
-Used on the t/*.t files.
-
-=cut
-
-sub test_via_harness {
- my($self, $perl, $tests) = @_;
-
- return qq{\t$perl "-MExtUtils::Command::MM" }.
- qq{"-e" "test_harness(\$(TEST_VERBOSE), '\$(INST_LIB)', '\$(INST_ARCHLIB)')" $tests\n};
-}
-
-=head3 test_via_script
-
- my $command = $mm->test_via_script($perl, $script);
-
-Returns a $command line which just runs a single test without
-Test::Harness. No checks are done on the results, they're just
-printed.
-
-Used for test.pl, since they don't always follow Test::Harness
-formatting.
-
-=cut
-
-sub test_via_script {
- my($self, $perl, $script) = @_;
- return qq{\t$perl "-I\$(INST_LIB)" "-I\$(INST_ARCHLIB)" $script\n};
-}
-
-
-=head3 tool_autosplit
-
-Defines a simple perl call that runs autosplit. May be deprecated by
-pm_to_blib soon.
-
-=cut
-
-sub tool_autosplit {
- my($self, %attribs) = @_;
-
- my $maxlen = $attribs{MAXLEN} ? '$$AutoSplit::Maxlen=$attribs{MAXLEN};'
- : '';
-
- my $asplit = $self->oneliner(sprintf <<'PERL_CODE', $maxlen);
-use AutoSplit; %s autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)
-PERL_CODE
-
- return sprintf <<'MAKE_FRAG', $asplit;
-# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
-AUTOSPLITFILE = %s
-
-MAKE_FRAG
-
-}
-
-
-
-
-=head2 File::Spec wrappers
-
-ExtUtils::MM_Any is a subclass of File::Spec. The methods noted here
-override File::Spec.
-
-
-
-=head3 catfile
-
-File::Spec <= 0.83 has a bug where the file part of catfile is not
-canonicalized. This override fixes that bug.
-
-=cut
-
-sub catfile {
- my $self = shift;
- return $self->canonpath($self->SUPER::catfile(@_));
-}
-
-
-
-=head2 Misc
-
-Methods I can't really figure out where they should go yet.
-
-
-=head3 find_tests
-
- my $test = $mm->find_tests;
-
-Returns a string suitable for feeding to the shell to return all
-tests in t/*.t.
-
-=cut
-
-sub find_tests {
- my($self) = shift;
- return -d 't' ? 't/*.t' : '';
-}
-
-
-=head3 extra_clean_files
-
- my @files_to_clean = $MM->extra_clean_files;
-
-Returns a list of OS specific files to be removed in the clean target in
-addition to the usual set.
-
-=cut
-
-# An empty method here tickled a perl 5.8.1 bug and would return its object.
-sub extra_clean_files {
- return;
-}
-
-
-=head3 installvars
-
- my @installvars = $mm->installvars;
-
-A list of all the INSTALL* variables without the INSTALL prefix. Useful
-for iteration or building related variable sets.
-
-=cut
-
-sub installvars {
- return qw(PRIVLIB SITELIB VENDORLIB
- ARCHLIB SITEARCH VENDORARCH
- BIN SITEBIN VENDORBIN
- SCRIPT SITESCRIPT VENDORSCRIPT
- MAN1DIR SITEMAN1DIR VENDORMAN1DIR
- MAN3DIR SITEMAN3DIR VENDORMAN3DIR
- );
-}
-
-
-=head3 libscan
-
- my $wanted = $self->libscan($path);
-
-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 $path unchanged.
-
-Mainly used to exclude version control administrative directories from
-installation.
-
-=cut
-
-sub libscan {
- my($self,$path) = @_;
- my($dirs,$file) = ($self->splitpath($path))[1,2];
- return '' if grep /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/,
- $self->splitdir($dirs), $file;
-
- return $path;
-}
-
-
-=head3 platform_constants
-
- my $make_frag = $mm->platform_constants
-
-Returns a make fragment defining all the macros initialized in
-init_platform() rather than put them in constants().
-
-=cut
-
-sub platform_constants {
- return '';
-}
-
-
-=head1 AUTHOR
-
-Michael G Schwern <schwern@pobox.com> and the denizens of
-makemaker@perl.org with code from ExtUtils::MM_Unix and
-ExtUtils::MM_Win32.
-
-
-=cut
-
-1;