Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions clang_tidy/clang_tidy.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")

def _run_tidy(
ctx,
cc_toolchain,
wrapper,
exe,
gcc_install_dir,
Expand All @@ -14,7 +15,6 @@ def _run_tidy(
discriminator,
additional_files,
additional_inputs):
cc_toolchain = find_cpp_toolchain(ctx)
direct_inputs = (
[infile, config] +
additional_deps.files.to_list() +
Expand Down Expand Up @@ -115,8 +115,7 @@ def rule_sources(attr, include_headers):
else:
return [src for src in srcs if not src.basename.endswith(header_extensions)]

def toolchain_flags(ctx, action_name = ACTION_NAMES.cpp_compile):
cc_toolchain = find_cpp_toolchain(ctx)
def toolchain_flags(ctx, cc_toolchain, action_name = ACTION_NAMES.cpp_compile):
feature_configuration = cc_common.configure_features(
ctx = ctx,
cc_toolchain = cc_toolchain,
Expand Down Expand Up @@ -234,15 +233,17 @@ def _clang_tidy_aspect_impl(target, ctx):
{},
))

c_flags = safe_flags(toolchain_flags(ctx, ACTION_NAMES.c_compile) + rule_flags) + ["-xc"]
cxx_flags = safe_flags(toolchain_flags(ctx, ACTION_NAMES.cpp_compile) + rule_flags) + ["-xc++"]
cc_toolchain = find_cpp_toolchain(ctx)
c_flags = safe_flags(toolchain_flags(ctx, cc_toolchain, ACTION_NAMES.c_compile) + rule_flags) + ["-xc"]
cxx_flags = safe_flags(toolchain_flags(ctx, cc_toolchain, ACTION_NAMES.cpp_compile) + rule_flags) + ["-xc++"]

include_headers = "no-clang-tidy-headers" not in ctx.rule.attr.tags
srcs = rule_sources(ctx.rule.attr, include_headers)

outputs = [
_run_tidy(
ctx,
cc_toolchain,
wrapper,
exe,
gcc_install_dir,
Expand Down
31 changes: 23 additions & 8 deletions clang_tidy/clang_tidy_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ NOTE: This rule requires bash
"""

load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
load(":clang_tidy.bzl", "deps_flags", "is_c_translation_unit", "rule_sources", "safe_flags", "toolchain_flags")

def _quote(s):
Expand Down Expand Up @@ -45,8 +44,9 @@ def _clang_tidy_rule_impl(ctx):
directory = files[0].path.split("/include/")[0]
ccinfo_copts.extend(["-resource-dir", directory])

c_flags = safe_flags(toolchain_flags(ctx, ACTION_NAMES.c_compile) + rule_copts + rule_conlyopts) + ["-xc"]
cxx_flags = safe_flags(toolchain_flags(ctx, ACTION_NAMES.cpp_compile) + rule_copts + rule_cxxopts) + ["-xc++"]
cc_toolchain = ctx.exec_groups["test"].toolchains["@bazel_tools//tools/cpp:toolchain_type"].cc
c_flags = safe_flags(toolchain_flags(ctx, cc_toolchain, ACTION_NAMES.c_compile) + rule_copts + rule_conlyopts) + ["-xc"]
cxx_flags = safe_flags(toolchain_flags(ctx, cc_toolchain, ACTION_NAMES.cpp_compile) + rule_copts + rule_cxxopts) + ["-xc++"]

ctx.actions.write(
output = ctx.outputs.executable,
Expand Down Expand Up @@ -104,7 +104,7 @@ fi
[ctx.file.clang_tidy_config],
transitive = [
additional_files,
find_cpp_toolchain(ctx).all_files,
cc_toolchain.all_files,
ctx.attr.clang_tidy_additional_deps.files,
ctx.attr.clang_tidy_resource_dir.files,
],
Expand All @@ -120,9 +120,18 @@ clang_tidy_test = rule(
fragments = ["cpp"],
attrs = {
"deps": attr.label_list(providers = [CcInfo]),
"clang_tidy_executable": attr.label(default = Label("//:clang_tidy_executable")),
"clang_tidy_additional_deps": attr.label(default = Label("//:clang_tidy_additional_deps")),
"clang_tidy_resource_dir": attr.label(default = Label("//:clang_tidy_resource_dir")),
"clang_tidy_executable": attr.label(
default = Label("//:clang_tidy_executable"),
cfg = config.exec("test"),
),
"clang_tidy_additional_deps": attr.label(
default = Label("//:clang_tidy_additional_deps"),
cfg = config.exec("test"),
),
"clang_tidy_resource_dir": attr.label(
default = Label("//:clang_tidy_resource_dir"),
cfg = config.exec("test"),
),
"clang_tidy_config": attr.label(
default = Label("//:clang_tidy_config"),
allow_single_file = True,
Expand All @@ -134,5 +143,11 @@ clang_tidy_test = rule(
"conlyopts": attr.string_list(),
"cxxopts": attr.string_list(),
},
toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
exec_groups = {
"test": exec_group(
toolchains = [
"@bazel_tools//tools/cpp:toolchain_type",
],
),
},
)