Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2224034/?format=api
{ "id": 2224034, "url": "http://patchwork.ozlabs.org/api/patches/2224034/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260416151959.177955-1-jwakely@redhat.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260416151959.177955-1-jwakely@redhat.com>", "list_archive_url": null, "date": "2026-04-16T14:21:49", "name": "[v2] libstdc++: Add module initialization functions to the library [PR124268]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "0e35b8c7a5d811bb4084b1956f71517a5f6f0cd1", "submitter": { "id": 48004, "url": "http://patchwork.ozlabs.org/api/people/48004/?format=api", "name": "Jonathan Wakely", "email": "jwakely@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260416151959.177955-1-jwakely@redhat.com/mbox/", "series": [ { "id": 500177, "url": "http://patchwork.ozlabs.org/api/series/500177/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=500177", "date": "2026-04-16T14:21:49", "name": "[v2] libstdc++: Add module initialization functions to the library [PR124268]", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/500177/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2224034/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2224034/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=ZnhHS8HR;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=ZnhHS8HR", "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com", "sourceware.org; spf=pass smtp.mailfrom=redhat.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxMCy61HVz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 01:21:02 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id CA4A74B9DB6E\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 15:21:00 +0000 (GMT)", "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 805AC4BB3BB9\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 15:20:07 +0000 (GMT)", "from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-481-YHwIaB-JPJyc0mwz2psQrg-1; Thu,\n 16 Apr 2026 11:20:03 -0400", "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id B3461195605E; Thu, 16 Apr 2026 15:20:02 +0000 (UTC)", "from zen.kayari.org (unknown [10.44.48.52])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 78D9A1955D88; Thu, 16 Apr 2026 15:20:01 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org CA4A74B9DB6E", "OpenDKIM Filter v2.11.0 sourceware.org 805AC4BB3BB9" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 805AC4BB3BB9", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 805AC4BB3BB9", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776352807; cv=none;\n b=vnEnAJh/v0kVLOQlVnUu0OiU2BKgc7ierD4HI4yf4ChSqNMRmZX/nKWsXHgg5bRrgJ6Jn1cxsvdFHkx1nFIDz5Dcgt5ttLXLs8BpUnpfA8qOKCYSxX0Kk8ISRb6AiEZHYqQD6BZ1V/zMwt2imOPTTER7SzH4YtYHpDUMowiVmCw=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776352807; c=relaxed/simple;\n bh=40rNAh8fzxif0nSyqOWcTzdlBjb8n0+UHWiElqhBMUk=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=OAFOvG2NCeYU7Kghu3ltWYuMsHY8IQiZGVrv79MLI1JUqxWddmnVczCKKXCA6qCEuYP5urLZwSDeEwOsR+8hDCkl9pdO4fJ/aZxw2bw8hfbsBsCU14sOXdBkHTBWvAZf6j7+ZEwE9J5zeS0NrvuILq+foKtNe4c9pokTE4ranbU=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776352807;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=7vG3Bo+Wo09JZmsYIvhqmGN0Vx9w0ebSvJs9NtxDOHU=;\n b=ZnhHS8HR/IiosAOPa2jjPnvzzSo1DZGhi1QYIoDGSiZ7dzGrxxDbXTJ24edrJ4a6JQ2ldi\n CHdINjN1+MUpmhqyeYc1Dq60NERpXA51jTgHMh1VmcV73UKkbkwQyoBld62QkU0BXYM1C1\n m8Nn7puyU+LfAH4qPoxwnCFs0yVxWLU=", "X-MC-Unique": "YHwIaB-JPJyc0mwz2psQrg-1", "X-Mimecast-MFC-AGG-ID": "YHwIaB-JPJyc0mwz2psQrg_1776352803", "From": "Jonathan Wakely <jwakely@redhat.com>", "To": "gcc-patches@gcc.gnu.org,\n\tlibstdc++@gcc.gnu.org", "Subject": "[PATCH v2] libstdc++: Add module initialization functions to the\n library [PR124268]", "Date": "Thu, 16 Apr 2026 15:21:49 +0100", "Message-ID": "<20260416151959.177955-1-jwakely@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "qtthQQjXtXLU7AVRbMY67KIv7DID0qKfkIgqX8ZvELM_1776352803", "X-Mimecast-Originator": "redhat.com", "Content-Type": "text/plain", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "This tries to ensure that the module init functions are present in\nlibstdc++.so and libstdc++.a, so that users of the std and std.compat\nmodules don't need to manually link to std.o and/or std.compat.o in\naddition to compiling the CMIs.\n\nThis also adds a clean-local target to remove the generated interface\nunits and manifest, and the gcm.cache directory for the CMIs.\n\nThis was previously committed and then reverted because it broke\nbootstrap on a few targets. Most of the reasons the module interface\nunits failed to compile have (we believe) now been addressed with G++\nchanges, although there's still a problem on amdgcn (PR124554). Due to\nthat problem, and any not yet known problems, this version of the patch\ntries to avoid breaking bootstrap again by allowing the modules to fail\nto compile. If compiling std.o or std.compat.o fails then an empty\ntranslation unit will be compiled and added to libstdc++.so instead.\n\nThis means that we will only export the module initialization functions\nfrom the library if the module can be compiled for the target. This\nseems fine because we don't need to initialize anything for a module\nthat cannot even be compiled! Fixing PR124554 and removing this kluge\nshould be done for GCC 17 in stage 1.\n\nlibstdc++-v3/ChangeLog:\n\n\tPR libstdc++/124268\n\t* config/abi/pre/gnu.ver: Export symbols.\n\t* src/Makefile.am: Add libmodulesconvenience.la to libstdc++\n\tlink.\n\t* src/Makefile.in: Regenerate.\n\t* src/c++23/Makefile.am: Create libmodulesconvenience.la\n\tand populate it with std.o and std.compat.o interface units,\n\twith empty fallback objects if compiling the interface units\n\tfails. Add clean-local target.\n\t* src/c++23/Makefile.in: Regenerate.\n---\n\nv2: Replace the module interface units with empty translation units if\nthey fail to compile.\n\nTested x86_64-linux, sparc-solaris, aarch64-linux.\n\nBootstrapped on xtensa-esp32-elf before Jakub's r16-8703 and this patch\nallows bootstrap to complete even though std.cc fails:\n\nstd.cc:4150:14: error: exporting 'typedef __gnuc_va_list va_list' that does not have external linkage\n 4150 | using std::va_list;\n | ^~~~~~~\n<built-in>: note: 'typedef struct __va_list_tag __va_list_tag' declared here with internal linkage\nCannot compile std module\nModule initialization function will be missing\n\n libstdc++-v3/config/abi/pre/gnu.ver | 4 ++\n libstdc++-v3/src/Makefile.am | 6 ++-\n libstdc++-v3/src/Makefile.in | 6 ++-\n libstdc++-v3/src/c++23/Makefile.am | 45 ++++++++++++++++-\n libstdc++-v3/src/c++23/Makefile.in | 76 +++++++++++++++++++++++------\n 5 files changed, 117 insertions(+), 20 deletions(-)", "diff": "diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver\nindex 71b3c175bbdf..bd4da6418295 100644\n--- a/libstdc++-v3/config/abi/pre/gnu.ver\n+++ b/libstdc++-v3/config/abi/pre/gnu.ver\n@@ -2617,6 +2617,10 @@ GLIBCXX_3.4.35 {\n _ZSt15__get_once_callv;\n #endif\n \n+ # Module inititialization symbols for std and std.compat modules.\n+ _ZGIW3std;\n+ _ZGIW3stdW6compat;\n+\n } GLIBCXX_3.4.34;\n \n # Symbols in the support library (libsupc++) have their own tag.\ndiff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am\nindex 55a8c88a0e12..35a497a15886 100644\n--- a/libstdc++-v3/src/Makefile.am\n+++ b/libstdc++-v3/src/Makefile.am\n@@ -145,7 +145,8 @@ libstdc___la_LIBADD = \\\n \t$(top_builddir)/src/c++98/libc++98convenience.la \\\n \t$(top_builddir)/src/c++11/libc++11convenience.la \\\n \t$(top_builddir)/src/c++17/libc++17convenience.la \\\n-\t$(top_builddir)/src/c++20/libc++20convenience.la\n+\t$(top_builddir)/src/c++20/libc++20convenience.la \\\n+\t$(top_builddir)/src/c++23/libmodulesconvenience.la\n \n libstdc___la_DEPENDENCIES = \\\n \t${version_dep} \\\n@@ -153,7 +154,8 @@ libstdc___la_DEPENDENCIES = \\\n \t$(top_builddir)/src/c++98/libc++98convenience.la \\\n \t$(top_builddir)/src/c++11/libc++11convenience.la \\\n \t$(top_builddir)/src/c++17/libc++17convenience.la \\\n-\t$(top_builddir)/src/c++20/libc++20convenience.la\n+\t$(top_builddir)/src/c++20/libc++20convenience.la \\\n+\t$(top_builddir)/src/c++23/libmodulesconvenience.la\n \n if ENABLE_DARWIN_AT_RPATH\n libstdc___darwin_rpath = -Wc,-nodefaultrpaths\ndiff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in\nindex f0ad019a71fd..811d0a5ce4a8 100644\n--- a/libstdc++-v3/src/Makefile.in\n+++ b/libstdc++-v3/src/Makefile.in\n@@ -555,7 +555,8 @@ libstdc___la_LIBADD = \\\n \t$(top_builddir)/src/c++98/libc++98convenience.la \\\n \t$(top_builddir)/src/c++11/libc++11convenience.la \\\n \t$(top_builddir)/src/c++17/libc++17convenience.la \\\n-\t$(top_builddir)/src/c++20/libc++20convenience.la\n+\t$(top_builddir)/src/c++20/libc++20convenience.la \\\n+\t$(top_builddir)/src/c++23/libmodulesconvenience.la\n \n libstdc___la_DEPENDENCIES = \\\n \t${version_dep} \\\n@@ -563,7 +564,8 @@ libstdc___la_DEPENDENCIES = \\\n \t$(top_builddir)/src/c++98/libc++98convenience.la \\\n \t$(top_builddir)/src/c++11/libc++11convenience.la \\\n \t$(top_builddir)/src/c++17/libc++17convenience.la \\\n-\t$(top_builddir)/src/c++20/libc++20convenience.la\n+\t$(top_builddir)/src/c++20/libc++20convenience.la \\\n+\t$(top_builddir)/src/c++23/libmodulesconvenience.la\n \n @ENABLE_DARWIN_AT_RPATH_TRUE@libstdc___darwin_rpath = \\\n @ENABLE_DARWIN_AT_RPATH_TRUE@\t-Wc,-nodefaultrpaths \\\ndiff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am\nindex b031ec69576c..5b2812abd228 100644\n--- a/libstdc++-v3/src/c++23/Makefile.am\n+++ b/libstdc++-v3/src/c++23/Makefile.am\n@@ -23,10 +23,13 @@\n include $(top_srcdir)/fragment.am\n \n # Convenience library for C++23 runtime.\n-noinst_LTLIBRARIES = libc++23convenience.la\n+# This libc++23convenience.la one isn't linked into libstdc++.la yet,\n+# so build an additional libmodulesconvenience.la which is linked in.\n+noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la\n \n-# Module std support. Not compiled for now, only installed.\n+# Module std support.\n # Let's install the interface units in the bits subdirectory.\n+# We also compile them and include them in libmodulesconvenience.la\n toolexeclib_DATA = libstdc++.modules.json\n includebitsdir = $(gxx_include_dir)/bits\n includebits_DATA = std.cc std.compat.cc\n@@ -59,6 +62,9 @@ stamp-modules-bits: $(includebits_DATA)\n \n all-local: stamp-module-manifest stamp-modules-bits\n \n+clean-local:\n+\trm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache\n+\n headers =\n \n if ENABLE_EXTERN_TEMPLATE\n@@ -80,12 +86,47 @@ else\n libc__23convenience_la_SOURCES =\n endif\n \n+libmodulesconvenience_la_SOURCES = std.cc std.compat.cc\n+\n # Use C++26 so that std::filebuf::native_handle() is available.\n print.lo: print.cc\n \t$(LTCXXCOMPILE) -std=gnu++26 -c $<\n print.o: print.cc\n \t$(CXXCOMPILE) -std=gnu++26 -c $<\n \n+MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \\\n+\t-Wno-unknown-pragmas\n+\n+# These go into libmodulesconvenience.la and are linked into libstdc++\n+std.lo: std.cc\n+\tif ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.o: std.cc\n+\tif ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.compat.lo: std.compat.cc std.lo\n+\tif ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std.compat module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.compat.o: std.compat.cc std.o\n+\tif ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std.compat module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+\n # AM_CXXFLAGS needs to be in each subdirectory so that it can be\n # modified in a per-library or per-sub-library way. Need to manually\n # set this option because CONFIG_CXXFLAGS has to be after\ndiff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in\nindex fd9110ab8ad2..75da9c008ab6 100644\n--- a/libstdc++-v3/src/c++23/Makefile.in\n+++ b/libstdc++-v3/src/c++23/Makefile.in\n@@ -133,6 +133,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)\n am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)\n am__v_lt_0 = --silent\n am__v_lt_1 = \n+libmodulesconvenience_la_LIBADD =\n+am_libmodulesconvenience_la_OBJECTS = std.lo std.compat.lo\n+libmodulesconvenience_la_OBJECTS = \\\n+\t$(am_libmodulesconvenience_la_OBJECTS)\n AM_V_P = $(am__v_P_@AM_V@)\n am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)\n am__v_P_0 = false\n@@ -159,7 +163,8 @@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)\n am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)\n am__v_CXXLD_0 = @echo \" CXXLD \" $@;\n am__v_CXXLD_1 = \n-SOURCES = $(libc__23convenience_la_SOURCES)\n+SOURCES = $(libc__23convenience_la_SOURCES) \\\n+\t$(libmodulesconvenience_la_SOURCES)\n am__can_run_installinfo = \\\n case $$AM_UPDATE_INFO_DIR in \\\n n|no|NO) false;; \\\n@@ -457,10 +462,13 @@ WARN_CXXFLAGS = \\\n AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)\n \n # Convenience library for C++23 runtime.\n-noinst_LTLIBRARIES = libc++23convenience.la\n+# This libc++23convenience.la one isn't linked into libstdc++.la yet,\n+# so build an additional libmodulesconvenience.la which is linked in.\n+noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la\n \n-# Module std support. Not compiled for now, only installed.\n+# Module std support.\n # Let's install the interface units in the bits subdirectory.\n+# We also compile them and include them in libmodulesconvenience.la\n toolexeclib_DATA = libstdc++.modules.json\n includebitsdir = $(gxx_include_dir)/bits\n includebits_DATA = std.cc std.compat.cc\n@@ -473,6 +481,10 @@ headers =\n sources = stacktrace.cc print.cc\n @GLIBCXX_HOSTED_FALSE@libc__23convenience_la_SOURCES = \n @GLIBCXX_HOSTED_TRUE@libc__23convenience_la_SOURCES = $(sources) $(inst_sources)\n+libmodulesconvenience_la_SOURCES = std.cc std.compat.cc\n+MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \\\n+\t-Wno-unknown-pragmas\n+\n \n # AM_CXXFLAGS needs to be in each subdirectory so that it can be\n # modified in a per-library or per-sub-library way. Need to manually\n@@ -586,6 +598,9 @@ clean-noinstLTLIBRARIES:\n libc++23convenience.la: $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_DEPENDENCIES) $(EXTRA_libc__23convenience_la_DEPENDENCIES) \n \t$(AM_V_CXXLD)$(CXXLINK) $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_LIBADD) $(LIBS)\n \n+libmodulesconvenience.la: $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_DEPENDENCIES) $(EXTRA_libmodulesconvenience_la_DEPENDENCIES) \n+\t$(AM_V_CXXLD)$(CXXLINK) $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_LIBADD) $(LIBS)\n+\n mostlyclean-compile:\n \t-rm -f *.$(OBJEXT)\n \n@@ -739,8 +754,8 @@ maintainer-clean-generic:\n \t@echo \"it deletes files that may require special tools to rebuild.\"\n clean: clean-am\n \n-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n-\tmostlyclean-am\n+clean-am: clean-generic clean-libtool clean-local \\\n+\tclean-noinstLTLIBRARIES mostlyclean-am\n \n distclean: distclean-am\n \t-rm -f Makefile\n@@ -809,15 +824,15 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA\n .MAKE: install-am install-strip\n \n .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \\\n-\tclean-generic clean-libtool clean-noinstLTLIBRARIES \\\n-\tcscopelist-am ctags ctags-am distclean distclean-compile \\\n-\tdistclean-generic distclean-libtool distclean-tags dvi dvi-am \\\n-\thtml html-am info info-am install install-am install-data \\\n-\tinstall-data-am install-dvi install-dvi-am install-exec \\\n-\tinstall-exec-am install-html install-html-am \\\n-\tinstall-includebitsDATA install-info install-info-am \\\n-\tinstall-man install-pdf install-pdf-am install-ps \\\n-\tinstall-ps-am install-strip install-toolexeclibDATA \\\n+\tclean-generic clean-libtool clean-local \\\n+\tclean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \\\n+\tdistclean-compile distclean-generic distclean-libtool \\\n+\tdistclean-tags dvi dvi-am html html-am info info-am install \\\n+\tinstall-am install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-includebitsDATA install-info \\\n+\tinstall-info-am install-man install-pdf install-pdf-am \\\n+\tinstall-ps install-ps-am install-strip install-toolexeclibDATA \\\n \tinstallcheck installcheck-am installdirs maintainer-clean \\\n \tmaintainer-clean-generic mostlyclean mostlyclean-compile \\\n \tmostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n@@ -855,6 +870,9 @@ stamp-modules-bits: $(includebits_DATA)\n \n all-local: stamp-module-manifest stamp-modules-bits\n \n+clean-local:\n+\trm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache\n+\n vpath % $(top_srcdir)/src/c++23\n \n # Use C++26 so that std::filebuf::native_handle() is available.\n@@ -863,6 +881,36 @@ print.lo: print.cc\n print.o: print.cc\n \t$(CXXCOMPILE) -std=gnu++26 -c $<\n \n+# These go into libmodulesconvenience.la and are linked into libstdc++\n+std.lo: std.cc\n+\tif ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.o: std.cc\n+\tif ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.compat.lo: std.compat.cc std.lo\n+\tif ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std.compat module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+std.compat.o: std.compat.cc std.o\n+\tif ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n+\t echo \"Cannot compile std.compat module\" >&2; \\\n+\t echo \"Module initialization function will be missing\" >&2; \\\n+\t echo > $<.tmp && mv $<.tmp $< && \\\n+\t $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n+\tfi\n+\n # Tell versions [3.59,3.63) of GNU make to not export all variables.\n # Otherwise a system limit (for SysV at least) may be exceeded.\n .NOEXPORT:\n", "prefixes": [ "v2" ] }