[flang-commits] [clang-tools-extra] [flang] [compiler-rt] [llvm] [clang] [Bazel][Clang Tidy] Include builtin headers with clang-tidy (PR #67626)
via flang-commits
flang-commits at lists.llvm.org
Fri Nov 3 16:26:37 PDT 2023
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.satkunarajah at 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/"
More information about the flang-commits
mailing list