Change 27549 by [EMAIL PROTECTED] on 2006/03/20 10:21:50

        Move DynaLoader.o into libperl.so.
        
        This avoids the need to statically link DynaLoader into the stub perl
        executable and make libperl.so provide all the code needed to get a
        functional embedded perl interpreter up running.  As a side effect
        this also moves DynaLoader into libperl.a for non-useshrplib builds.
        
        Fixes [perl #32539]

Affected files ...

... //depot/perl/Makefile.SH#357 edit
... //depot/perl/ext/DynaLoader/Makefile.PL#14 edit
... //depot/perl/ext/util/make_ext#15 edit
... //depot/perl/writemain.SH#15 edit

Differences ...

==== //depot/perl/Makefile.SH#357 (text) ====
Index: perl/Makefile.SH
--- perl/Makefile.SH#356~27519~ 2006-03-16 12:32:27.000000000 -0800
+++ perl/Makefile.SH    2006-03-20 02:21:50.000000000 -0800
@@ -237,7 +237,7 @@
 static_ext = $static_list
 nonxs_ext = $nonxs_list
 ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
-DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
+DYNALOADER = DynaLoader\$(OBJ_EXT)
 
 libs = $perllibs $cryptlib
 
@@ -546,12 +546,12 @@
 !GROK!THIS!
 else
        $spitshell >>Makefile <<'!NO!SUBS!'
-$(LIBPERL): $& $(obj) $(LIBPERLEXPORT)
+$(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT)
 !NO!SUBS!
        case "$useshrplib" in
        true)
                $spitshell >>Makefile <<'!NO!SUBS!'
-       $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(libs)
+       $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
 !NO!SUBS!
                case "$osname" in
                aix)
@@ -566,7 +566,7 @@
        *)
                $spitshell >>Makefile <<'!NO!SUBS!'
        rm -f $(LIBPERL)
-       $(AR) rcu $(LIBPERL) $(obj)
+       $(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER)
        @$(ranlib) $(LIBPERL)
 !NO!SUBS!
                ;;
@@ -617,19 +617,21 @@
                    ;;
                esac
                $spitshell >>Makefile <<'!NO!SUBS!'
-miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT)
        [EMAIL PROTECTED] -f miniperl.xok
        $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \
-           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+           `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs)
        $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 !NO!SUBS!
                ;;
        *)
                $spitshell >>Makefile <<'!NO!SUBS!'
-miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT)
        [EMAIL PROTECTED] -f miniperl.xok
        $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
-           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+           `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs)
        $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 !NO!SUBS!
                ;;
@@ -637,20 +639,20 @@
 
        $spitshell >>Makefile <<'!NO!SUBS!'
 
-perl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) 
ext.libs $(PERLEXPORT)
+perl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs 
$(PERLEXPORT)
        [EMAIL PROTECTED] -f miniperl.xok
-       $(SHRPENV) $(LDLIBPTH) $(CC) -o perl$(PERL_SUFFIX) 
$(PERL_PROFILE_LDFLAGS) $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) 
$(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
+       $(SHRPENV) $(LDLIBPTH) $(CC) -o perl$(PERL_SUFFIX) 
$(PERL_PROFILE_LDFLAGS) $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) 
$(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
 # Purify/Quantify Perls.
 
-pureperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) 
$(static_ext) ext.libs $(PERLEXPORT)
-       $(SHRPENV) $(LDLIBPTH) purify $(CC) -o pureperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat 
ext.libs` $(libs)
+pureperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs 
$(PERLEXPORT)
+       $(SHRPENV) $(LDLIBPTH) purify $(CC) -o pureperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
-purecovperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) 
$(static_ext) ext.libs $(PERLEXPORT)
-       $(SHRPENV) $(LDLIBPTH) purecov $(CC) -o purecovperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat 
ext.libs` $(libs)
+purecovperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs 
$(PERLEXPORT)
+       $(SHRPENV) $(LDLIBPTH) purecov $(CC) -o purecovperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
-quantperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) 
$(static_ext) ext.libs $(PERLEXPORT)
-       $(SHRPENV) $(LDLIBPTH) quantify $(CC) -o quantperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat 
ext.libs` $(libs)
+quantperl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs 
$(PERLEXPORT)
+       $(SHRPENV) $(LDLIBPTH) quantify $(CC) -o quantperl $(CLDFLAGS) 
$(CCDLFLAGS) perlmain$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
 
 # Valgrind perl (currently Linux only)
 
@@ -747,8 +749,8 @@
 # checks as well as the special code to validate that the script in question
 # has been invoked correctly.
 
-suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) 
$(DYNALOADER) $(static_ext) ext.libs $(PERLEXPORT)
-       $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) 
perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat 
ext.libs` $(libs)
+suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) 
$(static_ext) ext.libs $(PERLEXPORT)
+       $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) 
perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` 
$(libs)
 
 !NO!SUBS!
 

==== //depot/perl/ext/DynaLoader/Makefile.PL#14 (text) ====
Index: perl/ext/DynaLoader/Makefile.PL
--- perl/ext/DynaLoader/Makefile.PL#13~27522~   2006-03-16 13:27:00.000000000 
-0800
+++ perl/ext/DynaLoader/Makefile.PL     2006-03-20 02:21:50.000000000 -0800
@@ -32,3 +32,10 @@
 ';
 }
 
+sub MY::static {
+       '
+static :: $(FIRST_MAKEFILE) $(OBJECT)
+       $(RM_RF) $(PERL_SRC)/$(OBJECT)
+       $(CP) $(OBJECT) $(PERL_SRC)/$(OBJECT)
+';
+}

==== //depot/perl/ext/util/make_ext#15 (text) ====
Index: perl/ext/util/make_ext
--- perl/ext/util/make_ext#14~27521~    2006-03-16 13:20:46.000000000 -0800
+++ perl/ext/util/make_ext      2006-03-20 02:21:50.000000000 -0800
@@ -65,6 +65,7 @@
        pname=`echo "$extspec" | sed -e 's:^ext/::' -e 's:/pm_to_blib$::' ` ;;
 *::*)  # Convert :: to /
        pname=`echo "$extspec" | sed -e 's/::/\//g' ` ;;
+*.o)    pname=`echo "$extspec" | sed -e 's/\.o//'` ;;
 *)     pname="$extspec" ;;
 esac
 # echo "Converted $extspec to $pname"

==== //depot/perl/writemain.SH#15 (text) ====
Index: perl/writemain.SH
--- perl/writemain.SH#14~24074~ 2005-03-24 08:25:58.000000000 -0800
+++ perl/writemain.SH   2006-03-20 02:21:50.000000000 -0800
@@ -39,8 +39,8 @@
 : Remove any .a suffixes and any leading path components
 for file in $orig ; do
         case "$file" in
-           *.a)  file=`echo $file | sed 's/\.a//g'`
-                 ;;
+           *.a)  file=`echo $file | sed 's/\.a//g'`;;
+           *.o)  file=`echo $file | sed 's/\.o//g'`;;
         esac
        case "$file" in
        ext/*)  file=`echo $file | sed 's:ext/\(.*\)/[^/]*:\1:'`
End of Patch.

Reply via email to