On 4/30/24 10:51, Paul Eggert wrote:
I installed the attached patch into Savannah master to get the ball rolling on
Autoconf supporting C23.
Most C23 compatibility gizmos are now done in Gnulib. However, Autoconf's
AC_PROG_CC needs to be changed to tack --std=gnu23 onto $CC. Although this may
cause a few backward compatibility hassles with ancient packages that still use
K&R C functions, C23 means these packages need to be changed to use function
prototypes anyway.
Just FYI, from my experiments building the X.Org packages (a code base that
still has many bits originally written before the C89 standard) with gcc 13.2
and --std=gnu23, the biggest source of problems was not function prototypes,
but the change of "true" and "false" to no longer be acceptable lvalues,
and of "bool" to be a builtin type.
Fortunately in our cases, the patches were small & simple:
https://gitlab.freedesktop.org/xorg/app/xprop/-/commit/0d2837162ef0e54647485eee2ba4b88012fbb1b4
https://gitlab.freedesktop.org/xorg/lib/libxt/-/commit/56875344b2a62845b8a494830bfb0a5f6ed2d3d6
https://gitlab.freedesktop.org/xorg/driver/xf86-video-vbox/-/commit/b66441a27fa85e2a3b63f10a0a5a846344327042
but I know we're not alone here with these changes, even in much newer code:
https://gitlab.freedesktop.org/cairo/cairo/-/issues/825
https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/a0b1329ee6cce22aca0c9b064fe9c136cc05d630
Of course, our experience is somewhat biased by the XORG_COMPILER_FLAGS macro
in our xorg-macros.m4 set of autoconf macros having included
-Wold-style-definition in our default CFLAGS since 2011.
--
-Alan Coopersmith- alan.coopersmith@xxxxxxxxxx
Oracle Solaris Engineering - https://blogs.oracle.com/solaris