Skip to content

Commit ade32e6

Browse files
Googlercopybara-github
authored andcommitted
Add additional_compiler_inputs attribute for cc_library.
Also, ensure that location function expansion works with these inputs as expected. RELNOTES: Additional source inputs can now be specified for compilation in cc_library targets using the additional_compiler_inputs attribute, and these inputs can be used in the $(location) function. Fixes #18766. PiperOrigin-RevId: 545766084 Change-Id: I2d9f195d81a1358c696601873e60d3cad810a150
1 parent 8715e9a commit ade32e6

File tree

4 files changed

+114
-85
lines changed

4 files changed

+114
-85
lines changed

src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcLibraryRule.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env)
6363
attr("implementation_deps", LABEL_LIST)
6464
.allowedFileTypes(FileTypeSet.NO_FILE)
6565
.mandatoryProviders(CcInfo.PROVIDER.id()))
66+
/*<!-- #BLAZE_RULE(cc_library).ATTRIBUTE(additional_compiler_inputs) -->
67+
Any additional files you might want to pass to the compiler command line, such as sanitizer
68+
ignorelists, for example. Files specified here can then be used in copts with the
69+
$(location) function.
70+
<!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
71+
.add(attr("additional_compiler_inputs", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE))
6672
.advertiseStarlarkProvider(CcInfo.PROVIDER.id())
6773
.build();
6874
}

src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -908,16 +908,19 @@ def _expand_single_make_variable(ctx, token, additional_make_variable_substituti
908908

909909
def _expand_make_variables_for_copts(ctx, tokenization, unexpanded_tokens, additional_make_variable_substitutions):
910910
tokens = []
911+
targets = []
912+
for additional_compiler_input in getattr(ctx.attr, "additional_compiler_inputs", []):
913+
targets.append(additional_compiler_input)
911914
for token in unexpanded_tokens:
912915
if tokenization:
913-
expanded_token = _expand(ctx, token, additional_make_variable_substitutions)
916+
expanded_token = _expand(ctx, token, additional_make_variable_substitutions, targets = targets)
914917
_tokenize(tokens, expanded_token)
915918
else:
916919
exp = _expand_single_make_variable(ctx, token, additional_make_variable_substitutions)
917920
if exp != None:
918921
_tokenize(tokens, exp)
919922
else:
920-
tokens.append(_expand(ctx, token, additional_make_variable_substitutions))
923+
tokens.append(_expand(ctx, token, additional_make_variable_substitutions, targets = targets))
921924
return tokens
922925

923926
def _get_copts(ctx, feature_configuration, additional_make_variable_substitutions):

src/main/starlark/builtins_bzl/common/cc/cc_library.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ def _cc_library_impl(ctx):
7373
textual_hdrs = ctx.files.textual_hdrs,
7474
include_prefix = ctx.attr.include_prefix,
7575
strip_include_prefix = ctx.attr.strip_include_prefix,
76+
additional_inputs = ctx.files.additional_compiler_inputs,
7677
)
7778

7879
precompiled_objects = cc_common.create_compilation_outputs(
@@ -592,6 +593,10 @@ attrs = {
592593
"win_def_file": attr.label(allow_single_file = [".def"]),
593594
# buildifier: disable=attr-license
594595
"licenses": attr.license() if hasattr(attr, "license") else attr.string_list(),
596+
"additional_compiler_inputs": attr.label_list(
597+
allow_files = True,
598+
flags = ["ORDER_INDEPENDENT", "DIRECT_COMPILE_TIME_INPUT"],
599+
),
595600
"_stl": semantics.get_stl(),
596601
"_grep_includes": attr.label(
597602
allow_files = True,

0 commit comments

Comments
 (0)