Re: git: 28cecfe27964 - main - libc: Restrict ATOMIC_VAR_INIT for C23 conformance

From: Nuno Teixeira <eduardo_at_freebsd.org>
Date: Sun, 21 Jun 2026 17:46:59 UTC
(...)
and I forgot:

audio/cmus:

...
checking for program cc... /usr/bin/cc
checking for C11 (with atomics support)... no
configure failed.
===>  Script "configure" failed unexpectedly.
Please report the problem to eduardo@FreeBSD.org [maintainer] and attach the
"/wrkdirs/usr/ports/audio/cmus/work/cmus-2.12.0/config.log" including the
output of the failure of your make command. Also, it might be a good idea to
provide an overview of all packages installed on your system (e.g. a
/usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1
...
https://pkg-status.freebsd.org/beefy24/data/main-amd64-default/p0cd7b5a3f54a_sa4ed783cee2/logs/cmus-2.12.0_3.log
https://pkg-status.freebsd.org/beefy24/data/main-amd64-default/p0cd7b5a3f54a_sa4ed783cee2/logs/qt6-base-6.11.1.log

Any clues how to unbreak on ports side?

Thanks,




Nuno Teixeira <eduardo@freebsd.org> escreveu (domingo, 21/06/2026 à(s)
11:35):

> Hello,
>
> (poudriere-devel build at main-n286792-eafa181d51f7: Sat Jun 20)
>
> I've found that ports-mgmt/portfmt started failing with:
> ...
> FAILED: [code=1]
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/_build/portscan/status.o
> cc -std=gnu11 -O2 -g -W -Wall -Wextra -Wmissing-prototypes
> -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -flto=thin -O2
> -pipe  -fstack-protector-strong -fno-strict-aliasing
>  -Wno-strict-prototypes  -DPORTFMT_SUBPACKAGES=0 -MD -MF
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/_build/portscan/status.o.d
> -I/wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/_build
> -I/wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6 -c -o
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/_build/portscan/status.o
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/portscan/status.c
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/portscan/status.c:59:38:
> warning: call to undeclared function 'ATOMIC_VAR_INIT'; ISO C99 and later
> do not support implicit function declarations
> [-Wimplicit-function-declaration]
>    59 | static atomic_int status_requested = ATOMIC_VAR_INIT(0);
>       |                                      ^
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/portscan/status.c:59:38:
> error: initializer element is not a compile-time constant
>    59 | static atomic_int status_requested = ATOMIC_VAR_INIT(0);
>       |                                      ^~~~~~~~~~~~~~~~~~
> /wrkdirs/usr/ports/ports-mgmt/portfmt/work/portfmt-1.1.6/portscan/status.c:60:32:
> error: initializer element is not a compile-time constant
>    60 | static atomic_size_t scanned = ATOMIC_VAR_INIT(0);
>       |                                ^~~~~~~~~~~~~~~~~~
> 1 warning and 2 errors generated.
> ...
>
> Same for devel/qt6-base:
>
> ...
> FAILED: [code=1] src/corelib/CMakeFiles/Core.dir/io/forkfd_qt.c.o
> /usr/bin/cc -DBACKTRACE_HEADER=\"execinfo.h\" -DCore_EXPORTS
> -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_CORE_LIB
> -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH
> -DQT_LEAN_HEADERS=1 -
> DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_CONTEXTLESS_CONNECT
> -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS
> -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE
> -DQT_NO_QPAI
> R -DQT_NO_QSNPRINTF -DQT_NO_SINGLE_ARGUMENT_QHASH_OVERLOAD=1
> -DQT_NO_STD_FORMAT_SUPPORT -DQT_NO_USING_NAMESPACE -DQT_TYPESAFE_FLAGS
> -DQT_USE_NODISCARD_FILE_OPEN -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE
> -D_LA
> RGEFILE_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/src/corelib/Core_autogen/include
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/include -I/wrkd
> irs/usr/ports/devel/qt6-base/work/.build/include/QtCore
> -I/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/src/corelib -I/wrkdirs/usr
> /ports/devel/qt6-base/work/.build/src/corelib/global
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/src/corelib/kernel
> -I/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/../3rdpart
> y/tinycbor/src
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/include/QtCore/6.11.1
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/include/QtCore/6.11.1/QtCore
> -I/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-ev
> erywhere-src-6.11.1/src/corelib/../3rdparty/forkfd
> -I/wrkdirs/usr/ports/devel/qt6-base/work/.build/src/corelib/.rcc
> -I/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/mkspecs/freebsd-clang
> -isy
> stem /usr/local/include -isystem /usr/local/include/glib-2.0 -isystem
> /usr/local/lib/glib-2.0/include -O2 -pipe  -fstack-protector-strong
> -fno-strict-aliasing -pipe  -fstack-protector-strong -fno-strict-aliasing
>  -DNDEBUG -O3 -std=gnu11 -fPIC -fvisibility=hidden -Wall -Wextra -pthread
> -fcf-protection=full -ftrivial-auto-var-init=pattern
> -fstack-protector-strong -fexceptions -MD -MT
> src/corelib/CMakeFiles/Core.dir/io/fork
> fd_qt.c.o -MF src/corelib/CMakeFiles/Core.dir/io/forkfd_qt.c.o.d -o
> src/corelib/CMakeFiles/Core.dir/io/forkfd_qt.c.o -c
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/forkfd_qt
> .c
> In file included from
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/forkfd_qt.c:16:
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd.c:162:39:
> warning: call to undeclared function 'ATOMIC_VAR_INIT'; ISO C99 and later
> do not support i
> mplicit function declarations [-Wimplicit-function-declaration]
>   162 | static ffd_atomic_int forkfd_status = FFD_ATOMIC_INIT(0);
>       |                                       ^
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd_c11.h:54:37:
> note: expanded from macro 'FFD_ATOMIC_INIT'
>    54 | #define FFD_ATOMIC_INIT(val)        ATOMIC_VAR_INIT(val)
>       |                                     ^
> In file included from
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/forkfd_qt.c:16:
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd.c:162:39:
> error: initializer element is not a compile-time constant
>   162 | static ffd_atomic_int forkfd_status = FFD_ATOMIC_INIT(0);
>       |                                       ^~~~~~~~~~~~~~~~~~
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd_c11.h:54:37:
> note: expanded from macro 'FFD_ATOMIC_INIT'
>    54 | #define FFD_ATOMIC_INIT(val)        ATOMIC_VAR_INIT(val)
>       |                                     ^~~~~~~~~~~~~~~~~~~~
> In file included from
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/forkfd_qt.c:16:
> In file included from
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd.c:930:
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd_freebsd.c:45:45:
> error: initializer element is not a compile-time constant
>    45 | static ffd_atomic_int system_forkfd_state = FFD_ATOMIC_INIT(1);
>       |                                             ^~~~~~~~~~~~~~~~~~
> /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.11.1/src/corelib/io/../../3rdparty/forkfd/forkfd_c11.h:54:37:
> note: expanded from macro 'FFD_ATOMIC_INIT'
>    54 | #define FFD_ATOMIC_INIT(val)        ATOMIC_VAR_INIT(val)
>       |                                     ^~~~~~~~~~~~~~~~~~~~
> 1 warning and 2 errors generated.
> ...
>
> Thanks,
>
> Warner Losh <imp@freebsd.org> escreveu (sábado, 20/06/2026 à(s) 01:25):
>
>> The branch main has been updated by imp:
>>
>> URL:
>> https://cgit.FreeBSD.org/src/commit/?id=28cecfe27964fdb67497800f5dcd5d3e1033727f
>>
>> commit 28cecfe27964fdb67497800f5dcd5d3e1033727f
>> Author:     Faraz Vahedi <kfv@kfv.io>
>> AuthorDate: 2026-05-01 14:34:44 +0000
>> Commit:     Warner Losh <imp@FreeBSD.org>
>> CommitDate: 2026-06-20 00:23:28 +0000
>>
>>     libc: Restrict ATOMIC_VAR_INIT for C23 conformance
>>
>>     Omit `ATOMIC_VAR_INIT` when targeting C23, where it has been removed.
>>     Retain it for earlier C standards and for C++ (as it still remains in
>>     C++23, albeit marked as deprecated since C17 and C++20.)
>>
>>     Also separate `atomic_init` definitions from `ATOMIC_VAR_INIT` to
>>     avoid coupling with a deprecated initialisation mechanism.
>>
>>     No functional change intended for `atomic_init`; this is purely a
>>     conformance and cleanup adjustment.
>>
>>     Signed-off-by: Faraz Vahedi <kfv@kfv.io>
>>     Reviewed by: imp
>>     Pull Request: https://github.com/freebsd/freebsd-src/pull/2185
>> ---
>>  sys/sys/stdatomic.h | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/sys/sys/stdatomic.h b/sys/sys/stdatomic.h
>> index c3f9b217519c..2d565ce991be 100644
>> --- a/sys/sys/stdatomic.h
>> +++ b/sys/sys/stdatomic.h
>> @@ -86,11 +86,17 @@
>>   * 7.17.2 Initialization.
>>   */
>>
>> +#if __ISO_C_VISIBLE < 2023 || defined(__cplusplus)
>>  #if defined(__CLANG_ATOMICS)
>>  #define        ATOMIC_VAR_INIT(value)          (value)
>> -#define        atomic_init(obj, value)         __c11_atomic_init(obj,
>> value)
>>  #else
>>  #define        ATOMIC_VAR_INIT(value)          { .__val = (value) }
>> +#endif
>> +#endif
>> +
>> +#if defined(__CLANG_ATOMICS)
>> +#define        atomic_init(obj, value)         __c11_atomic_init(obj,
>> value)
>> +#else
>>  #define        atomic_init(obj, value)         ((void)((obj)->__val =
>> (value)))
>>  #endif
>>
>>
>>
>
> --
> Nuno Teixeira
> FreeBSD UNIX:  <eduardo@FreeBSD.org>   Web:  https://FreeBSD.org
>


-- 
Nuno Teixeira
FreeBSD UNIX:  <eduardo@FreeBSD.org>   Web:  https://FreeBSD.org