summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/autoconf.texi4
-rw-r--r--lib/autoconf/general.m424
-rw-r--r--tests/base.at11
3 files changed, 22 insertions, 17 deletions
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index b875c25a..da050b47 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -22943,8 +22943,8 @@ site- and system-wide initialization files.
@evindex CONFIG_SITE
If the environment variable @code{CONFIG_SITE} is set, @command{configure}
-uses its value as the name of a shell script to read; it is recommended
-that this be an absolute file name. Otherwise, it
+uses its value as a space-separated list of shell scripts to read;
+it is recommended that these be absolute file names. Otherwise, it
reads the shell script @file{@var{prefix}/share/config.site} if it exists,
then @file{@var{prefix}/etc/config.site} if it exists. Thus,
settings in machine-specific files override those in machine-independent
diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
index b74a441f..90cb5a5a 100644
--- a/lib/autoconf/general.m4
+++ b/lib/autoconf/general.m4
@@ -2105,26 +2105,20 @@ AU_DEFUN([AC_VALIDATE_CACHED_SYSTEM_TUPLE], [])
# Look for site- or system-specific initialization scripts.
m4_define([AC_SITE_LOAD],
[# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in @%:@((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ AS_CASE([$ac_site_file],
+ [*/*], [],
+ [ac_site_file=./$ac_site_file])
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
AC_MSG_NOTICE([loading site script $ac_site_file])
sed 's/^/| /' "$ac_site_file" >&AS_MESSAGE_LOG_FD
. "$ac_site_file" \
diff --git a/tests/base.at b/tests/base.at
index 6a1d9742..2c5c4bdf 100644
--- a/tests/base.at
+++ b/tests/base.at
@@ -571,6 +571,17 @@ AT_CHECK([grep 'failed to load site script' stderr], [], [ignore], [ignore],
CONFIG_SITE=./no-such-file
AT_CHECK_CONFIGURE
+# Check that multiple files are loaded
+AT_DATA([first.site],
+[[my_cv_shell_true_works=no
+]])
+AT_DATA([second.site],
+[[my_cv_shell_true_works=maybe
+]])
+CONFIG_SITE="$PWD/first.site $PWD/second.site"
+AT_CHECK_CONFIGURE([], [], [stdout])
+AT_CHECK([grep 'whether true.*works.*cached.*maybe' stdout], [], [ignore])
+
AT_CLEANUP