1 package ExtUtils::MM_Win32;
5 ExtUtils::MM_Win32 - methods to override UN*X behaviour in ExtUtils::MakeMaker
9 use ExtUtils::MM_Win32; # Done internally by ExtUtils::MakeMaker if needed
13 See ExtUtils::MM_Unix for a documentation of the methods provided
14 there. This package overrides the implementation of these methods, not
26 Exporter::import('ExtUtils::MakeMaker',
27 qw( $Verbose &neatvalue));
29 $ENV{EMXSHELL} = 'sh'; # to run `commands`
30 unshift @MM::ISA, 'ExtUtils::MM_Win32';
32 $BORLAND = 1 if $Config{'cc'} =~ /^bcc/i;
33 $GCC = 1 if $Config{'cc'} =~ /^gcc/i;
34 $DMAKE = 1 if $Config{'make'} =~ /^dmake/i;
35 $NMAKE = 1 if $Config{'make'} =~ /^nmake/i;
36 $PERLMAKE = 1 if $Config{'make'} =~ /^pmake/i;
37 $OBJ = 1 if $Config{'ccflags'} =~ /PERL_OBJECT/i;
40 my($self,%attribs) = @_;
42 my($funcs) = $attribs{DL_FUNCS} || $self->{DL_FUNCS} || {};
43 my($vars) = $attribs{DL_VARS} || $self->{DL_VARS} || [];
44 my($imports) = $attribs{IMPORTS} || $self->{IMPORTS} || {};
46 (my $boot = $self->{NAME}) =~ s/:/_/g;
48 if (not $self->{SKIPHASH}{'dynamic'}) {
50 $self->{BASEEXT}.def: Makefile.PL
52 q! $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Mksymlists \\
53 -e "Mksymlists('NAME' => '!, $self->{NAME},
54 q!', 'DLBASE' => '!,$self->{DLBASE},
55 q!', 'DL_FUNCS' => !,neatvalue($funcs),
56 q!, 'IMPORTS' => !,neatvalue($imports),
57 q!, 'DL_VARS' => !, neatvalue($vars), q!);"
63 sub replace_manpage_separator {
71 my @e = exists($ENV{'PATHEXT'})
72 ? split(/;/, $ENV{PATHEXT})
73 : qw(.com .exe .bat .cmd);
75 for (@e) { $e .= "\Q$_\E|" }
77 # see if file ends in one of the known extensions
78 if ($file =~ /($e)$/i) {
79 return $file if -e $file;
83 return "$file$_" if -e "$file$_";
89 sub file_name_is_absolute {
91 $file =~ m{^([a-z]:)?[\\/]}i ;
95 my($self, $ver, $names, $dirs, $trace) = @_;
98 print "Looking for perl $ver by these names:
104 foreach $dir (@$dirs){
105 next unless defined $dir; # $self->{PERL_SRC} may be undefined
106 foreach $name (@$names){
108 if ($self->file_name_is_absolute($name)) { # /foo/bar
110 } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
111 $abs = $self->catfile($dir, $name);
113 $abs = $self->canonpath($self->catfile($self->curdir, $name));
115 print "Checking $abs\n" if ($trace >= 2);
116 next unless $self->maybe_command($abs);
117 print "Executing $abs\n" if ($trace >= 2);
118 $val = `$abs -e "require $ver;" 2>&1`;
120 print "Using PERL=$abs\n" if $trace;
122 } elsif ($trace >= 2) {
123 print "Result: `$val'\n";
127 print STDOUT "Unable to find a perl $ver (by these names: @$names, in these dirs: @$dirs)\n";
128 0; # false and not empty
135 # append a slash to each argument unless it has one there
136 $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
138 my $result = $self->canonpath(join('', @args));
144 Concatenate one or more directory names and a filename to form a
145 complete path ending with a filename
152 return $file unless @_;
153 my $dir = $self->catdir(@_);
155 $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
162 &ExtUtils::MM_Unix::init_others;
163 $self->{'TOUCH'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e touch';
164 $self->{'CHMOD'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e chmod';
165 $self->{'CP'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e cp';
166 $self->{'RM_F'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e rm_f';
167 $self->{'RM_RF'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e rm_rf';
168 $self->{'MV'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mv';
169 $self->{'NOOP'} = 'rem';
170 $self->{'TEST_F'} = '$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e test_f';
171 $self->{'LD'} = $Config{'ld'} || 'link';
172 $self->{'AR'} = $Config{'ar'} || 'lib';
173 $self->{'LDLOADLIBS'} ||= $Config{'libs'};
174 # -Lfoo must come first for Borland, so we put it in LDDLFLAGS
176 my $libs = $self->{'LDLOADLIBS'};
178 while ($libs =~ s/(?:^|\s)(("?)-L.+?\2)(?:\s|$)/ /) {
179 $libpath .= ' ' if length $libpath;
182 $self->{'LDLOADLIBS'} = $libs;
183 $self->{'LDDLFLAGS'} ||= $Config{'lddlflags'};
184 $self->{'LDDLFLAGS'} .= " $libpath";
186 $self->{'DEV_NULL'} = '> NUL';
187 # $self->{'NOECHO'} = ''; # till we have it working
193 Initializes lots of constants and .SUFFIXES and .PHONY
203 AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION
204 VERSION_SYM XS_VERSION INST_BIN INST_EXE INST_LIB
205 INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS
206 INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB
207 INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB
208 PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB
209 FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC
210 PERL_INC PERL FULLPERL
213 next unless defined $self->{$tmp};
214 push @m, "$tmp = $self->{$tmp}\n";
218 VERSION_MACRO = VERSION
219 DEFINE_VERSION = -D\$(VERSION_MACRO)=\\\"\$(VERSION)\\\"
220 XS_VERSION_MACRO = XS_VERSION
221 XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\"
225 MAKEMAKER = $INC{'ExtUtils\MakeMaker.pm'}
226 MM_VERSION = $ExtUtils::MakeMaker::VERSION
230 # FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
231 # BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
232 # ROOTEXT = Directory part of FULLEXT with leading slash (eg /DBD) !!! Deprecated from MM 5.32 !!!
233 # PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
234 # DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
238 FULLEXT BASEEXT PARENT_NAME DLBASE VERSION_FROM INC DEFINE OBJECT
241 next unless defined $self->{$tmp};
242 push @m, "$tmp = $self->{$tmp}\n";
246 # Handy lists of source code files:
247 XS_FILES= ".join(" \\\n\t", sort keys %{$self->{XS}})."
248 C_FILES = ".join(" \\\n\t", @{$self->{C}})."
249 O_FILES = ".join(" \\\n\t", @{$self->{O_FILES}})."
250 H_FILES = ".join(" \\\n\t", @{$self->{H}})."
251 MAN1PODS = ".join(" \\\n\t", sort keys %{$self->{MAN1PODS}})."
252 MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})."
256 INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT
258 next unless defined $self->{$tmp};
259 push @m, "$tmp = $self->{$tmp}\n";
267 .NO_CONFIG_REC: Makefile
268 } if $ENV{CLEARCASE_ROOT};
270 # why not q{} ? -- emacs
272 # work around a famous dec-osf make(1) feature(?):
275 .SUFFIXES: .xs .c .C .cpp .cxx .cc \$(OBJ_EXT)
277 # Nick wanted to get rid of .PRECIOUS. I don't remember why. I seem to recall, that
278 # some make implementations will delete the Makefile when we rebuild it. Because
279 # we call false(1) when we rebuild it. So make(1) is not completely wrong when it
280 # does so. Our milage may vary.
281 # .PRECIOUS: Makefile # seems to be not necessary anymore
283 .PHONY: all config static dynamic test linkext manifest
285 # Where is the Config information that we are using/depend on
286 CONFIGDEP = \$(PERL_ARCHLIB)\\Config.pm \$(PERL_INC)\\config.h
289 my @parentdir = split(/::/, $self->{PARENT_NAME});
291 # Where to put things:
292 INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
293 INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
295 INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
296 INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
299 if ($self->has_link_code()) {
301 INST_STATIC = $(INST_ARCHAUTODIR)\$(BASEEXT)$(LIB_EXT)
302 INST_DYNAMIC = $(INST_ARCHAUTODIR)\$(DLBASE).$(DLEXT)
303 INST_BOOT = $(INST_ARCHAUTODIR)\$(BASEEXT).bs
313 $tmp = $self->export_list;
317 $tmp = $self->perl_archive;
323 #INST_PM = }.join(" \\\n\t", sort values %{$self->{PM}}).q{
325 #PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
329 TO_INST_PM = }.join(" \\\n\t", sort keys %{$self->{PM}}).q{
331 PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
341 my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
342 my @path = split(';',$path);
343 foreach(@path) { $_ = '.' if $_ eq '' }
349 Defines how to produce the *.a (or equivalent) files.
355 # Come to think of it, if there are subdirs with linkcode, we still have no INST_STATIC
356 # return '' unless $self->needs_linking(); #might be because of a subdir
358 return '' unless $self->has_link_code;
362 $(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)\.exists
365 # If this extension has it's own library (eg SDBM_File)
366 # then copy that to $(INST_STATIC) and add $(OBJECT) into it.
367 push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
370 q{ $(AR) }.($BORLAND ? '$@ $(OBJECT:^"+")'
371 : ($GCC ? '-ru $@ $(OBJECT)'
372 : '-out:$@ $(OBJECT)')).q{
373 }.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld
377 # Old mechanism - still available:
379 push @m, "\t$self->{NOECHO}".q{echo "$(EXTRALIBS)" >> $(PERL_SRC)\ext.libs}."\n\n"
380 if $self->{PERL_SRC};
382 push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
388 Defines targets for bootstrap files.
393 my($self, %attribs) = @_;
396 ' unless $self->has_link_code();
399 BOOTSTRAP = '."$self->{BASEEXT}.bs".'
401 # As Mkbootstrap might not write a file (if none is required)
402 # we use touch to prevent make continually trying to remake it.
403 # The DynaLoader only reads a non-empty file.
404 $(BOOTSTRAP): '."$self->{MAKEFILE} $self->{BOOTDEP}".' $(INST_ARCHAUTODIR)\.exists
405 '.$self->{NOECHO}.'echo "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
406 '.$self->{NOECHO}.'$(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" \
407 -MExtUtils::Mkbootstrap \
408 -e "Mkbootstrap(\'$(BASEEXT)\',\'$(BSLOADLIBS)\');"
409 '.$self->{NOECHO}.'$(TOUCH) $(BOOTSTRAP)
412 $(INST_BOOT): $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists
413 '."$self->{NOECHO}$self->{RM_RF}".' $(INST_BOOT)
414 -'.$self->{CP}.' $(BOOTSTRAP) $(INST_BOOT)
419 =item dynamic_lib (o)
421 Defines how to produce the *.so (or equivalent) files.
426 my($self, %attribs) = @_;
427 return '' unless $self->needs_linking(); #might be because of a subdir
429 return '' unless $self->has_link_code;
431 my($otherldflags) = $attribs{OTHERLDFLAGS} || ($BORLAND ? 'c0d32.obj': '');
432 my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || "";
433 my($ldfrom) = '$(LDFROM)';
436 # This section creates the dynamically loadable $(INST_DYNAMIC)
437 # from $(OBJECT) and possibly $(MYEXTLIB).
438 OTHERLDFLAGS = '.$otherldflags.'
439 INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
441 $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)\.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(INST_DYNAMIC_DEP)
445 q{ dlltool --def $(EXPORT_LIST) --output-exp dll.exp
446 $(LD) -o $@ -Wl,--base-file -Wl,dll.base $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp
447 dlltool --def $(EXPORT_LIST) --base-file dll.base --output-exp dll.exp
448 $(LD) -o $@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) dll.exp });
451 q{ $(LD) $(LDDLFLAGS) $(OTHERLDFLAGS) }.$ldfrom.q{,$@,,}
452 .($DMAKE ? q{$(PERL_ARCHIVE:s,/,\,) $(LDLOADLIBS:s,/,\,) }
453 .q{$(MYEXTLIB:s,/,\,),$(EXPORT_LIST:s,/,\,)}
454 : q{$(subst /,\,$(PERL_ARCHIVE)) $(subst /,\,$(LDLOADLIBS)) }
455 .q{$(subst /,\,$(MYEXTLIB)),$(subst /,\,$(EXPORT_LIST))})
459 q{ $(LD) -out:$@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) }
460 .q{$(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST)});
466 push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
474 if ($self->{CAPI} eq 'TRUE') {
475 return '$(PERL_INC)\perlCAPI$(LIB_EXT)';
478 return '$(PERL_INC)\\'.$Config{'libperl'};
484 return "$self->{BASEEXT}.def";
489 No physical check on the filesystem, but a logical cleanup of a
490 path. On UNIX eliminated successive slashes and successive "/.".
495 my($self,$path) = @_;
496 $path =~ s/^([a-z]:)/\u$1/;
498 $path =~ s|(.)\\+|$1\\|g ; # xx////xx -> xx/xx
499 $path =~ s|(\\\.)+\\|\\|g ; # xx/././xx -> xx/xx
500 $path =~ s|^(\.\\)+|| unless $path eq ".\\"; # ./xx -> xx
502 unless $path =~ m#^([a-z]:)?\\#; # xx/ -> xx
503 $path .= '.' if $path =~ m#\\$#;
509 Takes one argument, a file name, and returns the file name, if the
510 argument is likely to be a perl script. On MM_Unix this is true for
511 any ordinary, readable file.
516 my($self,$file) = @_;
517 return "$file.pl" if -r "$file.pl" && -f _;
523 Defines target that copies all files in the hash PM to their
524 destination and autosplits them. See L<ExtUtils::Install/DESCRIPTION>
530 my($autodir) = $self->catdir('$(INST_LIB)','auto');
532 pm_to_blib: $(TO_INST_PM)
533 }.$self->{NOECHO}.q{$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
534 "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
536 ($NMAKE ? 'qw[ <<pmfiles.dat ],'
537 : $DMAKE ? 'qw[ $(mktmp,pmfiles.dat $(PM_TO_BLIB:s,\\,\\\\,)\n) ],'
538 : '{ qw[$(PM_TO_BLIB)] },'
539 ).q{'}.$autodir.q{')"
543 } : '') . $self->{NOECHO}.q{$(TOUCH) $@
547 =item test_via_harness (o)
549 Helper method to write the test targets
553 sub test_via_harness {
554 my($self, $perl, $tests) = @_;
555 "\t$perl".q! -Mblib -I$(PERL_ARCHLIB) -I$(PERL_LIB) -e "use Test::Harness qw(&runtests $$verbose); $$verbose=$(TEST_VERBOSE); runtests @ARGV;" !."$tests\n";
559 =item tool_autosplit (override)
561 Use Win32 quoting on command line.
566 my($self, %attribs) = @_;
568 $asl = "\$AutoSplit::Maxlen=$attribs{MAXLEN};" if $attribs{MAXLEN};
570 # Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
571 AUTOSPLITFILE = $(PERL) "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MAutoSplit }.$asl.q{ -e "autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1);"
575 =item tools_other (o)
579 Defines SHELL, LD, TOUCH, CP, MV, RM_F, RM_RF, CHMOD, UMASK_NULL in
580 the Makefile. Also defines the perl programs MKPATH,
581 WARN_IF_OLD_PACKLIST, MOD_INSTALL. DOC_INSTALL, and UNINSTALL.
588 my $bin_sh = $Config{sh} || 'cmd /c';
591 } unless $DMAKE; # dmake determines its own shell
593 for (qw/ CHMOD CP LD MV NOOP RM_F RM_RF TEST_F TOUCH UMASK_NULL DEV_NULL/ ) {
594 push @m, "$_ = $self->{$_}\n";
598 # The following is a portable way to say mkdir -p
599 # To see which directories are created, change the if 0 to if 1
600 MKPATH = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e mkpath
602 # This helps us to minimize the effect of the .exists files A yet
603 # better solution would be to have a stable file in the perl
604 # distribution with a timestamp of zero. But this solution doesn't
605 # need any changes to the core distribution and works with older perls
606 EQUALIZE_TIMESTAMP = $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Command -e eqtime
610 return join "", @m if $self->{PARENT};
613 # Here we warn users that an old packlist file was found somewhere,
614 # and that they should call some uninstall routine
615 WARN_IF_OLD_PACKLIST = $(PERL) -lwe "exit unless -f $$ARGV[0];" \\
616 -e "print 'WARNING: I have found an old package in';" \\
617 -e "print ' ', $$ARGV[0], '.';" \\
618 -e "print 'Please make sure the two installations are not conflicting';"
623 MOD_INSTALL = $(PERL) -I$(INST_LIB) -I$(PERL_LIB) -MExtUtils::Install \
624 -e "install({ @ARGV },'$(VERBINST)',0,'$(UNINST)');"
626 DOC_INSTALL = $(PERL) -e "$$\=\"\n\n\";" \
627 -e "print '=head2 ', scalar(localtime), ': C<', shift, '>', ' L<', shift, '>';" \
628 -e "print '=over 4';" \
629 -e "while (defined($$key = shift) and defined($$val = shift)) { print '=item *';print 'C<', \"$$key: $$val\", '>'; }" \
632 UNINSTALL = $(PERL) -MExtUtils::Install \
633 -e "uninstall($$ARGV[0],1,1); print \"\nUninstall is deprecated. Please check the";" \
634 -e "print \" packlist above carefully.\n There may be errors. Remove the\";" \
635 -e "print \" appropriate files manually.\n Sorry for the inconveniences.\n\""
643 Defines suffix rules to go from XS to object files directly. This is
644 only intended for broken make implementations.
648 sub xs_o { # many makes are too dumb to use xs_c then c_o
653 =item top_targets (o)
655 Defines the targets all, subdirs, config, and O_FILES
660 # --- Target Sections ---
665 #all :: config $(INST_PM) subdirs linkext manifypods
669 all :: pure_all manifypods
670 '.$self->{NOECHO}.'$(NOOP)
672 unless $self->{SKIPHASH}{'all'};
675 pure_all :: config pm_to_blib subdirs linkext
676 '.$self->{NOECHO}.'$(NOOP)
678 subdirs :: $(MYEXTLIB)
679 '.$self->{NOECHO}.'$(NOOP)
681 config :: '.$self->{MAKEFILE}.' $(INST_LIBDIR)\.exists
682 '.$self->{NOECHO}.'$(NOOP)
684 config :: $(INST_ARCHAUTODIR)\.exists
685 '.$self->{NOECHO}.'$(NOOP)
687 config :: $(INST_AUTODIR)\.exists
688 '.$self->{NOECHO}.'$(NOOP)
692 config :: Version_check
693 $self->{NOECHO}\$(NOOP)
695 } unless $self->{PARENT} or ($self->{PERL_SRC} && $self->{INSTALLDIRS} eq "perl") or $self->{NO_VC};
697 push @m, $self->dir_target(qw[$(INST_AUTODIR) $(INST_LIBDIR) $(INST_ARCHAUTODIR)]);
699 if (%{$self->{MAN1PODS}}) {
701 config :: \$(INST_MAN1DIR)\\.exists
702 $self->{NOECHO}\$(NOOP)
705 push @m, $self->dir_target(qw[$(INST_MAN1DIR)]);
707 if (%{$self->{MAN3PODS}}) {
709 config :: \$(INST_MAN3DIR)\\.exists
710 $self->{NOECHO}\$(NOOP)
713 push @m, $self->dir_target(qw[$(INST_MAN3DIR)]);
717 $(O_FILES): $(H_FILES)
718 ' if @{$self->{O_FILES} || []} && @{$self->{H} || []};
722 perldoc ExtUtils::MakeMaker
727 }.$self->{NOECHO}.q{$(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \
728 -MExtUtils::MakeMaker=Version_check \
729 -e "Version_check('$(MM_VERSION)')"
737 We don't want manpage process. XXX add pod2html support later.
743 return "\nmanifypods :\n\t$self->{NOECHO}\$(NOOP)\n";
748 Same as MM_Unix version (changes command-line quoting).
757 $(PERL) -I$(PERL_ARCHLIB) -I$(PERL_LIB) -MExtUtils::Manifest=maniread \\
758 -e "@all = keys %{ maniread() };" \\
759 -e "print(\"Executing $(CI) @all\n\"); system(\"$(CI) @all\");" \\
760 -e "print(\"Executing $(RCS_LABEL) ...\n\"); system(\"$(RCS_LABEL) @all\");"
767 Same as MM_Unix version (changes command-line quoting).
775 dist : $(DIST_DEFAULT)
776 }.$self->{NOECHO}.q{$(PERL) -le "print \"Warning: Makefile possibly out of date with $$vf\" if " \
777 -e "-e ($$vf=\"$(VERSION_FROM)\") and -M $$vf < -M \"}.$self->{MAKEFILE}.q{\";"
779 tardist : $(DISTVNAME).tar$(SUFFIX)
781 zipdist : $(DISTVNAME).zip
783 $(DISTVNAME).tar$(SUFFIX) : distdir
786 $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
787 $(RM_RF) $(DISTVNAME)
788 $(COMPRESS) $(DISTVNAME).tar
791 $(DISTVNAME).zip : distdir
793 $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
794 $(RM_RF) $(DISTVNAME)
797 uutardist : $(DISTVNAME).tar$(SUFFIX)
798 uuencode $(DISTVNAME).tar$(SUFFIX) \\
799 $(DISTVNAME).tar$(SUFFIX) > \\
800 $(DISTVNAME).tar$(SUFFIX)_uu
804 $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
805 $(RM_RF) $(DISTVNAME)
813 Defines the string that is passed to recursive make calls in
820 return "PASTHRU = " . ($NMAKE ? "-nologo" : "");