X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExtUtils%2FMM_Unix.pm;h=12ee1d6f08951ef5c69babd101c726cd8c235d22;hb=a6ab0b5c7971198624b2f1ac7ae236adc2773b84;hp=a59617dc46fddd57be974c84ca19d573907a0ec5;hpb=ed4c9df05c168d15d8f1451d9eacda57ad48da88;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index a59617d..12ee1d6 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -20,7 +20,7 @@ use vars qw($VERSION @ISA use ExtUtils::MakeMaker qw($Verbose neatvalue); -$VERSION = '1.41'; +$VERSION = '1.42'; require ExtUtils::MM_Any; @ISA = qw(ExtUtils::MM_Any); @@ -127,30 +127,30 @@ sub c_o { $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/$cpp/; push @m, ' .c.i: - '. $cpp_cmd . ' $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c > $*.i + '. $cpp_cmd . ' $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i '; } push @m, ' .c.s: - $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c + $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c '; push @m, ' .c$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.c + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c '; push @m, ' .C$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.C + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C ' if !$Is_OS2 and !$Is_Win32 and !$Is_Dos; #Case-specific push @m, ' .cpp$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cpp + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp .cxx$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cxx + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx .cc$(OBJ_EXT): - $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(DEFINE) $(PASTHRU_DEFINE) $*.cc + $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc '; join "", @m; } @@ -363,10 +363,8 @@ 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 $(INC) $(PASTHRU_INC) \\ + q{CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \\ $(CCFLAGS) $(OPTIMIZE) \\ $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \\ $(XS_DEFINE_VERSION)}; @@ -1671,7 +1669,7 @@ sub init_DIRFILESEP { Initializes AR, AR_STATIC_ARGS, BASEEXT, CONFIG, DISTNAME, DLBASE, EXE_EXT, FULLEXT, FULLPERL, FULLPERLRUN, FULLPERLRUNINST, INST_*, -INSTALL*, INSTALLDIRS, LD, LIB_EXT, LIBPERL_A, MAP_TARGET, NAME, +INSTALL*, INSTALLDIRS, LIB_EXT, LIBPERL_A, MAP_TARGET, NAME, OBJ_EXT, PARENT_NAME, PERL, PERL_ARCHLIB, PERL_INC, PERL_LIB, PERL_SRC, PERLRUN, PERLRUNINST, PREFIX, VERSION, VERSION_SYM, XS_VERSION. @@ -1872,7 +1870,6 @@ usually solves this kind of problem. $self->{AR_STATIC_ARGS} ||= "cr"; # These should never be needed - $self->{LD} ||= 'ld'; $self->{OBJ_EXT} ||= '.o'; $self->{LIB_EXT} ||= '.a'; @@ -1894,11 +1891,15 @@ OBJECT, BOOTDEP, PERLMAINCC, LDFROM, LINKTYPE, SHELL, NOOP, FIRST_MAKEFILE, MAKEFILE_OLD, NOECHO, RM_F, RM_RF, TEST_F, TOUCH, CP, MV, CHMOD, UMASK_NULL, ECHO, ECHO_N +LD is initialized in init_linker() + =cut sub init_others { # --- Initialize Other Attributes my($self) = shift; + + # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS} # Lets look at $self->{LIBS} carefully: It may be an anon array, a string or # undefined. In any case we turn it into an anon array: @@ -2238,10 +2239,14 @@ sub init_INSTALL { Unix has no need of special linker flags. +However this does initialize the default linker if it has not already been set. It uses +the value from Config and then falls back to 'ld' + =cut sub init_linker { my($self) = shift; + $self->{LD} ||= $Config{ld} || 'ld'; $self->{PERL_ARCHIVE} ||= ''; $self->{PERL_ARCHIVE_AFTER} ||= ''; $self->{EXPORT_LIST} ||= ''; @@ -2323,7 +2328,10 @@ sub init_PERL { # Build up a set of file names (not command names). my $thisperl = $self->canonpath($^X); - $thisperl .= $Config{exe_ext} unless $thisperl =~ m/$Config{exe_ext}$/i; + $thisperl .= $Config{exe_ext} unless + # VMS might have a file version # at the end + $Is_VMS ? $thisperl =~ m/$Config{exe_ext}(;\d+)?$/i + : $thisperl =~ m/$Config{exe_ext}$/i; # We need a relative path to perl when in the core. $thisperl = $self->abs2rel($thisperl) if $self->{PERL_CORE}; @@ -2347,8 +2355,15 @@ sub init_PERL { # don't check if perl is executable, maybe they have decided to # supply switches with perl + # When built for debugging, VMS doesn't create perl.exe but ndbgperl.exe. + my $perl_name = 'perl'; + $perl_name = 'ndbgperl' if $Is_VMS && + defined $Config{usevmsdebug} && $Config{usevmsdebug} eq 'define'; + + # XXX This logic is flawed. If "miniperl" is anywhere in the path + # it will get confused. It should be fixed to work only on the filename. # Define 'FULLPERL' to be a non-miniperl (used in test: target) - ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/perl/i + ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/$perl_name/i unless $self->{FULLPERL}; # Little hack to get around VMS's find_perl putting "MCR" in front @@ -3110,12 +3125,10 @@ sub pasthru { my($sep) = $Is_VMS ? ',' : ''; $sep .= "\\\n\t"; - foreach $key (qw(LIB LIBPERL_A LINKTYPE PREFIX OPTIMIZE INC DEFINE)) { + foreach $key (qw(LIB LIBPERL_A LINKTYPE PREFIX OPTIMIZE)) { 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)\""; }