]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
maint: simplify and improve safety of bootstrap process.
authorGary V. Vaughan <gary@gnu.org>
Thu, 2 Sep 2010 09:44:32 +0000 (16:44 +0700)
committerGary V. Vaughan <gary@gnu.org>
Fri, 24 Sep 2010 18:55:30 +0000 (01:55 +0700)
* Makefile.am (bootstrap_files): List files that need to be
generated at bootstrap time before `./configure && make' can
work.  It turns out that this is considerably fewer files than we
had thought necessary previously.
(bootstrap-deps-prep): Ensure minimum set of required substitution
variables are non-empty.
(bootstrap-deps): Depend on `bootstrap' files.
* bootstrap (Generate bootstrap dependencies): Now that
`Makefile.am' is entirely responsible for rebuilding files at
bootstrap time, we need only specify the new `bootstrap-deps'
target, and supply values for the substitutions checked by
`bootstrap-deps-prep'.
* configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
right after running `bootstrap'.  So rely on the presence of
`libltdl/config/libtoolize.m4sh', which is always there.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
ChangeLog
Makefile.am
bootstrap
configure.ac

index 73bafbb5d2495518736002cd684fb14d2346408e..8e5e8c0a35062fb45f4e49dd81f17612f6862774 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2010-08-30  Gary V. Vaughan  <gary@gnu.org>
+
+       maint: simplify and improve safety of bootstrap process.
+       * Makefile.am (bootstrap_files): List files that need to be
+       generated at bootstrap time before `./configure && make' can
+       work.  It turns out that this is considerably fewer files than we
+       had thought necessary previously.
+       (bootstrap-deps-prep): Ensure minimum set of required substitution
+       variables are non-empty.
+       (bootstrap-deps): Depend on `bootstrap' files.
+       * bootstrap (Generate bootstrap dependencies): Now that
+       `Makefile.am' is entirely responsible for rebuilding files at
+       bootstrap time, we need only specify the new `bootstrap-deps'
+       target, and supply values for the substitutions checked by
+       `bootstrap-deps-prep'.
+       * configure.ac (AC_CONFIG_SRCDIR): `libtoolize.in' is not here yet
+       right after running `bootstrap'.  So rely on the presence of
+       `libtoolize.m4sh', which is always there.
+
 2010-08-31  Gary V. Vaughan  <gary@gnu.org>
 
        build: eliminate superfluous temporary files from `Makefile.am'.
index 7e2dc4187afd36b3b0a4a28c3a0f1168078a0b07..95435cabad9400fad7bc7935820ab203518c9988 100644 (file)
@@ -193,6 +193,47 @@ $(lt_Makefile_am): $(lt_Makefile_inc)
               -e '1s,^\(.. Makefile.\)inc.*,\1am -- Process this file with automake to produce Makefile.in,' > $@
        chmod a-w $@
 
