diff --git a/cc/toolchains/actions.bzl b/cc/toolchains/actions.bzl index 772e460..fc91787 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 1286999..e122f5c 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", ], )