[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
autoconf-2.70 released [stable]
From: |
Zack Weinberg |
Subject: |
autoconf-2.70 released [stable] |
Date: |
Tue, 8 Dec 2020 14:14:30 -0500 (EST) |
-----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@gnu.org>.
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-----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- autoconf-2.70 released [stable],
Zack Weinberg <=