From: Jarkko Hietaniemi Date: Mon, 29 Apr 2002 13:25:03 +0000 (+0000) Subject: MM_NW5 update from C Aditya. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3c7fc81c803c41ad62d1287cabc17acab353f83f;p=p5sagit%2Fp5-mst-13.2.git MM_NW5 update from C Aditya. p4raw-id: //depot/perl@16266 --- diff --git a/lib/ExtUtils/MM_NW5.pm b/lib/ExtUtils/MM_NW5.pm index 86c3192..d02e0e0 100644 --- a/lib/ExtUtils/MM_NW5.pm +++ b/lib/ExtUtils/MM_NW5.pm @@ -20,7 +20,6 @@ the semantics. use Config; use File::Basename; - use vars qw(@ISA $VERSION); $VERSION = '2.01_01'; @@ -66,7 +65,7 @@ sub init_others Initializes lots of constants and .SUFFIXES and .PHONY =cut - +# NetWare override sub const_cccmd { my($self,$libperl)=@_; return $self->{CONST_CCCMD} if $self->{CONST_CCCMD}; @@ -93,9 +92,8 @@ sub constants { INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC - PERL_INC PERL FULLPERL LIBPTH BASE_IMPORT PERLRUN - FULLPERLRUN PERLRUNINST FULL_AR PERL_CORE FULLPERLRUNINST - NLM_VERSION MPKTOOL TOOLPATH + PERL_INC PERL FULLPERL LIBPTH BASE_IMPORT PERLRUN FULLPERLRUN PERLRUNINST + FULL_AR PERL_CORE FULLPERLRUNINST NLM_VERSION MPKTOOL TOOLPATH / ) { next unless defined $self->{$tmp}; @@ -126,6 +124,14 @@ XS_DEFINE_VERSION = -D\$(XS_VERSION_MACRO)=\\\"\$(XS_VERSION)\\\" # Copy this to makefile as INCLUDE = d:\...;d:\; (my $inc = $Config{'incpath'}) =~ s/([ ]*)-I/;/g; + # Get the additional include path and append to INCLUDE, keep it in + # INC will give problems during compilation, hence reset it after getting + # the value + $self->{'INC'} = ''; + push @m, qq{ +INCLUDE = $inc; +}; + push @m, qq{ INCLUDE = $inc; }; @@ -249,115 +255,37 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{ } sub static_lib { - my($self, %attribs) = @_; - return '' unless $self->needs_linking(); #might be because of a subdir + my($self) = @_; +# Come to think of it, if there are subdirs with linkcode, we still have no INST_STATIC +# return '' unless $self->needs_linking(); #might be because of a subdir return '' unless $self->has_link_code; - my($otherldflags) = $attribs{OTHERLDFLAGS} || ($BORLAND ? 'c0d32.obj': ''); - my($inst_dynamic_dep) = $attribs{INST_DYNAMIC_DEP} || ""; - my($ldfrom) = '$(LDFROM)'; my(@m); - (my $boot = $self->{NAME}) =~ s/:/_/g; - my ($mpk); - push(@m,' -# This section creates the dynamically loadable $(INST_DYNAMIC) -# from $(OBJECT) and possibly $(MYEXTLIB). -OTHERLDFLAGS = '.$otherldflags.' -INST_DYNAMIC_DEP = '.$inst_dynamic_dep.' - -$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) -'); -# push(@m, -# q{ $(LD) -out:$@ $(LDDLFLAGS) }.$ldfrom.q{ $(OTHERLDFLAGS) } -# .q{$(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) -def:$(EXPORT_LIST)}); - - # Create xdc data for an MT safe NLM in case of mpk build -# if ( scalar(keys %XS) == 0 ) { return; } - - push(@m, - q{ @echo $(BASE_IMPORT) >> $(BASEEXT).def -}); - push(@m, - q{ @echo Import @$(PERL_INC)\perl.imp >> $(BASEEXT).def -}); - - if ( $self->{CCFLAGS} =~ m/ -DMPK_ON /) { - $mpk=1; - push @m, ' $(MPKTOOL) $(XDCFLAGS) $(BASEEXT).xdc -'; - push @m, ' @echo xdcdata $(BASEEXT).xdc >> $(BASEEXT).def -'; - } else { - $mpk=0; - } - - push(@m, - q{ $(LD) $(LDFLAGS) $(OBJECT:.obj=.obj) } - ); - - push(@m, - q{ -desc "Perl 5.7.3 Extension ($(BASEEXT)) XS_VERSION: $(XS_VERSION)" -nlmversion $(NLM_VERSION) } - ); - - # Taking care of long names like FileHandle, ByteLoader, SDBM_File etc - if($self->{NLM_SHORT_NAME}) { - # In case of nlms with names exceeding 8 chars, build nlm in the - # current dir, rename and move to auto\lib. If we create in auto\lib - # in the first place, we can't rename afterwards. - push(@m, - q{ -o $(NLM_SHORT_NAME).$(DLEXT)} - ); - } else { - push(@m, - q{ -o $(INST_AUTODIR)\\$(BASEEXT).$(DLEXT)} - ); - } - - -# if ($mpk) { -# push (@m, -# q{ Option XDCDATA=$(BASEEXT).xdc } -# ); -# } - - # Add additional lib files if any (SDBM_File) - if($self->{MYEXTLIB}) { - push(@m, - q{ $(MYEXTLIB) } - ); - } - -#For now lets comment all the Watcom lib calls -#q{ LibPath $(LIBPTH) Library plib3s.lib Library math3s.lib Library clib3s.lib Library emu387.lib Library $(PERL_ARCHIVE) Library $(PERL_INC)\Main.lib} - - - push(@m, - q{ $(PERL_INC)\Main.lib} - .q{ -commandfile $(BASEEXT).def } - ); - - # If it is having a short name, rename it - if($self->{NLM_SHORT_NAME}) { - push @m, ' - if exist $(INST_AUTODIR)\\$(BASEEXT).$(DLEXT) del $(INST_AUTODIR)\\$(BASEEXT).$(DLEXT)'; - push @m, ' - rename $(NLM_SHORT_NAME).$(DLEXT) $(BASEEXT).$(DLEXT)'; - push @m, ' - move $(BASEEXT).$(DLEXT) $(INST_AUTODIR)'; - } - - push @m, ' + push(@m, <<'END'); +$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)\.exists + $(RM_RF) $@ +END + + # If this extension has it's own library (eg SDBM_File) + # then copy that to $(INST_STATIC) and add $(OBJECT) into it. + push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB}; + + push @m, +q{ $(AR) }.($BORLAND ? '$@ $(OBJECT:^"+")' + : ($GCC ? '-ru $@ $(OBJECT)' + : '-type library -o $@ $(OBJECT)')).q{ + }.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld $(CHMOD) 755 $@ -'; +}; +# CW change ( -type library ... ) +# Old mechanism - still available: + + push @m, "\t$self->{NOECHO}".q{echo "$(EXTRALIBS)" >> $(PERL_SRC)\ext.libs}."\n\n" + if $self->{PERL_SRC}; push @m, $self->dir_target('$(INST_ARCHAUTODIR)'); -# } else { -# push @m, ' -# @$(NOOP) -#'; -# } - join('',@m); + join('', "\n",@m); } @@ -434,7 +362,6 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) q{ -o $(INST_AUTODIR)\\$(BASEEXT).$(DLEXT)} ); } - # Add additional lib files if any (SDBM_File) if($self->{MYEXTLIB}) { push(@m, @@ -466,8 +393,7 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) '; push @m, $self->dir_target('$(INST_ARCHAUTODIR)'); - - join('',@m); + join('',@m); }