diff options
-rw-r--r-- | doc/autoconf.texi | 4 | ||||
-rw-r--r-- | lib/autoconf/general.m4 | 24 | ||||
-rw-r--r-- | tests/base.at | 11 |
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 |