Skip to content

Commit a954245

Browse files
槐枝erenon
槐枝
authored andcommitted
Add implementation_deps compilation_contexts.
1 parent cd2c6ef commit a954245

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

clang_tidy/clang_tidy.bzl

+21-16
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def _run_tidy(
88
additional_deps,
99
config,
1010
flags,
11-
compilation_context,
11+
compilation_contexts,
1212
infile,
1313
discriminator):
1414
inputs = depset(
@@ -17,7 +17,7 @@ def _run_tidy(
1717
additional_deps.files.to_list() +
1818
([exe.files_to_run.executable] if exe.files_to_run.executable else [])
1919
),
20-
transitive = [compilation_context.headers],
20+
transitive = [compilation_context.headers for compilation_context in compilation_contexts],
2121
)
2222

2323
args = ctx.actions.args()
@@ -48,23 +48,24 @@ def _run_tidy(
4848
# add args specified by the toolchain, on the command line and rule copts
4949
args.add_all(flags)
5050

51-
# add defines
52-
for define in compilation_context.defines.to_list():
53-
args.add("-D" + define)
51+
for compilation_context in compilation_contexts:
52+
# add defines
53+
for define in compilation_context.defines.to_list():
54+
args.add("-D" + define)
5455

55-
for define in compilation_context.local_defines.to_list():
56-
args.add("-D" + define)
56+
for define in compilation_context.local_defines.to_list():
57+
args.add("-D" + define)
5758

58-
# add includes
59-
for i in compilation_context.framework_includes.to_list():
60-
args.add("-F" + i)
59+
# add includes
60+
for i in compilation_context.framework_includes.to_list():
61+
args.add("-F" + i)
6162

62-
for i in compilation_context.includes.to_list():
63-
args.add("-I" + i)
63+
for i in compilation_context.includes.to_list():
64+
args.add("-I" + i)
6465

65-
args.add_all(compilation_context.quote_includes.to_list(), before_each = "-iquote")
66+
args.add_all(compilation_context.quote_includes.to_list(), before_each = "-iquote")
6667

67-
args.add_all(compilation_context.system_includes.to_list(), before_each = "-isystem")
68+
args.add_all(compilation_context.system_includes.to_list(), before_each = "-isystem")
6869

6970
args.add_all(compilation_context.external_includes.to_list(), before_each = "-isystem")
7071

@@ -153,7 +154,10 @@ def _clang_tidy_aspect_impl(target, ctx):
153154
exe = ctx.attr._clang_tidy_executable
154155
additional_deps = ctx.attr._clang_tidy_additional_deps
155156
config = ctx.attr._clang_tidy_config.files.to_list()[0]
156-
compilation_context = target[CcInfo].compilation_context
157+
158+
compilation_contexts = [target[CcInfo].compilation_context]
159+
if hasattr(ctx.rule.attr, "implementation_deps"):
160+
compilation_contexts.extend([implementation_dep[CcInfo].compilation_context for implementation_dep in ctx.rule.attr.implementation_deps])
157161

158162
rule_flags = ctx.rule.attr.copts if hasattr(ctx.rule.attr, "copts") else []
159163
c_flags = _safe_flags(_toolchain_flags(ctx, ACTION_NAMES.c_compile) + rule_flags) + ["-xc"]
@@ -169,7 +173,7 @@ def _clang_tidy_aspect_impl(target, ctx):
169173
additional_deps,
170174
config,
171175
c_flags if src.extension == "c" else cxx_flags,
172-
compilation_context,
176+
compilation_contexts,
173177
src,
174178
target.label.name,
175179
)
@@ -183,6 +187,7 @@ def _clang_tidy_aspect_impl(target, ctx):
183187
clang_tidy_aspect = aspect(
184188
implementation = _clang_tidy_aspect_impl,
185189
fragments = ["cpp"],
190+
attr_aspects = ["implementation_deps"],
186191
attrs = {
187192
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
188193
"_clang_tidy_wrapper": attr.label(default = Label("//clang_tidy:clang_tidy")),

0 commit comments

Comments
 (0)