]> git.ipfire.org Git - thirdparty/gcc.git/commit
Factor out thread model detection with new `GCC_AC_THREAD_MODEL` macro
authorJohn Ericson <git@johnericson.me>
Tue, 9 Dec 2025 22:06:48 +0000 (22:06 +0000)
committerJoseph Myers <josmyers@redhat.com>
Tue, 9 Dec 2025 22:06:48 +0000 (22:06 +0000)
commite5d853bbe9b05d6a00d98ad236f01937303e40c4
tree8a8ca5d6ade65cf24eda87c59d02bde75cd3b409
parent1dd44ebd5facfc96b072ce345c0431fd6f068111
Factor out thread model detection with new `GCC_AC_THREAD_MODEL` macro

This macro deduplicates the

    $CC -v 2>&1 | sed -n 's/^Thread model: //p'

check that was occurring in various runtime libs.

Additionally, as a bit of an Easter egg, this also allows overriding
what the compiler would return by setting the
`gcc_cv_target_thread_file` cache variable first. I admit that it is in
fact this Easter egg that led me to write the patch. The use-case for it
is for making multilib builds where the library sets do not all share
the same thread model easier. See also `THREAD_MODEL_SPEC` for more
about the varying thread models use-case.

Arguably one could could try to define on `THREAD_MODEL_SPEC` on more
platforms (besides e.g. AIX) but the ramifications of this are a bit
unclear. Setting `gcc_cv_target_thread_file` directly is a "low tech"
solution that will work for now for sure. Of course, since setting a
cache variable like this a hacky trick, I will not expect this to be at
all stable/guaranteed to work, going forward.

Thanks to Arsen who on IRC discussed these things with me, including in
particular making it a cache var not `--with-model` flag, to not
prematurely foster expectations that this is stable.

Suggested-by: Arsen Arsenović <arsen@aarsen.me>
config/ChangeLog:

* gthr.m4: Create new GCC_AC_THREAD_MODEL macro

libatomic/ChangeLog:

* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* configure.ac: Use GCC_AC_THREAD_MODEL instead of hand-rolled
* testsuite/Makefile.in: Regenerate.

libgcc/ChangeLog:

* configure: Regenerate.
* configure.ac: Use GCC_AC_THREAD_MODEL instead of hand-rolled

libphobos/ChangeLog:

* configure: Regenerate.
* m4/druntime/os.m4: Use AC_MSG_ERROR, not private as_fn_error

libstdc++-v3/ChangeLog:

* acinclude.m4: Use GCC_AC_THREAD_MODEL instead, via AC_REQUIRE
* configure: Regenerate.
12 files changed:
config/gthr.m4
libatomic/Makefile.in
libatomic/aclocal.m4
libatomic/configure
libatomic/configure.ac
libatomic/testsuite/Makefile.in
libgcc/configure
libgcc/configure.ac
libphobos/configure
libphobos/m4/druntime/os.m4
libstdc++-v3/acinclude.m4
libstdc++-v3/configure