Răsfoiți Sursa

Refactor Bazel toolchain to use `rules_cc` action groups (#7086)

Rather than defining our own action groups, work to re-use the
`rules_cc` ones, as they are (much) more comprehensive. Also, completely
eliminate the `codegen` action group as it was not well used. For
example, `-march` flags and `-O` flags change the preprocessor macros
defined. There isn't a really great "codegen" heuristic, so just pass
those flags to all compiles which is simpler anyways.

I'm tempted to do the same with preprocessor actions, but maybe it makes
sense to have that one stay separate.

Assisted-by: Antigravity with Gemini
Chandler Carruth 2 săptămâni în urmă
părinte
comite
a1a9c02cdc

+ 3 - 5
bazel/cc_toolchains/carbon_cc_toolchain_config.bzl

@@ -5,7 +5,7 @@
 """Starlark cc_toolchain configuration rules for using the Carbon toolchain"""
 """Starlark cc_toolchain configuration rules for using the Carbon toolchain"""
 
 
 load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
 load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "action_config",
     "action_config",
@@ -29,8 +29,6 @@ load(
 load(
 load(
     "cc_toolchain_actions.bzl",
     "cc_toolchain_actions.bzl",
     "all_c_compile_actions",
     "all_c_compile_actions",
-    "all_cpp_compile_actions",
-    "all_link_actions",
 )
 )
 load("cc_toolchain_carbon_project_features.bzl", "carbon_project_features")
 load("cc_toolchain_carbon_project_features.bzl", "carbon_project_features")
 load("cc_toolchain_features.bzl", "clang_cc_toolchain_features")
 load("cc_toolchain_features.bzl", "clang_cc_toolchain_features")
@@ -57,7 +55,7 @@ def _make_action_configs(tools, runtimes_path = None):
             enabled = True,
             enabled = True,
             tools = [tools.clangpp],
             tools = [tools.clangpp],
         )
         )
-        for name in all_cpp_compile_actions
+        for name in ACTION_NAME_GROUPS.all_cpp_compile_actions
     ] + [
     ] + [
         action_config(
         action_config(
             action_name = name,
             action_name = name,
@@ -74,7 +72,7 @@ def _make_action_configs(tools, runtimes_path = None):
                 "--",
                 "--",
             ])])],
             ])])],
         )
         )
