# -*- shell-script -*- # @configure_input@ # # Copyright (C) 1996-2024 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Defines and minimal setup for Automake testing environment. # IMPORTANT NOTES AND REQUIREMENTS # - Multiple inclusions of this file should be idempotent. # - This code has to be 'set -e' clean. # See whether the current test script is expected to use TAP or not. # Use a sensible default, while allowing the scripts to override this check. if test -z "$am_test_protocol"; then case $argv0 in *.tap) am_test_protocol=tap;; *) am_test_protocol=none;; esac fi am_rel_srcdir='@srcdir@' am_top_srcdir='@abs_srcdir@' am_top_builddir='@abs_builddir@' # Where testsuite-related helper scripts, data files and shell libraries # are placed. am_testaux_srcdir=$am_top_srcdir/t/ax am_testaux_builddir=$am_top_builddir/t/ax # Support for the "installcheck" target. case ${am_running_installcheck:=no} in yes) am_amdir='@amdir@' am_automake_acdir='@automake_acdir@' am_bindir='@bindir@' am_datadir='@datadir@' am_docdir='@docdir@' am_pkgvdatadir='@pkgvdatadir@' am_scriptdir='@scriptdir@' am_system_acdir='@system_acdir@' ;; no) am_amdir=$am_top_srcdir/lib/am am_automake_acdir="" am_bindir=$am_top_builddir/bin am_datadir=$am_top_srcdir am_docdir=$am_top_srcdir/doc am_pkgvdatadir=$am_top_srcdir/lib am_scriptdir=$am_top_srcdir/lib am_system_acdir="" ;; *) echo "$me: variable 'am_running_installcheck' has invalid" \ "value '$am_running_installcheck'" >&2 exit 99 ;; esac APIVERSION='@APIVERSION@' PATH_SEPARATOR='@PATH_SEPARATOR@' host_alias=${host_alias-'@host_alias@'}; export host_alias build_alias=${build_alias-'@build_alias@'}; export build_alias # Whether the testsuite is being run by faking the presence of a C # compiler that doesn't grasp the '-c' and '-o' flags together. By # default, of course, it isn't. : "${AM_TESTSUITE_SIMULATING_NO_CC_C_O:=no}" # A concurrency-safe "mkdir -p" implementation. MKDIR_P=${AM_TESTSUITE_MKDIR_P-'@MKDIR_P@'} # The shell we use to run our own test scripts, determined at configure # time. It is required in the self tests, and most importantly for the # automatic re-execution of test scripts. AM_TEST_RUNNER_SHELL=${AM_TEST_RUNNER_SHELL-'@AM_TEST_RUNNER_SHELL@'} # Make sure we override the user shell. And do not read the value of # $SHELL from the environment (think to the non-uncommon situation where # e.g., $SHELL=/bin/tcsh). SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'}; export SHELL # User can override various tools used. Prefer overriding specific for # that automake testsuite, if they are available. AWK=${AM_TESTSUITE_AWK-${AWK-'@AWK@'}} PERL=${AM_TESTSUITE_PERL-${PERL-'@PERL@'}} MAKE=${AM_TESTSUITE_MAKE-${MAKE-'make'}} YACC=${AM_TESTSUITE_YACC-${YACC-'@YACC@'}} LEX=${AM_TESTSUITE_LEX-${LEX-'@LEX@'}} AUTOCONF=${AM_TESTSUITE_AUTOCONF-${AUTOCONF-'@am_AUTOCONF@'}} AUTOM4TE=${AM_TESTSUITE_AUTOM4TE-${AUTOM4TE-'@am_AUTOM4TE@'}} AUTORECONF=${AM_TESTSUITE_AUTORECONF-${AUTORECONF-'@am_AUTORECONF@'}} AUTOHEADER=${AM_TESTSUITE_AUTOHEADER-${AUTOHEADER-'@am_AUTOHEADER@'}} AUTOUPDATE=${AM_TESTSUITE_AUTOUPDATE-${AUTOUPDATE-'@am_AUTOUPDATE@'}} # Tests which want complete control over aclocal or automake command-line # options should use $am_original_ACLOCAL or $am_original_AUTOMAKE. The # "test -z" tests take care not to re-initialize them if 'test-defs.sh' # is re-sourced, as we want that file to remain really idempotent. if test -z "$am_original_AUTOMAKE"; then am_original_AUTOMAKE=${AM_TESTSUITE_AUTOMAKE-${AUTOMAKE-"automake-$APIVERSION"}} fi if test -z "$am_original_ACLOCAL"; then am_original_ACLOCAL=${AM_TESTSUITE_ACLOCAL-${ACLOCAL-"aclocal-$APIVERSION"}} fi # Use -Werror by default. Tests for which this is inappropriate should # use -Wno-error. # Tests which want complete control over aclocal command-line options # should use $am_original_ACLOCAL instead. ACLOCAL="$am_original_ACLOCAL -Werror" # See how Automake should be run. We put --foreign as the default # strictness to avoid having to create lots and lots of files. A test # can override this by specifying a different strictness. Use -Wall # -Werror by default. Tests for which this is inappropriate (e.g. when # testing that a warning is enabled by a specific switch) should use # -Wnone or/and -Wno-error. # Tests who want complete control over automake command-line options # should use $am_original_AUTOMAKE instead. AUTOMAKE="$am_original_AUTOMAKE --foreign -Werror -Wall" # POSIX no longer requires 'egrep' and 'fgrep', # but some hosts lack 'grep -E' and 'grep -F'. EGREP=${AM_TESTSUITE_EGREP-'@EGREP@'} FGREP=${AM_TESTSUITE_FGREP-'@FGREP@'} # Compilers and their flags. These can point to non-GNU compilers (and # on non-Linux and non-BSD systems, they probably will). if test $AM_TESTSUITE_SIMULATING_NO_CC_C_O = no; then CC=${AM_TESTSUITE_CC-${CC-'@CC@'}} else CC=$am_testaux_builddir/cc-no-c-o fi CXX=${AM_TESTSUITE_CXX-${CXX-'@CXX@'}} F77=${AM_TESTSUITE_F77-${F77-'@F77@'}} FC=${AM_TESTSUITE_FC-${FC-'@FC@'}} CFLAGS=${AM_TESTSUITE_CFLAGS-${CFLAGS-'@CFLAGS@'}} CXXFLAGS=${AM_TESTSUITE_CXXFLAGS-${CXXFLAGS-'@CXXFLAGS@'}} FCFLAGS=${AM_TESTSUITE_FCFLAGS-${FCFLAGS-'@FCFLAGS@'}} FFLAGS=${AM_TESTSUITE_FFLAGS-${FFLAGS-'@FFLAGS@'}} CPPFLAGS=${AM_TESTSUITE_CPPFLAGS-${CPPFLAGS-'@CPPFLAGS@'}} # GNU compilers and their flags. if test $AM_TESTSUITE_SIMULATING_NO_CC_C_O = no; then GNU_CC=${AM_TESTSUITE_GNU_CC-${GNU_CC-'@GNU_CC@'}} else GNU_CC=$am_testaux_builddir/cc-no-c-o fi GNU_CC=${AM_TESTSUITE_GNU_CC-${GNU_CC-'@GNU_CC@'}} GNU_CXX=${AM_TESTSUITE_GNU_CXX-${GNU_CXX-'@GNU_CXX@'}} GNU_F77=${AM_TESTSUITE_GNU_F77-${GNU_F77-'@GNU_F77@'}} GNU_FC=${AM_TESTSUITE_GNU_FC-${GNU_FC-'@GNU_FC@'}} GNU_FFLAGS=${AM_TESTSUITE_GNU_FFLAGS-${GNU_FFLAGS-'@GNU_FFLAGS@'}} GNU_FCFLAGS=${AM_TESTSUITE_GNU_FCFLAGS-${GNU_FCFLAGS-'@GNU_FCFLAGS@'}} GNU_CXXFLAGS=${AM_TESTSUITE_GNU_CXXFLAGS-${GNU_CXXFLAGS-'@GNU_CXXFLAGS@'}} GNU_CFLAGS=${AM_TESTSUITE_GNU_CFLAGS-${GNU_CFLAGS-'@GNU_CFLAGS@'}} GNU_GCJ=${AM_TESTSUITE_GNU_GCJ-${GNU_GCJ-'@GNU_GCJ@'}} GNU_GCJFLAGS=${AM_TESTSUITE_GNU_GCJFLAGS-${GNU_GCJFLAGS-'@GNU_GCJFLAGS@'}} # Not all versions of Tex support '--version', so we use a configure # check to decide if tex is available. This decision is embodied in # this variable. TEX=${AM_TESTSUITE_TEX-'@TEX@'} # The time we should wait after modifying files depends on the platform, and # also the capabilities of the 'automake' and 'autom4te' programs, which in # turn depend on the capabilities of the Perl interpreter. configure has # detected the platform's resolution for file modification times; we still # need to check automake and autom4te. MTIME_RESOLUTION='@MTIME_RESOLUTION@' case $MTIME_RESOLUTION in 1 | 2) ;; # Can assume these values are usable as is. *) if $AUTOMAKE --version 2>&1 | grep 'Features:.*subsecond-mtime' > /dev/null 2>&1 && $AUTOM4TE --version 2>&1 | grep 'Features:.*subsecond-mtime' > /dev/null 2>&1; then # subsecond-mtime should be supported; use the timestamp # resolution that we determined. if test -n "$am_cv_filesystem_timestamp_resolution"; then #echo "$BASH_SOURCE: amftr=$am_cv_filesystem_timestamp_resolution" >&2 MTIME_RESOLUTION=$am_cv_filesystem_timestamp_resolution elif test -n "$MTIME_RESOLUTION"; then #echo "$BASH_SOURCE: M_R=$MTIME_RESOLUTION" >&2 # This is normal when running tests: the cache variable is # not set, but MTIME_RESOLUTION is, because config.status is sourced. # Its value should be usable, but because this was discovered # just before the 1.17 release, for safety, let's set it to 1, # and try it after the release. MTIME_RESOLUTION=1 # If MTIME_RESOLUTION is empty too, that's weird. else # This message ends up in test-suite.log. echo "$me: subsecond-mtime supported per automake and auto4mte" \ "--version, but neither am_cv_filesystem_timestamp_resolution;" \ "nor MTIME_RESOLUTION are set; that's an error somewhere." \ "Proceeding with value 1." >&2 MTIME_RESOLUTION=1 fi else #echo "$BASH_SOURCE: some --version doesn't support subsecond-mtime" >&2 #$AUTOMAKE --version >&2 #$AUTOM4TE --version >&2 # MTIME_RESOLUTION=1 # # we must not sleep for fractional seconds when autom4te does not # support subsecond-mtimes, even when sleep supports it. See bug#67670. am_cv_sleep_fractional_seconds=no export am_cv_sleep_fractional_seconds fi ;; esac # This sleep variable is used explicitly in tests when AC_OUTPUT is not # used, hence config.status is not created, hence AC_CONFIG_COMMANDS_* # is not evaluated. Originally set up here: # https://lists.gnu.org/archive/html/bug-automake/2010-10/msg00000.html # Discovered again in this review of the "sleep" history: # https://lists.gnu.org/archive/html/automake/2024-06/msg00054.html # It seems a better fix would be to have Automake (in sanity.m4) figure # out the need for sleep even when AC_OUTPUT is not used. # # In general, the problem is when the mtime resolution is 1 second (or # more) and the configure file is created less than 1 second ago, which # happens routinely in the tests, and for many fast-enough configure # scripts in other packages, too. # # At any rate, with this set to "sleep 1", there were still random # parallelization failures; setting am_cv_sleep_fractional_seconds=no # as above was still needed. # sleep="sleep $MTIME_RESOLUTION" # An old timestamp that can be given to a file, in "touch -t" format. # The time stamp should be portable to all file systems of interest. # Just for fun, choose the exact time of the announcement of the GNU project # in UTC; see . old_timestamp=198309271735.59 # We need this in multiple tests and the wording is subject to change. # Don't include the ${br} lines since br is not defined at this point. # failure_footer_text="\ See ./test-suite.log for debugging. Some test(s) failed. Please report this to bug-automake@gnu.org, together with the test-suite.log file (gzipped) and your system information. Thanks." # # And with color. red='' std=''; failure_footer_text_colorized="`echo \"$failure_footer_text\" | sed -e "s/^/${red}/" -e s/'$'/"${std}"/`" # Make our wrapper script (or installed scripts, if running under # "installcheck") accessible by default. And avoid uselessly # extending $PATH multiple times if this file is sourced multiple times. case $PATH in $am_bindir$PATH_SEPARATOR*) ;; *) PATH=$am_bindir$PATH_SEPARATOR$PATH;; esac export PATH