+## Document the make macros that are needed to build bootstrap-deps
+## dependencies when called from `bootstrap' (developer's machine),
+## where the Makefile.am is fed to make in its raw format before
+## `configure' has found the correct values (on the build machine).
+bootstrap_files = \
+    $(lt_Makefile_am) \
+    $(ltmain_sh) \
+    $(ltversion_m4)
+
+.PHONY: bootstrap-deps bootstrap-deps-prep
+bootstrap-deps: bootstrap-deps-prep $(bootstrap_files)
+bootstrap-deps-prep:
+## The following variables are substituted by `bootstrap-dep-preps'
+       @exit_cmd=:; \
+       test -z "$(srcdir)" \
+           && echo "ERROR: don't call $(MAKE) with srcdir unset." \
+           && exit_cmd=exit; \
+       test -z "$(M4SH)" \
+           && echo "ERROR: don't call $(MAKE) with M4SH unset." \
+           && exit_cmd=exit; \
+       test -z "$(PACKAGE)" \
+           && echo "ERROR: don't call $(MAKE) with PACKAGE unset." \
+           && exit_cmd=exit; \
+       test -z "$(PACKAGE_BUGREPORT)" \
+           && echo "ERROR: don't call $(MAKE) with PACKAGE_BUGREPORT unset." \
+           && exit_cmd=exit; \
+       test -z "$(PACKAGE_NAME)" \
+           && echo "ERROR: don't call $(MAKE) with PACKAGE_NAME unset." \
+           && exit_cmd=exit; \
+       test -z "$(PACKAGE_URL)" \
+           && echo "ERROR: don't call $(MAKE) with PACKAGE_URL unset." \
+           && exit_cmd=exit; \
+       test -z "$(SED)" \
+           && echo "ERROR: don't call $(MAKE) with SED unset." \
+           && exit_cmd=exit; \
+       test -z "$(VERSION)" \
+           && echo "ERROR: don't call $(MAKE) with VERSION unset." \
+           && exit_cmd=exit; \
+       $$exit_cmd 1
+       rm -f $(bootstrap_files)
+
 
 ## Unfortunately, all this bogeyness means that we have to manually
 ## keep the generated files in libltdl up to date.
index 78b4d3042285bf53f13860f594aebb465da00d77..e66b15176f7dec24b51381e0b4fe63becd76c68e 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -126,19 +126,10 @@ $SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' $makes > Makefile
 
 # Building distributed files from configure is bad for automake, so we
 # generate them here, and have Makefile rules to keep them up to date.
-# We don't have all the substitution values to build ltmain.sh from this
-# script yet, but we need config/ltmain.sh for the libtool commands in
-# configure, and ltversion.m4 to generate configure in the first place:
-rm -f $auxdir/ltmain.sh $m4dir/ltversion.m4
-
-$MAKE ./$auxdir/ltmain.sh ./$m4dir/ltversion.m4 \
-    ./libtoolize.in ./tests/defs.in ./tests/package.m4 \
-    ./tests/testsuite ./libltdl/Makefile.am ./doc/notes.txt \
-    srcdir=. top_srcdir=. PACKAGE="$PACKAGE" VERSION="$VERSION" \
-    PACKAGE_NAME="$PACKAGE_NAME" PACKAGE_URL="$PACKAGE_URL" \
-    PACKAGE_BUGREPORT="bug-$PACKAGE@gnu.org" M4SH="$AUTOM4TE --language=m4sh" \
-    AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO" \
-    GREP="$GREP" FGREP="$FGREP" EGREP="$EGREP" LN_S="$LN_S"
+$MAKE bootstrap-deps  \
+    M4SH="$AUTOM4TE --language=m4sh" PACKAGE="$PACKAGE" \
+    PACKAGE_BUGREPORT="bug-$PACKAGE@gnu.org" PACKAGE_NAME="$PACKAGE_NAME" \
+    PACKAGE_URL="$PACKAGE_URL" SED="$SED" srcdir=. VERSION="$VERSION"
 
 rm -f Makefile
 
index 63ee8bf513528c88d45bb0c3a03e5419c8f71f99..403c4b9573a7f257aa891dada54ea20fe9796c1c 100644 (file)
@@ -35,7 +35,7 @@ AC_INIT([GNU Libtool], [2.4.1a], [bug-libtool@gnu.org])
 m4_ifndef([AC_PACKAGE_URL],
          [AC_SUBST([PACKAGE_URL], [http://www.gnu.org/software/libtool/])])
 AC_CONFIG_HEADERS([config.h:config-h.in])
-AC_CONFIG_SRCDIR([libtoolize.in])
+AC_CONFIG_SRCDIR([libtoolize.m4sh])
 LT_CONFIG_LTDL_DIR([libltdl], [nonrecursive])
 AC_CONFIG_AUX_DIR([libltdl/config])
 AC_CONFIG_MACRO_DIR([libltdl/m4])