https://github.com/jathu updated https://github.com/llvm/llvm-project/pull/67626
>From 20d9ca99fbf11868a5816df217b2aad09e079fb6 Mon Sep 17 00:00:00 2001 From: jathu <jathu.satkunara...@gmail.com> Date: Wed, 27 Sep 2023 18:01:19 -0700 Subject: [PATCH] [clang-tidy][bazel] Include builtin headers with clang-tidy --- .../clang-tools-extra/BUILD.bazel | 21 +++++++++++++++ .../clang-tools-extra/clang-tidy/BUILD.bazel | 1 + .../clang-tools-extra/defs.bzl | 26 +++++++++++++++++++ .../llvm-project-overlay/clang/BUILD.bazel | 12 ++++++--- .../bazel/llvm-project-overlay/clang/defs.bzl | 5 ++++ 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 utils/bazel/llvm-project-overlay/clang-tools-extra/BUILD.bazel create mode 100644 utils/bazel/llvm-project-overlay/clang-tools-extra/defs.bzl create mode 100644 utils/bazel/llvm-project-overlay/clang/defs.bzl diff --git a/utils/bazel/llvm-project-overlay/clang-tools-extra/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang-tools-extra/BUILD.bazel new file mode 100644 index 000000000000000..d7559a376698583 --- /dev/null +++ b/utils/bazel/llvm-project-overlay/clang-tools-extra/BUILD.bazel @@ -0,0 +1,21 @@ +# This file is licensed under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +load("//:vars.bzl", "LLVM_VERSION_MAJOR") +load("//clang:defs.bzl", "BUILTIN_HEADERS_GEN_DIR") +load("defs.bzl", "symlink") + +package( + default_visibility = ["//visibility:public"], + features = ["layering_check"], +) + +licenses(["notice"]) + +symlink( + name = "builtin_headers", + srcs = ["//clang:builtin_headers_gen"], + destination = "lib/clang/{0}/include".format(LLVM_VERSION_MAJOR), + partition = BUILTIN_HEADERS_GEN_DIR, +) diff --git a/utils/bazel/llvm-project-overlay/clang-tools-extra/clang-tidy/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang-tools-extra/clang-tidy/BUILD.bazel index bbabc5397e98937..257c9e875d0133b 100644 --- a/utils/bazel/llvm-project-overlay/clang-tools-extra/clang-tidy/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/clang-tools-extra/clang-tidy/BUILD.bazel @@ -370,6 +370,7 @@ cc_library( cc_binary( name = "clang-tidy", srcs = ["tool/ClangTidyToolMain.cpp"], + data = ["//clang-tools-extra:builtin_headers"], stamp = 0, deps = [":tool"], ) diff --git a/utils/bazel/llvm-project-overlay/clang-tools-extra/defs.bzl b/utils/bazel/llvm-project-overlay/clang-tools-extra/defs.bzl new file mode 100644 index 000000000000000..fd992c052b0f055 --- /dev/null +++ b/utils/bazel/llvm-project-overlay/clang-tools-extra/defs.bzl @@ -0,0 +1,26 @@ +# This file is licensed under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +load("@bazel_skylib//lib:paths.bzl", "paths") + +def _symlink_impl(ctx): + copied_files = [] + for input_file in ctx.files.srcs: + (_, _, relative_filename) = input_file.path.rpartition(ctx.attr.partition) + output_file = ctx.actions.declare_file(paths.join(ctx.attr.destination, relative_filename)) + ctx.actions.symlink( + target_file = input_file, + output = output_file, + ) + copied_files.append(output_file) + return DefaultInfo(files = depset(copied_files)) + +symlink = rule( + implementation = _symlink_impl, + attrs = { + "destination": attr.string(mandatory = True), + "partition": attr.string(mandatory = True), + "srcs": attr.label_list(allow_files = True), + }, +) diff --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel index cac8ec120929a37..02f0f6076c6fddd 100644 --- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel @@ -14,6 +14,7 @@ load( "LLVM_VERSION_MINOR", "LLVM_VERSION_PATCH", ) +load("defs.bzl", "BUILTIN_HEADERS_GEN_DIR") package( default_visibility = ["//visibility:public"], @@ -1696,14 +1697,17 @@ builtin_headers = glob( genrule( name = "builtin_headers_gen", srcs = builtin_headers, - outs = [hdr.replace("lib/Headers/", "staging/include/") for hdr in builtin_headers], + outs = [ + header.replace("lib/Headers/", BUILTIN_HEADERS_GEN_DIR) + for header in builtin_headers + ], cmd = """ for src in $(SRCS); do - relsrc=$${src#*"$(WORKSPACE_ROOT)"/clang/lib/Headers} - target=$(@D)/staging/include/$$relsrc + relsrc=$${{src#*"$(WORKSPACE_ROOT)"/clang/lib/Headers}} + target=$(@D)/{resource_dir}$$relsrc mkdir -p $$(dirname $$target) cp $$src $$target - done""", + done""".format(resource_dir = BUILTIN_HEADERS_GEN_DIR), output_to_bindir = 1, toolchains = [ ":workspace_root", diff --git a/utils/bazel/llvm-project-overlay/clang/defs.bzl b/utils/bazel/llvm-project-overlay/clang/defs.bzl new file mode 100644 index 000000000000000..ecd2dec789a390d --- /dev/null +++ b/utils/bazel/llvm-project-overlay/clang/defs.bzl @@ -0,0 +1,5 @@ +# This file is licensed under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +BUILTIN_HEADERS_GEN_DIR = "staging/include/" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits