Woohoo!! About time! :) On Tue, Dec 8, 2020 at 12:14 PM Zack Weinberg <zackw@xxxxxxxxx> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > We are pleased to announce stable release 2.70 of GNU Autoconf. > > This release includes eight years of development work since the > previous release, 2.69. Noteworthy changes include support for the > 2011 revisions of the C and C++ standards, support for reproducible > builds, improved support for cross-compilation, improved compatibility > with current compilers and shell utilities, more efficient generated > shell code, and many bug fixes. See below for a detailed list of > changes since the previous version, 2.69, as summarized by the NEWS > file. > > Unfortunately, we were not able to maintain perfect backward > compatibility with existing Autoconf scripts. Caution is advised when > upgrading. The list of changes, below, includes detailed explanations > and advice for all of the compatibility problems we know about. > > Please report bugs and problems with this release to the Savannah bug > tracker: > > https://savannah.gnu.org/support/?func=additem&group=autoconf > > Please also send general comments and feedback to <autoconf@xxxxxxx>. > > We would like to thank everyone who has contributed patches, reported > problems, and helped testing Autoconf in the past decade. > > - -*-*-*- > > Here are the compressed sources: > https://ftpmirror.gnu.org/autoconf/autoconf-2.70.tar.gz (2.0MB) > https://ftpmirror.gnu.org/autoconf/autoconf-2.70.tar.xz (1.3MB) > > Here are the GPG detached signatures[*]: > https://ftpmirror.gnu.org/autoconf/autoconf-2.70.tar.gz.sig > https://ftpmirror.gnu.org/autoconf/autoconf-2.70.tar.xz.sig > > Use a mirror for higher download bandwidth: > https://www.gnu.org/order/ftp.html > > [*] Use a .sig file to verify that the corresponding file (without the > .sig suffix) is intact. First, be sure to download both the .sig file > and the corresponding tarball. Then, run a command like this: > > gpg --verify autoconf-2.70.tar.gz.sig > > If that command fails because you don't have the required public key, > then run this command to import it: > > gpg --keyserver keys.gnupg.net --recv-keys 91FCC32B6769AA64 > > and rerun the 'gpg --verify' command. > > This release was bootstrapped with the following tools: > Automake 1.16.3 > > - -*-*-*- > > * Noteworthy changes in release 2.70 (2020-12-08) [stable] > > ** Backward incompatibilities: > > *** Warnings about obsolete constructs are now on by default. > > These warnings can be turned off with ‘-Wno-obsolete’. > > Many of these warnings advise maintainers to run autoupdate. > Be aware that autoupdate cannot solve all backward compatibility > problems, and cannot completely solve all of the problems it does > address. A configure script edited by autoupdate is likely to > need further manual fix-ups. > > *** Many macros have become pickier about argument quotation. > > If you get a shell syntax error from your generated configure > script, or seemingly impossible misbehavior (e.g. entire blocks of > the configure script not getting executed), check first that all > macro arguments are properly quoted. The “M4 Quotation” section of > the manual explains how to quote macro arguments properly. > > It is unfortunately not possible for autoupdate to correct > quotation errors. > > *** Many macros no longer AC_REQUIRE as many other macros as they used to. > > This can expose several classes of latent bugs. These are the ones > we know about: > > - Make sure to explicitly invoke all of the macros that set result > variables used later in the configure script, or in generated > Makefiles. > > - Autoconf macros that use AC_REQUIRE are not safe to use in shell > control-flow constructs that appear outside of macros defined by > AC_DEFUN. Use AS_IF, AS_CASE, etc. instead. (See the > “Prerequisite Macros” section of the manual for details.) > > The set of macros that use AC_REQUIRE internally may change from > release to release. The only macros that are guaranteed *not* to > use AC_REQUIRE are the macros for acting on the results of a > test: AC_DEFINE, AC_SUBST, AC_MSG_*, AC_CACHE_CHECK, etc. > > - AC_REQUIRE cannot be applied to macros that need to be used with > arguments. Instead, invoke the macro normally, with its arguments. > > *** More macros use config.sub and config.guess internally. > > As a consequence of improved support for cross compilation (see below), > more macros now use the auxiliary scripts ‘config.sub’ and > ‘config.guess’. > If you use any of the affected macros, these scripts must be available > when your configure script is run, even if you have no intention of > ever cross-compiling your program. > > autoreconf will issue an error if any auxiliary scripts are needed but > cannot be found. (It is not currently possible to make autoconf > itself issue this error.) > > ‘autoreconf --install’ will add ‘config.sub’, ‘config.guess’, and > ‘install-sh’ to your source tree if they are needed. If you are > using Automake, scripts added to your tree by ‘autoreconf --install’ > will automatically be included in the tarball produced by ‘make dist’; > otherwise, you will need to arrange for them to be distributed > yourself. > > See the “Input” section of the manual for more detail, including > where to get the auxiliary scripts that may be needed by autoconf macros. > > *** Setting CC to a C++ compiler is no longer supported. > > The C and C++ languages have diverged enough that we can no longer > guarantee that test C programs will be processed as intended by a > C++ compiler. In this release, configure will proceed anyway, but > many test results will be incorrect. In a future release, we may > make AC_PROG_CC error out if it detects that CC is a C++ compiler. > > See the “Language Choice” section of the manual for instructions on > how to write configure scripts for C++ programs, and for programs > with code in more than one language. > > *** Running configure tests with warnings promoted to errors is not > supported. > > For instance, setting ‘CC="gcc -Werror"’ on the configure command > line, or adding -Werror to CFLAGS early in the configure script when > the compiler recognizes this option, is very likely to cause > subsequent tests to fail. > > This has never been guaranteed to work; the code generated by > AC_CHECK_FUNC, for instance, is incorrect by a strict reading of the > original 1989 C standard, and has been ever since that macro was > introduced. Problems are more likely with newer, pickier compilers. > > To enable compiler warnings and/or warnings-as-errors mode for your > own code, we currently recommend a dedicated Makefile variable > (e.g. ‘WARN_CFLAGS’) that is set by AC_SUBST when appropriate. > The Gnulib ‘warnings’ and ‘manywarnings’ modules can help with this. > We plan to add core support for probing for useful sets of compiler > warnings in a future release. > > *** Including confdefs.h manually may cause test failures. > > This has never been necessary; confdefs.h is automatically included > at the beginning of all test programs (by AC_LANG_SOURCE). Because > of the way confdefs.h is generated and used, it is not practical to > give it a multiple inclusion guard. Therefore, if you include it > yourself, all of its definitions will be scanned twice. > > Historically this has not been a problem, because confdefs.h only > makes macro definitions, and the C standard allows redefinitions > of macros as long as they’re exactly the same, but newer, pickier > compilers may complain anyway (see for instance GCC bug 97998). > > *** Older versions of automake and aclocal (< 1.8) are no longer supported. > > *** AC_CONFIG_SUBDIRS no longer directly supports Cygnus configure. > > If you are still using an Autoconf script to drive configuration of > a multi-package build tree where some subdirectories use Cygnus > configure, copy or link $ac_aux_dir/configure into each subdirectory > where it is needed. Please also contact us; we were under the > impression nobody used this very old tool anymore. > > *** AC_CHECK_HEADER and AC_CHECK_HEADERS only do a compilation test. > > This completes the transition from preprocessor-based header tests > begun in Autoconf 2.56. > > The double test that was the default since Autoconf 2.64 is no > longer available. You can still request a preprocessor-only test > by specifying [-] as the fourth argument to either macro, but this > is now deprecated. If you really need that behavior use > AC_PREPROC_IFELSE. > > *** AC_INCLUDES_DEFAULT assumes an ISO C90 compliant C implementation. > > Specifically, it assumes that the ISO C90 header <stddef.h> > is available, without checking for it, and it does not include > the pre-standard header <memory.h> at all. If the POSIX header > <strings.h> exists, it will be included, without first testing > whether both <string.h> and <strings.h> can be included in the > same source file. > > AC_INCLUDES_DEFAULT still checks for the existence of <stdlib.h>, > <string.h>, and <stdio.h>, because these headers may not exist > in a “freestanding environment” (a compilation mode intended for OS > kernels and similar, where most of the features of the C library are > optional). Most programs need not use ‘#ifdef HAVE_STDLIB_H’ etc in > their own code. > > For compatibility’s sake, the C preprocessor macro STDC_HEADERS > will be defined when both <stdlib.h> and <string.h> are available; > however, <stdarg.h> and <float.h> are no longer checked for > (these, like <stddef.h>, are required to exist in a freestanding > environment). New code should not refer to this macro. > > Future releases of Autoconf may reduce the set of headers checked > for by AC_INCLUDES_DEFAULT. > > *** AS_ECHO and AS_ECHO_N unconditionally use ‘printf’. > > This is substantially simpler, more reliable, and, in most cases, > faster than attempting to use ‘echo’ at all. However, if ‘printf’ > is not a shell builtin, configure scripts will run noticeably > slower, and if ‘printf’ is not available at all, they will crash. > The only systems where this is known to be a problem are extremely > old, and unlikely to be able to handle modern C programs for other > reasons (e.g. not having a C90-compliant compiler at all). > > *** Configure scripts require support for $( ... ) command substitution. > > This POSIX shell feature is approximately the same age as > user-defined functions, but there do exist shells that support > functions and not $( ... ), such as Solaris 10 /bin/sh. > > Configure scripts will automatically locate a shell that supports > this feature and re-execute themselves with it, if necessary, so > the new requirement should be transparent to most users. > > In this release, most of Autoconf’s code still uses the older `...` > notation for command substitution. > > *** AC_INIT now trims extra white space from its arguments. > > For instance, AC_INIT([ GNU Hello ], [1.0]) will set PACKAGE_NAME > to “GNU Hello”. > > *** Macros that take whitespace-separated lists as arguments > now always expand macros within those arguments. > > Formerly, these macros would *usually* expand those arguments, but > the behavior was not reliable nor was it consistent between autoconf > and autoheader. > > Macro expansion within these arguments is deprecated; if expansion > changes the list, a warning in the “obsolete” category will be > emitted. Note that ‘dnl’ is a macro. Putting ‘dnl’ comments inside > any argument to an Autoconf macro is, in general, only supported > when that argument takes more Autoconf code (e.g. the ACTION-IF-TRUE > argument to AC_COMPILE_IFELSE). > > The affected macros are AC_CHECK_FILES, AC_CHECK_FUNCS, > AC_CHECK_FUNCS_ONCE, AC_CHECK_HEADERS, AC_CHECK_HEADERS_ONCE, > AC_CONFIG_MACRO_DIRS, AC_CONFIG_SUBDIRS, and AC_REPLACE_FUNCS. > > *** AC_FUNC_VFORK no longer ignores a signal-handling bug in Solaris 2.4. > > This bug was being ignored because Emacs wanted to use ‘vfork’ on > Solaris 2.4 anyway, but current versions of Emacs have dropped > support for Solaris 2.4. Most programs will want to avoid ‘vfork’ > on this OS because of this bug. > > *** AC_FUNC_STRERROR_R assumes strerror_r is unavailable if it’s not > declared. > > The fallback technique it used to probe strerror_r’s return type > when the function was present in the C library, but not declared by > <string.h>, was fragile and did not work at all when cross-compiling. > The systems where this fallback was necessary were all obsolete. > > Programs that use AC_FUNC_STRERROR_R should make sure to test the > preprocessor macro HAVE_DECL_STRERROR_R before using strerror_r at all. > > *** AC_OPENMP can’t be used if you have files named ‘mp’ or ‘penmp’. > > Autoconf will now issue an error if AC_OPENMP is used in a configure > script that’s in the same directory as a file named ‘mp’ or ‘penmp’. > Configure scripts that use AC_OPENMP will now error out upon > encountering files with these names in their working directory > (e.g. when the build directory is separate from the source directory). > > If you have files with these names at the top level of your source > tree, we recommend either renaming them or moving them into a > subdirectory. See the documentation of AC_OPENMP for further > explanation. > > ** New features > > *** Configure scripts now support a ‘--runstatedir’ option. > > This defaults to ‘${localstatedir}/run’. It can be used, for > instance, to place per-process temporary runtime files (such as pid > files) into ‘/run’ instead of ‘/var/run’. > > *** autoreconf will now run gtkdocize and intltoolize when appropriate. > > *** autoreconf now recognizes AM_GNU_GETTEXT_REQUIRE_VERSION. > > This macro can be used with gettext 0.19.6 or later to specify > a *minimum* version requirement for gettext, instead of the *fixed* > version requirement specified by AM_GNU_GETTEXT_VERSION. > > *** autoheader handles secondary config headers better. > > It is no longer necessary to duplicate AC_DEFINE templates in the > main configuration header for autoheader to notice them. > > *** AC_PROG_CC now enables C2011 mode if the compiler supports it. > > If not, it will fall back to C99 and C89, as before. Similarly, > AC_PROG_CXX now enables C++2011 if available, falling back on C++98. > > *** New macro AC_C__GENERIC tests for C2011 _Generic support. > > *** AC_C_VARARRAYS has been aligned with C2011. > > It now defines __STDC_NO_VLA__ if variable-length arrays are not > supported but the compiler does not define __STDC_NO_VLA__. > > For backward compatibility with Autoconf 2.61-2.69 AC_C_VARARRAYS > still defines HAVE_C_VARARRAYS, but this result macro is obsolescent. > > *** New macro AC_CONFIG_MACRO_DIRS. > > This macro can be used more than once and accepts a list of > directories to search for local M4 macros. With Automake 1.13 and > later, use of this macro eliminates a reason to use ACLOCAL_AMFLAGS > in Makefile.am. > > The older AC_CONFIG_MACRO_DIR, which could only be used once, is > still supported but considered deprecated. > > *** AC_USE_SYSTEM_EXTENSIONS knows about more extensions to enable. > > System extensions will now be enabled on HP-UX, macOS, and MINIX. > Optional ISO C library components (e.g. decimal floating point) will > also be enabled. > > *** New compatibility macro AC_CHECK_INCLUDES_DEFAULT. > > This macro runs the checks normally performed as a side-effect by > AC_INCLUDES_DEFAULT, if they haven’t already been done. Autoupdate > will replace certain obsolete constructs, whose only remaining > useful effect is to trigger those checks, with this macro. It is > unlikely to be useful otherwise. > > *** AC_REQUIRE_AUX_FILE has been improved. > > Configure scripts now check, on startup, for the availability of all > the aux files that were mentioned in an AC_REQUIRE_AUX_FILE > invocation. This should help prevent certain classes of packaging > errors. > > Also, it is no longer necessary for third-party macros that use > AC_REQUIRE_AUX_FILE to mention AC_CONFIG_AUX_DIR_DEFAULT. However, > if you are using AC_CONFIG_AUX_DIR_DEFAULT *without* also using > AC_REQUIRE_AUX_FILE, please start using AC_REQUIRE_AUX_FILE to > specify the aux files you actually need, so that the check can be > effective. > > *** AC_PROG_LEX has an option to not look for yywrap. > > AC_PROG_LEX now takes one argument, which may be either ‘yywrap’ or > ‘noyywrap’. If it is ‘noyywrap’, AC_PROG_LEX will only set LEXLIB > to ‘-lfl’ or ‘-ll’ if a scanner that defines both main and yywrap > itself still needs something else from that library. On the other > hand, if it is ‘yywrap’, AC_PROG_LEX will fail (setting LEX to ‘:’ > and LEXLIB to nothing) if it can’t find a library that defines yywrap. > > In the absence of arguments, AC_PROG_LEX’s behavior is bug-compatible > with 2.69, which did neither of the above things (see the manual for > details). This mode is deprecated. > > We encourage all programs that use AC_PROG_LEX to use the new > ‘noyywrap’ mode, and to define yywrap themselves, or use %noyywrap. > The yywrap function in lib(f)l is trivial, and self-contained > scanners are easier to work with. > > ** Obsolete features and new warnings > > *** Use of the long-deprecated name ‘configure.in’ for the autoconf > input file now elicits a warning in the “obsolete” category. > > *** Use of the undocumented internal shell variables $as_echo and > $as_echo_n now elicits a warning in the “obsolete” category. > The macros AS_ECHO and AS_ECHO_N should be used instead. > > *** autoconf will now issue warnings (in the “syntax” category) > if the input file is missing a call to AC_INIT and/or AC_OUTPUT. > > *** autoconf will now issue warnings (in the “syntax” category) > for a non-literal URL argument to AC_INIT, and for a TARNAME > argument to AC_INIT which is either non-literal or contains > characters that should not be used in file names (e.g. ‘*’). > > *** AC_PROG_CC_STDC, AC_PROG_CC_C89, AC_PROG_CC_C99 are now obsolete. > > Applications should use AC_PROG_CC. > > *** AC_HEADER_STDC and AC_HEADER_TIME are now stubs. > > They still define the C preprocessor macros STDC_HEADERS and > TIME_WITH_SYS_TIME, respectively, but they no longer check for the > ancient, non-ISO-C90 compliant systems where formerly those macros > would not be defined. Autoupdate will remove them. > > These macros were already labeled obsolete in the manual. > > *** AC_DIAGNOSE, AC_FATAL, AC_WARNING, and _AC_COMPUTE_INT are now > replaced with modern equivalents by autoupdate. > > These macros were already labeled obsolete in the manual. > > *** AC_CONFIG_HEADER is now diagnosed as obsolete, and replaced with > AC_CONFIG_HEADERS by autoupdate. > > This macro has been considered obsolete for many years and was not > documented at all. > > *** The macro AC_OBSOLETE is obsolete. > > Autoupdate will replace it with m4_warn([obsolete], [explanation]). > If possible, macros using AC_OBSOLETE should be converted to use > AU_DEFUN or AU_ALIAS instead, which enables autoupdate to replace > them, but this has to be done by hand and is not always possible. > > This macro has been considered obsolete for many years, but was not > officially declared as such. > > *** Man pages for config.guess and config.sub are no longer provided. > > They were moved to the master source tree for config.guess and > config.sub. > > ** Notable bug fixes > > *** Compatible with current Automake, Libtool, Perl, Texinfo, and shells. > > All of autoconf’s tools and generated scripts, and the build process > and testsuite for autoconf itself, have been tested to work > correctly with current versions of Automake, Libtool, Perl, Texinfo, > bash, ksh93, zsh, and FreeBSD and NetBSD /bin/sh. > > Generated configure scripts are expected to work reliably with an > even wider variety of shells, including BusyBox sh and various > proprietary Unixes’ /bin/sh, as long as they are minimally compliant > with the Unix95 shell specification. Notably, support for > shell-script functions and the ‘printf’ builtin are required. > > *** Checks compatible with current language standards and compilers. > > Many individual macros have been improved to accommodate changes in > recent versions of the C and C++ language standards, and new > features and quirks of commonly used compilers (both free and > proprietary). > > *** Improved support for cross compilation. > > Many individual macros have been improved to produce more accurate > results when cross-compiling. > > *** Improved robustness against unusual build environments. > > Many bugs have been fixed where generated configure scripts would > fail catastrophically under unusual conditions, such as stdout being > closed, or $TMPDIR not being an absolute path, or the root directory > being mentioned in $PATH. > > *** AC_CHECK_FUNCS_ONCE and AC_CHECK_HEADERS_ONCE now support multiple > programming languages. They no longer perform all checks in the > language active upon the first use of the macro. > > *** AC_CHECK_DECL and AC_CHECK_DECLS will now detect missing declarations > for > library functions that are also Clang compiler builtins. > > *** AC_PATH_X and AC_PATH_XTRA don’t search for X11 when cross-compiling. > > Libraries and headers found by running xmkmf or searching /usr/X11, > /usr/X11R7, etc. are likely to belong to a native X11 installation > for the build machine and to be inappropriate for cross compilation. > > To cross-compile programs that require X11, we recommend putting the > headers and libraries for the host system in your cross-compiler’s > default search paths. Alternatively, use configure’s --x-includes > and --x-libraries command line options to tell it where they are. > > *** AS_IF’s if-false argument may be empty after macro expansion. > > This long-standing limitation broke configure scripts that used > macros in this position that emitted shell code in 2.69 but no > longer do, so we have lifted it. > > *** AC_HEADER_MAJOR detects the location of the major, minor, and > makedev macros correctly under glibc 2.25 and later. > > *** AC_FC_LINE_LENGTH now documents the maximum portable length of > “unlimited” Fortran source code lines to be 250 columns, not 254. > > *** AC_INIT and AS_INIT no longer embed (part of) the path to the > source directory in generated files. > > We believe this was the only case where generated file contents > could change depending on the environment outside the source tree > itself. If you find any other cases please report them as bugs. > > *** config.log properly escapes arguments in the header comment. > > *** config.status --config output is now quoted in a more readable fashion. > > ** Autotest enhancements > > *** Autotest provides a new macro AT_DATA_UNQUOTED, similar to AT_DATA > but processing variable substitutions, command substitutions and > backslashes in the contents argument. > > *** AC_CONFIG_TESTDIR will automatically pass EXEEXT to a testsuite (via > the atconfig file). > > *** AT_TESTED arguments can use variable or command substitutions, > including > in particular $EXEEXT > > *** New macros AT_PREPARE_TESTS, AT_PREPARE_EACH_TEST, and > AT_TEST_HELPER_FN. > > These provide an official way to define testsuite-specific > initialization code and shell functions. > > - -*-*-*- > > Contributors to the Autoconf 2.70 release include: > > Adrian Bunk > Akim Demaille > Andreas Barth > Andreas Schwab > Ben Pfaff > Bernhard Reutner-Fischer > Bruno Haible > Daniel Colascione > Daniel Elstner > David Hill > Eli Schwartz > Eric Blake > Gary V. Vaughan > Jannick > Jehan > Jim Meyering > Jonathan Wakely > Julien ÉLIE > Luke Mewburn > Matěj Týč > Michał Górny > Nick Alcock > Nick Bowler > Noah Misch > Ondrej Dubaj > Pádraig Brady > Paolo Bonzini > Patrice Dumas > Paul Eggert > Pavel Raiskup > Quinn Grier > Roger Leigh > Ross Burton > Serhii Popovych > Stefano Lattarini > Thomas Jahns > Tom > Vincent Lefevre > Zack Weinberg > > -----BEGIN PGP SIGNATURE----- > > iQIzBAEBCAAdFiEEgvhU885zF0uLYxdAkfzDK2dpqmQFAl/PylwACgkQkfzDK2dp > qmQhXRAAocn7rL3+1E/JuWoZ9aAko8jKdpwZjD6FdzfQeP5CExMGE6VVDSUnql/I > vb06SYrIGEiV6rYUqOdNNc5IX3wgxY+9hYMeoKg0hDHIESvrBnB34YZNS9ZY+Plp > F28Gpvl0jLJ4oqWKPltTFRs4KwkVsl0YVvtnKPPIp2dbWsekfXSAReEnZS/H8u4o > dmM59QELAyQ5iiFg083ihTvzgHJ5588cm7nm3lHCEDJ4dBuouCWOJ/yz7xjKGaec > xnFLz1H22k2cO+AbRMBAH3dAvKKVYAjIM/MOf3MXeVigQUiaPlvRdb+NNST4bhI2 > Vv6lRgGgCtUaUXm2+I5rqcX1HFCwGuNtjvjoRoLMbosbM+WcpyQ7Gq2Iam3xt/df > qfs3yPIUSZrJZyV0bZda9UwosI2r0msjTsOq1RqJNuD8+n0ZVw1DuYz428kizcp+ > 6BKlMRr5p+RDWxETyWuQHZcVTYpKpmyJdk7wfdzR4FEdJ0esXpg7mTNhP6P1Cec6 > WsrniTLAoIGydLEdsPEIUVX3ZnsAoLcuDx54DBjSoHebRINPceJf7/+UwjV9mt+e > Kln1ZecQVinjeXlN2AYti0jXaAJSHyry9tWtKbbQTdU0agmMnlIpBUmP5R9nAAWr > LVQd931lHI8vxGhtHfnoRfsmDwwJ5c16RtERHMOU+ZU1E4iutYc= > =d68l > -----END PGP SIGNATURE----- > >