From ffc960ae3c04df03ea98deb263b03195acb3006e Mon Sep 17 00:00:00 2001 From: Rodrigo Reichert Date: Wed, 7 May 2025 14:22:41 +1000 Subject: [PATCH] Global C++ version --- cc/BUILD.bazel | 28 ++++++++++++++++++++++ cc/toolchains/llvm/cc_toolchain_config.bzl | 10 ++++---- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/cc/BUILD.bazel b/cc/BUILD.bazel index dfbbbbf..53bc98e 100644 --- a/cc/BUILD.bazel +++ b/cc/BUILD.bazel @@ -122,6 +122,34 @@ config_setting( visibility = ["//visibility:public"], ) +# Globally sets the default C++ version, even for third-party libraries +string_flag( + name = "global_cxx_standard", + build_setting_default = "", #inactive by default + visibility = ["//visibility:public"], +) + +# Enable with --@rules_swiftnav//:global_cxx_standard=17 +config_setting( + name = "global_cxx17", + flag_values = {":global_cxx_standard": "17"}, + visibility = ["//visibility:public"], +) + +# Enable with --@rules_swiftnav//:global_cxx_standard=20 +config_setting( + name = "global_cxx20", + flag_values = {":global_cxx_standard": "20"}, + visibility = ["//visibility:public"], +) + +# Enable with --@rules_swiftnav//:global_cxx_standard=23 +config_setting( + name = "global_cxx23", + flag_values = {":global_cxx_standard": "23"}, + visibility = ["//visibility:public"], +) + bool_flag( name = "enable_symbolizer", build_setting_default = False, diff --git a/cc/toolchains/llvm/cc_toolchain_config.bzl b/cc/toolchains/llvm/cc_toolchain_config.bzl index 8e5c937..9407103 100644 --- a/cc/toolchains/llvm/cc_toolchain_config.bzl +++ b/cc/toolchains/llvm/cc_toolchain_config.bzl @@ -77,10 +77,12 @@ def cc_toolchain_config( "-fdata-sections", ] - cxx_flags = [ - # The whole codebase should build with c++14 - "-std=c++14", - ] + cxx_flags = select({ + "//cc:global_cxx17": ["-std=c++17"], + "//cc:global_cxx20": ["-std=c++20"], + "//cc:global_cxx23": ["-std=c++23"], + "//conditions:default": ["-std=c++14"], + }) link_flags = [ "--target=" + target_system_name,