From 2e38b2debae2d7abfacf60c01e18eb64a106cb5d Mon Sep 17 00:00:00 2001 From: PikachuHy Date: Fri, 26 Jun 2026 18:28:31 +0800 Subject: [PATCH 1/3] Support C++20 modules, GCC part Update gcc_deps_scanner_wrapper.sh.tpl to use a temporary file for dependency output and rename it after processing. Change file extension for gcc module artifacts from .pcm to .gcm in unix_cc_toolchain_config.bzl. --- cc/private/toolchain/gcc_deps_scanner_wrapper.sh.tpl | 4 +++- cc/private/toolchain/unix_cc_toolchain_config.bzl | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cc/private/toolchain/gcc_deps_scanner_wrapper.sh.tpl b/cc/private/toolchain/gcc_deps_scanner_wrapper.sh.tpl index 2c94f01f8..a43d23971 100644 --- a/cc/private/toolchain/gcc_deps_scanner_wrapper.sh.tpl +++ b/cc/private/toolchain/gcc_deps_scanner_wrapper.sh.tpl @@ -9,4 +9,6 @@ set -eu # Call the C++ compiler -%{cc} -E -x c++ -fmodules-ts -fdeps-file=out.tmp -fdeps-format=p1689r5 "$@" >"$DEPS_SCANNER_OUTPUT_FILE" +%{cc} -E -x c++ -fmodules-ts -fdeps-file="$DEPS_SCANNER_OUTPUT_FILE".tmp -fdeps-format=p1689r5 "$@" + +mv "$DEPS_SCANNER_OUTPUT_FILE".tmp "$DEPS_SCANNER_OUTPUT_FILE" diff --git a/cc/private/toolchain/unix_cc_toolchain_config.bzl b/cc/private/toolchain/unix_cc_toolchain_config.bzl index 1a4fcbe54..d2896f1e2 100644 --- a/cc/private/toolchain/unix_cc_toolchain_config.bzl +++ b/cc/private/toolchain/unix_cc_toolchain_config.bzl @@ -33,6 +33,13 @@ load( load("@rules_cc//cc/common:cc_common.bzl", "cc_common") load("@rules_cc//cc/toolchains:cc_toolchain_config_info.bzl", "CcToolchainConfigInfo") load("@rules_cc//cc/toolchains:feature_injection.bzl", "FeatureInfo", "convert_feature") +load("@bazel_features//private:util.bzl", "ge") + +def _cpp_module_extension(compiler): + """Returns the BMI/CMI file extension for cpp_module artifact_name_pattern.""" + if compiler == "gcc" and ge("9.0.0"): + return ".gcm" + return ".pcm" def layering_check_features(compiler, extra_flags_per_feature, is_macos): if compiler != "clang": @@ -1876,7 +1883,7 @@ def _impl(ctx): artifact_name_pattern( category_name = "cpp_module", prefix = "", - extension = ".pcm", + extension = _cpp_module_extension(ctx.attr.compiler), ), ] features = [ From 0a1a50ba9be35d65caa6603960497ccbaaa512cb Mon Sep 17 00:00:00 2001 From: PikachuHy Date: Mon, 29 Jun 2026 22:47:17 +0800 Subject: [PATCH 2/3] fix format --- cc/private/toolchain/unix_cc_toolchain_config.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cc/private/toolchain/unix_cc_toolchain_config.bzl b/cc/private/toolchain/unix_cc_toolchain_config.bzl index d2896f1e2..f9f9ae9ee 100644 --- a/cc/private/toolchain/unix_cc_toolchain_config.bzl +++ b/cc/private/toolchain/unix_cc_toolchain_config.bzl @@ -13,6 +13,7 @@ # limitations under the License. """A Starlark cc_toolchain configuration rule""" +load("@bazel_features//private:util.bzl", "ge") load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES") load( "@rules_cc//cc:cc_toolchain_config_lib.bzl", @@ -33,7 +34,6 @@ load( load("@rules_cc//cc/common:cc_common.bzl", "cc_common") load("@rules_cc//cc/toolchains:cc_toolchain_config_info.bzl", "CcToolchainConfigInfo") load("@rules_cc//cc/toolchains:feature_injection.bzl", "FeatureInfo", "convert_feature") -load("@bazel_features//private:util.bzl", "ge") def _cpp_module_extension(compiler): """Returns the BMI/CMI file extension for cpp_module artifact_name_pattern.""" From 730bd1c18ad2afeb7f747d3fe9d43b777befc511 Mon Sep 17 00:00:00 2001 From: Lily Gorsheneva Date: Fri, 10 Jul 2026 17:08:59 -0600 Subject: [PATCH 3/3] return load deleted by merge --- cc/private/toolchain/unix_cc_toolchain_config.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/cc/private/toolchain/unix_cc_toolchain_config.bzl b/cc/private/toolchain/unix_cc_toolchain_config.bzl index 93caa1817..bfceaeb71 100644 --- a/cc/private/toolchain/unix_cc_toolchain_config.bzl +++ b/cc/private/toolchain/unix_cc_toolchain_config.bzl @@ -15,6 +15,7 @@ #buildifier: disable=bzl-visibility load("@bazel_features//private:util.bzl", "ge") +load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES") load( "@rules_cc//cc:cc_toolchain_config_lib.bzl",