How can Autoconf help with the transition to stricter compilation defaults?
Paul Eggert via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 10 12:19:23 PST 2022
On 2022-11-10 09:16, Zack Weinberg wrote:
> Changes to handle C23 built-in ‘bool’ better are under development but
> the design has not yet been finalized.
[I'm cc'ing this to bug-gnulib too.]
To my mind this is the biggest outstanding issue in Autoconf as far as
C23 goes, as the upgrade path for Autoconf's existing bool support is
not entirely clear. As Florian mentioned, distros can't assume Autoconf
upgrades when building other packages; that being said, we should get
Autoconf's bool support fixed sooner rather than later as bool hassles
will remain until Autoconf is fixed and these fixes are propagated to
Autoconf's users.
Here's the main Autoconf issue issue with bool. Traditionally, Autoconf
supported K&R C, C89, C99, etc. At some point (I'm not sure when),
Autoconf started requiring C89 or later. Is it now OK for Autoconf to
require C99 or later, as far as bool is concerned? If so, that'll
considerably simplify the ongoing maintenance hassle for bool.
Requiring C99-or-later bool is the option that Gnulib has taken. Its
'stdbool' module and its gl_C_BOOL macro assumes C99 or later, and as
far as I know no Gnulib-using package is using Gnulib's 'stdbool-c99'
module which we kept around in case somebody still needed bool to work
atop a C89 system. (We considered supporting C23 bool atop C89 but it
was too painful.)
If we follow Gnulib's lead, Autoconf will generate a config.h that does
"#include <stdbool.h>" on pre-C23 systems, and this config.h will not
not work on pre-C99 systems. This of course could in theory break some
programs, just as compiling them with C23 can break them. But I don't
see any better option at this point. And besides, what package outside
of a museum still requires C89 and don't work with C99?
More information about the cfe-commits
mailing list