From 4a62c693309887664cb733245d1c74f17a992942 Mon Sep 17 00:00:00 2001 From: Googler Date: Tue, 26 Mar 2024 22:49:54 -0700 Subject: [PATCH] Add additional actions that are not specified in action_names.bzl. BEGIN_PUBLIC Add additional actions that are not specified in action_names.bzl. These are mostly taken from https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionNames.java. These also include some actions that have explicitly been removed from CppActionNames, because those actions are still in use elsewhere (eg. https://github.com/bazelbuild/bazel/blob/9a333bc59e04e3c926121b11eb97547ba823c6ed/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java#L974). END_PUBLIC PiperOrigin-RevId: 619420983 Change-Id: I1f5eb1c0e43fb1563db9065ebc46f70bf8d06fc5 --- cc/toolchains/actions.bzl | 3 ++- cc/toolchains/actions/BUILD | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/cc/toolchains/actions.bzl b/cc/toolchains/actions.bzl index 772e460a..fc917876 100644 --- a/cc/toolchains/actions.bzl +++ b/cc/toolchains/actions.bzl @@ -50,7 +50,7 @@ cc_action_type( ) def _cc_action_type_set_impl(ctx): - if not ctx.attr.actions: + if not ctx.attr.actions and not ctx.attr.allow_empty: fail("Each cc_action_type_set must contain at least one action type.") return [ActionTypeSetInfo( label = ctx.label, @@ -77,6 +77,7 @@ cc_action_type_set( mandatory = True, doc = "A list of cc_action_type or cc_action_type_set", ), + "allow_empty": attr.bool(default = False), }, provides = [ActionTypeSetInfo], ) diff --git a/cc/toolchains/actions/BUILD b/cc/toolchains/actions/BUILD index 1286999c..e122f5c1 100644 --- a/cc/toolchains/actions/BUILD +++ b/cc/toolchains/actions/BUILD @@ -43,6 +43,11 @@ cc_action_type( action_name = ACTION_NAMES.cpp_module_codegen, ) +cc_action_type( + name = "cpp_header_analysis", + action_name = "c++-header-analysis", +) + cc_action_type( name = "cpp_header_parsing", action_name = ACTION_NAMES.cpp_header_parsing, @@ -113,6 +118,29 @@ cc_action_type( action_name = ACTION_NAMES.strip, ) +cc_action_type( + name = "objcopy_embed_data", + action_name = "objcopy_embed_data", +) + +# ld_embed_data is only available within google. +cc_action_type( + # # copybara-comment-this-out-please + name = "ld_embed_data_action", # # copybara-comment-this-out-please + action_name = "ld_embed_data", # # copybara-comment-this-out-please +) # # copybara-comment-this-out-please + +# To make things simple, both internal and external rules will refer to +# ld_embed_data, but externally it will evaluate to the empty set. +cc_action_type_set( + name = "ld_embed_data", + actions = [ + ":ld_embed_data_action", # # copybara-comment-this-out-please + ], + allow_empty = True, + visibility = ["//cc/toolchains:__subpackages__"], +) + cc_action_type( name = "objc_compile", action_name = ACTION_NAMES.objc_compile, @@ -133,6 +161,11 @@ cc_action_type( action_name = ACTION_NAMES.objcpp_compile, ) +cc_action_type( + name = "objcpp_executable", + action_name = "objc++-executable", +) + cc_action_type( name = "clif_match", action_name = ACTION_NAMES.clif_match, @@ -224,6 +257,7 @@ cc_action_type_set( ":linkstamp_compile", ":cc_flags_make_variable", ":cpp_module_codegen", + ":cpp_header_analysis", ":cpp_header_parsing", ":cpp_module_compile", ":assemble", @@ -238,10 +272,13 @@ cc_action_type_set( ":cpp_link_nodeps_dynamic_library", ":cpp_link_static_library", ":strip", + ":objcopy_embed_data", + ":ld_embed_data", ":objc_compile", ":objc_executable", ":objc_fully_link", ":objcpp_compile", + ":objcpp_executable", ":clif_match", ], )