Fix x2p and utils dependencies for static builds
authorAndy Dougherty <doughera@lafayette.edu>
Wed, 13 Oct 2010 17:27:12 +0000 (13:27 -0400)
committerAndy Dougherty <doughera@lafayette.edu>
Thu, 14 Oct 2010 12:29:43 +0000 (08:29 -0400)
The x2p and utils .PL extractions use the Cwd module, which is not
available in miniperl in a static build.  (For a dynamic build, miniperl
only loads the pure perl portion of Cwd, but building the whole extension
ensures that the pure perl part is correctly built and available.  It might
be cleaner just to always require the full perl.)

Makefile.SH
utils/Makefile
utils/Makefile.SH
x2p/Makefile.SH

index f886564..6559583 100755 (executable)
@@ -562,16 +562,30 @@ lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl
 # make sure that we recompile perl.c if the git version changes
 perl$(OBJ_EXT): git_version.h
 
-translators:   $(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE
-       @echo " "; echo "       Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
-
 !NO!SUBS!
 
+# Making utilities and translators require Cwd.  If we have dynamic
+# loading, we only need miniperl and Cwd.$dlext.  If we have static
+# loading, we need to build perl first.
+case "$usedl" in
+define)
+    util_deps='$(MINIPERL_EXE) $(CONFIGPM) lib/auto/Cwd/Cwd$(DLSUFFIX) FORCE'
+     x2p_deps='$(MINIPERL_EXE) $(CONFIGPM) $(dynamic_ext) FORCE'
+    ;;
+*)  util_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
+     x2p_deps='$(PERL_EXE) $(CONFIGPM) FORCE'
+    ;;
+esac
+
 $spitshell >>$Makefile <<!GROK!THIS!
-utilities:     \$(MINIPERL_EXE) \$(CONFIGPM) FORCE lib/auto/Cwd/Cwd.$dlext
+translators:   $x2p_deps
+       @echo " "; echo "       Making x2p stuff"; cd x2p; \$(LDLIBPTH) \$(MAKE) all
+
+utilities:     $util_deps
        @echo " "; echo "       Making utilities"; cd utils; \$(LDLIBPTH) \$(MAKE) all
 
 !GROK!THIS!
+
 $spitshell >>$Makefile <<'!NO!SUBS!'
 
 # This is now done by installman only if you actually want the man pages.
index 4d56bea..aaa0b5f 100644 (file)
@@ -1,3 +1,6 @@
+# Generated from utils/Makefile.SH.  The generated file is
+# shipped with the source kit for systems such as win32
+# which don't do .SH extraction.
 
 PERL = ../miniperl
 REALPERL = ../perl
index b5a2f12..6601c13 100644 (file)
@@ -26,9 +26,18 @@ esac
 
 echo "Extracting utils/Makefile (with variable substitutions)"
 rm -f Makefile
+# These use the Cwd extension.  For statically-built perls, we
+# need perl, not just miniperl.
+case "$usedl" in
+    define) perl="../miniperl" ;;
+    *)      perl="../perl" ;;
+esac
 cat >Makefile <<!GROK!THIS!
+# Generated from utils/Makefile.SH.  The generated file is
+# shipped with the source kit for systems such as win32
+# which don't do .SH extraction.
 
-PERL = ../miniperl
+PERL = $perl
 REALPERL = ../perl
 RUN = $run  # Used mainly cross-compilation setups.
 
index 296fdc8..127d6f9 100755 (executable)
@@ -26,6 +26,14 @@ esac
 
 echo "Extracting x2p/Makefile (with variable substitutions)"
 rm -f Makefile
+
+# The .PL extractions use the Cwd extension.  For statically-built
+# perls, we need perl, not just miniperl.
+case "$usedl" in
+    define) perl="../miniperl" ;;
+    *)      perl="../perl" ;;
+esac
+
 cat >Makefile <<!GROK!THIS!
 # $RCSfile: Makefile.SH,v $$Revision: 4.1 $$Date: 92/08/07 18:29:07 $
 #
@@ -63,6 +71,7 @@ OPTIMIZE = $optimize
 .SUFFIXES: .c \$(OBJ_EXT)
 
 RUN = $run
+PERL = $perl
 
 !GROK!THIS!
 
@@ -173,10 +182,8 @@ hlist:
 shlist:
        echo $(sh) | tr ' ' $(TRNL) >.shlist
 
-# These should be automatically generated
-
 $(plextract):
-       $(RUN) ../miniperl -I../lib $@.PL
+       $(RUN) $(PERL) -I../lib $@.PL
 
 find2perl: find2perl.PL