]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
Keep a list of all precious variables.
authorStepan Kasal <kasal@ucw.cz>
Thu, 7 Jul 2005 11:09:51 +0000 (11:09 +0000)
committerStepan Kasal <kasal@ucw.cz>
Thu, 7 Jul 2005 11:09:51 +0000 (11:09 +0000)
ChangeLog
lib/autoconf/general.m4

index eba2aaf7455a197b46b819f1e476ba03df9bf47c..f09b76815fd73772145c4659383fdcc3b812c338 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,5 @@
 2005-07-07  Stepan Kasal  <kasal@ucw.cz>
 
-       * tests/local.at (AT_CONFIG_CMP): Revert Paul's previous change.
-
        * lib/autoconf/status.m4 (_AC_OUTPUT_SUBDIRS): Report the full
        path, too; insert a "===" to emphasize the line.
 
        (_AC_INIT_PREPARE): Call AC_SUBST for build_alias, host_alias and
          target_alias.
 
+       Keep a list of all precious variables and process them with one simple
+       for loop, instead of expanding all commands, or, OTOH, complicated
+       processing of output of "set".
+       * lib/autoconf/general.m4 (_AC_ARG_VAR_PRECIOUS): Acumulate the
+       variable names in new macro...
+       (_AC_PRECIOUS_VARS): ... which will be assigned to ac_precious_vars.
+       (_AC_ARG_VAR_STORE): New macro which writes to diversion PARSE_ARGS
+         a loop to assign all ac_env_* and ac_cv_env_* variables.
+       (_AC_ARG_VAR_VALIDATE): Use shell variable ac_precious_vars, divert
+         to INIT_PREPARE.
+       (_AC_INIT_DEFAULTS): At the end, if _AC_PRECIOUS_VARS is set, assign
+         its value to shell variable ac_precious_vars and call
+         _AC_ARG_VAR_STORE and _AC_ARG_VAR_VALIDATE.
+       * lib/autoconf/general.m4 (_AC_INIT_PREPARE): Don't call
+         _AC_ARG_VAR_VALIDATE.
+
+       * lib/autoconf/general.m4 (_AC_INIT_PREPARE): Move AC_LANG_PUSH(C)
+         and the AC_SUBSTs ...
+       (AC_INIT): ... here.
+
+       * tests/local.at (AT_CONFIG_CMP): Revert Paul's previous change.
+
 2005-07-06  Paul Eggert  <eggert@cs.ucla.edu>
 
        * NEWS: New macro AC_C_TYPEOF.
index 8724823c95225b8cf8b5bcce1b7d6030eea07b33..7c7965294a0029c8626b6d5151f1efbb4bb27bae 100644 (file)
@@ -403,7 +403,12 @@ AC_SUBST([PACKAGE_BUGREPORT],
 m4_divert_pop([DEFAULTS])dnl
 m4_wrap([m4_divert_text([DEFAULTS],
 [ac_subst_vars='m4_ifdef([_AC_SUBST_VARS],  [m4_defn([_AC_SUBST_VARS])])'
-ac_subst_files='m4_ifdef([_AC_SUBST_FILES], [m4_defn([_AC_SUBST_FILES])])'])])dnl
+ac_subst_files='m4_ifdef([_AC_SUBST_FILES], [m4_defn([_AC_SUBST_FILES])])'
+m4_ifdef([_AC_PRECIOUS_VARS],
+  [_AC_ARG_VAR_STORE[]dnl
+   _AC_ARG_VAR_VALIDATE[]dnl
+   ac_precious_vars='m4_defn([_AC_PRECIOUS_VARS])'])dnl
+])])dnl
 ])# _AC_INIT_DEFAULTS
 
 
@@ -1114,8 +1119,8 @@ _ACEOF
 # 1. Trap and clean up various tmp files.
 # 2. Set up the fd and output files
 # 3. Remember the options given to `configure' for `config.status --recheck'.
