Skip to content

Commit b1cc266

Browse files
committed
Allow treating /_virtual_includes/ and bazel-out/ as -isystem
1 parent d2aecc5 commit b1cc266

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

clang_tidy/clang_tidy.bzl

+28-5
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,33 @@ def _run_tidy(
5959
for i in compilation_context.framework_includes.to_list():
6060
args.add("-F" + i)
6161

62-
for i in compilation_context.includes.to_list():
63-
args.add("-I" + i)
64-
65-
args.add_all(compilation_context.quote_includes.to_list(), before_each = "-iquote")
62+
isystems = compilation_context.system_includes.to_list()
63+
64+
if ctx.attr._clang_tidy_virtual_includes_are_system_includes:
65+
# Include anything that uses include_prefix or strip_include_prefix as a system include
66+
include_dirs = []
67+
for include in compilation_context.includes.to_list():
68+
if "/_virtual_includes/" in include:
69+
isystems.append(include)
70+
else:
71+
include_dirs.append(include)
72+
else:
73+
include_dirs = compilation_context.includes.to_list()
74+
75+
if ctx.attr._clang_tidy_bazel_out_includes_are_system_includes:
76+
# Treat generated code in bazel-out/ as system include
77+
iquotes = []
78+
for quote_include in compilation_context.quote_includes.to_list():
79+
if quote_include.startswith("bazel-out/"):
80+
isystems.append(quote_include)
81+
else:
82+
iquotes.append(quote_include)
83+
else:
84+
iquotes = compilation_context.quote_includes.to_list()
6685

67-
args.add_all(compilation_context.system_includes.to_list(), before_each = "-isystem")
86+
args.add_all(include_dirs, before_each = "-I")
87+
args.add_all(iquotes, before_each = "-iquote")
88+
args.add_all(isystems, before_each = "-isystem")
6889

6990
ctx.actions.run(
7091
inputs = inputs,
@@ -184,6 +205,8 @@ clang_tidy_aspect = aspect(
184205
"_clang_tidy_executable": attr.label(default = Label("//:clang_tidy_executable")),
185206
"_clang_tidy_additional_deps": attr.label(default = Label("//:clang_tidy_additional_deps")),
186207
"_clang_tidy_config": attr.label(default = Label("//:clang_tidy_config")),
208+
"_clang_tidy_bazel_out_includes_are_system_includes": attr.bool(default = False),
209+
"_clang_tidy_virtual_includes_are_system_includes": attr.bool(default = False),
187210
},
188211
toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
189212
)

0 commit comments

Comments
 (0)