Re: Perl 5.8-to-be NetBSD testing?
Andy Dougherty [Thu, 2 May 2002 12:01:50 +0000 (08:01 -0400)]
Message-ID: <Pine.SOL.4.10.10205021156390.325-100000@maxwell.phys.lafayette.edu>

p4raw-id: //depot/perl@16356

Makefile.SH
ext/util/make_ext

index d30bbb4..2c123c6 100644 (file)
@@ -36,6 +36,7 @@ true)
        esac
 
        pldlflags="$cccdlflags"
+       static_target='static_pic'
        case "${osname}${osvers}" in
        next4*)
                ld=libtool
@@ -97,6 +98,7 @@ true)
         esac
        ;;
 *)     pldlflags=''
+       static_target='static'
        ;;
 esac
 
@@ -188,6 +190,13 @@ LIBPERL = $libperl
 LLIBPERL= $linklibperl
 SHRPENV = $shrpenv
 
+# Static targets are ordinarily built without CCCDLFLAGS.  However,
+# if building a shared libperl.so that might later be linked into
+# another application, then it might be appropriate to also build static
+# extensions (usually just DynaLoader) with relocatable code (e.g. -fPIC
+# for GNU cc).  This is handled by ext/util/make_ext.
+STATIC = $static_target
+
 # The following is used to include the current directory in
 # the dynamic loader path you are building a shared libperl.
 LDLIBPTH = $ldlibpth
@@ -843,13 +852,13 @@ regen_all: $(PERLYVMS) regen_headers regen_pods
 # DynaLoader may be needed for extensions that use Makefile.PL.
 
 $(DYNALOADER): miniperl$(EXE_EXT) preplibrary FORCE
-       @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+       @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
 
 d_dummy $(dynamic_ext):        miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
        @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
 
 s_dummy $(static_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
-       @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+       @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
 
 n_dummy $(nonxs_ext):  miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
        @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
index 317dd5c..8bcd7d8 100644 (file)
@@ -85,16 +85,19 @@ echo "      Making $mname ($target)"
 
 cd ext/$pname
 
-# check link type and do any preliminaries
+# check link type and do any preliminaries.  Valid link types are
+# 'dynamic', 'static', and 'static_pic' (the last one respects
+# CCCDLFLAGS such as -fPIC -- see static_target in the main Makefile.SH)
 case "$target" in
-           # convert 'static' or 'dynamic' into 'all LINKTYPE=XXX'
+dynamic)    makeargs="LINKTYPE=dynamic";
+           target=all
+           ;;
 static)     makeargs="LINKTYPE=static CCCDLFLAGS="
            target=all
            ;;
-dynamic)    makeargs="LINKTYPE=dynamic";
+static_pic) makeargs="LINKTYPE=static"
            target=all
            ;;
-
 nonxs)      makeargs="";
            target=all
            ;;