diff --git a/.github/workflows/clangd_tidy.yaml b/.github/workflows/clangd_tidy.yaml index a1424814612b1..aead6aa258b94 100644 --- a/.github/workflows/clangd_tidy.yaml +++ b/.github/workflows/clangd_tidy.yaml @@ -66,6 +66,10 @@ jobs: if: steps.filter.outputs.has_cpp == 'true' run: ./scripts/create_compdb.py + - name: Build deps for clangd-tidy + if: steps.filter.outputs.has_cpp == 'true' + run: ./scripts/run_bazel.py build //scripts:deps_for_clangd_tidy + - name: Install clangd-tidy if: steps.filter.outputs.has_cpp == 'true' run: pip install clangd-tidy==1.1.0.post2 diff --git a/scripts/BUILD b/scripts/BUILD index 42222e24cbb12..aa1956b69fc44 100644 --- a/scripts/BUILD +++ b/scripts/BUILD @@ -2,6 +2,7 @@ # Exceptions. See /LICENSE for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +load("@rules_cc//cc:cc_library.bzl", "cc_library") load("@rules_python//python:defs.bzl", "py_test") py_test( @@ -10,3 +11,17 @@ py_test( srcs = ["no_op_test.py"], main = "no_op_test.py", ) + +cc_library( + name = "deps_for_clangd_tidy", + srcs = ["deps_for_clangd_tidy.cpp"], + deps = [ + # `@boost_unordered` uses `strip_prefix`, which results in + # `_virtual_includes` being part of the `compile_commands.json`. To + # support tools like `clangd-tidy`, this is intended to generate that directory. + # + # For example: + # bazel-out//bin/external/+_repo_rules+boost_unordered/_virtual_includes/boost_unordered + "@boost_unordered", + ], +) diff --git a/scripts/deps_for_clangd_tidy.cpp b/scripts/deps_for_clangd_tidy.cpp new file mode 100644 index 0000000000000..bb4abb1ad1cf3 --- /dev/null +++ b/scripts/deps_for_clangd_tidy.cpp @@ -0,0 +1,8 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +// This file is only validating expected includes exist. See the BUILD target +// for more information. + +#include