+++ /dev/null
-From efc940dc82763b7b2d6e65f04d15d5972d829c0a Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Tue, 8 Dec 2020 21:35:45 -0500
-Subject: [PATCH 03/13] _AC_PROG_CC_C99: fix typo (#110396)
-
-_AC_PROG_CC_C99 was using the wrong test program.
-
-Fixes #110396, reported anonymously.
-
-* lib/autoconf/c.m4 (_AC_PROG_CC_C99): Use the C99 test program, not
- the C89 test program.
----
- lib/autoconf/c.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index fe217cad..601c2df4 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -1559,7 +1559,7 @@ dnl SVR4 -Xc -D__EXTENSIONS__
- # option to output variable CC to make it so.
- AC_DEFUN([_AC_PROG_CC_C99],
- [AC_REQUIRE([_AC_C_C99_TEST_PROGRAM])]dnl
--[_AC_C_STD_TRY([c99], [ac_c_conftest_c89_program],
-+[_AC_C_STD_TRY([c99], [ac_c_conftest_c99_program],
- dnl Try
- dnl GCC -std=gnu99 (unused restrictive modes: -std=c99 -std=iso9899:1999)
- dnl IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test)
---
-2.25.1
-
-
-From 8f19de6df0cfab5eff9e62e3c8ec8443558476d1 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 11 Dec 2020 15:15:28 -0800
-Subject: [PATCH 04/13] Improve port of AC_C_RESTRICT to Oracle C++
-
-Problem reported by Christian Biesinger in:
-https://lists.gnu.org/r/bug-gnulib/2019-12/msg00159.html
-* lib/autoconf/c.m4 (AC_C_RESTRICT): Port better to
-Oracle Developer Studio C++ 12.5 or later.
-This patch is adapted from Gnulib.
----
- lib/autoconf/c.m4 | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index 601c2df4..14240460 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -2031,12 +2031,13 @@ AC_DEFUN([AC_C_RESTRICT],
- nothing if this is not supported. Do not define if restrict is
- supported only directly. */
- #undef restrict
--/* Work around a bug in Sun C++ 5.13: it does not support _Restrict or
-- __restrict__, even though the corresponding Sun C compiler ends up with
-- "#define restrict _Restrict" or "#define restrict __restrict__".
-- Perhaps some future version of Sun C++ will work with restrict;
-- if so, hopefully it defines __RESTRICT like Sun C does. */
--#if defined __SUNPRO_CC && !defined __RESTRICT
-+/* Work around a bug in older versions of Sun C++, which did not
-+ #define __restrict__ or support _Restrict or __restrict__
-+ even though the corresponding Sun C compiler ended up with
-+ "#define restrict _Restrict" or "#define restrict __restrict__"
-+ in the previous line. This workaround can be removed once
-+ we assume Oracle Developer Studio 12.5 (2016) or later. */
-+#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
- # define _Restrict
- # define __restrict__
- #endif])
---
-2.25.1
-
-
-From 2f3f782cdd8d5105dc15ef18e2d11aac40d7c462 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 11 Dec 2020 15:18:41 -0800
-Subject: [PATCH 05/13] Port minor AC_FUNC_ALLOCA fixes from Gnulib
-
-* lib/autoconf/functions.m4 (_AC_LIBOBJ_ALLOCA, AC_FUNC_ALLOCA):
-Use ' not ` in generated comments, as per current GNU coding style.
-(_AC_LIBOBJ_ALLOCA): Use plain # instead of unnecessary quadrigraph.
-This patch is adapted from Gnulib.
----
- lib/autoconf/functions.m4 | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 49aa5c58..12f60b99 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -358,8 +358,8 @@ AN_FUNCTION([getwd], [warn: getwd is deprecated, use getcwd instead])
-
- # _AC_LIBOBJ_ALLOCA
- # -----------------
--# Set up the LIBOBJ replacement of `alloca'. Well, not exactly
--# AC_LIBOBJ since we actually set the output variable `ALLOCA'.
-+# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly
-+# AC_LIBOBJ since we actually set the output variable 'ALLOCA'.
- # Nevertheless, for Automake, AC_LIBSOURCES it.
- m4_define([_AC_LIBOBJ_ALLOCA],
- [# The SVR3 libPW and SVR4 libucb both contain incompatible functions
-@@ -368,7 +368,7 @@ m4_define([_AC_LIBOBJ_ALLOCA],
- # use ar to extract alloca.o from them instead of compiling alloca.c.
- AC_LIBSOURCES(alloca.c)
- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
--AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using `alloca.c'.])
-+AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.])
-
- AC_CACHE_CHECK([stack direction for C alloca],
- [ac_cv_c_stack_direction],
-@@ -400,7 +400,7 @@ AH_VERBATIM([STACK_DIRECTION],
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
--@%:@undef STACK_DIRECTION])dnl
-+#undef STACK_DIRECTION])dnl
- AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
- ])# _AC_LIBOBJ_ALLOCA
-
-@@ -453,7 +453,7 @@ fi
-
- if test $ac_cv_func_alloca_works = yes; then
- AC_DEFINE(HAVE_ALLOCA, 1,
-- [Define to 1 if you have `alloca', as a function or macro.])
-+ [Define to 1 if you have 'alloca', as a function or macro.])
- else
- _AC_LIBOBJ_ALLOCA
- fi
---
-2.25.1
-
-
-From 5c2bcf10c0b0bf5b463f6086b9548da84fe20cc7 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 11 Dec 2020 15:22:02 -0800
-Subject: [PATCH 06/13] Port minor AC_HEADER_MAJOR fixes from Gnulib
-
-* lib/autoconf/headers.m4 (AC_HEADER_MAJOR):
-Improve m4 quoting.
----
- lib/autoconf/headers.m4 | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
-index bc70e0b6..802eec2f 100644
---- a/lib/autoconf/headers.m4
-+++ b/lib/autoconf/headers.m4
-@@ -499,13 +499,13 @@ AN_FUNCTION([minor], [AC_HEADER_MAJOR])
- AN_HEADER([sys/mkdev.h], [AC_HEADER_MAJOR])
- AC_DEFUN([AC_HEADER_MAJOR],
- [AC_CHECK_HEADERS_ONCE([sys/types.h])
--AC_CHECK_HEADER(sys/mkdev.h,
-- [AC_DEFINE(MAJOR_IN_MKDEV, 1,
-+AC_CHECK_HEADER([sys/mkdev.h],
-+ [AC_DEFINE([MAJOR_IN_MKDEV], [1],
- [Define to 1 if `major', `minor', and `makedev' are
- declared in <mkdev.h>.])])
- if test $ac_cv_header_sys_mkdev_h = no; then
-- AC_CHECK_HEADER(sys/sysmacros.h,
-- [AC_DEFINE(MAJOR_IN_SYSMACROS, 1,
-+ AC_CHECK_HEADER([sys/sysmacros.h],
-+ [AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
- [Define to 1 if `major', `minor', and `makedev'
- are declared in <sysmacros.h>.])])
- fi
---
-2.25.1
-
-
-From 8118c2adc4dc0a7ee4f9616197d0e3db42f9a788 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 11 Dec 2020 15:23:53 -0800
-Subject: [PATCH 07/13] Improve AC_USE_SYSTEM_EXTENSIONS port to HP-UX 11.11
-
-* lib/autoconf/specific.m4 (AC_USE_SYSTEM_EXTENSIONS):
-Define _HPUX_ALT_XOPEN_SOCKET_API, for HP-UX 11.11.
-This patch is adapted from Gnulib.
----
- lib/autoconf/specific.m4 | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 275938ca..853276bb 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -389,6 +389,11 @@ AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
- #ifndef _GNU_SOURCE
- # undef _GNU_SOURCE
- #endif
-+/* Enable X/Open compliant socket functions that do not require linking
-+ with -lxnet on HP-UX 11.11. */
-+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
-+# undef _HPUX_ALT_XOPEN_SOCKET_API
-+#endif
- /* Identify the host operating system as Minix.
- This macro does not affect the system headers' behavior.
- A future release of Autoconf may stop defining this macro. */
-@@ -496,6 +501,7 @@ dnl it should only be defined when necessary.
- AC_DEFINE([_ALL_SOURCE])
- AC_DEFINE([_DARWIN_C_SOURCE])
- AC_DEFINE([_GNU_SOURCE])
-+ AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API])
- AC_DEFINE([_NETBSD_SOURCE])
- AC_DEFINE([_OPENBSD_SOURCE])
- AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
---
-2.25.1
-
-
-From 616480956de06e32526775c8b7f8fd34d04238a5 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Mon, 21 Dec 2020 15:29:32 -0500
-Subject: [PATCH 08/13] =?UTF-8?q?autom4te:=20correct=20error=20message=20w?=
- =?UTF-8?q?hen=20we=20can=E2=80=99t=20create=20autom4te.cache.?=
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-While testing something else, I noticed that autom4te may print a
-nonsensical error message when it fails to create autom4te.cache,
-because it checks again whether the directory already exists before
-giving up, and this clobbers errno.
-
-Instead of doing (the perl equivalent of)
- test -d $cache || mkdir $cache || test -d $cache
-call mkdir unconditionally. If it fails with an errno code other than
-EEXIST, consider that a hard failure; if it fails with EEXIST, check
-whether the thing that exists is in fact a directory. (A symlink to
-a directory qualifies; I wouldn’t be surprised if people are moving
-autom4te.cache around with symlinks.)
-
-Either way, if we fail, report strerror(errno) from the original
-mkdir failure. Also, print the current working directory as part
-of the error message; this aids debugging when you’re working with a
-big hairy nested tree.
-
-* bin/autom4te.in: Don’t check whether autom4te.cache exists before
- attempting to create it. Only stat autom4te.cache if mkdir fails
- with EEXIST, otherwise fail immediately. Make sure to report the
- errno code from mkdir, not the subsequent stat (if any). Report
- the current working directory as part of the error message.
-
-* tests/tools.at: Verify that autom4te reports the actual reason when
- it fails to create autom4te.cache. Verify that failure to create
- autom4te.cache because that name exists, but isn’t a directory,
- is detected.
----
- bin/autom4te.in | 19 ++++++++++++++-----
- tests/tools.at | 20 ++++++++++++++++++--
- 2 files changed, 32 insertions(+), 7 deletions(-)
-
-diff --git a/bin/autom4te.in b/bin/autom4te.in
-index febcdeea..4c2b905c 100644
---- a/bin/autom4te.in
-+++ b/bin/autom4te.in
-@@ -1012,12 +1012,21 @@ if ($freeze)
- exit $exit_code;
- }
-
--# We need our cache directory. Don't fail with parallel creation.
--if (! -d "$cache")
-+# Ensure the cache directory exists.
-+if (! mkdir ($cache, 0755))
- {
-- mkdir "$cache", 0755
-- or -d "$cache"
-- or fatal "cannot create $cache: $!";
-+ # Snapshot $! immediately, the next few operations may clobber it.
-+ my $eexist = $!{EEXIST};
-+ my $errmsg = "$!";
-+
-+ # If mkdir failed with EEXIST, that means the *name* $cache
-+ # already exists, but it might be the wrong kind of file.
-+ if (! $eexist || ! -d $cache)
-+ {
-+ require Cwd;
-+ my $cwd = Cwd::cwd();
-+ fatal "cannot create $cache in $cwd: $errmsg";
-+ }
- }
-
- # Open the index for update, and lock it. autom4te handles several
-diff --git a/tests/tools.at b/tests/tools.at
-index d32ad362..49710202 100644
---- a/tests/tools.at
-+++ b/tests/tools.at
-@@ -1534,20 +1534,36 @@ end-language: "Autoconf-without-aclocal-m4"
- # A failed redirection may cause a status of 2 with FreeBSD sh.
- AT_CHECK([(: > sub/some-file) || exit 1 && exit 77], 1, [ignore], [ignore])
-
--# Failure to create cache directory.
-+# Failure to create cache directory due to access permissions.
- AT_CHECK_AUTOCONF([], [1], [ignore], [stderr])
- AT_CHECK([grep 'cannot create .*autom4te.cache' stderr], [0], [ignore])
-+AT_CHECK([grep ': Permission denied' stderr], [0], [ignore])
- AT_CHECK([test -f configure], [1])
-
-+# Failure to create cache directory due to something else in the way.
- chmod u+w sub
-+: > sub/autom4te.cache
-+AT_CHECK_AUTOCONF([], [1], [ignore], [stderr])
-+AT_CHECK([grep 'cannot create .*autom4te.cache' stderr], [0], [ignore])
-+AT_CHECK([grep ': File exists' stderr], [0], [ignore])
-+AT_CHECK([test -f configure], [1])
-+
-+# This time, creation should succeed.
-+rm -f sub/autom4te.cache
- AT_CHECK_AUTOCONF
-+AT_CHECK([test -d sub/autom4te.cache])
-
- rm -f configure sub/autom4te.cache/*
- chmod a-w sub/autom4te.cache
-
- # Failure to create a file in the cache directory.
- AT_CHECK_AUTOCONF([], [1], [ignore], [stderr])
--AT_CHECK([grep 'cannot open.*autom4te.cache' stderr], [0], [ignore])
-+AT_CHECK([grep 'cannot open .*autom4te.cache' stderr], [0], [ignore])
-+AT_CHECK([test -f configure], [1])
-+
-+# If the directory already exists, that should be fine.
-+chmod u+w sub/autom4te.cache
-+AT_CHECK_AUTOCONF
-
- AT_CLEANUP
-
---
-2.25.1
-
-
-From de36ccf6637974f4faba3747813d38ee46e77d69 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Wed, 23 Dec 2020 12:14:06 -0500
-Subject: [PATCH 09/13] Use -fno-builtin, not -Werror, in AC_CHECK_DECLS
- (#110400)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-clang issues only a warning, not an error, when an undeclared
-identifier that names a built-in function is used: for instance
-
- char *(*p)(const char *, int) = strchr;
-
-(with no `#include <string.h>`) is an error with most compilers,
-a warning with clang. This broke the 2.69 implementation of
-AC_CHECK_DECL. In commit 82ef7805faffa151e724aa76c245ec590d174580,
-we tried to work around this quirk by using -Werror, but that put us
-at risk of being tripped up by other warnings. Bug 110400 reports,
-for instance, that this fragment (which is roughly what you get, after
-preprocessing, when AC_CHECK_DECL is applied to a function that *is*
-properly declared)
-
- extern void ac_decl (int, char *);
- int main (void)
- {
- (void) ac_decl;
- ;
- return 0;
- }
-
-provokes a warning from clang (and thus an error) when -Wextra-semi-stmt
-has been added to CFLAGS earlier in the configure script. The extra
-semicolon comes from AC_LANG_PROGRAM, and we can’t get rid of it
-because we have no way of telling reliably when someone wrote
-something like
-
- AC_LANG_PROGRAM([[#include <stdio.h>]],
- [[puts("hello world")]])
-
-with no semicolon at the end of the statement; this has been
-acceptable for decades. Besides, that’s just one warning, who knows
-what compilers will start complaining about tomorrow?
-
-So: change AC_CHECK_DECL to compile its programs with -fno-builtin,
-instead, when the default compilation mode fails to detect an
-undeclared strchr. The code is restructured so that we can try other
-options as well, if we find another compiler with the same quirk but
-different command-line syntax.
-
-(All of this logic is very C-family specific, but it appears to me
-that AC_CHECK_DECL has never worked with other languages, so we can
-continue to live with that for now.)
-
-Fixes bug 110400; partially reverts 82ef7805faffa151e724aa76c245ec590d174580.
-
- * lib/autoconf/general.m4 (_AC_UNDECLARED_WARNING): Rename to
- _AC_UNDECLARED_BUILTIN. Instead of looking at diagnostic output,
- loop trying to find a command-line option that makes the compiler
- error out on undeclared builtins.
- (_AC_CHECK_DECL_BODY): Don’t AC_REQUIRE anything here.
- Make shell code language-agnostic, except for the actual test program.
- Add arguments to the shell function for additional compiler options
- to use.
- (AC_CHECK_DECL): AC_REQUIRE _AC_UNDECLARED_BUILTIN here.
- Supply $ac_{AC_LANG_ABBREV}_undeclared_builtin_options to
- ac_fn_check_decl.
-
- * tests/local.at (AT_CONFIG_CMP): Update list of variables to ignore
- when comparing C and C++ configure runs.
- * tests/semantics.at (AC_CHECK_DECLS): Add memcpy and strchr to
- AC_CHECK_DECLS call for functions that may be known to the compiler.
-
- * doc/autoconf.texi (AC_CHECK_DECL, AC_CHECK_DECLS): Remove note
- about compiler warnings.
----
- doc/autoconf.texi | 12 ---
- lib/autoconf/general.m4 | 158 +++++++++++++++++++++-------------------
- tests/local.at | 10 +--
- tests/semantics.at | 10 ++-
- 4 files changed, 95 insertions(+), 95 deletions(-)
-
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index a67cccb2..5e17280e 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -6583,12 +6583,6 @@ parentheses for types which can be zero-initialized:
- AC_CHECK_DECL([basename(char *)])
- @end example
-
--Some compilers don't indicate every missing declaration by the error
--status. This macro checks the standard error from such compilers and
--considers a declaration missing if any warnings have been reported. For
--most compilers, though, warnings do not affect this macro's outcome
--unless @code{AC_LANG_WERROR} is also specified.
--
- This macro caches its result in the @code{ac_cv_have_decl_@var{symbol}}
- variable, with characters not suitable for a variable name mapped to
- underscores.
-@@ -6649,12 +6643,6 @@ You fall into the second category only in extreme situations: either
- your files may be used without being configured, or they are used during
- the configuration. In most cases the traditional approach is enough.
-
--Some compilers don't indicate every missing declaration by the error
--status. This macro checks the standard error from such compilers and
--considers a declaration missing if any warnings have been reported. For
--most compilers, though, warnings do not affect this macro's outcome
--unless @code{AC_LANG_WERROR} is also specified.
--
- This macro caches its results in @code{ac_cv_have_decl_@var{symbol}}
- variables, with characters not suitable for a variable name mapped to
- underscores.
-diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
-index 16f0d074..47f7ee42 100644
---- a/lib/autoconf/general.m4
-+++ b/lib/autoconf/general.m4
-@@ -3046,84 +3046,89 @@ AC_DEFUN([AC_CHECK_FILES],
- ## Checking for declared symbols. ##
- ## ------------------------------- ##
-
--
--# _AC_UNDECLARED_WARNING
-+# _AC_UNDECLARED_BUILTIN
- # ----------------------
--# Set ac_[]_AC_LANG_ABBREV[]_decl_warn_flag=yes if the compiler uses a warning,
--# not a more-customary error, to report some undeclared identifiers. Fail when
--# an affected compiler warns also on valid input. _AC_PROG_PREPROC_WORKS_IFELSE
--# solves a related problem.
--AC_DEFUN([_AC_UNDECLARED_WARNING],
--[# The Clang compiler raises a warning for an undeclared identifier that matches
--# a compiler builtin function. All extant Clang versions are affected, as of
--# Clang 3.6.0. Test a builtin known to every version. This problem affects the
--# C and Objective C languages, but Clang does report an error under C++ and
--# Objective C++.
--#
--# Passing -fno-builtin to the compiler would suppress this problem. That
--# strategy would have the advantage of being insensitive to stray warnings, but
--# it would make tests less realistic.
--AC_CACHE_CHECK([how $[]_AC_CC[] reports undeclared, standard C functions],
--[ac_cv_[]_AC_LANG_ABBREV[]_decl_report],
--[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [(void) strchr;])],
-- [AS_IF([test -s conftest.err], [dnl
-- # For AC_CHECK_DECL to react to warnings, the compiler must be silent on
-- # valid AC_CHECK_DECL input. No library function is consistently available
-- # on freestanding implementations, so test against a dummy declaration.
-- # Include always-available headers on the off chance that they somehow
-- # elicit warnings.
-- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl
--#include <float.h>
-+# Set ac_[]_AC_LANG_ABBREV[]_undeclared_builtin_options to any options
-+# needed to make the compiler issue a hard error, not a warning, when
-+# an undeclared function is used whose declaration happens to be
-+# built into the compiler (e.g. 'strchr' is often known in advance to
-+# the C compiler). These options should not cause any other unrelated
-+# warnings to become errors. If no such options can be found, or if
-+# they make the compiler error out on a correct program of the form
-+# used by AC_CHECK_DECL, report failure.
-+AC_DEFUN([_AC_UNDECLARED_BUILTIN],
-+[AC_CACHE_CHECK(
-+ [for $[]_AC_CC options needed to detect all undeclared functions],
-+ [ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options],
-+ [ac_save_CFLAGS=$CFLAGS
-+ ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options='cannot detect'
-+ for ac_arg in '' -fno-builtin; do
-+ CFLAGS="$ac_save_CFLAGS $ac_arg"
-+ # This test program should *not* compile successfully.
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [(void) strchr;])],
-+ [],
-+ [# This test program should compile successfully.
-+ # No library function is consistently available on
-+ # freestanding implementations, so test against a dummy
-+ # declaration. Include always-available headers on the
-+ # off chance that they somehow elicit warnings.
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-+[[#include <float.h>
- #include <limits.h>
- #include <stdarg.h>
- #include <stddef.h>
--extern void ac_decl (int, char *);],
--[@%:@ifdef __cplusplus
-- (void) ac_decl ((int) 0, (char *) 0);
-- (void) ac_decl;
--@%:@else
-+extern void ac_decl (int, char *);
-+]],
-+[[(void) ac_decl (0, (char *) 0);
- (void) ac_decl;
--@%:@endif
--])],
-- [AS_IF([test -s conftest.err],
-- [AC_MSG_FAILURE([cannot detect from compiler exit status or warnings])],
-- [ac_cv_[]_AC_LANG_ABBREV[]_decl_report=warning])],
-- [AC_MSG_FAILURE([cannot compile a simple declaration test])])],
-- [AC_MSG_FAILURE([compiler does not report undeclared identifiers])])],
-- [ac_cv_[]_AC_LANG_ABBREV[]_decl_report=error])])
--
--case $ac_cv_[]_AC_LANG_ABBREV[]_decl_report in
-- warning) ac_[]_AC_LANG_ABBREV[]_decl_warn_flag=yes ;;
-- *) ac_[]_AC_LANG_ABBREV[]_decl_warn_flag= ;;
--esac
--])# _AC_UNDECLARED_WARNING
-+]])],
-+ [AS_IF([test x"$ac_arg" = x],
-+ [ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options='none needed'],
-+ [ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options=$ac_arg])
-+ break],
-+ [])])
-+ done
-+ CFLAGS=$ac_save_CFLAGS
-+ ])
-+ AS_CASE([$ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options],
-+ ['cannot detect'],
-+ [AC_MSG_FAILURE([cannot make $[]_AC_CC report undeclared builtins])],
-+ ['none needed'],
-+ [ac_[]_AC_LANG_ABBREV[]_undeclared_builtin_options=''],
-+ [ac_[]_AC_LANG_ABBREV[]_undeclared_builtin_options=$ac_cv_[]_AC_LANG_ABBREV[]_undeclared_builtin_options])
-+])
-
- # _AC_CHECK_DECL_BODY
- # -------------------
- # Shell function body for AC_CHECK_DECL.
-+# If we are compiling C, just refer to the name of the function, so we
-+# don't implicitly declare it. However, if we are compiling C++,
-+# `(void) function_name;' won't work when function_name has more than one
-+# overload, we need to fabricate a function call. Fortunately, there is
-+# no such thing as an implicit function declaration in C++.
-+# If the function is defined as a macro, we cannot verify its signature
-+# without calling it, and it might not expand to a construct that's valid
-+# as the only statement in a function body; just report it as available.
- m4_define([_AC_CHECK_DECL_BODY],
- [ AS_LINENO_PUSH([$[]1])
-- # Initialize each $ac_[]_AC_LANG_ABBREV[]_decl_warn_flag once.
-- AC_DEFUN([_AC_UNDECLARED_WARNING_]_AC_LANG_ABBREV,
-- [_AC_UNDECLARED_WARNING])dnl
-- AC_REQUIRE([_AC_UNDECLARED_WARNING_]_AC_LANG_ABBREV)dnl
-- [as_decl_name=`echo $][2|sed 's/ *(.*//'`]
-- [as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
-- AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
-- [ac_save_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_flag
-- ac_[]_AC_LANG_ABBREV[]_werror_flag="$ac_[]_AC_LANG_ABBREV[]_decl_warn_flag$ac_[]_AC_LANG_ABBREV[]_werror_flag"
-- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
--[@%:@ifndef $[]as_decl_name
--@%:@ifdef __cplusplus
-- (void) $[]as_decl_use;
--@%:@else
-- (void) $[]as_decl_name;
--@%:@endif
--@%:@endif
--])],
-+ as_decl_name=`echo $[]2|sed 's/ *(.*//'`
-+ AC_CACHE_CHECK([whether $][as_decl_name is declared], [$[]3],
-+ [as_decl_use=`echo $[]2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-+ AS_VAR_COPY([ac_save_FLAGS], [$[]6])
-+ AS_VAR_APPEND([$[]6], [" $[]5"])
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$][4]],
-+[[#ifndef $][as_decl_name
-+#ifdef __cplusplus
-+ (void) $][as_decl_use;
-+#else
-+ (void) $][as_decl_name;
-+#endif
-+#endif
-+]])],
- [AS_VAR_SET([$[]3], [yes])],
- [AS_VAR_SET([$[]3], [no])])
-- ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_save_werror_flag])
-+ AS_VAR_COPY([$[]6], [ac_save_FLAGS])
-+])
- AS_LINENO_POP
- ])# _AC_CHECK_DECL_BODY
-
-@@ -3133,18 +3138,23 @@ m4_define([_AC_CHECK_DECL_BODY],
- # -------------------------------------------------------
- # Check whether SYMBOL (a function, variable, or constant) is declared.
- AC_DEFUN([AC_CHECK_DECL],
--[AC_REQUIRE_SHELL_FN([ac_fn_]_AC_LANG_ABBREV[_check_decl],
-- [AS_FUNCTION_DESCRIBE([ac_fn_]_AC_LANG_ABBREV[_check_decl],
-- [LINENO SYMBOL VAR INCLUDES],
-+[AC_REQUIRE_SHELL_FN([ac_fn_check_decl],
-+ [AS_FUNCTION_DESCRIBE([ac_fn_check_decl],
-+ [LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR],
- [Tests whether SYMBOL is declared in INCLUDES, setting cache variable
-- VAR accordingly.])],
-+ VAR accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.])],
- [_$0_BODY])]dnl
-+dnl Initialize each $ac_[]_AC_LANG_ABBREV[]_undeclared_builtin_options once.
-+[AC_DEFUN([_AC_UNDECLARED_BUILTIN_]_AC_LANG_ABBREV,
-+ [_AC_UNDECLARED_BUILTIN])]dnl
-+[AC_REQUIRE([_AC_UNDECLARED_BUILTIN_]_AC_LANG_ABBREV)]dnl
- [AS_VAR_PUSHDEF([ac_Symbol], [ac_cv_have_decl_$1])]dnl
--[ac_fn_[]_AC_LANG_ABBREV[]_check_decl ]dnl
--["$LINENO" "$1" "ac_Symbol" "AS_ESCAPE([AC_INCLUDES_DEFAULT([$4])], [""])"
--AS_VAR_IF([ac_Symbol], [yes], [$2], [$3])
--AS_VAR_POPDEF([ac_Symbol])dnl
--])# AC_CHECK_DECL
-+[ac_fn_check_decl ]dnl
-+["$LINENO" "$1" "ac_Symbol" "AS_ESCAPE([AC_INCLUDES_DEFAULT([$4])], [""])" ]dnl
-+["$ac_[]_AC_LANG_ABBREV[]_undeclared_builtin_options" "_AC_LANG_PREFIX[]FLAGS"]
-+[AS_VAR_IF([ac_Symbol], [yes], [$2], [$3])]dnl
-+[AS_VAR_POPDEF([ac_Symbol])]dnl
-+)# AC_CHECK_DECL
-
-
- # _AC_CHECK_DECLS(SYMBOL, ACTION-IF_FOUND, ACTION-IF-NOT-FOUND,
-diff --git a/tests/local.at b/tests/local.at
-index 536f9a54..9ab903be 100644
---- a/tests/local.at
-+++ b/tests/local.at
-@@ -452,9 +452,9 @@ fi
- # cxx: ignore all of:
- # - CC, CPP, CCC, CXX, CXXCPP, CFLAGS, CXXFLAGS, GCC, GXX
- # - ac_cv_env_(any of the above)_(set|value)
--# - ac_cv_c_compiler_gnu, ac_cv_cxx_compiler_gnu
--# - ac_cv_c_decl_report, ac_cv_cxx_decl_report
--# - ac_cv_prog_c_*, ac_cv_prog_cxx_*,
-+# - ac_cv_(c|cxx)_compiler_gnu
-+# - ac_cv_(c|cxx)_undeclared_builtin_options
-+# - ac_cv_prog_c_*, ac_cv_prog_cxx_*
- # - ac_cv_prog_(ac_ct_)?(CC|CXX|CPP|CXXCPP)
- # + other ac_cv_c_* are renamed to ac_cv_cxx_*
- # + OPENMP_CFLAGS is renamed to OPENMP_CXXFLAGS
-@@ -546,8 +546,8 @@ m4_define([_AT_CONFIG_CMP_PRUNE],
- /^ac_cv_prog_ac_ct_CXXCPP=/ d
- /^ac_cv_c_compiler_gnu=/ d
- /^ac_cv_cxx_compiler_gnu=/ d
-- /^ac_cv_c_decl_report=/ d
-- /^ac_cv_cxx_decl_report=/ d
-+ /^ac_cv_c_undeclared_builtin_options=/ d
-+ /^ac_cv_cxx_undeclared_builtin_options=/ d
- /^ac_cv_prog_c_@<:@^=@:>@*=/ d
- /^ac_cv_prog_cc_@<:@^=@:>@*=/ d
- /^ac_cv_prog_cxx_@<:@^=@:>@*=/ d
-diff --git a/tests/semantics.at b/tests/semantics.at
-index ac7fe013..d449ce00 100644
---- a/tests/semantics.at
-+++ b/tests/semantics.at
-@@ -201,8 +201,7 @@ fi
-
- # AC_CHECK_DECLS
- # --------------
--# For the benefit of _AC_UNDECLARED_WARNING compilers, these INCLUDES sections
--# should not elicit warnings.
-+# Check that it performs the correct actions:
- AT_CHECK_MACRO([AC_CHECK_DECLS],
- [[AC_CHECK_DECLS([yes, no, myenum, mystruct, myfunc, mymacro1, mymacro2],,,
- [[extern int yes;
-@@ -211,8 +210,9 @@ AT_CHECK_MACRO([AC_CHECK_DECLS],
- extern int myfunc();
- #define mymacro1(arg) arg
- #define mymacro2]])
-- # Clang reports a warning for an undeclared builtin.
-- AC_CHECK_DECLS([strerror],,, [[]])
-+ # Ensure we can detect missing declarations of functions whose
-+ # signature may be built into the compiler.
-+ AC_CHECK_DECLS([memcpy, strchr, strerror],,, [[]])
- # The difference in space-before-open-paren is intentional.
- AC_CHECK_DECLS([basenam (char *), dirnam(char *),
- moreargs (char, short, int, long, void *, char *, float, double)],,,
-@@ -248,6 +248,7 @@ AT_CHECK_MACRO([AC_CHECK_DECLS],
- [AT_CHECK_DEFINES(
- [#define HAVE_DECL_BASENAM 1
- #define HAVE_DECL_DIRNAM 0
-+#define HAVE_DECL_MEMCPY 0
- #define HAVE_DECL_MOREARGS 1
- #define HAVE_DECL_MYENUM 1
- #define HAVE_DECL_MYFUNC 1
-@@ -255,6 +256,7 @@ AT_CHECK_MACRO([AC_CHECK_DECLS],
- #define HAVE_DECL_MYMACRO2 1
- #define HAVE_DECL_MYSTRUCT 1
- #define HAVE_DECL_NO 0
-+#define HAVE_DECL_STRCHR 0
- #define HAVE_DECL_STRERROR 0
- #define HAVE_DECL_YES 1
- ])])
---
-2.25.1
-
-
-From fac6e5e5cf5b974dda2b82d6331d9dcb4b3e0016 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Mon, 21 Dec 2020 14:04:22 -0500
-Subject: [PATCH 12/13] Restore compatibility with older std-gnu11.m4.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Gnulib’s std-gnu11.m4 backports C11 and C++11 detection to autoconf
-2.69. It does this by replacing the definitions of AC_PROC_CC and
-AC_PROG_CXX and most of their subroutines. In particular, it replaces
-the definitions of _AC_PROG_CC_C11, _AC_PROG_CC_C99, and _AC_C_STD_TRY,
-but it does *not* replace the definition of _AC_PROG_CC_C89.
-
-Autoconf commit 131d8c69f31dc6fc8dc93abe1096d52d1fe19fd3 changed the
-calling convention of _AC_C_STD_TRY, and changed the internal
-definitions of _AC_PROG_CC_C{11,99,89} to match. If std-gnu11.m4 is
-in use, our _AC_PROG_CC_C89 calls their _AC_C_STD_TRY with the new
-calling convention, and this produces a syntactically invalid
-configure script. (This is is fortunate: it could easily have been a
-runtime malfunction that only manifested with compilers that only
-implement C89, and then we might not have noticed the problem for
-years.)
-
-Gnulib commit a3b3fc85e3e632374811b27cb2111e50fa177e36 makes
-std-gnu11.m4 do nothing when used with autoconf >=2.70, but older
-versions of the file will circulate for years to come, so this patch
-works around the problem in autoconf. It does this by renaming all of
-the internal macros involved with C and C++ standard edition
-detection, *except* _AC_PROG_CC_C89. AC_PROG_CC now calls
-_AC_PROG_CC_STDC_EDITION, which loops over all supported editions
-calling _AC_PROG_CC_STDC_EDITION_TRY, which uses the data provided by
-the existing _AC_C_C${edition}_TEST_PROGRAM macros and a new set of
-macros called _AC_C_C${edition}_OPTIONS to perform the test for that
-edition of the standard. Similarly, AC_PROG_CXX calls
-_AC_PROG_CXX_STDCXX_EDITION, which loops calling
-_AC_PROG_CXX_STDCXX_EDITION_TRY, which uses data from
-_AC_CXX_CXX${edition}_TEST_PROGRAM and _AC_CXX_CXX${edition}_OPTIONS.
-
-_AC_PROG_CC_C89 is the only macro from the old set that we still
-define, and its definition is reverted to what std-gnu11.m4 expects it
-to be. Nothing in Autoconf proper uses it anymore.
-
-foreign.at grows a test to verify that the compatibility stub version
-of _AC_PROG_CC_C89 does its job. Since this is now the third test
-involving an embedded copy of a third-party macro, I broke them all
-out of foreign.at to separate files in test/data/.
-
-In addition to fixing the breakage, this patch should make it easier
-to extend C / C++ standard edition detection in the future, by getting
-rid of the if-else chains in AC_PROG_CC/CXX and by disentangling the
-lists of command-line options to test from the logic.
-
-I also changed the manual to suggest people refer to the variables
-‘ac_prog_cc_stdc’ and ‘ac_prog_cxx_stdcxx’ to learn which edition
-of the C and C++ standards are selected; these are much easier to
-work with than the ac_cv_prog_cc_cNN cache variables.
-
-* lib/autoconf/c.m4 (_AC_C_STD_TRY, _AC_PROG_CC_C99, _AC_PROG_CC_C11)
- (_AC_CXX_STD_TRY, _AC_PROG_CXX_CXX98, _AC_PROG_CXX_CXX11): Remove macro.
-
- (_AC_C_C89_OPTIONS, _AC_C_C99_OPTIONS, _AC_C_C11_OPTIONS)
- (_AC_PROG_CC_STDC_EDITION, _AC_PROG_CC_STDC_EDITION_TRY)
- (_AC_CXX_CXX98_OPTIONS, _AC_CXX_CXX11_OPTIONS)
- (_AC_PROG_CXX_STDCXX_EDITION, _AC_PROG_CXX_STDCXX_EDITION_TRY): New macros.
-
- (_AC_PROG_CC_C89): Convert to compatibility stub for std-gnu11.m4.
-
- (AC_PROG_CC): Use _AC_PROG_CC_STDC_EDITION.
- (AC_PROG_CXX): Use _AC_PROG_CXX_STDCXX_EDITION.
-
-* tests/data/ax_prog_cc_for_build_v18.m4
-* tests/data/ax_prog_cxx_for_build_v3.m4
-* tests/data/gnulib_std_gnu11_2020_08_17.m4: New files.
-* tests/foreign.at (AX_PROG_CC_FOR_BUILD, AX_PROG_CXX_FOR_BUILD):
- Remove embedded copy of ax_prog_cc_for_build_v18.m4,
- ax_prog_cxx_for_build_v3.m4 respectively.
- (gnulib-std-gnu11.m4): New test.
-* tests/local.mk: Distribute tests/data/*.m4.
-
-* doc/autoconf.texi (AC_PROG_CC, AC_PROG_CXX): Document use of
- ac_prog_cc_stdc / ac_prog_cxx_stdcxx, respectively, to tell which
- edition of the C / C++ standards are selected, instead of looking
- through a series of cache variables with awkward definitions.
----
- doc/autoconf.texi | 45 +-
- lib/autoconf/c.m4 | 444 +++++++-----
- tests/data/ax_prog_cc_for_build_v18.m4 | 139 ++++
- tests/data/ax_prog_cxx_for_build_v3.m4 | 110 +++
- tests/data/gnulib_std_gnu11_2020_08_17.m4 | 824 ++++++++++++++++++++++
- tests/foreign.at | 215 +-----
- tests/local.mk | 7 +-
- 7 files changed, 1384 insertions(+), 400 deletions(-)
- create mode 100644 tests/data/ax_prog_cc_for_build_v18.m4
- create mode 100644 tests/data/ax_prog_cxx_for_build_v3.m4
- create mode 100644 tests/data/gnulib_std_gnu11_2020_08_17.m4
-
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index db1e0f46..b65d698e 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -7453,7 +7453,6 @@ makes this invalid. That is why Autoconf stopped issuing
- @evindex CFLAGS
- @ovindex CC
- @ovindex CFLAGS
--@caindex prog_cc_stdc
- Determine a C compiler to use.
-
- If the environment variable @code{CC} is set, its value will be taken as
-@@ -7485,21 +7484,15 @@ default. (It is important to use this construct rather than a normal
- assignment, so that @code{CFLAGS} can still be overridden by the
- person building the package. @xref{Preset Output Variables}.)
-
--If necessary, options are added to @code{CC} to enable support for ISO
--Standard C features with extensions, preferring the newest C standard
--that is supported. Currently the newest standard Autoconf knows how to
--detect support for is ISO C 2011. After calling this macro you can
--check whether the C compiler has been set to accept Standard C by
--inspecting cache variables. If @code{ac_cv_prog_cc_c11} is set to any
--value other than @samp{no} (including the empty string), then @code{CC}
--can compile code as standard C 2011, and this mode has been enabled.
--Otherwise, if @code{ac_cv_prog_cc_c99} is set to any value other than
--@samp{no} (including the empty string), then @code{CC} can compile code
--as standard C 1999, and this mode has been enabled. Otherwise, if
--@code{ac_cv_prog_cc_c89} is set to any value other than @samp{no}
--(including the empty string), then @code{CC} can compile code as
--standard C 1989, and this mode has been enabled. Finally, if all
--three variables are set to @samp{no}, then @code{CC} cannot compile
-+If necessary, options are added to @code{CC} to enable support for
-+ISO Standard C features with extensions, preferring the newest edition
-+of the C standard that is supported. Currently the newest edition
-+Autoconf knows how to detect support for is ISO C 2011. After calling
-+this macro you can check whether the C compiler has been set to accept
-+standard C by inspecting the shell variable @code{ac_prog_cc_stdc}.
-+Its value will be @samp{c11}, @samp{c99}, or @samp{c89}, respectively,
-+if the C compiler has been set to use the 2011, 1999, or 1990 edition of
-+the C standard, and @samp{no} if the compiler does not support compiling
- standard C at all.
-
- The tests for standard conformance are not comprehensive. They test the
-@@ -7890,17 +7883,15 @@ assignment, so that @code{CXXFLAGS} can still be overridden by the
- person building the package. @xref{Preset Output Variables}.)
-
- If necessary, options are added to @code{CXX} to enable support for
--ISO Standard C++ features with extensions. ISO C++ 2011 is preferred
--if the compiler supports it. After calling this macro, you can check
--whether the C++ compiler has been set to accept standard C++ by
--inspecting cache variables. If @code{ac_cv_prog_cxx_cxx11} is set to
--any value other than @samp{no} (including the empty string), then
--@code{CXX} can compile code as standard C++ 2011, and this mode has
--been enabled. Otherwise, if @code{ac_cv_prog_cxx_cxx98} is set to
--any value other than @samp{no} (including the empty string), then
--@code{CXX} can compile code as standard C++ 1998, and this mode has
--been enabled. Finally, if both variables are set to @samp{no}, then
--@code{CXX} cannot compile standard C++ at all.
-+ISO Standard C++ features with extensions, preferring the newest edition
-+of the C++ standard that is supported. Currently the newest edition
-+Autoconf knows how to detect support for is ISO C++ 2011. After calling
-+this macro, you can check whether the C++ compiler has been set to
-+accept standard C++ by inspecting the shell variable @code{ac_prog_cc_stdc}.
-+Its value will be @samp{cxx11} or @samp{cxx98}, respectively,
-+if the C++ compiler has been set to use the 2011 or 1990 edition of the
-+C++ standard, and @samp{no} if the compiler does not support compiling
-+standard C++ at all.
-
- The tests for standard conformance are not comprehensive. They test
- the value of @code{__cplusplus} and a representative sample of the
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index 14240460..7ad6b4f7 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -498,19 +498,7 @@ else
- GCC=
- fi
- _AC_PROG_CC_G
--dnl
--dnl Set ac_prog_cc_stdc to the supported C version.
--dnl Also set the documented variable ac_cv_prog_cc_stdc;
--dnl its name was chosen when it was cached, but it is no longer cached.
--_AC_PROG_CC_C11([ac_prog_cc_stdc=c11
-- ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11],
-- [_AC_PROG_CC_C99([ac_prog_cc_stdc=c99
-- ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99],
-- [_AC_PROG_CC_C89([ac_prog_cc_stdc=c89
-- ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89],
-- [ac_prog_cc_stdc=no
-- ac_cv_prog_cc_stdc=no])])])
--dnl
-+_AC_PROG_CC_STDC_EDITION
- AC_LANG_POP(C)dnl
- ])# AC_PROG_CC
-
-@@ -745,13 +733,7 @@ else
- GXX=
- fi
- _AC_PROG_CXX_G
--_AC_PROG_CXX_CXX11([ac_prog_cxx_stdcxx=cxx11
-- ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
-- ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11],
-- [_AC_PROG_CXX_CXX98([ac_prog_cxx_stdcxx=cxx98
-- ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98],
-- [ac_prog_cxx_stdcxx=no
-- ac_cv_prog_cxx_stdcxx=no])])
-+_AC_PROG_CXX_STDCXX_EDITION
- AC_LANG_POP(C++)dnl
- ])# AC_PROG_CXX
-
-@@ -1496,114 +1478,170 @@ main (int argc, char **argv)
- ]])])
-
-
--# _AC_C_STD_TRY(STANDARD, TEST-PROGRAM-HOLDER, OPTION-LIST,
--# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
--# --------------------------------------------------------------
--# Check whether the C compiler accepts features of STANDARD (e.g `c89', `c99')
--# by trying to compile the program in the shell variable TEST-PROGRAM-HOLDER.
--# Caller is responsible for making sure this variable has been initialized.
--# If compilation fails in the default mode, try again with each compiler
--# option in the space-separated OPTION-LIST; if one helps, append it to CC.
--# If eventually successful, run ACTION-IF-AVAILABLE, else ACTION-IF-UNAVAILABLE.
--AC_DEFUN([_AC_C_STD_TRY],
-+# _AC_C_C89_OPTIONS
-+# -----------------
-+# Whitespace-separated list of options that might put the C compiler
-+# into a mode conforming to ISO C1990 with extensions. Do not try
-+# "strictly conforming" modes (e.g. gcc's -std=c90); they break some
-+# systems' header files. If more than one option is needed, put
-+# shell quotes around the group.
-+#
-+# AIX circa 2003 -qlanglvl=extc89
-+# old AIX -qlanglvl=ansi
-+# Ultrix, OSF/1, Tru64 -std
-+# HP-UX 10.20 and later -Ae
-+# HP-UX older versions -Aa -D_HPUX_SOURCE
-+# SVR4 -Xc -D__EXTENSIONS__
-+m4_define([_AC_C_C89_OPTIONS], [
-+ -qlanglvl=extc89
-+ -qlanglvl=ansi
-+ -std
-+ -Ae
-+ "-Aa -D_HPUX_SOURCE"
-+ "-Xc -D__EXTENSIONS__"
-+])
-+
-+
-+# _AC_C_C99_OPTIONS
-+# -----------------
-+# Whitespace-separated list of options that might put the C compiler
-+# into a mode conforming to ISO C1999 with extensions. Do not try
-+# "strictly conforming" modes (e.g. gcc's -std=c99); they break some
-+# systems' header files. If more than one option is needed, put
-+# shell quotes around the group.
-+#
-+# GCC, Clang -std=gnu99
-+# Intel ICC -std=c99, -c99 (deprecated)
-+# Note: because -std=c99 puts GCC in strictly conforming mode,
-+# this option must be tested *after* -std=gnu99.
-+# IRIX -c99
-+# Tru64 -c99
-+# IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test)
-+# IBM XL C -qlanglvl=extc99 (pre-V12.1)
-+# HP cc -AC99
-+# Solaris -D_STDC_C99=
-+# Note: acc's -xc99 option uses linker magic to define the external
-+# symbol __xpg4 as if by "int __xpg4 = 1;", which enables C99
-+# behavior for C library functions. This is not wanted here,
-+# because it means that a single module compiled with -xc99 alters
-+# C runtime behavior for the entire program, not for just the
-+# module. Instead, define the (private) symbol _STDC_C99, which
-+# suppresses a bogus failure in <stdbool.h>. The resulting compiler
-+# passes the test case here, and that's good enough.
-+# For more, please see the thread starting at:
-+# https://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html
-+m4_define([_AC_C_C99_OPTIONS], [
-+ -std=gnu99
-+ -std=c99
-+ -c99
-+ -qlanglvl=extc1x
-+ -qlanglvl=extc99
-+ -AC99
-+ -D_STDC_C99=
-+])
-+
-+
-+# _AC_C_C11_OPTIONS
-+# -----------------
-+# Whitespace-separated list of options that might put the C compiler
-+# into a mode conforming to ISO C2011 with extensions. Do not try
-+# "strictly conforming" modes (e.g. gcc's -std=c11); they break some
-+# systems' header files. If more than one option is needed, put
-+# shell quotes around the group.
-+#
-+# GCC, Clang -std=gnu11
-+#
-+# For IBM XL C for AIX V16.1 or later, '-std=gnu11' should work if
-+# the user configured with CC='xlclang'. Otherwise, do not try
-+# -qlanglvl=extc1x as xlc with IBM XL C V16.1 (the latest version as
-+# of August 2020) does not pass the C11 test. Instead, try extc1x when
-+# compiling the C99 test instead, since it enables _Static_assert and
-+# _Noreturn, which is a win.
-+m4_define([_AC_C_C11_OPTIONS], [
-+ -std=gnu11
-+])
-+
-+
-+# _AC_PROG_CC_STDC_EDITION_TRY(EDITION)
-+# -------------------------------------
-+# Subroutine of _AC_PROG_CC_STDC_EDITION. Not to be called directly.
-+#
-+# Check whether the C compiler accepts features of EDITION of the
-+# C standard. EDITION should be a two-digit year (e.g. 89, 99, 11).
-+# (FIXME: Switch to four-digit years for futureproofing.)
-+# This is done by compiling the test program defined by
-+# _AC_C_C{EDITION}_TEST_PROGRAM, first with no additional
-+# command-line options, and then with each of the options
-+# in the space-separated list defined by _AC_C_C{EDITION}_OPTIONS.
-+#
-+# If we find a way to make the test program compile, set cache variable
-+# ac_cv_prog_cc_cEDITION to the options required (if any), and add those
-+# options to $CC. Set shell variable ac_prog_cc_stdc to `cEDITION',
-+# and set shell variable ac_cv_prog_cc_stdc to the options required.
-+# (Neither of these variables is AC_SUBSTed. ac_cv_prog_cc_stdc used
-+# to be a cache variable and is preserved with this name for backward
-+# compatibility.) Otherwise, ac_cv_prog_cc_cEDITION is set to `no'
-+# and the other variables are not changed.
-+#
-+# If ac_prog_cc_stdc is already set to a value other than `no',
-+# the shell code produced by this macro does nothing. This is so
-+# _AC_PROG_CC_STDC_EDITION can use m4_map to iterate through
-+# all the editions.
-+AC_DEFUN([_AC_PROG_CC_STDC_EDITION_TRY],
- [AC_LANG_ASSERT([C])]dnl
--[AC_MSG_CHECKING([for $CC option to enable ]dnl
--m4_translit($1, [c], [C])[ features])
--AC_CACHE_VAL([ac_cv_prog_cc_$1],
--[ac_cv_prog_cc_$1=no
-+[AC_REQUIRE([_AC_C_C$1_TEST_PROGRAM])]dnl
-+[AS_IF([test x$ac_prog_cc_stdc = xno],
-+[AC_MSG_CHECKING([for $CC option to enable C$1 features])
-+AC_CACHE_VAL([ac_cv_prog_cc_c$1],
-+[ac_cv_prog_cc_c$1=no
- ac_save_CC=$CC
--AC_LANG_CONFTEST([AC_LANG_DEFINES_PROVIDED][$][$2])
--for ac_arg in '' $3
-+AC_LANG_CONFTEST([AC_LANG_DEFINES_PROVIDED][$][ac_c_conftest_c$1_program])
-+for ac_arg in '' m4_normalize(m4_defn([_AC_C_C$1_OPTIONS]))
- do
- CC="$ac_save_CC $ac_arg"
-- _AC_COMPILE_IFELSE([], [ac_cv_prog_cc_$1=$ac_arg])
-- test "x$ac_cv_prog_cc_$1" != "xno" && break
-+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cc_c$1=$ac_arg])
-+ test "x$ac_cv_prog_cc_c$1" != "xno" && break
- done
- rm -f conftest.$ac_ext
--CC=$ac_save_CC
--])# AC_CACHE_VAL
--ac_prog_cc_stdc_options=
--AS_CASE(["x$ac_cv_prog_cc_$1"],
-- [x], [AC_MSG_RESULT([none needed])],
-- [xno], [AC_MSG_RESULT([unsupported])],
-- [ac_prog_cc_stdc_options=" $ac_cv_prog_cc_$1"
-- CC="$CC$ac_prog_cc_stdc_options"
-- AC_MSG_RESULT([$ac_cv_prog_cc_$1])])
--AS_IF([test "x$ac_cv_prog_cc_$1" != xno], [$4], [$5])
--])# _AC_C_STD_TRY
--
--
--# _AC_PROG_CC_C89 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
--# ----------------------------------------------------------------
--# If the C compiler is not in ANSI C89 (ISO C90) mode by default, try
--# to add an option to output variable CC to make it so.
-+CC=$ac_save_CC])
-+AS_IF([test "x$ac_cv_prog_cc_c$1" = xno],
-+ [AC_MSG_RESULT([unsupported])],
-+ [AS_IF([test "x$ac_cv_prog_cc_c$1" = x],
-+ [AC_MSG_RESULT([none needed])],
-+ [AC_MSG_RESULT([$ac_cv_prog_cc_c$1])
-+ CC="$CC $ac_cv_prog_cc_c$1"])
-+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c$1
-+ ac_prog_cc_stdc=c$1])])
-+])
-+
-+
-+# _AC_PROG_CC_STDC_EDITION
-+# ------------------------
-+# Detect the most recent edition of the ISO C standard that is
-+# supported by the C compiler. Add command-line options to $CC, if
-+# necessary, to enable support for this edition. Set the shell
-+# variable ac_prog_cc_stdc to indicate the edition.
-+AC_DEFUN([_AC_PROG_CC_STDC_EDITION],
-+[ac_prog_cc_stdc=no
-+m4_map([_AC_PROG_CC_STDC_EDITION_TRY], [[11], [99], [89]])])
-+
-+
-+# _AC_PROG_CC_C89(ACTION-IF-SUPPORTED, ACTION-IF-NOT-SUPPORTED)
-+# -------------------------------------------------------------
-+# Obsolete internal macro. No longer used by Autoconf itself, but
-+# preserved for backward compatibility with pre-December 2020 versions
-+# of Gnulib's std-gnu11.m4, which replaced the entire definition of
-+# AC_PROG_CC *except* for this macro. Can be removed once everyone is
-+# using Autoconf 2.70 and/or a current std-gnu11.m4.
- AC_DEFUN([_AC_PROG_CC_C89],
--[AC_REQUIRE([_AC_C_C89_TEST_PROGRAM])]dnl
--[_AC_C_STD_TRY([c89], [ac_c_conftest_c89_program],
--dnl Don't try gcc -ansi; that turns off useful extensions and
--dnl breaks some systems' header files.
--dnl AIX circa 2003 -qlanglvl=extc89
--dnl old AIX -qlanglvl=ansi
--dnl Ultrix, OSF/1, Tru64 -std
--dnl HP-UX 10.20 and later -Ae
--dnl HP-UX older versions -Aa -D_HPUX_SOURCE
--dnl SVR4 -Xc -D__EXTENSIONS__
--[-qlanglvl=extc89 -qlanglvl=ansi -std \
-- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"], [$1], [$2])[]dnl
--])# _AC_PROG_CC_C89
--
--
--# _AC_PROG_CC_C99 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
--# ----------------------------------------------------------------
--# If the C compiler is not in ISO C99 mode by default, try to add an
--# option to output variable CC to make it so.
--AC_DEFUN([_AC_PROG_CC_C99],
--[AC_REQUIRE([_AC_C_C99_TEST_PROGRAM])]dnl
--[_AC_C_STD_TRY([c99], [ac_c_conftest_c99_program],
--dnl Try
--dnl GCC -std=gnu99 (unused restrictive modes: -std=c99 -std=iso9899:1999)
--dnl IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test)
--dnl IBM XL C -qlanglvl=extc99
--dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdc99)
--dnl HP cc -AC99
--dnl Intel ICC -std=c99, -c99 (deprecated)
--dnl IRIX -c99
--dnl Solaris -D_STDC_C99=
--dnl cc's -xc99 option uses linker magic to define the external
--dnl symbol __xpg4 as if by "int __xpg4 = 1;", which enables C99
--dnl behavior for C library functions. This is not wanted here,
--dnl because it means that a single module compiled with -xc99
--dnl alters C runtime behavior for the entire program, not for
--dnl just the module. Instead, define the (private) symbol
--dnl _STDC_C99, which suppresses a bogus failure in <stdbool.h>.
--dnl The resulting compiler passes the test case here, and that's
--dnl good enough. For more, please see the thread starting at:
--dnl https://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html
--dnl Tru64 -c99
--dnl with extended modes being tried first.
--[[-std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99]], [$1], [$2])[]dnl
--])# _AC_PROG_CC_C99
--
--
--# _AC_PROG_CC_C11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
--# ----------------------------------------------------------------
--# If the C compiler is not in ISO C11 mode by default, try to add an
--# option to output variable CC to make it so.
--AC_DEFUN([_AC_PROG_CC_C11],
--[AC_REQUIRE([_AC_C_C11_TEST_PROGRAM])]dnl
--[_AC_C_STD_TRY([c11], [ac_c_conftest_c11_program],
--dnl Try
--dnl GCC -std=gnu11 (unused restrictive mode: -std=c11)
--dnl with extended modes being tried first.
--dnl
--dnl For IBM XL C for AIX V16.1 or later, '-std=gnu11' should work if
--dnl the user configured with CC='xlclang'. Otherwise, do not try
--dnl -qlanglvl=extc1x as xlc with IBM XL C V16.1 (the latest version as
--dnl of August 2020) does not pass the C11 test. Instead, try extc1x when
--dnl compiling the C99 test instead, since it enables _Static_assert and
--dnl _Noreturn, which is a win.
--[[-std=gnu11]], [$1], [$2])[]dnl
--])# _AC_PROG_CC_C11
-+[AC_REQUIRE([_AC_C_C89_TEST_GLOBALS])]dnl
-+[AC_REQUIRE([_AC_C_C89_TEST_MAIN])]dnl
-+[_AC_C_STD_TRY([c89],
-+ [$ac_c_conftest_c89_globals], [$ac_c_conftest_c89_main],
-+ m4_quote(m4_normalize(m4_defn([_AC_C_C89_OPTIONS]))),
-+ [$1],
-+ [$2])])
-+
-
-
- # AC_PROG_CC_C89
-@@ -2633,78 +2671,112 @@ main (int argc, char **argv)
- "
- ]])])
-
-+# _AC_CXX_CXX98_OPTIONS
-+# ---------------------
-+# Whitespace-separated list of options that might put the C++ compiler
-+# into a mode conforming to ISO C++ 1998 with extensions. Do not try
-+# "strictly conforming" modes (e.g. gcc's -std=c++98); they break some
-+# systems' header files. If more than one option is needed, put
-+# shell quotes around the group.
-+#
-+# GCC -std=gnu++98
-+# Intel ICC -std=c++98
-+# Note: because -std=c++98 puts GCC in strictly conforming mode,
-+# this option must be tested *after* -std=gnu++98.
-+# IBM XL C -qlanglvl=extended
-+# HP aC++ -AA
-+# Solaris N/A (default)
-+# Tru64 N/A (default, but -std gnu could be used)
-+m4_define([_AC_CXX_CXX98_OPTIONS], [
-+ -std=gnu++98
-+ -std=c++98
-+ -qlanglvl=extended
-+ -AA
-+])
-
--# _AC_CXX_STD_TRY(STANDARD, TEST-PROGRAM-HOLDER, OPTION-LIST,
--# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
--# ----------------------------------------------------------------
--# Check whether the C++ compiler accepts features of STANDARD (e.g `cxx98',
--# `cxx11') by trying to compile the program in the shell variable
--# TEST-PROGRAM-HOLDER. Caller is responsible for making sure this variable
--# has been initialized. If compilation fails in the default mode, try again
--# with each compiler option in the space-separated OPTION-LIST; if one helps,
--# append it to CXX. If eventually successful, run ACTION-IF-AVAILABLE, else
--# ACTION-IF-UNAVAILABLE.
-+# _AC_CXX_CXX11_OPTIONS
-+# ---------------------
-+# Whitespace-separated list of options that might put the C++ compiler
-+# into a mode conforming to ISO C++ 2011 with extensions. Do not try
-+# "strictly conforming" modes (e.g. gcc's -std=c++11); they break some
-+# systems' header files. If more than one option is needed, put
-+# shell quotes around the group.
-+#
-+# GCC -std=gnu++11, -std=gnu++0x
-+# Intel ICC -std=c++11, -std=c++0x
-+# Note: because -std=c++11 puts GCC in strictly conforming mode,
-+# these options must be tested *after* -std=gnu++11.
-+# IBM XL C -qlanglvl=extended0x (pre-V12.1)
-+# HP aC++ -AA
-+# Solaris N/A (no support)
-+# Tru64 N/A (no support)
-+m4_define([_AC_CXX_CXX11_OPTIONS], [
-+ -std=gnu++11
-+ -std=gnu++0x
-+ -std=c++11
-+ -std=c++0x
-+ -qlanglvl=extended0x
-+ -AA
-+])
-
--AC_DEFUN([_AC_CXX_STD_TRY],
-+# _AC_PROG_CXX_STDCXX_EDITION_TRY(EDITION)
-+# ----------------------------------------
-+# Subroutine of _AC_PROG_CXX_STDCXX_EDITION. Not to be called directly.
-+#
-+# Check whether the C++ compiler accepts features of EDITION of the
-+# C++ standard. EDITION should be a two-digit year (e.g. 98, 11).
-+# (FIXME: Switch to four-digit years for futureproofing.)
-+# This is done by compiling the test program defined by
-+# _AC_C_CXX{EDITION}_TEST_PROGRAM, first with no additional
-+# command-line options, and then with each of the options
-+# in the space-separated list defined by _AC_C_CXX{EDITION}_OPTIONS.
-+#
-+# If we find a way to make the test program compile, set cache variable
-+# ac_cv_prog_cxx_cxxEDITION to the options required (if any), and add those
-+# options to $CXX. Set shell variable ac_prog_cxx_stdcxx to `cxxEDITION',
-+# and set shell variable ac_cv_prog_cxx_stdcxx to the options required.
-+# (Neither of these variables is AC_SUBSTed. ac_cv_prog_cxx_stdcxx used
-+# to be a cache variable and is preserved with this name for backward
-+# compatibility.) Otherwise, ac_cv_prog_cxx_cxxEDITION is set to `no'
-+# and the other variables are not changed.
-+#
-+# If ac_prog_cxx_stdcxx is already set to a value other than `no',
-+# the shell code produced by this macro does nothing. This is so
-+# _AC_PROG_CXX_STDCXX_EDITION can use m4_map to iterate through
-+# all the editions.
-+AC_DEFUN([_AC_PROG_CXX_STDCXX_EDITION_TRY],
- [AC_LANG_ASSERT([C++])]dnl
--[AC_MSG_CHECKING([for $CXX option to enable ]dnl
--m4_translit([$1], [a-wxyz], [A-W+YZ])[ features])
-+[AC_REQUIRE([_AC_CXX_CXX$1_TEST_PROGRAM])]dnl
-+[AS_IF([test x$ac_prog_cxx_stdcxx = xno],
-+[AC_MSG_CHECKING([for $CXX option to enable C++$1 features])
- AC_CACHE_VAL(ac_cv_prog_cxx_$1,
- [ac_cv_prog_cxx_$1=no
- ac_save_CXX=$CXX
--AC_LANG_CONFTEST([AC_LANG_DEFINES_PROVIDED][$][$2])
--for ac_arg in '' $3
-+AC_LANG_CONFTEST([AC_LANG_DEFINES_PROVIDED][$][ac_cxx_conftest_cxx$1_program])
-+for ac_arg in '' m4_normalize(m4_defn([_AC_CXX_CXX$1_OPTIONS]))
- do
- CXX="$ac_save_CXX $ac_arg"
-- _AC_COMPILE_IFELSE([], [ac_cv_prog_cxx_$1=$ac_arg])
-- test "x$ac_cv_prog_cxx_$1" != "xno" && break
-+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cxx_cxx$1=$ac_arg])
-+ test "x$ac_cv_prog_cxx_cxx$1" != "xno" && break
- done
- rm -f conftest.$ac_ext
--CXX=$ac_save_CXX
--])# AC_CACHE_VAL
--ac_prog_cxx_stdcxx_options=
--AS_CASE(["x$ac_cv_prog_cxx_$1"],
-- [x], [AC_MSG_RESULT([none needed])],
-- [xno], [AC_MSG_RESULT([unsupported])],
-- [ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_$1"
-- CXX=$CXX$ac_prog_cxx_stdcxx_options
-- AC_MSG_RESULT([$ac_cv_prog_cxx_$1])])
--AS_IF([test "x$ac_cv_prog_cxx_$1" != xno], [$4], [$5])
--])# _AC_CXX_STD_TRY
--
--# _AC_PROG_CXX_CXX98 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
--# -------------------------------------------------------------------
--# If the C++ compiler is not in ISO C++98 mode by default, try to add
--# an option to output variable CXX to make it so.
--AC_DEFUN([_AC_PROG_CXX_CXX98],
--[AC_REQUIRE([_AC_CXX_CXX98_TEST_PROGRAM])]dnl
--[_AC_CXX_STD_TRY([cxx98], [ac_cxx_conftest_cxx98_program],
--dnl Try
--dnl GCC -std=gnu++98 (unused restrictive mode: -std=c++98)
--dnl IBM XL C -qlanglvl=extended
--dnl HP aC++ -AA
--dnl Intel ICC -std=gnu++98
--dnl Solaris N/A (default)
--dnl Tru64 N/A (default, but -std gnu could be used)
--dnl with extended modes being tried first.
--[[-std=gnu++98 -std=c++98 -qlanglvl=extended -AA]], [$1], [$2])[]dnl
--])# _AC_PROG_CXX_CXX98
--
--# _AC_PROG_CXX_CXX11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
--# -------------------------------------------------------------------
--# If the C++ compiler is not in ISO CXX11 mode by default, try to add
--# an option to output variable CXX to make it so.
--AC_DEFUN([_AC_PROG_CXX_CXX11],
--[AC_REQUIRE([_AC_CXX_CXX11_TEST_PROGRAM])]dnl
--[_AC_CXX_STD_TRY([cxx11], [ac_cxx_conftest_cxx11_program],
--dnl Try
--dnl GCC -std=gnu++11 (unused restrictive mode: -std=c++11) [and 0x variants]
--dnl IBM XL C -qlanglvl=extended0x
--dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdcxx11)
--dnl HP aC++ -AA
--dnl Intel ICC -std=c++11 -std=c++0x
--dnl Solaris N/A (no support)
--dnl Tru64 N/A (no support)
--dnl with extended modes being tried first.
--[[-std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA]], [$1], [$2])[]dnl
--])# _AC_PROG_CXX_CXX11
-+CXX=$ac_save_CXX])
-+AS_IF([test "x$ac_cv_prog_cxx_cxx$1" = xno],
-+ [AC_MSG_RESULT([unsupported])],
-+ [AS_IF([test "x$ac_cv_prog_cxx_cxx$1" = x],
-+ [AC_MSG_RESULT([none needed])],
-+ [AC_MSG_RESULT([$ac_cv_prog_cxx_cxx$1])
-+ CXX="$CXX $ac_cv_prog_cxx_cxx$1"])
-+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx$1
-+ ac_prog_cxx_stdcxx=cxx$1])])
-+])
-+
-+# _AC_PROG_CXX_STDCXX_EDITION
-+# ---------------------------
-+# Detect the most recent edition of the ISO C++ standard that is
-+# supported by the C++ compiler. Add command-line options to $CXX,
-+# if necessary, to enable support for this edition. Set the shell
-+# variable ac_prog_cxx_stdcxx to indicate the edition.
-+AC_DEFUN([_AC_PROG_CXX_STDCXX_EDITION],
-+[ac_prog_cxx_stdcxx=no
-+m4_map([_AC_PROG_CXX_STDCXX_EDITION_TRY], [[11], [98]])])
-diff --git a/tests/data/ax_prog_cc_for_build_v18.m4 b/tests/data/ax_prog_cc_for_build_v18.m4
-new file mode 100644
-index 00000000..f7410d74
---- /dev/null
-+++ b/tests/data/ax_prog_cc_for_build_v18.m4
-@@ -0,0 +1,139 @@
-+# ===========================================================================
-+# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_PROG_CC_FOR_BUILD
-+#
-+# DESCRIPTION
-+#
-+# This macro searches for a C compiler that generates native executables,
-+# that is a C compiler that surely is not a cross-compiler. This can be
-+# useful if you have to generate source code at compile-time like for
-+# example GCC does.
-+#
-+# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
-+# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
-+# The value of these variables can be overridden by the user by specifying
-+# a compiler with an environment variable (like you do for standard CC).
-+#
-+# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
-+# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
-+# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
-+# substituted in the Makefile.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
-+#
-+# Copying and distribution of this file, with or without modification, are
-+# permitted in any medium without royalty provided the copyright notice
-+# and this notice are preserved. This file is offered as-is, without any
-+# warranty.
-+
-+#serial 18
-+
-+AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
-+AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_PROG_CPP])dnl
-+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-+
-+dnl Use the standard macros, but make them use other variable names
-+dnl
-+pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
-+pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
-+pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
-+pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
-+pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
-+pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
-+pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl
-+pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
-+pushdef([ac_cv_objext], ac_cv_build_objext)dnl
-+pushdef([ac_exeext], ac_build_exeext)dnl
-+pushdef([ac_objext], ac_build_objext)dnl
-+pushdef([CC], CC_FOR_BUILD)dnl
-+pushdef([CPP], CPP_FOR_BUILD)dnl
-+pushdef([GCC], GCC_FOR_BUILD)dnl
-+pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
-+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-+pushdef([EXEEXT], BUILD_EXEEXT)dnl
-+pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
-+pushdef([OBJEXT], BUILD_OBJEXT)dnl
-+pushdef([host], build)dnl
-+pushdef([host_alias], build_alias)dnl
-+pushdef([host_cpu], build_cpu)dnl
-+pushdef([host_vendor], build_vendor)dnl
-+pushdef([host_os], build_os)dnl
-+pushdef([ac_cv_host], ac_cv_build)dnl
-+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
-+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
-+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
-+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-+pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-+pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
-+pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
-+pushdef([cross_compiling], cross_compiling_build)dnl
-+
-+cross_compiling_build=no
-+
-+ac_build_tool_prefix=
-+AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
-+ [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-+
-+AC_LANG_PUSH([C])
-+AC_PROG_CC
-+_AC_COMPILER_EXEEXT
-+_AC_COMPILER_OBJEXT
-+AC_PROG_CPP
-+
-+dnl Restore the old definitions
-+dnl
-+popdef([cross_compiling])dnl
-+popdef([am_cv_prog_cc_c_o])dnl
-+popdef([am_cv_CC_dependencies_compiler_type])dnl
-+popdef([ac_tool_prefix])dnl
-+popdef([ac_cv_host_os])dnl
-+popdef([ac_cv_host_vendor])dnl
-+popdef([ac_cv_host_cpu])dnl
-+popdef([ac_cv_host_alias])dnl
-+popdef([ac_cv_host])dnl
-+popdef([host_os])dnl
-+popdef([host_vendor])dnl
-+popdef([host_cpu])dnl
-+popdef([host_alias])dnl
-+popdef([host])dnl
-+popdef([OBJEXT])dnl
-+popdef([LDFLAGS])dnl
-+popdef([EXEEXT])dnl
-+popdef([CPPFLAGS])dnl
-+popdef([CFLAGS])dnl
-+popdef([GCC])dnl
-+popdef([CPP])dnl
-+popdef([CC])dnl
-+popdef([ac_objext])dnl
-+popdef([ac_exeext])dnl
-+popdef([ac_cv_objext])dnl
-+popdef([ac_cv_exeext])dnl
-+popdef([ac_cv_c_compiler_gnu])dnl
-+popdef([ac_cv_prog_cc_g])dnl
-+popdef([ac_cv_prog_cc_cross])dnl
-+popdef([ac_cv_prog_cc_works])dnl
-+popdef([ac_cv_prog_cc_c89])dnl
-+popdef([ac_cv_prog_gcc])dnl
-+popdef([ac_cv_prog_CPP])dnl
-+
-+dnl restore global variables ac_ext, ac_cpp, ac_compile,
-+dnl ac_link, ac_compiler_gnu (dependant on the current
-+dnl language after popping):
-+AC_LANG_POP([C])
-+
-+dnl Finally, set Makefile variables
-+dnl
-+AC_SUBST(BUILD_EXEEXT)dnl
-+AC_SUBST(BUILD_OBJEXT)dnl
-+AC_SUBST([CFLAGS_FOR_BUILD])dnl
-+AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
-+AC_SUBST([LDFLAGS_FOR_BUILD])dnl
-+])
-diff --git a/tests/data/ax_prog_cxx_for_build_v3.m4 b/tests/data/ax_prog_cxx_for_build_v3.m4
-new file mode 100644
-index 00000000..17c19a89
---- /dev/null
-+++ b/tests/data/ax_prog_cxx_for_build_v3.m4
-@@ -0,0 +1,110 @@
-+# ===========================================================================
-+# https://www.gnu.org/software/autoconf-archive/ax_prog_cxx_for_build.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_PROG_CXX_FOR_BUILD
-+#
-+# DESCRIPTION
-+#
-+# This macro searches for a C++ compiler that generates native
-+# executables, that is a C++ compiler that surely is not a cross-compiler.
-+# This can be useful if you have to generate source code at compile-time
-+# like for example GCC does.
-+#
-+# The macro sets the CXX_FOR_BUILD and CXXCPP_FOR_BUILD macros to anything
-+# needed to compile or link (CXX_FOR_BUILD) and preprocess
-+# (CXXCPP_FOR_BUILD). The value of these variables can be overridden by
-+# the user by specifying a compiler with an environment variable (like you
-+# do for standard CXX).
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
-+# Copyright (c) 2012 Avionic Design GmbH
-+#
-+# Based on the AX_PROG_CC_FOR_BUILD macro by Paolo Bonzini.
-+#
-+# Copying and distribution of this file, with or without modification, are
-+# permitted in any medium without royalty provided the copyright notice
-+# and this notice are preserved. This file is offered as-is, without any
-+# warranty.
-+
-+#serial 3
-+
-+AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
-+AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
-+AC_REQUIRE([AX_PROG_CC_FOR_BUILD])dnl
-+AC_REQUIRE([AC_PROG_CXX])dnl
-+AC_REQUIRE([AC_PROG_CXXCPP])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+
-+dnl Use the standard macros, but make them use other variable names
-+dnl
-+pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)dnl
-+pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)dnl
-+pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)dnl
-+pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
-+pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
-+pushdef([CXX], CXX_FOR_BUILD)dnl
-+pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
-+pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
-+pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-+pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
-+pushdef([host], build)dnl
-+pushdef([host_alias], build_alias)dnl
-+pushdef([host_cpu], build_cpu)dnl
-+pushdef([host_vendor], build_vendor)dnl
-+pushdef([host_os], build_os)dnl
-+pushdef([ac_cv_host], ac_cv_build)dnl
-+pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
-+pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
-+pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
-+pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-+pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
-+pushdef([ac_compile], ac_build_compile)dnl
-+pushdef([ac_link], ac_build_link)dnl
-+
-+save_cross_compiling=$cross_compiling
-+save_ac_tool_prefix=$ac_tool_prefix
-+cross_compiling=no
-+ac_tool_prefix=
-+
-+AC_PROG_CXX
-+AC_PROG_CXXCPP
-+
-+ac_tool_prefix=$save_ac_tool_prefix
-+cross_compiling=$save_cross_compiling
-+
-+dnl Restore the old definitions
-+dnl
-+popdef([ac_link])dnl
-+popdef([ac_compile])dnl
-+popdef([ac_cxxcpp])dnl
-+popdef([ac_cv_host_os])dnl
-+popdef([ac_cv_host_vendor])dnl
-+popdef([ac_cv_host_cpu])dnl
-+popdef([ac_cv_host_alias])dnl
-+popdef([ac_cv_host])dnl
-+popdef([host_os])dnl
-+popdef([host_vendor])dnl
-+popdef([host_cpu])dnl
-+popdef([host_alias])dnl
-+popdef([host])dnl
-+popdef([CXXCPPFLAGS])dnl
-+popdef([CPPFLAGS])dnl
-+popdef([CXXFLAGS])dnl
-+popdef([CXXCPP])dnl
-+popdef([CXX])dnl
-+popdef([ac_cv_prog_cxx_g])dnl
-+popdef([ac_cv_prog_cxx_cross])dnl
-+popdef([ac_cv_prog_cxx_works])dnl
-+popdef([ac_cv_prog_gxx])dnl
-+popdef([ac_cv_prog_CXXCPP])dnl
-+
-+dnl Finally, set Makefile variables
-+dnl
-+AC_SUBST([CXXFLAGS_FOR_BUILD])dnl
-+AC_SUBST([CXXCPPFLAGS_FOR_BUILD])dnl
-+])
-diff --git a/tests/data/gnulib_std_gnu11_2020_08_17.m4 b/tests/data/gnulib_std_gnu11_2020_08_17.m4
-new file mode 100644
-index 00000000..db833d82
---- /dev/null
-+++ b/tests/data/gnulib_std_gnu11_2020_08_17.m4
-@@ -0,0 +1,824 @@
-+# Prefer GNU C11 and C++11 to earlier versions. -*- coding: utf-8 -*-
-+
-+# This implementation is taken from GNU Autoconf lib/autoconf/c.m4
-+# commit 017d5ddd82854911f0119691d91ea8a1438824d6
-+# dated Sun Apr 3 13:57:17 2016 -0700
-+# This implementation will be obsolete once we can assume Autoconf 2.70
-+# or later is installed everywhere a Gnulib program might be developed.
-+
-+
-+# Copyright (C) 2001-2020 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 3 of the License, 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 <https://www.gnu.org/licenses/>.
-+
-+# Written by David MacKenzie, with help from
-+# Akim Demaille, Paul Eggert,
-+# François Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
-+# Roland McGrath, Noah Friedman, david d zuhn, and many others.
-+
-+
-+# AC_PROG_CC([COMPILER ...])
-+# --------------------------
-+# COMPILER ... is a space separated list of C compilers to search for.
-+# This just gives the user an opportunity to specify an alternative
-+# search list for the C compiler.
-+AC_DEFUN_ONCE([AC_PROG_CC],
-+[AC_LANG_PUSH(C)dnl
-+AC_ARG_VAR([CC], [C compiler command])dnl
-+AC_ARG_VAR([CFLAGS], [C compiler flags])dnl
-+_AC_ARG_VAR_LDFLAGS()dnl
-+_AC_ARG_VAR_LIBS()dnl
-+_AC_ARG_VAR_CPPFLAGS()dnl
-+m4_ifval([$1],
-+ [AC_CHECK_TOOLS(CC, [$1])],
-+[AC_CHECK_TOOL(CC, gcc)
-+if test -z "$CC"; then
-+ dnl Here we want:
-+ dnl AC_CHECK_TOOL(CC, cc)
-+ dnl but without the check for a tool without the prefix.
-+ dnl Until the check is removed from there, copy the code:
-+ if test -n "$ac_tool_prefix"; then
-+ AC_CHECK_PROG(CC, [${ac_tool_prefix}cc], [${ac_tool_prefix}cc])
-+ fi
-+fi
-+if test -z "$CC"; then
-+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
-+fi
-+if test -z "$CC"; then
-+ AC_CHECK_TOOLS(CC, cl.exe)
-+fi
-+if test -z "$CC"; then
-+ AC_CHECK_TOOL(CC, clang)
-+fi
-+])
-+
-+test -z "$CC" && AC_MSG_FAILURE([no acceptable C compiler found in \$PATH])
-+
-+# Provide some information about the compiler.
-+_AS_ECHO_LOG([checking for _AC_LANG compiler version])
-+set X $ac_compile
-+ac_compiler=$[2]
-+for ac_option in --version -v -V -qversion -version; do
-+ _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD])
-+done
-+
-+m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl
-+m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl
-+_AC_LANG_COMPILER_GNU
-+if test $ac_compiler_gnu = yes; then
-+ GCC=yes
-+else
-+ GCC=
-+fi
-+_AC_PROG_CC_G
-+dnl
-+dnl Set ac_prog_cc_stdc to the supported C version.
-+dnl Also set the documented variable ac_cv_prog_cc_stdc;
-+dnl its name was chosen when it was cached, but it is no longer cached.
-+_AC_PROG_CC_C11([ac_prog_cc_stdc=c11
-+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11],
-+ [_AC_PROG_CC_C99([ac_prog_cc_stdc=c99
-+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99],
-+ [_AC_PROG_CC_C89([ac_prog_cc_stdc=c89
-+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89],
-+ [ac_prog_cc_stdc=no
-+ ac_cv_prog_cc_stdc=no])])])
-+dnl
-+AC_LANG_POP(C)dnl
-+])# AC_PROG_CC
-+
-+
-+
-+# AC_PROG_CXX([LIST-OF-COMPILERS])
-+# --------------------------------
-+# LIST-OF-COMPILERS is a space separated list of C++ compilers to search
-+# for (if not specified, a default list is used). This just gives the
-+# user an opportunity to specify an alternative search list for the C++
-+# compiler.
-+# aCC HP-UX C++ compiler much better than `CC', so test before.
-+# FCC Fujitsu C++ compiler
-+# KCC KAI C++ compiler
-+# RCC Rational C++
-+# xlC_r AIX C Set++ (with support for reentrant code)
-+# xlC AIX C Set++
-+AC_DEFUN([AC_PROG_CXX],
-+[AC_LANG_PUSH(C++)dnl
-+AC_ARG_VAR([CXX], [C++ compiler command])dnl
-+AC_ARG_VAR([CXXFLAGS], [C++ compiler flags])dnl
-+_AC_ARG_VAR_LDFLAGS()dnl
-+_AC_ARG_VAR_LIBS()dnl
-+_AC_ARG_VAR_CPPFLAGS()dnl
-+_AC_ARG_VAR_PRECIOUS([CCC])dnl
-+if test -z "$CXX"; then
-+ if test -n "$CCC"; then
-+ CXX=$CCC
-+ else
-+ AC_CHECK_TOOLS(CXX,
-+ [m4_default([$1],
-+ [g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++])],
-+ g++)
-+ fi
-+fi
-+# Provide some information about the compiler.
-+_AS_ECHO_LOG([checking for _AC_LANG compiler version])
-+set X $ac_compile
-+ac_compiler=$[2]
-+for ac_option in --version -v -V -qversion; do
-+ _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD])
-+done
-+
-+m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl
-+m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl
-+_AC_LANG_COMPILER_GNU
-+if test $ac_compiler_gnu = yes; then
-+ GXX=yes
-+else
-+ GXX=
-+fi
-+_AC_PROG_CXX_G
-+_AC_PROG_CXX_CXX11([ac_prog_cxx_stdcxx=cxx11
-+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
-+ ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11],
-+ [_AC_PROG_CXX_CXX98([ac_prog_cxx_stdcxx=cxx98
-+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98],
-+ [ac_prog_cxx_stdcxx=no
-+ ac_cv_prog_cxx_stdcxx=no])])
-+AC_LANG_POP(C++)dnl
-+])# AC_PROG_CXX
-+
-+
-+# _AC_C_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST,
-+# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
-+# --------------------------------------------------------------
-+# Check whether the C compiler accepts features of STANDARD (e.g `c89', `c99')
-+# by trying to compile a program of TEST-PROLOGUE and TEST-BODY. If this fails,
-+# try again with each compiler option in the space-separated OPTION-LIST; if one
-+# helps, append it to CC. If eventually successful, run ACTION-IF-AVAILABLE,
-+# else ACTION-IF-UNAVAILABLE.
-+AC_DEFUN([_AC_C_STD_TRY],
-+[AC_MSG_CHECKING([for $CC option to enable ]m4_translit($1, [c], [C])[ features])
-+AC_CACHE_VAL(ac_cv_prog_cc_$1,
-+[ac_cv_prog_cc_$1=no
-+ac_save_CC=$CC
-+AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])])
-+for ac_arg in '' $4
-+do
-+ CC="$ac_save_CC $ac_arg"
-+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cc_$1=$ac_arg])
-+ test "x$ac_cv_prog_cc_$1" != "xno" && break
-+done
-+rm -f conftest.$ac_ext
-+CC=$ac_save_CC
-+])# AC_CACHE_VAL
-+ac_prog_cc_stdc_options=
-+case "x$ac_cv_prog_cc_$1" in
-+ x)
-+ AC_MSG_RESULT([none needed]) ;;
-+ xno)
-+ AC_MSG_RESULT([unsupported]) ;;
-+ *)
-+ ac_prog_cc_stdc_options=" $ac_cv_prog_cc_$1"
-+ CC=$CC$ac_prog_cc_stdc_options
-+ AC_MSG_RESULT([$ac_cv_prog_cc_$1]) ;;
-+esac
-+AS_IF([test "x$ac_cv_prog_cc_$1" != xno], [$5], [$6])
-+])# _AC_C_STD_TRY
-+
-+# _AC_C_C99_TEST_HEADER
-+# ---------------------
-+# A C header suitable for testing for C99.
-+AC_DEFUN([_AC_C_C99_TEST_HEADER],
-+[[#include <stdarg.h>
-+#include <stdbool.h>
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include <wchar.h>
-+#include <stdio.h>
-+
-+// Check varargs macros. These examples are taken from C99 6.10.3.5.
-+#define debug(...) fprintf (stderr, __VA_ARGS__)
-+#define showlist(...) puts (#__VA_ARGS__)
-+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-+static void
-+test_varargs_macros (void)
-+{
-+ int x = 1234;
-+ int y = 5678;
-+ debug ("Flag");
-+ debug ("X = %d\n", x);
-+ showlist (The first, second, and third items.);
-+ report (x>y, "x is %d but y is %d", x, y);
-+}
-+
-+// Check long long types.
-+#define BIG64 18446744073709551615ull
-+#define BIG32 4294967295ul
-+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-+#if !BIG_OK
-+ your preprocessor is broken;
-+#endif
-+#if BIG_OK
-+#else
-+ your preprocessor is broken;
-+#endif
-+static long long int bignum = -9223372036854775807LL;
-+static unsigned long long int ubignum = BIG64;
-+
-+struct incomplete_array
-+{
-+ int datasize;
-+ double data[];
-+};
-+
-+struct named_init {
-+ int number;
-+ const wchar_t *name;
-+ double average;
-+};
-+
-+typedef const char *ccp;
-+
-+static inline int
-+test_restrict (ccp restrict text)
-+{
-+ // See if C++-style comments work.
-+ // Iterate through items via the restricted pointer.
-+ // Also check for declarations in for loops.
-+ for (unsigned int i = 0; *(text+i) != '\0'; ++i)
-+ continue;
-+ return 0;
-+}
-+
-+// Check varargs and va_copy.
-+static bool
-+test_varargs (const char *format, ...)
-+{
-+ va_list args;
-+ va_start (args, format);
-+ va_list args_copy;
-+ va_copy (args_copy, args);
-+
-+ const char *str = "";
-+ int number = 0;
-+ float fnumber = 0;
-+
-+ while (*format)
-+ {
-+ switch (*format++)
-+ {
-+ case 's': // string
-+ str = va_arg (args_copy, const char *);
-+ break;
-+ case 'd': // int
-+ number = va_arg (args_copy, int);
-+ break;
-+ case 'f': // float
-+ fnumber = va_arg (args_copy, double);
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ va_end (args_copy);
-+ va_end (args);
-+
-+ return *str && number && fnumber;
-+}]])# _AC_C_C99_TEST_HEADER
-+
-+# _AC_C_C99_TEST_BODY
-+# -------------------
-+# A C body suitable for testing for C99, assuming the corresponding header.
-+AC_DEFUN([_AC_C_C99_TEST_BODY],
-+[[
-+ // Check bool.
-+ _Bool success = false;
-+
-+ // Check restrict.
-+ if (test_restrict ("String literal") == 0)
-+ success = true;
-+ char *restrict newvar = "Another string";
-+
-+ // Check varargs.
-+ success &= test_varargs ("s, d' f .", "string", 65, 34.234);
-+ test_varargs_macros ();
-+
-+ // Check flexible array members.
-+ struct incomplete_array *ia =
-+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
-+ ia->datasize = 10;
-+ for (int i = 0; i < ia->datasize; ++i)
-+ ia->data[i] = i * 1.234;
-+
-+ // Check named initializers.
-+ struct named_init ni = {
-+ .number = 34,
-+ .name = L"Test wide string",
-+ .average = 543.34343,
-+ };
-+
-+ ni.number = 58;
-+
-+ int dynamic_array[ni.number];
-+ dynamic_array[ni.number - 1] = 543;
-+
-+ // work around unused variable warnings
-+ return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
-+ || dynamic_array[ni.number - 1] != 543);
-+]])
-+
-+# _AC_PROG_CC_C99 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
-+# ----------------------------------------------------------------
-+# If the C compiler is not in ISO C99 mode by default, try to add an
-+# option to output variable CC to make it so. This macro tries
-+# various options that select ISO C99 on some system or another. It
-+# considers the compiler to be in ISO C99 mode if it handles _Bool,
-+# // comments, flexible array members, inline, long long int, mixed
-+# code and declarations, named initialization of structs, restrict,
-+# va_copy, varargs macros, variable declarations in for loops and
-+# variable length arrays.
-+AC_DEFUN([_AC_PROG_CC_C99],
-+[_AC_C_STD_TRY([c99],
-+[_AC_C_C99_TEST_HEADER],
-+[_AC_C_C99_TEST_BODY],
-+dnl Try
-+dnl GCC -std=gnu99 (unused restrictive modes: -std=c99 -std=iso9899:1999)
-+dnl IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test)
-+dnl IBM XL C -qlanglvl=extc99
-+dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdc99)
-+dnl HP cc -AC99
-+dnl Intel ICC -std=c99, -c99 (deprecated)
-+dnl IRIX -c99
-+dnl Solaris -D_STDC_C99=
-+dnl cc's -xc99 option uses linker magic to define the external
-+dnl symbol __xpg4 as if by "int __xpg4 = 1;", which enables C99
-+dnl behavior for C library functions. This is not wanted here,
-+dnl because it means that a single module compiled with -xc99
-+dnl alters C runtime behavior for the entire program, not for
-+dnl just the module. Instead, define the (private) symbol
-+dnl _STDC_C99, which suppresses a bogus failure in <stdbool.h>.
-+dnl The resulting compiler passes the test case here, and that's
-+dnl good enough. For more, please see the thread starting at:
-+dnl https://lists.gnu.org/r/autoconf/2010-12/msg00059.html
-+dnl Tru64 -c99
-+dnl with extended modes being tried first.
-+[[-std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99]], [$1], [$2])[]dnl
-+])# _AC_PROG_CC_C99
-+
-+
-+# _AC_PROG_CC_C11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
-+# ----------------------------------------------------------------
-+# If the C compiler is not in ISO C11 mode by default, try to add an
-+# option to output variable CC to make it so. This macro tries
-+# various options that select ISO C11 on some system or another. It
-+# considers the compiler to be in ISO C11 mode if it handles _Alignas,
-+# _Alignof, _Noreturn, _Static_assert, UTF-8 string literals,
-+# duplicate typedefs, and anonymous structures and unions.
-+AC_DEFUN([_AC_PROG_CC_C11],
-+[_AC_C_STD_TRY([c11],
-+[_AC_C_C99_TEST_HEADER[
-+// Check _Alignas.
-+char _Alignas (double) aligned_as_double;
-+char _Alignas (0) no_special_alignment;
-+extern char aligned_as_int;
-+char _Alignas (0) _Alignas (int) aligned_as_int;
-+
-+// Check _Alignof.
-+enum
-+{
-+ int_alignment = _Alignof (int),
-+ int_array_alignment = _Alignof (int[100]),
-+ char_alignment = _Alignof (char)
-+};
-+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
-+
-+// Check _Noreturn.
-+int _Noreturn does_not_return (void) { for (;;) continue; }
-+
-+// Check _Static_assert.
-+struct test_static_assert
-+{
-+ int x;
-+ _Static_assert (sizeof (int) <= sizeof (long int),
-+ "_Static_assert does not work in struct");
-+ long int y;
-+};
-+
-+// Check UTF-8 literals.
-+#define u8 syntax error!
-+char const utf8_literal[] = u8"happens to be ASCII" "another string";
-+
-+// Check duplicate typedefs.
-+typedef long *long_ptr;
-+typedef long int *long_ptr;
-+typedef long_ptr long_ptr;
-+
-+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
-+struct anonymous
-+{
-+ union {
-+ struct { int i; int j; };
-+ struct { int k; long int l; } w;
-+ };
-+ int m;
-+} v1;
-+]],
-+[_AC_C_C99_TEST_BODY[
-+ v1.i = 2;
-+ v1.w.k = 5;
-+ _Static_assert ((offsetof (struct anonymous, i)
-+ == offsetof (struct anonymous, w.k)),
-+ "Anonymous union alignment botch");
-+]],
-+dnl Try
-+dnl GCC -std=gnu11 (unused restrictive mode: -std=c11)
-+dnl with extended modes being tried first.
-+dnl
-+dnl Do not try -qlanglvl=extc1x, because IBM XL C V12.1 (the latest version as
-+dnl of September 2012) does not pass the C11 test. For now, try extc1x when
-+dnl compiling the C99 test instead, since it enables _Static_assert and
-+dnl _Noreturn, which is a win. If -qlanglvl=extc11 or -qlanglvl=extc1x passes
-+dnl the C11 test in some future version of IBM XL C, we'll add it here,
-+dnl preferably extc11.
-+[[-std=gnu11]], [$1], [$2])[]dnl
-+])# _AC_PROG_CC_C11
-+
-+
-+# AC_PROG_CC_C89
-+# --------------
-+# Do not use AU_ALIAS here and in AC_PROG_CC_C99 and AC_PROG_CC_STDC,
-+# as that'd be incompatible with how Automake redefines AC_PROG_CC. See
-+# <https://lists.gnu.org/r/autoconf/2012-10/msg00048.html>.
-+AU_DEFUN([AC_PROG_CC_C89],
-+ [AC_REQUIRE([AC_PROG_CC])],
-+ [$0 is obsolete; use AC_PROG_CC]
-+)
-+
-+# AC_PROG_CC_C99
-+# --------------
-+AU_DEFUN([AC_PROG_CC_C99],
-+ [AC_REQUIRE([AC_PROG_CC])],
-+ [$0 is obsolete; use AC_PROG_CC]
-+)
-+
-+# AC_PROG_CC_STDC
-+# ---------------
-+AU_DEFUN([AC_PROG_CC_STDC],
-+ [AC_REQUIRE([AC_PROG_CC])],
-+ [$0 is obsolete; use AC_PROG_CC]
-+)
-+
-+
-+# AC_C_PROTOTYPES
-+# ---------------
-+# Check if the C compiler supports prototypes, included if it needs
-+# options.
-+AC_DEFUN([AC_C_PROTOTYPES],
-+[AC_REQUIRE([AC_PROG_CC])dnl
-+if test "$ac_prog_cc_stdc" != no; then
-+ AC_DEFINE(PROTOTYPES, 1,
-+ [Define to 1 if the C compiler supports function prototypes.])
-+ AC_DEFINE(__PROTOTYPES, 1,
-+ [Define like PROTOTYPES; this can be used by system headers.])
-+fi
-+])# AC_C_PROTOTYPES
-+
-+
-+# _AC_CXX_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST,
-+# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE)
-+# ----------------------------------------------------------------
-+# Check whether the C++ compiler accepts features of STANDARD (e.g
-+# `cxx98', `cxx11') by trying to compile a program of TEST-PROLOGUE
-+# and TEST-BODY. If this fails, try again with each compiler option
-+# in the space-separated OPTION-LIST; if one helps, append it to CXX.
-+# If eventually successful, run ACTION-IF-AVAILABLE, else
-+# ACTION-IF-UNAVAILABLE.
-+AC_DEFUN([_AC_CXX_STD_TRY],
-+[AC_MSG_CHECKING([for $CXX option to enable ]m4_translit(m4_translit($1, [x], [+]), [a-z], [A-Z])[ features])
-+AC_LANG_PUSH(C++)dnl
-+AC_CACHE_VAL(ac_cv_prog_cxx_$1,
-+[ac_cv_prog_cxx_$1=no
-+ac_save_CXX=$CXX
-+AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])])
-+for ac_arg in '' $4
-+do
-+ CXX="$ac_save_CXX $ac_arg"
-+ _AC_COMPILE_IFELSE([], [ac_cv_prog_cxx_$1=$ac_arg])
-+ test "x$ac_cv_prog_cxx_$1" != "xno" && break
-+done
-+rm -f conftest.$ac_ext
-+CXX=$ac_save_CXX
-+])# AC_CACHE_VAL
-+ac_prog_cxx_stdcxx_options=
-+case "x$ac_cv_prog_cxx_$1" in
-+ x)
-+ AC_MSG_RESULT([none needed]) ;;
-+ xno)
-+ AC_MSG_RESULT([unsupported]) ;;
-+ *)
-+ ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_$1"
-+ CXX=$CXX$ac_prog_cxx_stdcxx_options
-+ AC_MSG_RESULT([$ac_cv_prog_cxx_$1]) ;;
-+esac
-+AC_LANG_POP(C++)dnl
-+AS_IF([test "x$ac_cv_prog_cxx_$1" != xno], [$5], [$6])
-+])# _AC_CXX_STD_TRY
-+
-+# _AC_CXX_CXX98_TEST_HEADER
-+# -------------------------
-+# A C++ header suitable for testing for CXX98.
-+AC_DEFUN([_AC_CXX_CXX98_TEST_HEADER],
-+[[
-+#include <algorithm>
-+#include <cstdlib>
-+#include <fstream>
-+#include <iomanip>
-+#include <iostream>
-+#include <list>
-+#include <map>
-+#include <set>
-+#include <sstream>
-+#include <stdexcept>
-+#include <string>
-+#include <utility>
-+#include <vector>
-+
-+namespace test {
-+ typedef std::vector<std::string> string_vec;
-+ typedef std::pair<int,bool> map_value;
-+ typedef std::map<std::string,map_value> map_type;
-+ typedef std::set<int> set_type;
-+
-+ template<typename T>
-+ class printer {
-+ public:
-+ printer(std::ostringstream& os): os(os) {}
-+ void operator() (T elem) { os << elem << std::endl; }
-+ private:
-+ std::ostringstream& os;
-+ };
-+}
-+]])# _AC_CXX_CXX98_TEST_HEADER
-+
-+# _AC_CXX_CXX98_TEST_BODY
-+# -----------------------
-+# A C++ body suitable for testing for CXX98, assuming the corresponding header.
-+AC_DEFUN([_AC_CXX_CXX98_TEST_BODY],
-+[[
-+
-+try {
-+ // Basic string.
-+ std::string teststr("ASCII text");
-+ teststr += " string";
-+
-+ // Simple vector.
-+ test::string_vec testvec;
-+ testvec.push_back(teststr);
-+ testvec.push_back("foo");
-+ testvec.push_back("bar");
-+ if (testvec.size() != 3) {
-+ throw std::runtime_error("vector size is not 1");
-+ }
-+
-+ // Dump vector into stringstream and obtain string.
-+ std::ostringstream os;
-+ for (test::string_vec::const_iterator i = testvec.begin();
-+ i != testvec.end(); ++i) {
-+ if (i + 1 != testvec.end()) {
-+ os << teststr << '\n';
-+ }
-+ }
-+ // Check algorithms work.
-+ std::for_each(testvec.begin(), testvec.end(), test::printer<std::string>(os));
-+ std::string os_out = os.str();
-+
-+ // Test pair and map.
-+ test::map_type testmap;
-+ testmap.insert(std::make_pair(std::string("key"),
-+ std::make_pair(53,false)));
-+
-+ // Test set.
-+ int values[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
-+ test::set_type testset(values, values + sizeof(values)/sizeof(values[0]));
-+ std::list<int> testlist(testset.begin(), testset.end());
-+ std::copy(testset.begin(), testset.end(), std::back_inserter(testlist));
-+} catch (const std::exception& e) {
-+ std::cerr << "Caught exception: " << e.what() << std::endl;
-+
-+ // Test fstream
-+ std::ofstream of("test.txt");
-+ of << "Test ASCII text\n" << std::flush;
-+ of << "N= " << std::hex << std::setw(8) << std::left << 534 << std::endl;
-+ of.close();
-+}
-+std::exit(0);
-+]])
-+
-+# _AC_CXX_CXX11_TEST_HEADER
-+# -------------------------
-+# A C++ header suitable for testing for CXX11.
-+AC_DEFUN([_AC_CXX_CXX11_TEST_HEADER],
-+[[
-+#include <deque>
-+#include <functional>
-+#include <memory>
-+#include <tuple>
-+#include <array>
-+#include <regex>
-+#include <iostream>
-+
-+namespace cxx11test
-+{
-+ typedef std::shared_ptr<std::string> sptr;
-+ typedef std::weak_ptr<std::string> wptr;
-+
-+ typedef std::tuple<std::string,int,double> tp;
-+ typedef std::array<int, 20> int_array;
-+
-+ constexpr int get_val() { return 20; }
-+
-+ struct testinit
-+ {
-+ int i;
-+ double d;
-+ };
-+
-+ class delegate {
-+ public:
-+ delegate(int n) : n(n) {}
-+ delegate(): delegate(2354) {}
-+
-+ virtual int getval() { return this->n; };
-+ protected:
-+ int n;
-+ };
-+
-+ class overridden : public delegate {
-+ public:
-+ overridden(int n): delegate(n) {}
-+ virtual int getval() override final { return this->n * 2; }
-+ };
-+
-+ class nocopy {
-+ public:
-+ nocopy(int i): i(i) {}
-+ nocopy() = default;
-+ nocopy(const nocopy&) = delete;
-+ nocopy & operator=(const nocopy&) = delete;
-+ private:
-+ int i;
-+ };
-+}
-+]])# _AC_CXX_CXX11_TEST_HEADER
-+
-+# _AC_CXX_CXX11_TEST_BODY
-+# -----------------------
-+# A C++ body suitable for testing for CXX11, assuming the corresponding header.
-+AC_DEFUN([_AC_CXX_CXX11_TEST_BODY],
-+[[
-+{
-+ // Test auto and decltype
-+ std::deque<int> d;
-+ d.push_front(43);
-+ d.push_front(484);
-+ d.push_front(3);
-+ d.push_front(844);
-+ int total = 0;
-+ for (auto i = d.begin(); i != d.end(); ++i) { total += *i; }
-+
-+ auto a1 = 6538;
-+ auto a2 = 48573953.4;
-+ auto a3 = "String literal";
-+
-+ decltype(a2) a4 = 34895.034;
-+}
-+{
-+ // Test constexpr
-+ short sa[cxx11test::get_val()] = { 0 };
-+}
-+{
-+ // Test initializer lists
-+ cxx11test::testinit il = { 4323, 435234.23544 };
-+}
-+{
-+ // Test range-based for and lambda
-+ cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
-+ for (int &x : array) { x += 23; }
-+ std::for_each(array.begin(), array.end(), [](int v1){ std::cout << v1; });
-+}
-+{
-+ using cxx11test::sptr;
-+ using cxx11test::wptr;
-+
-+ sptr sp(new std::string("ASCII string"));
-+ wptr wp(sp);
-+ sptr sp2(wp);
-+}
-+{
-+ cxx11test::tp tuple("test", 54, 45.53434);
-+ double d = std::get<2>(tuple);
-+ std::string s;
-+ int i;
-+ std::tie(s,i,d) = tuple;
-+}
-+{
-+ static std::regex filename_regex("^_?([a-z0-9_.]+-)+[a-z0-9]+$");
-+ std::string testmatch("Test if this string matches");
-+ bool match = std::regex_search(testmatch, filename_regex);
-+}
-+{
-+ cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
-+ cxx11test::int_array::size_type size = array.size();
-+}
-+{
-+ // Test constructor delegation
-+ cxx11test::delegate d1;
-+ cxx11test::delegate d2();
-+ cxx11test::delegate d3(45);
-+}
-+{
-+ // Test override and final
-+ cxx11test::overridden o1(55464);
-+}
-+{
-+ // Test nullptr
-+ char *c = nullptr;
-+}
-+{
-+ // Test template brackets
-+ std::vector<std::pair<int,char*>> v1;
-+}
-+{
-+ // Unicode literals
-+ char const *utf8 = u8"UTF-8 string \u2500";
-+ char16_t const *utf16 = u"UTF-8 string \u2500";
-+ char32_t const *utf32 = U"UTF-32 string \u2500";
-+}
-+]])
-+
-+# _AC_PROG_CXX_CXX98 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
-+# -------------------------------------------------------------------
-+
-+# If the C++ compiler is not in ISO C++98 mode by default, try to add
-+# an option to output variable CXX to make it so. This macro tries
-+# various options that select ISO C++98 on some system or another. It
-+# considers the compiler to be in ISO C++98 mode if it handles basic
-+# features of the std namespace including: string, containers (list,
-+# map, set, vector), streams (fstreams, iostreams, stringstreams,
-+# iomanip), pair, exceptions and algorithms.
-+
-+
-+AC_DEFUN([_AC_PROG_CXX_CXX98],
-+[_AC_CXX_STD_TRY([cxx98],
-+[_AC_CXX_CXX98_TEST_HEADER],
-+[_AC_CXX_CXX98_TEST_BODY],
-+dnl Try
-+dnl GCC -std=gnu++98 (unused restrictive mode: -std=c++98)
-+dnl IBM XL C -qlanglvl=extended
-+dnl HP aC++ -AA
-+dnl Intel ICC -std=gnu++98
-+dnl Solaris N/A (default)
-+dnl Tru64 N/A (default, but -std gnu could be used)
-+dnl with extended modes being tried first.
-+[[-std=gnu++98 -std=c++98 -qlanglvl=extended -AA]], [$1], [$2])[]dnl
-+])# _AC_PROG_CXX_CXX98
-+
-+# _AC_PROG_CXX_CXX11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE])
-+# -------------------------------------------------------------------
-+# If the C++ compiler is not in ISO CXX11 mode by default, try to add
-+# an option to output variable CXX to make it so. This macro tries
-+# various options that select ISO C++11 on some system or another. It
-+# considers the compiler to be in ISO C++11 mode if it handles all the
-+# tests from the C++98 checks, plus the following: Language features
-+# (auto, constexpr, decltype, default/deleted constructors, delegate
-+# constructors, final, initializer lists, lambda functions, nullptr,
-+# override, range-based for loops, template brackets without spaces,
-+# unicode literals) and library features (array, memory (shared_ptr,
-+# weak_ptr), regex and tuple types).
-+AC_DEFUN([_AC_PROG_CXX_CXX11],
-+[_AC_CXX_STD_TRY([cxx11],
-+[_AC_CXX_CXX11_TEST_HEADER
-+_AC_CXX_CXX98_TEST_HEADER],
-+[_AC_CXX_CXX11_TEST_BODY
-+_AC_CXX_CXX98_TEST_BODY],
-+dnl Try
-+dnl GCC -std=gnu++11 (unused restrictive mode: -std=c++11) [and 0x variants]
-+dnl IBM XL C -qlanglvl=extended0x
-+dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdcxx11)
-+dnl HP aC++ -AA
-+dnl Intel ICC -std=c++11 -std=c++0x
-+dnl Solaris N/A (no support)
-+dnl Tru64 N/A (no support)
-+dnl with extended modes being tried first.
-+[[-std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA]], [$1], [$2])[]dnl
-+])# _AC_PROG_CXX_CXX11
-diff --git a/tests/foreign.at b/tests/foreign.at
-index f3a53420..50e49efc 100644
---- a/tests/foreign.at
-+++ b/tests/foreign.at
-@@ -153,111 +153,8 @@ cp "$abs_top_srcdir/build-aux/install-sh" \
- # the second time. Git commit 18c140b50b0619454d4da50d58a318cc257d580a
- # broke this usage and the breakage went unnoticed for *eight years*.
-
--AT_DATA([aclocal.m4],
--[[# ax_prog_cc_for_build.m4
--# serial 18
--# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
--
--AC_DEFUN([AX_PROG_CC_FOR_BUILD], [
--AC_REQUIRE([AC_PROG_CC])
--AC_REQUIRE([AC_PROG_CPP])
--AC_REQUIRE([AC_CANONICAL_BUILD])
--
--# Use the standard macros, but make them use other variable names
--m4@&t@_pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)
--m4@&t@_pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)
--m4@&t@_pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)
--m4@&t@_pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)
--m4@&t@_pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)
--m4@&t@_pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)
--m4@&t@_pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)
--m4@&t@_pushdef([ac_cv_exeext], ac_cv_build_exeext)
--m4@&t@_pushdef([ac_cv_objext], ac_cv_build_objext)
--m4@&t@_pushdef([ac_exeext], ac_build_exeext)
--m4@&t@_pushdef([ac_objext], ac_build_objext)
--m4@&t@_pushdef([CC], CC_FOR_BUILD)
--m4@&t@_pushdef([CPP], CPP_FOR_BUILD)
--m4@&t@_pushdef([GCC], GCC_FOR_BUILD)
--m4@&t@_pushdef([CFLAGS], CFLAGS_FOR_BUILD)
--m4@&t@_pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)
--m4@&t@_pushdef([EXEEXT], BUILD_EXEEXT)
--m4@&t@_pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)
--m4@&t@_pushdef([OBJEXT], BUILD_OBJEXT)
--m4@&t@_pushdef([host], build)
--m4@&t@_pushdef([host_alias], build_alias)
--m4@&t@_pushdef([host_cpu], build_cpu)
--m4@&t@_pushdef([host_vendor], build_vendor)
--m4@&t@_pushdef([host_os], build_os)
--m4@&t@_pushdef([ac_cv_host], ac_cv_build)
--m4@&t@_pushdef([ac_cv_host_alias], ac_cv_build_alias)
--m4@&t@_pushdef([ac_cv_host_cpu], ac_cv_build_cpu)
--m4@&t@_pushdef([ac_cv_host_vendor], ac_cv_build_vendor)
--m4@&t@_pushdef([ac_cv_host_os], ac_cv_build_os)
--m4@&t@_pushdef([ac_tool_prefix], ac_build_tool_prefix)
--m4@&t@_pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)
--m4@&t@_pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)
--m4@&t@_pushdef([cross_compiling], cross_compiling_build)
--
--cross_compiling_build=no
--
--ac_build_tool_prefix=
--AS@&t@_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
-- [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
--
--AC_LANG_PUSH([C])
--AC_PROG_CC
--_AC_COMPILER_EXEEXT
--_AC_COMPILER_OBJEXT
--AC_PROG_CPP
--
--# Restore the old definitions
--m4@&t@_popdef([cross_compiling])
--m4@&t@_popdef([am_cv_prog_cc_c_o])
--m4@&t@_popdef([am_cv_CC_dependencies_compiler_type])
--m4@&t@_popdef([ac_tool_prefix])
--m4@&t@_popdef([ac_cv_host_os])
--m4@&t@_popdef([ac_cv_host_vendor])
--m4@&t@_popdef([ac_cv_host_cpu])
--m4@&t@_popdef([ac_cv_host_alias])
--m4@&t@_popdef([ac_cv_host])
--m4@&t@_popdef([host_os])
--m4@&t@_popdef([host_vendor])
--m4@&t@_popdef([host_cpu])
--m4@&t@_popdef([host_alias])
--m4@&t@_popdef([host])
--m4@&t@_popdef([OBJEXT])
--m4@&t@_popdef([LDFLAGS])
--m4@&t@_popdef([EXEEXT])
--m4@&t@_popdef([CPPFLAGS])
--m4@&t@_popdef([CFLAGS])
--m4@&t@_popdef([GCC])
--m4@&t@_popdef([CPP])
--m4@&t@_popdef([CC])
--m4@&t@_popdef([ac_objext])
--m4@&t@_popdef([ac_exeext])
--m4@&t@_popdef([ac_cv_objext])
--m4@&t@_popdef([ac_cv_exeext])
--m4@&t@_popdef([ac_cv_c_compiler_gnu])
--m4@&t@_popdef([ac_cv_prog_cc_g])
--m4@&t@_popdef([ac_cv_prog_cc_cross])
--m4@&t@_popdef([ac_cv_prog_cc_works])
--m4@&t@_popdef([ac_cv_prog_cc_c89])
--m4@&t@_popdef([ac_cv_prog_gcc])
--m4@&t@_popdef([ac_cv_prog_CPP])
--
--# restore global variables ac_ext, ac_cpp, ac_compile,
--# ac_link, ac_compiler_gnu (dependant on the current
--# language after popping):
--AC_LANG_POP([C])
--
--# Finally, set Makefile variables
--AC_SUBST(BUILD_EXEEXT)
--AC_SUBST(BUILD_OBJEXT)
--AC_SUBST([CFLAGS_FOR_BUILD])
--AC_SUBST([CPPFLAGS_FOR_BUILD])
--AC_SUBST([LDFLAGS_FOR_BUILD])
--])
--]])
-+cp "$abs_top_srcdir/tests/data/ax_prog_cc_for_build_v18.m4" \
-+ aclocal.m4
-
- AT_DATA([configure.ac],
- [[AC_INIT([foo], [1.0])
-@@ -290,87 +187,9 @@ cp "$abs_top_srcdir/build-aux/install-sh" \
- # the second time. This usage was never broken (unlike with AC_PROG_CC)
- # but it seems sensible to make sure it doesn't *get* broken.
-
--AT_DATA([aclocal.m4],
--[[# ax_prog_cxx_for_build.m4
--# serial 3
--# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
--# Copyright (c) 2012 Avionic Design GmbH
--
--AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [
--AC_LANG_PUSH([C++])
--
--AC_REQUIRE([AC_PROG_CXX])
--AC_REQUIRE([AC_PROG_CXXCPP])
--AC_REQUIRE([AC_CANONICAL_HOST])
--
--# Use the standard macros, but make them use other variable names
--m4@&t@_pushdef([ac_cv_prog_CXXCPP], ac_cv_build_prog_CXXCPP)
--m4@&t@_pushdef([ac_cv_prog_gxx], ac_cv_build_prog_gxx)
--m4@&t@_pushdef([ac_cv_prog_cxx_works], ac_cv_build_prog_cxx_works)
--m4@&t@_pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)
--m4@&t@_pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)
--m4@&t@_pushdef([CXX], CXX_FOR_BUILD)
--m4@&t@_pushdef([CXXCPP], CXXCPP_FOR_BUILD)
--m4@&t@_pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)
--m4@&t@_pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)
--m4@&t@_pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)
--m4@&t@_pushdef([host], build)
--m4@&t@_pushdef([host_alias], build_alias)
--m4@&t@_pushdef([host_cpu], build_cpu)
--m4@&t@_pushdef([host_vendor], build_vendor)
--m4@&t@_pushdef([host_os], build_os)
--m4@&t@_pushdef([ac_cv_host], ac_cv_build)
--m4@&t@_pushdef([ac_cv_host_alias], ac_cv_build_alias)
--m4@&t@_pushdef([ac_cv_host_cpu], ac_cv_build_cpu)
--m4@&t@_pushdef([ac_cv_host_vendor], ac_cv_build_vendor)
--m4@&t@_pushdef([ac_cv_host_os], ac_cv_build_os)
--m4@&t@_pushdef([ac_cxxcpp], ac_build_cxxcpp)
--m4@&t@_pushdef([ac_compile], ac_build_compile)
--m4@&t@_pushdef([ac_link], ac_build_link)
--
--save_cross_compiling=$cross_compiling
--save_ac_tool_prefix=$ac_tool_prefix
--cross_compiling=no
--ac_tool_prefix=
--
--AC_PROG_CXX
--AC_PROG_CXXCPP
--
--ac_tool_prefix=$save_ac_tool_prefix
--cross_compiling=$save_cross_compiling
--
--# Restore the old definitions
--m4@&t@_popdef([ac_link])
--m4@&t@_popdef([ac_compile])
--m4@&t@_popdef([ac_cxxcpp])
--m4@&t@_popdef([ac_cv_host_os])
--m4@&t@_popdef([ac_cv_host_vendor])
--m4@&t@_popdef([ac_cv_host_cpu])
--m4@&t@_popdef([ac_cv_host_alias])
--m4@&t@_popdef([ac_cv_host])
--m4@&t@_popdef([host_os])
--m4@&t@_popdef([host_vendor])
--m4@&t@_popdef([host_cpu])
--m4@&t@_popdef([host_alias])
--m4@&t@_popdef([host])
--m4@&t@_popdef([CXXCPPFLAGS])
--m4@&t@_popdef([CPPFLAGS])
--m4@&t@_popdef([CXXFLAGS])
--m4@&t@_popdef([CXXCPP])
--m4@&t@_popdef([CXX])
--m4@&t@_popdef([ac_cv_prog_cxx_g])
--m4@&t@_popdef([ac_cv_prog_cxx_cross])
--m4@&t@_popdef([ac_cv_prog_cxx_works])
--m4@&t@_popdef([ac_cv_prog_gxx])
--m4@&t@_popdef([ac_cv_prog_CXXCPP])
--
--# Finally, set Makefile variables
--AC_SUBST([CXXFLAGS_FOR_BUILD])
--AC_SUBST([CXXCPPFLAGS_FOR_BUILD])
--
--AC_LANG_POP([C++])
--])
--]])
-+cat "$abs_top_srcdir/tests/data/ax_prog_cc_for_build_v18.m4" \
-+ "$abs_top_srcdir/tests/data/ax_prog_cxx_for_build_v3.m4" \
-+ > aclocal.m4
-
- AT_DATA([configure.ac],
- [[AC_INIT([foo], [1.0])
-@@ -391,3 +210,27 @@ AT_CHECK([grep '^CXX = ..*$' Makefile > /dev/null 2>&1])
- AT_CHECK([grep '^CXX_FOR_BUILD = ..*$' Makefile > /dev/null 2>&1])
-
- AT_CLEANUP
-+
-+
-+AT_SETUP([gnulib-std-gnu11.m4])
-+
-+# Gnulib's std-gnu11.m4 (last significant change 2016-03-15) overrides
-+# most but not all of the internal macros used by AC_PROG_CC and AC_PROG_CXX.
-+# Commit 131d8c69f31dc6fc8dc93abe1096d52d1fe19fd3 changed the calling
-+# convention of _AC_C_STD_TRY, causing configure scripts that load
-+# std-gnu11.m4 to have shell syntax errors.
-+
-+cp "$abs_top_srcdir/tests/data/gnulib_std_gnu11_2020_08_17.m4" \
-+ aclocal.m4
-+
-+AT_DATA([configure.ac],
-+[[AC_INIT([foo], [1.0])
-+AC_PROG_CC
-+AC_PROG_CXX
-+AC_OUTPUT
-+]])
-+
-+AT_CHECK_AUTOCONF
-+AT_CHECK_CONFIGURE
-+
-+AT_CLEANUP
-diff --git a/tests/local.mk b/tests/local.mk
-index df5551ba..a1efbd1f 100644
---- a/tests/local.mk
-+++ b/tests/local.mk
-@@ -120,8 +120,13 @@ TESTSUITE_HAND_AT = \
- tests/autoscan.at \
- tests/foreign.at
-
-+TESTSUITE_EXTRA = \
-+ tests/data/ax_prog_cc_for_build_v18.m4 \
-+ tests/data/ax_prog_cxx_for_build_v3.m4 \
-+ tests/data/gnulib_std_gnu11_2020_08_17.m4
-+
- CLEANFILES += $(TESTSUITE_GENERATED_AT)
--EXTRA_DIST += $(TESTSUITE_HAND_AT)
-+EXTRA_DIST += $(TESTSUITE_HAND_AT) $(TESTSUITE_EXTRA)
-
- TESTSUITE_AT = $(TESTSUITE_GENERATED_AT) $(TESTSUITE_HAND_AT)
- TESTSUITE = tests/testsuite
---
-2.25.1
-
-
-From bef282971ce1ad6a13b8fac57a9b45a88ec5e61d Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Tue, 29 Dec 2020 15:33:33 -0500
-Subject: [PATCH 13/13] =?UTF-8?q?autom4te:=20always=20update=20the=20outpu?=
- =?UTF-8?q?t=20file,=20even=20if=20it=20hasn=E2=80=99t=20changed?=
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Automake generates a Makefile rule for regenerating the configure
-script, that relies on an invocation of ‘autoconf’ always bumping the
-timestamp on the configure script, even if it hasn’t changed.
-The patch to make autom4te update the output file atomically
-(1725c947144d9bebfe7817c2c5f0d53d884b1297) broke this.
-
-Fixes several failures in automake’s test suite.
-
- * bin/autom4te.in (handle_output): Always call update_file with force=1.
- * tests/tools.at (autoconf: timestamp changes): New test.
----
- bin/autom4te.in | 4 +++-
- tests/tools.at | 46 ++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 49 insertions(+), 1 deletion(-)
-
-diff --git a/bin/autom4te.in b/bin/autom4te.in
-index 4c2b905c..64653a44 100644
---- a/bin/autom4te.in
-+++ b/bin/autom4te.in
-@@ -609,7 +609,9 @@ sub handle_output ($$)
- }
-
- $out->close();
-- update_file ($scratchfile, $output, $force)
-+ # Always update the file, even if it didn't change;
-+ # Automake relies on this.
-+ update_file ($scratchfile, $output, 1)
- if defined $scratchfile;
-
- # If no forbidden words, we're done.
-diff --git a/tests/tools.at b/tests/tools.at
-index 49710202..89b8b63b 100644
---- a/tests/tools.at
-+++ b/tests/tools.at
-@@ -662,6 +662,52 @@ arbitrary $text
- AT_CLEANUP
-
-
-+# autoconf: timestamp changes
-+# ---------------------------
-+# Automake needs autoconf to update the timestamp on the configure script
-+# whenever configure.ac or aclocal.m4 changes, even if the contents of the
-+# configure script have not changed.
-+AT_SETUP([autoconf: timestamp changes])
-+
-+AT_DATA([aclocal.m4],
-+[[AC_DEFUN([local_KILROY], [# kilroy was here
-+])
-+]])
-+
-+AT_DATA_AUTOCONF([configure.ac],
-+[[AC_INIT
-+AC_PROG_CC
-+local_KILROY
-+AC_OUTPUT
-+]])
-+
-+AT_CHECK_AUTOCONF
-+
-+cp configure configure.1
-+sleep 1
-+printf '%s\n' 'AC_LIBSOURCES([foo.c])dn@&t@l' >> configure.ac
-+
-+# This step must not use --force.
-+# We don't need to check shell syntax, because if all goes well,
-+# the script will be unchanged from what it was in the first autoconf
-+# pass, and that was already checked.
-+AT_CHECK_M4([autoconf])
-+AT_CHECK([cmp configure configure.1])
-+AT_CHECK([test configure -nt configure.1])
-+
-+cp configure configure.2
-+sleep 1
-+printf '%s\n' \
-+ 'AC_DEFUN([unused_MACRO], [# bob was there too' \
-+ '])' >> aclocal.m4
-+
-+# Same as above.
-+AT_CHECK_M4([autoconf])
-+AT_CHECK([cmp configure configure.2])
-+AT_CHECK([test configure -nt configure.2])
-+
-+AT_CLEANUP
-+
-
- ## --------- ##
- ## ifnames. ##
---
-2.25.1
-