-# 4. Ensure a correct environment
-# 5. Required macros (cache, default AC_SUBST etc.)
+# 4. Initiates confdefs.h
+# 5. Loads site and cache files
 m4_define([_AC_INIT_PREPARE],
 [m4_divert_push([INIT_PREPARE])dnl
 
@@ -1257,18 +1262,6 @@ AC_DEFINE_UNQUOTED([PACKAGE_BUGREPORT], ["$PACKAGE_BUGREPORT"],
 # Let the site file select an alternate cache file if it wants to.
 AC_SITE_LOAD
 AC_CACHE_LOAD
-_AC_ARG_VAR_VALIDATE
-_AC_ARG_VAR_PRECIOUS([build_alias])AC_SUBST([build_alias])dnl
-_AC_ARG_VAR_PRECIOUS([host_alias])AC_SUBST([host_alias])dnl
-_AC_ARG_VAR_PRECIOUS([target_alias])AC_SUBST([target_alias])dnl
-AC_LANG_PUSH(C)
-
-dnl Substitute for predefined variables.
-AC_SUBST([DEFS])dnl
-AC_SUBST([ECHO_C])dnl
-AC_SUBST([ECHO_N])dnl
-AC_SUBST([ECHO_T])dnl
-AC_SUBST([LIBS])dnl
 m4_divert_pop([INIT_PREPARE])dnl
 ])# _AC_INIT_PREPARE
 
@@ -1312,6 +1305,18 @@ _AC_INIT_PREPARE
 _AC_INIT_NOTICE
 _AC_INIT_COPYRIGHT
 m4_ifval([$2], , [m4_ifval([$1], [AC_CONFIG_SRCDIR([$1])])])dnl
+dnl
+dnl Substitute for predefined variables.
+AC_SUBST([DEFS])dnl
+AC_SUBST([ECHO_C])dnl
+AC_SUBST([ECHO_N])dnl
+AC_SUBST([ECHO_T])dnl
+AC_SUBST([LIBS])dnl
+_AC_ARG_VAR_PRECIOUS([build_alias])AC_SUBST([build_alias])dnl
+_AC_ARG_VAR_PRECIOUS([host_alias])AC_SUBST([host_alias])dnl
+_AC_ARG_VAR_PRECIOUS([target_alias])AC_SUBST([target_alias])dnl
+dnl
+AC_LANG_PUSH(C)
 ])
 
 
@@ -1398,7 +1403,14 @@ _AC_ARG_VAR_PRECIOUS([$1])dnl
 # _AC_ARG_VAR_PRECIOUS(VARNAME)
 # -----------------------------
 # Declare VARNAME is precious.
-#
+m4_define([_AC_ARG_VAR_PRECIOUS],
+[m4_append_uniq([_AC_PRECIOUS_VARS], [$1], [
+])dnl
+])
+
+
+# _AC_ARG_VAR_STORE
+# -----------------
 # We try to diagnose when precious variables have changed.  To do this,
 # make two early snapshots (after the option processing to take
 # explicit variables into account) of those variables: one (ac_env_)
@@ -1409,12 +1421,14 @@ _AC_ARG_VAR_PRECIOUS([$1])dnl
 #
 # In subsequent runs, after having loaded the cache, compare
 # ac_cv_env_foo against ac_env_foo.  See _AC_ARG_VAR_VALIDATE.
-m4_define([_AC_ARG_VAR_PRECIOUS],
-[m4_divert_once([PARSE_ARGS],
-[ac_env_$1_set=${$1+set}
-ac_env_$1_value=$$1
-ac_cv_env_$1_set=${$1+set}
-ac_cv_env_$1_value=$$1])dnl
+m4_define([_AC_ARG_VAR_STORE],
+[m4_divert_text([PARSE_ARGS],
+[for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done])dnl
 ])
 
 
@@ -1432,11 +1446,11 @@ ac_cv_env_$1_value=$$1])dnl
 # So we check that `ac_env_' and `ac_cv_env_' are consistent.  If
 # they aren't, die.
 m4_define([_AC_ARG_VAR_VALIDATE],
+[m4_divert_text([INIT_PREPARE],
 [# Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
-              sed -n 's/^ac_env_\([[a-zA-Z_0-9]]*\)_set=.*/\1/p'`; do
+for ac_var in $ac_precious_vars; do
   eval ac_old_set=\$ac_cv_env_${ac_var}_set
   eval ac_new_set=\$ac_env_${ac_var}_set
   eval ac_old_val=\$ac_cv_env_${ac_var}_value
@@ -1475,7 +1489,7 @@ done
 if $ac_cache_corrupted; then
   AS_MESSAGE([error: changes in the environment can compromise the build], 2)
   AS_ERROR([run `make distclean' and/or `rm $cache_file' and start over])
-fi
+fi])dnl
 ])# _AC_ARG_VAR_VALIDATE