[PATCH 1/2] toplevel: do not make libstdc++ configure wait for libgomp

Sam James sam@gentoo.org
Tue Aug 11 15:24:01 GMT 2026


Kyrylo Tkachov <ktkachov@nvidia.com> writes:

>> On 11 Aug 2026, at 15:11, Sam James <sam@gentoo.org> wrote:
>> 
>> <ktkachov@nvidia.com> writes:
>> 
>>> From: Kyrylo Tkachov <ktkachov@nvidia.com>
>>> 
>>> libstdc++'s configure was made to depend on libgomp's configure in 2007, when
>>> GLIBCXX_ENABLE_PARALLEL decided whether to enable parallel mode by looking for
>>> a configured libgomp/omp.h on disk.  Since 2010 the test has instead grepped
>> 
>> Could you include commit refs for these? It's nice for us who go digging
>> fairly often (also makes it easier to verify this is right).
>
> Yeah, sure. Here it is with the references in the commit message.

Thank you!

I can't approve it but both patches LGTM.

> Thanks,
> Kyrill
>
>> 
>>> the TARGET_CONFIGDIRS string, which the top level passes in, so nothing on
>>> disk needs to exist by then.  The comment above the test still describes the
>>> old behaviour, which is what makes the edge look necessary.
>>> 
>>> Remove it.  The build time dependency, all-target-libstdc++-v3 on
>>> configure-target-libgomp, stays, since the parallel mode headers do include
>>> omp.h when they are compiled.
>>> 
>>> This shortens the chain in front of libstdc++, which is the last thing to
>>> finish in every bootstrap stage.
>>> 
>>> Bootstrapped on aarch64-none-linux-gnu.  Ok for trunk?
>>> 
>>> ChangeLog:
>>> 
>>> * Makefile.def (dependencies): Remove the configure-target-libstdc++-v3
>>> on configure-target-libgomp dependency.
>>> * Makefile.in: Regenerate.
>>> 
>>> Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
>>> ---
>>> Makefile.def |  1 -
>>> Makefile.in  | 10 ----------
>>> 2 files changed, 11 deletions(-)
>>> 
>>> diff --git a/Makefile.def b/Makefile.def
>>> index 549763de837..6098de2904d 100644
>>> --- a/Makefile.def
>>> +++ b/Makefile.def
>>> @@ -679,7 +679,6 @@ dependencies = { module=configure-target-libphobos; on=configure-target-zlib; };
>>> dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
>>> dependencies = { module=all-target-libphobos; on=all-target-zlib; };
>>> dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
>>> -dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
>>> dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
>>> dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
>>> dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; };
>>> diff --git a/Makefile.in b/Makefile.in
>>> index 5cca69c3f52..31eecec49ca 100644
>>> --- a/Makefile.in
>>> +++ b/Makefile.in
>>> @@ -69768,16 +69768,6 @@ all-stagetrain-target-libphobos: maybe-all-stagetrain-target-libatomic
>>> all-stagefeedback-target-libphobos: maybe-all-stagefeedback-target-libatomic
>>> all-stageautoprofile-target-libphobos: maybe-all-stageautoprofile-target-libatomic
>>> all-stageautofeedback-target-libphobos: maybe-all-stageautofeedback-target-libatomic
>>> -configure-target-libstdc++-v3: maybe-configure-target-libgomp
>>> -configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
>>> -configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
>>> -configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
>>> -configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp
>>> -configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
>>> -configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
>>> -configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
>>> -configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
>>> -configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
>>> configure-target-libsanitizer: maybe-all-target-libstdc++-v3
>>> configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3
>>> configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3

0001-toplevel-do-not-make-libstdc-configure-wait-for-libg.patch:
From 866caf83f8d5268fce33abbc725b71a68b6c18d2 Mon Sep 17 00:00:00 2001
From: Kyrylo Tkachov <ktkachov@nvidia.com>
Date: Tue, 11 Aug 2026 09:58:40 +0200
Subject: [PATCH] toplevel: do not make libstdc++ configure wait for libgomp

libstdc++'s configure was made to depend on libgomp's configure by
r0-83445-g6d3b5aea0bf4c9 ("configure.ac (TOPLEVEL_CONFIGURE_ARGUMENTS): Move
libgomp before libstdc++.", 2007-09-20), when GLIBCXX_ENABLE_PARALLEL decided
whether to enable parallel mode by looking for a configured libgomp/omp.h on
disk:

  if test -f $glibcxx_builddir/../libgomp/omp.h; then

r0-98141-gaae29963cf81dd ("PR libstdc++/36101, PR libstdc++/42813",
2010-01-22) replaced that with

  if echo " ${TARGET_CONFIGDIRS} " | grep " libgomp " > /dev/null 2>&1 ; then

so the test now reads a string the top level passes in, and nothing has to
exist on disk by then.  The comment above it still describes the old
behaviour, which is what makes the edge look necessary.

Remove it.  The build time dependency, all-target-libstdc++-v3 on
configure-target-libgomp, stays, since the parallel mode headers do include
omp.h when they are compiled.

This shortens the chain in front of libstdc++, which is the last thing to
finish in every bootstrap stage.

Bootstrapped on aarch64-none-linux-gnu.  Ok for trunk?

ChangeLog:

	* Makefile.def (dependencies): Remove the configure-target-libstdc++-v3
	on configure-target-libgomp dependency.
	* Makefile.in: Regenerate.

Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
---
 Makefile.def |  1 -
 Makefile.in  | 10 ----------
 2 files changed, 11 deletions(-)

diff --git a/Makefile.def b/Makefile.def
index 549763de837..6098de2904d 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -679,7 +679,6 @@ dependencies = { module=configure-target-libphobos; on=configure-target-zlib; };
 dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
 dependencies = { module=all-target-libphobos; on=all-target-zlib; };
 dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
-dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
 dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
 dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
 dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; };
diff --git a/Makefile.in b/Makefile.in
index 5cca69c3f52..31eecec49ca 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -69768,16 +69768,6 @@ all-stagetrain-target-libphobos: maybe-all-stagetrain-target-libatomic
 all-stagefeedback-target-libphobos: maybe-all-stagefeedback-target-libatomic
 all-stageautoprofile-target-libphobos: maybe-all-stageautoprofile-target-libatomic
 all-stageautofeedback-target-libphobos: maybe-all-stageautofeedback-target-libatomic
-configure-target-libstdc++-v3: maybe-configure-target-libgomp
-configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
-configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
-configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
-configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp
-configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
-configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
-configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
-configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
-configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
 configure-target-libsanitizer: maybe-all-target-libstdc++-v3
 configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3
 configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3
-- 
2.50.1 (Apple Git-155)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 418 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20260811/961cd6db/attachment.sig>


More information about the Libstdc++ mailing list