-        for name in all_link_actions
+        for name in ACTION_NAME_GROUPS.all_cc_link_actions
     ] + [
     ] + [
         action_config(
         action_config(
             action_name = name,
             action_name = name,

+ 9 - 35
bazel/cc_toolchains/cc_toolchain_actions.bzl

@@ -4,44 +4,18 @@
 
 
 """Useful sets of actions for defining `cc_toolchain_config` features."""
 """Useful sets of actions for defining `cc_toolchain_config` features."""
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 
 
+# all_c_compile_actions includes actions that compile C or assembly.
 all_c_compile_actions = [
 all_c_compile_actions = [
-    ACTION_NAMES.c_compile,
-    ACTION_NAMES.assemble,
-    ACTION_NAMES.preprocess_assemble,
+    x
+    for x in ACTION_NAME_GROUPS.all_cc_compile_actions
+    if x not in ACTION_NAME_GROUPS.all_cpp_compile_actions
 ]
 ]
 
 
-all_cpp_compile_actions = [
-    ACTION_NAMES.cpp_compile,
-    ACTION_NAMES.linkstamp_compile,
-    ACTION_NAMES.cpp_header_parsing,
-    ACTION_NAMES.cpp_module_compile,
-    ACTION_NAMES.cpp_module_codegen,
-]
-
-all_compile_actions = all_c_compile_actions + all_cpp_compile_actions
-
+# preprocessor_compile_actions includes actions that run the preprocessor.
 preprocessor_compile_actions = [
 preprocessor_compile_actions = [
-    ACTION_NAMES.c_compile,
-    ACTION_NAMES.cpp_compile,
-    ACTION_NAMES.linkstamp_compile,
-    ACTION_NAMES.preprocess_assemble,
-    ACTION_NAMES.cpp_header_parsing,
-    ACTION_NAMES.cpp_module_compile,
-]
-
-codegen_compile_actions = [
-    ACTION_NAMES.c_compile,
-    ACTION_NAMES.cpp_compile,
-    ACTION_NAMES.linkstamp_compile,
-    ACTION_NAMES.assemble,
-    ACTION_NAMES.preprocess_assemble,
-    ACTION_NAMES.cpp_module_codegen,
-]
-
-all_link_actions = [
-    ACTION_NAMES.cpp_link_executable,
-    ACTION_NAMES.cpp_link_dynamic_library,
-    ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+    x
+    for x in ACTION_NAME_GROUPS.all_cc_compile_actions
+    if x not in [ACTION_NAMES.assemble, ACTION_NAMES.cpp_module_codegen]
 ]
 ]

+ 5 - 10
bazel/cc_toolchains/cc_toolchain_base_features.bzl

@@ -4,7 +4,7 @@
 
 
 """Definitions used for the base features of a `cc_toolchain_config`."""
 """Definitions used for the base features of a `cc_toolchain_config`."""
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -12,11 +12,6 @@ load(
     "flag_group",
     "flag_group",
     "flag_set",
     "flag_set",
 )
 )
-load(
-    ":cc_toolchain_actions.bzl",
-    "all_compile_actions",
-    "all_link_actions",
-)
 
 
 # Declare features that are used by Bazel to model specific build modes.
 # Declare features that are used by Bazel to model specific build modes.
 dbg_feature = feature(name = "dbg")
 dbg_feature = feature(name = "dbg")
@@ -44,7 +39,7 @@ user_flags_feature = feature(
     enabled = True,
     enabled = True,
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(
             flag_groups = [flag_group(
                 expand_if_available = "user_compile_flags",
                 expand_if_available = "user_compile_flags",
                 flags = ["%{user_compile_flags}"],
                 flags = ["%{user_compile_flags}"],
@@ -52,7 +47,7 @@ user_flags_feature = feature(
             )],
             )],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [flag_group(
             flag_groups = [flag_group(
                 expand_if_available = "user_link_flags",
                 expand_if_available = "user_link_flags",
                 flags = ["%{user_link_flags}"],
                 flags = ["%{user_link_flags}"],
@@ -69,7 +64,7 @@ output_flags_feature = feature(
     enabled = True,
     enabled = True,
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [
             flag_groups = [
                 # For compile actions we have a single source and so put it at
                 # For compile actions we have a single source and so put it at
                 # the end next to the output.
                 # the end next to the output.
@@ -84,7 +79,7 @@ output_flags_feature = feature(
             ],
             ],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [flag_group(
             flag_groups = [flag_group(
                 expand_if_available = "output_execpath",
                 expand_if_available = "output_execpath",
                 flags = ["-o", "%{output_execpath}"],
                 flags = ["-o", "%{output_execpath}"],

+ 2 - 3
bazel/cc_toolchains/cc_toolchain_carbon_project_features.bzl

@@ -4,7 +4,7 @@
 
 
 """Defines `cc_toolchain_config` features specific to the Carbon project."""
 """Defines `cc_toolchain_config` features specific to the Carbon project."""
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -15,7 +15,6 @@ load(
 )
 )
 load(
 load(
     ":cc_toolchain_actions.bzl",
     ":cc_toolchain_actions.bzl",
-    "all_compile_actions",
     "preprocessor_compile_actions",
     "preprocessor_compile_actions",
 )
 )
 
 
@@ -39,7 +38,7 @@ def carbon_project_features(cache_key):
         enabled = True,
         enabled = True,
         flag_sets = [
         flag_sets = [
             flag_set(
             flag_set(
-                actions = all_compile_actions,
+                actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
                 flag_groups = [flag_group(flags = [
                 flag_groups = [flag_group(flags = [
                     # Don't warn on external code as we can't
                     # Don't warn on external code as we can't
                     # necessarily patch it easily. Note that these have
                     # necessarily patch it easily. Note that these have

+ 14 - 18
bazel/cc_toolchains/cc_toolchain_cpp_features.bzl

@@ -4,7 +4,7 @@
 
 
 """Definitions of general C++ `cc_toolchain_config` features."""
 """Definitions of general C++ `cc_toolchain_config` features."""
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -14,10 +14,6 @@ load(
 )
 )
 load(
 load(
     ":cc_toolchain_actions.bzl",
     ":cc_toolchain_actions.bzl",
-    "all_compile_actions",
-    "all_cpp_compile_actions",
-    "all_link_actions",
-    "codegen_compile_actions",
     "preprocessor_compile_actions",
     "preprocessor_compile_actions",
 )
 )
 
 
@@ -26,7 +22,7 @@ clang_feature = feature(
     enabled = True,
     enabled = True,
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_compile_actions + all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(flags = [
                 flag_group(flags = [
                     "-no-canonical-prefixes",
                     "-no-canonical-prefixes",
@@ -39,7 +35,7 @@ clang_feature = feature(
             ],
             ],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(flags = [
                 flag_group(flags = [
                     # Compile actions shouldn't link anything.
                     # Compile actions shouldn't link anything.
@@ -68,20 +64,20 @@ clang_feature = feature(
         ),
         ),
         flag_set(
         flag_set(
             # Flags specific to compiling C++ sources.
             # Flags specific to compiling C++ sources.
-            actions = all_cpp_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cpp_compile_actions,
             flag_groups = [flag_group(flags = [
             flag_groups = [flag_group(flags = [
                 "-std=c++20",
                 "-std=c++20",
             ])],
             ])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = codegen_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(flags = [
             flag_groups = [flag_group(flags = [
                 "-ffunction-sections",
                 "-ffunction-sections",
                 "-fdata-sections",
                 "-fdata-sections",
             ])],
             ])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = codegen_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(
             flag_groups = [flag_group(
                 expand_if_available = "pic",
                 expand_if_available = "pic",
                 flags = ["-fPIC"],
                 flags = ["-fPIC"],
@@ -129,7 +125,7 @@ clang_feature = feature(
             flag_groups = [flag_group(flags = ["-shared"])],
             flag_groups = [flag_group(flags = ["-shared"])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(
                 flag_group(
                     expand_if_available = "strip_debug_symbols",
                     expand_if_available = "strip_debug_symbols",
@@ -151,7 +147,7 @@ clang_feature = feature(
             ],
             ],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(
                 flag_group(
                     flags = [
                     flags = [
@@ -199,7 +195,7 @@ clang_warnings_feature = feature(
     name = "clang_warnings",
     name = "clang_warnings",
     enabled = True,
     enabled = True,
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             "-Werror",
             "-Werror",
             "-Wall",
             "-Wall",
@@ -263,7 +259,7 @@ def libcxx_feature(llvm_bindir = None, clang_bindir = None):
         enabled = True,
         enabled = True,
         flag_sets = [
         flag_sets = [
             flag_set(
             flag_set(
-                actions = all_cpp_compile_actions + all_link_actions,
+                actions = ACTION_NAME_GROUPS.all_cpp_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
                 flag_groups = [flag_group(flags = [
                 flag_groups = [flag_group(flags = [
                     "-stdlib=libc++",
                     "-stdlib=libc++",
                 ])],
                 ])],
@@ -273,17 +269,17 @@ def libcxx_feature(llvm_bindir = None, clang_bindir = None):
                 ],
                 ],
             ),
             ),
             flag_set(
             flag_set(
-                actions = all_cpp_compile_actions,
+                actions = ACTION_NAME_GROUPS.all_cpp_compile_actions,
                 flag_groups = [flag_group(flags = _libcpp_debug_flags)],
                 flag_groups = [flag_group(flags = _libcpp_debug_flags)],
                 with_features = [with_feature_set(not_features = ["opt"])],
                 with_features = [with_feature_set(not_features = ["opt"])],
             ),
             ),
             flag_set(
             flag_set(
-                actions = all_cpp_compile_actions,
+                actions = ACTION_NAME_GROUPS.all_cpp_compile_actions,
                 flag_groups = [flag_group(flags = _libcpp_release_flags)],
                 flag_groups = [flag_group(flags = _libcpp_release_flags)],
                 with_features = [with_feature_set(features = ["opt"])],
                 with_features = [with_feature_set(features = ["opt"])],
             ),
             ),
             flag_set(
             flag_set(
-                actions = all_link_actions,
+                actions = ACTION_NAME_GROUPS.all_cc_link_actions,
                 flag_groups = [flag_group(flags = [
                 flag_groups = [flag_group(flags = [
                     "-unwindlib=libunwind",
                     "-unwindlib=libunwind",
                 ])],
                 ])],
@@ -293,7 +289,7 @@ def libcxx_feature(llvm_bindir = None, clang_bindir = None):
                 ],
                 ],
             ),
             ),
             flag_set(
             flag_set(
-                actions = all_link_actions,
+                actions = ACTION_NAME_GROUPS.all_cc_link_actions,
                 flag_groups = [flag_group(flags = extra_link_flags + [
                 flag_groups = [flag_group(flags = extra_link_flags + [
                     # Force linking the static libc++abi archive here. This
                     # Force linking the static libc++abi archive here. This
                     # *should* be linked automatically, but not every release of
                     # *should* be linked automatically, but not every release of

+ 8 - 12
bazel/cc_toolchains/cc_toolchain_debugging.bzl

@@ -4,6 +4,7 @@
 
 
 """Definitions of debugging related features used in a `cc_toolchain_config`."""
 """Definitions of debugging related features used in a `cc_toolchain_config`."""
 
 
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -11,11 +12,6 @@ load(
     "flag_group",
     "flag_group",
     "flag_set",
     "flag_set",
 )
 )
-load(
-    ":cc_toolchain_actions.bzl",
-    "all_link_actions",
-    "codegen_compile_actions",
-)
 
 
 # Handle different levels and forms of debug info emission with individual
 # Handle different levels and forms of debug info emission with individual
 # features so that they can be ordered and the defaults can override the
 # features so that they can be ordered and the defaults can override the
@@ -24,7 +20,7 @@ minimal_debug_info_flags = feature(
     name = "minimal_debug_info_flags",
     name = "minimal_debug_info_flags",
     implies = ["debug_info_compression_flags"],
     implies = ["debug_info_compression_flags"],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [flag_group(flags = ["-gmlt"])],
         flag_groups = [flag_group(flags = ["-gmlt"])],
     )],
     )],
 )
 )
@@ -32,7 +28,7 @@ debug_info_flags = feature(
     name = "debug_info_flags",
     name = "debug_info_flags",
     implies = ["debug_info_compression_flags"],
     implies = ["debug_info_compression_flags"],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [
         flag_groups = [
             flag_group(flags = ["-g"]),
             flag_group(flags = ["-g"]),
             flag_group(
             flag_group(
@@ -45,7 +41,7 @@ debug_info_flags = feature(
 debug_info_compression_flags = feature(
 debug_info_compression_flags = feature(
     name = "debug_info_compression_flags",
     name = "debug_info_compression_flags",
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions + all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = ["-gz"])],
         flag_groups = [flag_group(flags = ["-gz"])],
     )],
     )],
 )
 )
@@ -60,7 +56,7 @@ lldb_flags = feature(
     requires = [feature_set(features = ["debug_info_flags"])],
     requires = [feature_set(features = ["debug_info_flags"])],
     provides = ["debugger_flags"],
     provides = ["debugger_flags"],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             "-glldb",
             "-glldb",
             "-gpubnames",
             "-gpubnames",
@@ -75,14 +71,14 @@ gdb_flags = feature(
     provides = ["debugger_flags"],
     provides = ["debugger_flags"],
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = codegen_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(flags = [
             flag_groups = [flag_group(flags = [
                 "-ggdb",
                 "-ggdb",
                 "-ggnu-pubnames",
                 "-ggnu-pubnames",
             ])],
             ])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [flag_group(flags = ["-Wl,--gdb-index"])],
             flag_groups = [flag_group(flags = ["-Wl,--gdb-index"])],
         ),
         ),
     ],
     ],
@@ -93,7 +89,7 @@ gdb_flags = feature(
 preserve_call_stacks = feature(
 preserve_call_stacks = feature(
     name = "preserve_call_stacks",
     name = "preserve_call_stacks",
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             # Ensure good backtraces by preserving frame pointers and
             # Ensure good backtraces by preserving frame pointers and
             # disabling tail call elimination.
             # disabling tail call elimination.

+ 3 - 7
bazel/cc_toolchains/cc_toolchain_linking.bzl

@@ -4,7 +4,7 @@
 
 
 """Definitions of linking related features used in a `cc_toolchain_config`."""
 """Definitions of linking related features used in a `cc_toolchain_config`."""
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -13,17 +13,13 @@ load(
     "variable_with_value",
     "variable_with_value",
     "with_feature_set",
     "with_feature_set",
 )
 )
-load(
-    ":cc_toolchain_actions.bzl",
-    "all_link_actions",
-)
 
 
 link_libraries_feature = feature(
 link_libraries_feature = feature(
     name = "link_libraries",
     name = "link_libraries",
     enabled = True,
     enabled = True,
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(
                 flag_group(
                     expand_if_available = "linkstamp_paths",
                     expand_if_available = "linkstamp_paths",
@@ -111,7 +107,7 @@ link_libraries_feature = feature(
             with_features = [with_feature_set(not_features = ["macos_target"])],
             with_features = [with_feature_set(not_features = ["macos_target"])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [
             flag_groups = [
                 flag_group(
                 flag_group(
                     expand_if_available = "linkstamp_paths",
                     expand_if_available = "linkstamp_paths",

+ 6 - 11
bazel/cc_toolchains/cc_toolchain_optimization.bzl

@@ -4,6 +4,7 @@
 
 
 """Definitions of optimization `cc_toolchain_config` features."""
 """Definitions of optimization `cc_toolchain_config` features."""
 
 
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -12,12 +13,6 @@ load(
     "flag_set",
     "flag_set",
     "with_feature_set",
     "with_feature_set",
 )
 )
-load(
-    ":cc_toolchain_actions.bzl",
-    "all_compile_actions",
-    "all_link_actions",
-    "codegen_compile_actions",
-)
 
 
 # Handle different levels of optimization with individual features so that
 # Handle different levels of optimization with individual features so that
 # they can be ordered and the defaults can override the minimal settings if
 # they can be ordered and the defaults can override the minimal settings if
@@ -25,7 +20,7 @@ load(
 minimal_optimization_flags = feature(
 minimal_optimization_flags = feature(
     name = "minimal_optimization_flags",
     name = "minimal_optimization_flags",
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = codegen_compile_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
         flag_groups = [flag_group(flags = ["-Og"])],
         flag_groups = [flag_group(flags = ["-Og"])],
     )],
     )],
 )
 )
@@ -35,11 +30,11 @@ default_optimization_flags = feature(
     requires = [feature_set(["opt"])],
     requires = [feature_set(["opt"])],
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(flags = ["-DNDEBUG"])],
             flag_groups = [flag_group(flags = ["-DNDEBUG"])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = codegen_compile_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions,
             flag_groups = [flag_group(flags = ["-O3"])],
             flag_groups = [flag_group(flags = ["-O3"])],
         ),
         ),
     ],
     ],
@@ -50,12 +45,12 @@ cpu_flags = feature(
     enabled = True,
     enabled = True,
     flag_sets = [
     flag_sets = [
         flag_set(
         flag_set(
-            actions = all_compile_actions + all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [flag_group(flags = ["-march=armv8.2-a"])],
             flag_groups = [flag_group(flags = ["-march=armv8.2-a"])],
             with_features = [with_feature_set(["aarch64_target"])],
             with_features = [with_feature_set(["aarch64_target"])],
         ),
         ),
         flag_set(
         flag_set(
-            actions = all_compile_actions + all_link_actions,
+            actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
             flag_groups = [flag_group(flags = ["-march=x86-64-v2"])],
             flag_groups = [flag_group(flags = ["-march=x86-64-v2"])],
             with_features = [with_feature_set(["x86_64_target"])],
             with_features = [with_feature_set(["x86_64_target"])],
         ),
         ),

+ 6 - 10
bazel/cc_toolchains/cc_toolchain_sanitizer_features.bzl

@@ -4,6 +4,7 @@
 
 
 """Definitions of sanitizer-related `cc_toolchain_config` features."""
 """Definitions of sanitizer-related `cc_toolchain_config` features."""
 
 
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "feature",
     "feature",
@@ -12,17 +13,12 @@ load(
     "flag_set",
     "flag_set",
     "with_feature_set",
     "with_feature_set",
 )
 )
-load(
-    ":cc_toolchain_actions.bzl",
-    "all_compile_actions",
-    "all_link_actions",
-)
 
 
 sanitizer_common_flags = feature(
 sanitizer_common_flags = feature(
     name = "sanitizer_common_flags",
     name = "sanitizer_common_flags",
     implies = ["minimal_debug_info_flags", "preserve_call_stacks"],
     implies = ["minimal_debug_info_flags", "preserve_call_stacks"],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = ["-static-libsan"])],
         flag_groups = [flag_group(flags = ["-static-libsan"])],
         with_features = [
         with_features = [
             with_feature_set(["linux_target"]),
             with_feature_set(["linux_target"]),
@@ -35,7 +31,7 @@ asan = feature(
     name = "asan",
     name = "asan",
     implies = ["sanitizer_common_flags"],
     implies = ["sanitizer_common_flags"],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_compile_actions + all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             "-fsanitize=address,undefined,nullability",
             "-fsanitize=address,undefined,nullability",
             "-fsanitize-address-use-after-scope",
             "-fsanitize-address-use-after-scope",
@@ -65,7 +61,7 @@ asan_min_size = feature(
     name = "asan_min_size",
     name = "asan_min_size",
     requires = [feature_set(["asan"])],
     requires = [feature_set(["asan"])],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_compile_actions + all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             # Force two UBSan checks that have especially large code size
             # Force two UBSan checks that have especially large code size
             # cost to use the minimal branch to a trapping instruction model
             # cost to use the minimal branch to a trapping instruction model
@@ -78,7 +74,7 @@ asan_min_size = feature(
 fuzzer = feature(
 fuzzer = feature(
     name = "fuzzer",
     name = "fuzzer",
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_compile_actions + all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             "-fsanitize=fuzzer-no-link",
             "-fsanitize=fuzzer-no-link",
         ])],
         ])],
@@ -90,7 +86,7 @@ sanitizer_workarounds = feature(
     enabled = True,
     enabled = True,
     requires = [feature_set(["asan"])],
     requires = [feature_set(["asan"])],
     flag_sets = [flag_set(
     flag_sets = [flag_set(
-        actions = all_compile_actions + all_link_actions,
+        actions = ACTION_NAME_GROUPS.all_cc_compile_actions + ACTION_NAME_GROUPS.all_cc_link_actions,
         flag_groups = [flag_group(flags = [
         flag_groups = [flag_group(flags = [
             # Likely due to being unable to use the static-linked and up-to-date
             # Likely due to being unable to use the static-linked and up-to-date
             # sanitizer runtimes, we have to disable this sanitizer on macOS.
             # sanitizer runtimes, we have to disable this sanitizer on macOS.

+ 3 - 5
bazel/cc_toolchains/cc_toolchain_tools.bzl

@@ -10,7 +10,7 @@ They presume an LLVM and Clang toolchain's tools, but support both a single
 installation and installations that split the LLVM tools and Clang tools apart.
 installation and installations that split the LLVM tools and Clang tools apart.
 """
 """
 
 
-load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES")
+load("@rules_cc//cc:action_names.bzl", "ACTION_NAMES", "ACTION_NAME_GROUPS")
 load(
 load(
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "@rules_cc//cc:cc_toolchain_config_lib.bzl",
     "action_config",
     "action_config",
@@ -20,8 +20,6 @@ load(
 load(
 load(
     ":cc_toolchain_actions.bzl",
     ":cc_toolchain_actions.bzl",
     "all_c_compile_actions",
     "all_c_compile_actions",
-    "all_cpp_compile_actions",
-    "all_link_actions",
 )
 )
 
 
 def llvm_tool_paths(llvm_bindir, clang_bindir = None):
 def llvm_tool_paths(llvm_bindir, clang_bindir = None):
@@ -56,14 +54,14 @@ def llvm_action_configs(llvm_bindir, clang_bindir = None):
             enabled = True,
             enabled = True,
             tools = [tool(path = clang_bindir + "/clang++")],
             tools = [tool(path = clang_bindir + "/clang++")],
         )
         )
-        for name in all_cpp_compile_actions
+        for name in ACTION_NAME_GROUPS.all_cpp_compile_actions
     ] + [
     ] + [
         action_config(
         action_config(
             action_name = name,
             action_name = name,
             enabled = True,
             enabled = True,
             tools = [tool(path = clang_bindir + "/clang++")],
             tools = [tool(path = clang_bindir + "/clang++")],
         )
         )
-        for name in all_link_actions
+        for name in ACTION_NAME_GROUPS.all_cc_link_actions
     ] + [
     ] + [
         action_config(
         action_config(
             action_name = name,
             action_name = name,