X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/2530b651d288d7db98df4c0991f07a783a1cd32c..73afeaec30b8a4bfb8d1427477e988b22d3af187:/lib/ExtUtils/MM_Unix.pm diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index b6459b5..f49c707 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -9,18 +9,19 @@ use Carp; use Config qw(%Config); use File::Basename qw(basename dirname fileparse); use DirHandle; +use Text::ParseWords; use vars qw($VERSION @ISA $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Win95 $Is_Dos $Is_VOS $Is_QNX $Is_AIX $Is_OSF $Is_IRIX $Is_NetBSD $Is_BSD $Is_SunOS4 $Is_Solaris $Is_SunOS - $Verbose %pm %static $Xsubpp_Version + $Verbose %pm %static %Config_Override ); use ExtUtils::MakeMaker qw($Verbose neatvalue); -$VERSION = '1.36'; +$VERSION = '1.41'; require ExtUtils::MM_Any; @ISA = qw(ExtUtils::MM_Any); @@ -127,30 +128,30 @@ sub c_o { $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/$cpp/; push @m, ' .c.i: - '. $cpp_cmd . ' $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i + '. $cpp_cmd . ' $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c > $*.i '; } push @m, ' .c.s: - $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c '; push @m, ' .c$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c '; push @m, ' .C$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.C ' if !$Is_OS2 and !$Is_Win32 and !$Is_Dos; #Case-specific push @m, ' .cpp$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cpp .cxx$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cxx .cc$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cc '; join "", @m; } @@ -294,6 +295,7 @@ clean :: clean_subdirs push(@otherfiles, $attribs{FILES}) if $attribs{FILES}; push(@otherfiles, qw[./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all + $(INST_ARCHAUTODIR)/extralibs.ld perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso @@ -362,8 +364,10 @@ sub const_cccmd { my($self,$libperl)=@_; return $self->{CONST_CCCMD} if $self->{CONST_CCCMD}; return '' unless $self->needs_linking(); + # PASTHRU_INC is defined explicitly by extensions + # wanting to do complex things. return $self->{CONST_CCCMD} = - q{CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \\ + q{CCCMD = $(CC) -c $(INC) $(PASTHRU_INC) \\ $(CCFLAGS) $(OPTIMIZE) \\ $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \\ $(XS_DEFINE_VERSION)}; @@ -432,19 +436,23 @@ sub constants { my($self) = @_; my @m = (); - for my $macro (qw/ + for my $macro (qw( AR_STATIC_ARGS DIRFILESEP NAME NAME_SYM VERSION VERSION_MACRO VERSION_SYM DEFINE_VERSION XS_VERSION XS_VERSION_MACRO XS_DEFINE_VERSION INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB + INST_MAN1DIR INST_MAN3DIR + MAN1EXT MAN3EXT INSTALLDIRS DESTDIR PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX - INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB - INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH - INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + ), + (map { ("INSTALL".$_, + "DESTINSTALL".$_) + } $self->installvars), + qw( PERL_LIB PERL_ARCHLIB LIBPERL_A MYEXTLIB @@ -456,7 +464,7 @@ sub constants { PERL_CORE PERM_RW PERM_RWX - / ) + ) ) { next unless defined $self->{$macro}; @@ -498,17 +506,6 @@ MAN1PODS = ".$self->wraplist(sort keys %{$self->{MAN1PODS}})." MAN3PODS = ".$self->wraplist(sort keys %{$self->{MAN3PODS}})." "; - for my $macro (qw/ - INST_MAN1DIR MAN1EXT - INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR - INST_MAN3DIR MAN3EXT - INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR - /) - { - next unless defined $self->{$macro}; - push @m, "$macro = $self->{$macro}\n"; - } - push @m, q{ # Where is the Config information that we are using/depend on @@ -608,6 +605,28 @@ $targ :: $src join "", @m; } +=item init_DEST + + $mm->init_DEST + +Defines the DESTDIR and DEST* variables paralleling the INSTALL*. + +=cut + +sub init_DEST { + my $self = shift; + + # Initialize DESTDIR + $self->{DESTDIR} ||= ''; + + # Make DEST variables. + foreach my $var ($self->installvars) { + my $destvar = 'DESTINSTALL'.$var; + $self->{$destvar} ||= '$(DESTDIR)$(INSTALL'.$var.')'; + } +} + + =item init_dist $mm->init_dist; @@ -792,7 +811,7 @@ sub dist_target { my $date_check = $self->oneliner(<<'CODE', ['-l']); print 'Warning: Makefile possibly out of date with $(VERSION_FROM)' - if -e '$(VERSION_FROM)' and -M '$(VERSION_FROM)' < -M '$(FIRST_MAKEFILE)'; + if -e '$(VERSION_FROM)' and -M '$(VERSION_FROM)' < -M '$(FIRST_MAKEFILE)'; CODE return sprintf <<'MAKE_FRAG', $date_check; @@ -1015,8 +1034,6 @@ sub dynamic { my($self) = shift; ' -## $(INST_PM) has been moved to the all: target. -## It remains here for awhile to allow for old usage: "make dynamic" dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT) $(NOECHO) $(NOOP) '; @@ -1323,7 +1340,6 @@ eval 'exec $interpreter $arg -S \$0 \${1+"\$\@"}' warn "Can't create new $file: $!\n"; next; } - my($dev,$ino,$mode) = stat FIXIN; # Print out the new #! line (or equivalent). local $\; @@ -1419,7 +1435,7 @@ Called by init_main. sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc) my($self) = @_; my($name, %dir, %xs, %c, %h, %ignore, %pl_files, %manifypods); - local(%pm); #the sub in find() has to see this hash + my %pm; @ignore{qw(Makefile.PL test.pl t)} = (1,1,1); @@ -1435,6 +1451,7 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc) next unless $self->libscan($name); if (-d $name){ next if -l $name; # We do not support symlinks at all + next if $self->{NORECURS}; $dir{$name} = $name if (-f $self->catfile($name,"Makefile.PL")); } elsif ($name =~ /\.xs\z/){ my($c); ($c = $name) =~ s/\.xs\z/.c/; @@ -1876,7 +1893,7 @@ usually solves this kind of problem. Initializes EXTRALIBS, BSLOADLIBS, LDLOADLIBS, LIBS, LD_RUN_PATH, OBJECT, BOOTDEP, PERLMAINCC, LDFROM, LINKTYPE, SHELL, NOOP, FIRST_MAKEFILE, MAKEFILE_OLD, NOECHO, RM_F, RM_RF, TEST_F, -TOUCH, CP, MV, CHMOD, UMASK_NULL +TOUCH, CP, MV, CHMOD, UMASK_NULL, ECHO, ECHO_N =cut @@ -1937,6 +1954,7 @@ sub init_others { # --- Initialize Other Attributes $self->{SHELL} ||= $Config{sh} || '/bin/sh'; $self->{ECHO} ||= 'echo'; + $self->{ECHO_N} ||= 'echo -n'; $self->{RM_F} ||= "rm -f"; $self->{RM_RF} ||= "rm -rf"; $self->{TOUCH} ||= "touch"; @@ -2030,15 +2048,15 @@ sub init_INSTALL { $self->init_lib2arch; - if( $Config{usevendorprefix} ) { - $Config_Override{installvendorman1dir} = - $self->catdir($Config{vendorprefixexp}, 'man', 'man1'); - $Config_Override{installvendorman3dir} = - $self->catdir($Config{vendorprefixexp}, 'man', 'man3'); - } - else { - $Config_Override{installvendorman1dir} = ''; - $Config_Override{installvendorman3dir} = ''; + # Initialize installvendorman*dir if necessary + foreach my $num (1, 3) { + my $k = 'installvendorman'.$num.'dir'; + + unless ($Config{$k}) { + $Config_Override{$k} = $Config{usevendorprefix} ? + $self->catdir($Config{vendorprefixexp}, 'man', "man$num") : + ''; + } } my $iprefix = $Config{installprefixexp} || $Config{installprefix} || @@ -2078,12 +2096,6 @@ sub init_INSTALL { $self->{VENDORPREFIX} ||= $vprefix; } - # Add DESTDIR. - $self->{DESTDIR} ||= ''; - foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) { - $self->{$prefix} = '$(DESTDIR)'.$self->{$prefix}; - } - my $arch = $Config{archname}; my $version = $Config{version}; @@ -2481,13 +2493,13 @@ doc__install : doc_site_install pure_perl_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(INSTALLPRIVLIB) \ - $(INST_ARCHLIB) $(INSTALLARCHLIB) \ - $(INST_BIN) $(INSTALLBIN) \ - $(INST_SCRIPT) $(INSTALLSCRIPT) \ - $(INST_MAN1DIR) $(INSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(INSTALLMAN3DIR) + write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ + $(INST_LIB) $(DESTINSTALLPRIVLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ + $(INST_BIN) $(DESTINSTALLBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ @@ -2495,59 +2507,59 @@ pure_perl_install :: pure_site_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(INSTALLSITELIB) \ - $(INST_ARCHLIB) $(INSTALLSITEARCH) \ - $(INST_BIN) $(INSTALLSITEBIN) \ - $(INST_SCRIPT) $(INSTALLSCRIPT) \ - $(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) \ - $(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) + write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ + $(INST_LIB) $(DESTINSTALLSITELIB) \ + $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ + $(INST_BIN) $(DESTINSTALLSITEBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ pure_vendor_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(INSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(INSTALLVENDORLIB) \ - $(INST_ARCHLIB) $(INSTALLVENDORARCH) \ - $(INST_BIN) $(INSTALLVENDORBIN) \ - $(INST_SCRIPT) $(INSTALLSCRIPT) \ - $(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) + write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ + $(INST_LIB) $(DESTINSTALLVENDORLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ + $(INST_BIN) $(DESTINSTALLVENDORBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) doc_perl_install :: - $(NOECHO) $(ECHO) Appending installation info to $(INSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(INSTALLARCHLIB) + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLPRIVLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{ + >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ doc_site_install :: - $(NOECHO) $(ECHO) Appending installation info to $(INSTALLSITEARCH)/perllocal.pod - -$(NOECHO) $(MKPATH) $(INSTALLSITEARCH) + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(INSTALLSITEARCH)','perllocal.pod').q{ + >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ doc_vendor_install :: - $(NOECHO) $(ECHO) Appending installation info to $(INSTALLVENDORARCH)/perllocal.pod - -$(NOECHO) $(MKPATH) $(INSTALLVENDORARCH) + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLVENDORLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(INSTALLVENDORARCH)','perllocal.pod').q{ + >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ }; @@ -2587,14 +2599,21 @@ sub installbin { $fromto{$from}=$to; } @to = values %fromto; + + my $fixin; + if( $Is_Win32 ) { + $fixin = $self->{PERL_CORE} ? '$(PERLRUN) ../../win32/bin/pl2bat.pl' + : 'pl2bat.bat'; + } + else { + $fixin = q{$(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"}; + } + push(@m, qq{ EXE_FILES = @{$self->{EXE_FILES}} -} . ($Is_Win32 - ? q{FIXIN = pl2bat.bat -} : q{FIXIN = $(PERLRUN) "-MExtUtils::MY" \ - -e "MY->fixin(shift)" -}).qq{ +FIXIN = $fixin + pure_all :: @to \$(NOECHO) \$(NOOP) @@ -2889,14 +2908,14 @@ $tmp/perlmain.c: $makefilename}, q{ push @m, q{ doc_inst_perl: - $(NOECHO) $(ECHO) Appending installation info to $(INSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(INSTALLARCHLIB) + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod + -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ "Perl binary" "$(MAP_TARGET)" \ MAP_STATIC "$(MAP_STATIC)" \ MAP_EXTRA "`cat $(INST_ARCHAUTODIR)/extralibs.all`" \ MAP_LIBPERL "$(MAP_LIBPERL)" \ - >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{ + >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ }; @@ -2904,7 +2923,7 @@ doc_inst_perl: inst_perl: pure_inst_perl doc_inst_perl pure_inst_perl: $(MAP_TARGET) - }.$self->{CP}.q{ $(MAP_TARGET) }.$self->catfile('$(INSTALLBIN)','$(MAP_TARGET)').q{ + }.$self->{CP}.q{ $(MAP_TARGET) }.$self->catfile('$(DESTINSTALLBIN)','$(MAP_TARGET)').q{ clean :: map_clean @@ -2932,7 +2951,7 @@ $(OBJECT) : $(FIRST_MAKEFILE) ' if $self->{OBJECT}; push @m, q{ -# We take a very conservative approach here, but it\'s worth it. +# We take a very conservative approach here, but it's worth it. # We move Makefile to Makefile.old here to avoid gnu make looping. $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" @@ -3092,10 +3111,26 @@ sub pasthru { my($sep) = $Is_VMS ? ',' : ''; $sep .= "\\\n\t"; - foreach $key (qw(LIB LIBPERL_A LINKTYPE PREFIX OPTIMIZE)) { - push @pasthru, "$key=\"\$($key)\""; + foreach $key (qw(LIB LIBPERL_A LINKTYPE PREFIX OPTIMIZE INC DEFINE)) { + if ($key eq 'INC' && defined(my $inc = $self->{INC})) { + # For INC we need to prepend parent directory but + # only iff the parent directory is not absolute. + my ($o, $i) = $Is_VMS ? ('/Include=', 'i') : ('-I', ''); + my $newinc = ''; + foreach (grep { /\S/ } parse_line(qr/\s*(?$i)$o/, 1, $inc)) { + s/^"(.+)"$/$1/o; + my $dir = File::Spec->file_name_is_absolute($_) ? $_ : File::Spec->catdir(File::Spec->updir, $_); + $dir = qq["$dir"] if $dir =~ / /; + $newinc .= " $o$dir"; + } + push @pasthru, "INC=\"$newinc\""; + } else { + push @pasthru, "$key=\"\$($key)\""; + } } + # PASTHRU_DEFINE and PASTHRU_INC are defined explicitly + # by extensions wanting to do really complex things. foreach $key (qw(DEFINE INC)) { push @pasthru, "PASTHRU_$key=\"\$(PASTHRU_$key)\""; } @@ -3397,6 +3432,8 @@ sub prefixify { my $path = $self->{uc $var} || $Config_Override{lc $var} || $Config{lc $var} || ''; + $rprefix .= '/' if $sprefix =~ m|/$|; + print STDERR " prefixify $var => $path\n" if $Verbose >= 2; print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2; @@ -3479,7 +3516,7 @@ realclean purge :: clean realclean_subdirs push(@m, " \$(RM_F) \$(INST_STATIC)\n"); } - my @files = (); + my @files = values %{$self->{PM}}; push @files, $attribs{FILES} if $attribs{FILES}; push @files, '$(FIRST_MAKEFILE)', '$(MAKEFILE_OLD)'; @@ -3567,7 +3604,8 @@ sub oneliner { $cmd =~ s{^\n+}{}; $cmd =~ s{\n+$}{}; - $cmd = $self->quote_literal($cmd); + my @cmds = split /\n/, $cmd; + $cmd = join " \n\t-e ", map $self->quote_literal($_), @cmds; $cmd = $self->escape_newlines($cmd); $switches = join ' ', @$switches; @@ -3889,7 +3927,8 @@ sub tools_other { my @m; for my $tool (qw{ SHELL CHMOD CP MV NOOP NOECHO RM_F RM_RF TEST_F TOUCH - UMASK_NULL DEV_NULL MKPATH EQUALIZE_TIMESTAMP ECHO + UMASK_NULL DEV_NULL MKPATH EQUALIZE_TIMESTAMP + ECHO ECHO_N UNINST VERBINST MOD_INSTALL DOC_INSTALL UNINSTALL WARN_IF_OLD_PACKLIST @@ -3940,21 +3979,7 @@ sub tool_xsubpp { } - my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,"xsubpp")); - - # What are the correct thresholds for version 1 && 2 Paul? - if ( $xsubpp_version > 1.923 ){ - $self->{XSPROTOARG} = "" unless defined $self->{XSPROTOARG}; - } else { - if (defined $self->{XSPROTOARG} && $self->{XSPROTOARG} =~ /\-prototypes/) { - print STDOUT qq{Warning: This extension wants to pass the switch "-prototypes" to xsubpp. - Your version of xsubpp is $xsubpp_version and cannot handle this. - Please upgrade to a more recent version of xsubpp. -}; - } else { - $self->{XSPROTOARG} = ""; - } - } + $self->{XSPROTOARG} = "" unless defined $self->{XSPROTOARG}; return qq{ XSUBPPDIR = $xsdir @@ -3966,61 +3991,6 @@ XSUBPP_EXTRA_ARGS = }; }; -sub xsubpp_version -{ - my($self,$xsubpp) = @_; - return $Xsubpp_Version if defined $Xsubpp_Version; # global variable - - my ($version) ; - - # try to figure out the version number of the xsubpp on the system - - # first try the -v flag, introduced in 1.921 & 2.000a2 - - return "" unless $self->needs_linking; - - my $command = qq{$self->{PERL} "-I$self->{PERL_LIB}" $xsubpp -v 2>&1}; - print "Running $command\n" if $Verbose >= 2; - $version = `$command` ; - warn "Running '$command' exits with status " . ($?>>8) if $?; - chop $version ; - - return $Xsubpp_Version = $1 if $version =~ /^xsubpp version (.*)/ ; - - # nope, then try something else - - my $counter = '000'; - my ($file) = 'temp' ; - $counter++ while -e "$file$counter"; # don't overwrite anything - $file .= $counter; - - open(F, ">$file") or die "Cannot open file '$file': $!\n" ; - print F <= 2; - my $text = `$command` ; - warn "Running '$command' exits with status " . ($?>>8) if $?; - unlink $file ; - - # gets 1.2 -> 1.92 and 2.000a1 - return $Xsubpp_Version = $1 if $text =~ /automatically by xsubpp version ([\S]+)\s*/ ; - - # it is either 1.0 or 1.1 - return $Xsubpp_Version = 1.1 if $text =~ /^Warning: ignored semicolon/ ; - - # none of the above, so 1.0 - return $Xsubpp_Version = "1.0" ; -} - =item all_target