Change 13568 by jhi@alpha on 2001/12/09 21:49:06

        Apply NetBSD patch-ag: shared/static linking,
        but make the change less intrusive on non-NetBSD.

Affected files ...

.... //depot/perl/lib/ExtUtils/MM_Unix.pm#128 edit

Differences ...

==== //depot/perl/lib/ExtUtils/MM_Unix.pm#128 (text) ====
Index: perl/lib/ExtUtils/MM_Unix.pm
--- perl/lib/ExtUtils/MM_Unix.pm.~1~    Sun Dec  9 15:00:05 2001
+++ perl/lib/ExtUtils/MM_Unix.pm        Sun Dec  9 15:00:05 2001
@@ -1088,6 +1088,12 @@
     my $ldrun = qq{-rpath "$self->{LD_RUN_PATH}"}
        if ($^O eq 'irix' && $self->{LD_RUN_PATH});
 
+    my $libs = $self->{LDLOADLIBS};
+
+    if ($^O eq 'netbsd') {
+       $libs = '$(LLIBPERL)';
+    }
+
     # For example in AIX the shared objects/libraries from previous builds
     # linger quite a while in the shared dynalinker cache even when nobody
     # is using them.  This is painful if one for instance tries to restart
@@ -1096,8 +1102,9 @@
     push(@m,'  $(RM_F) $@
 ');
 
-    push(@m,'  LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) '.$ldrun.' $(LDDLFLAGS) '.$ldfrom.
-               ' $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) 
$(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)');
+    push(@m,
+'      LD_RUN_PATH="$(LD_RUN_PATH)" $(LD) '.$ldrun.' $(LDDLFLAGS) '.$ldfrom.
+' $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) $(PERL_ARCHIVE) '.$libs.' $(PERL_ARCHIVE_AFTER) 
+$(EXPORT_LIST)');
     push @m, '
        $(CHMOD) $(PERM_RWX) $@
 ';
@@ -3207,6 +3214,22 @@
 sub realclean {
     my($self, %attribs) = @_;
     my(@m);
+
+    # Set LLIBPERL to nothing on static perl platforms, and to the flags
+    # needed to link against the shared libperl library on shared perl
+    # platforms.  We peek at lddlflags to see if we need -Wl,-R or -R
+    # to add paths to the run-time library search path.
+    #
+    my($llibperl) = '';
+    if ($Config{'useshrplib'}) {
+       if ($Config{'lddlflags'} =~ /-Wl,-R/) {
+           $llibperl = '-L$(PERL_INC) -Wl,-R$(INSTALLARCHLIB)/CORE -lperl';
+       } elsif ($Config{'lddlflags'} =~ /-R/) {
+           $llibperl = '-L$(PERL_INC) -R$(INSTALLARCHLIB)/CORE -lperl';
+       }
+    }
+    push(@m,'LLIBPERL = '.$llibperl."\n");
+
     push(@m,'
 # Delete temporary files (via clean) and also delete installed files
 realclean purge ::  clean
End of Patch.

Reply via email to