Instead of treating CONFIG_SITE as a single path, treat it as a space-separated list of paths and load them in order.
Also remove the special-casing of entries starting with a dash, this is redundant as they'll be caught by the wildcard case. Finally add a test case to verify that multiple files are loaded correctly. Signed-off-by: Ross Burton <[email protected]> --- lib/autoconf/general.m4 | 23 +++++++++-------------- tests/base.at | 11 +++++++++++ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4 index b74a441f..77713c2b 100644 --- a/lib/autoconf/general.m4 +++ b/lib/autoconf/general.m4 @@ -2105,25 +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 + case $ac_site_file in + */*) ;; + *) ac_site_file=./$ac_site_file;; + esac if test /dev/null != "$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 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 -- 2.25.1
