xref: /llvm-project/utils/bazel/llvm-project-overlay/clang-tools-extra/include-cleaner/BUILD.bazel (revision 6640dac22b567e5f6c328ca56cf9bf43d45509e6)
1c5564a00SHaojian Wu# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
2c5564a00SHaojian Wu# See https://llvm.org/LICENSE.txt for license information.
3c5564a00SHaojian Wu# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4c5564a00SHaojian Wu
5*6640dac2SKeith Smileyload("@bazel_skylib//rules:expand_template.bzl", "expand_template")
6c5564a00SHaojian Wuload("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
7*6640dac2SKeith Smileyload("//llvm:lit_test.bzl", "lit_test", "package_path")
8c5564a00SHaojian Wu
9c5564a00SHaojian Wupackage(
10c5564a00SHaojian Wu    default_visibility = ["//visibility:public"],
11c5564a00SHaojian Wu    features = ["layering_check"],
12c5564a00SHaojian Wu)
13c5564a00SHaojian Wu
14c5564a00SHaojian Wulicenses(["notice"])
15c5564a00SHaojian Wu
16c5564a00SHaojian Wucc_library(
17c5564a00SHaojian Wu    name = "include_cleaner",
18c5564a00SHaojian Wu    srcs = glob([
19c5564a00SHaojian Wu        "lib/*.h",
20c5564a00SHaojian Wu        "lib/*.cpp",
21c5564a00SHaojian Wu    ]),
22c5564a00SHaojian Wu    hdrs = glob(["include/clang-include-cleaner/*.h"]),
23c5564a00SHaojian Wu    includes = ["include/"],
24c5564a00SHaojian Wu    deps = [
25c5564a00SHaojian Wu        "//clang:ast",
26c5564a00SHaojian Wu        "//clang:basic",
27c5564a00SHaojian Wu        "//clang:format",
28c5564a00SHaojian Wu        "//clang:frontend",
29c5564a00SHaojian Wu        "//clang:lex",
30c5564a00SHaojian Wu        "//clang:tooling_core",
31c5564a00SHaojian Wu        "//clang:tooling_inclusions",
32c5564a00SHaojian Wu        "//llvm:Support",
33c5564a00SHaojian Wu    ],
34c5564a00SHaojian Wu)
35c5564a00SHaojian Wu
36c5564a00SHaojian Wucc_library(
37c5564a00SHaojian Wu    name = "include_cleaner_internal",
38c5564a00SHaojian Wu    hdrs = glob(["lib/*.h"]),
39c5564a00SHaojian Wu    includes = ["lib/"],
40c5564a00SHaojian Wu    visibility = [":__subpackages__"],
41c5564a00SHaojian Wu    deps = [
42c5564a00SHaojian Wu        ":include_cleaner",
43c5564a00SHaojian Wu        "//clang:ast",
44c5564a00SHaojian Wu        "//clang:basic",
45c5564a00SHaojian Wu        "//clang:frontend",
46c5564a00SHaojian Wu        "//clang:lex",
47c5564a00SHaojian Wu        "//clang:tooling_inclusions",
48c5564a00SHaojian Wu        "//llvm:Support",
49c5564a00SHaojian Wu    ],
50c5564a00SHaojian Wu)
51c5564a00SHaojian Wu
52c5564a00SHaojian Wucc_binary(
53c5564a00SHaojian Wu    name = "clang-include-cleaner",
54c5564a00SHaojian Wu    srcs = glob([
55c5564a00SHaojian Wu        "tool/*.cpp",
56c5564a00SHaojian Wu    ]),
57c5564a00SHaojian Wu    deps = [
58c5564a00SHaojian Wu        ":include_cleaner",
59c5564a00SHaojian Wu        ":include_cleaner_internal",
60c5564a00SHaojian Wu        "//clang:frontend",
61c5564a00SHaojian Wu        "//clang:lex",
62c5564a00SHaojian Wu        "//clang:tooling",
63c5564a00SHaojian Wu        "//llvm:Support",
64c5564a00SHaojian Wu    ],
65c5564a00SHaojian Wu)
66*6640dac2SKeith Smiley
67*6640dac2SKeith Smileycc_test(
68*6640dac2SKeith Smiley    name = "unittests",
69*6640dac2SKeith Smiley    srcs = glob(["unittests/*.cpp"]),
70*6640dac2SKeith Smiley    deps = [
71*6640dac2SKeith Smiley        ":include_cleaner",
72*6640dac2SKeith Smiley        ":include_cleaner_internal",
73*6640dac2SKeith Smiley        "//clang:ast",
74*6640dac2SKeith Smiley        "//clang:basic",
75*6640dac2SKeith Smiley        "//clang:format",
76*6640dac2SKeith Smiley        "//clang:frontend",
77*6640dac2SKeith Smiley        "//clang:lex",
78*6640dac2SKeith Smiley        "//clang:serialization",
79*6640dac2SKeith Smiley        "//clang:testing",
80*6640dac2SKeith Smiley        "//clang:tooling",
81*6640dac2SKeith Smiley        "//clang:tooling_inclusions",
82*6640dac2SKeith Smiley        "//llvm:Support",
83*6640dac2SKeith Smiley        "//llvm:TestingAnnotations",
84*6640dac2SKeith Smiley        "//third-party/unittest:gmock",
85*6640dac2SKeith Smiley        "//third-party/unittest:gtest",
86*6640dac2SKeith Smiley    ],
87*6640dac2SKeith Smiley)
88*6640dac2SKeith Smiley
89*6640dac2SKeith SmileyLLVM_LIT_PATH_FUNCTION = " " + \
90*6640dac2SKeith Smiley                         "# Allow generated file to be relocatable.\n" + \
91*6640dac2SKeith Smiley                         "from pathlib import Path\n" + \
92*6640dac2SKeith Smiley                         "def path(p):\n" + \
93*6640dac2SKeith Smiley                         "    p = Path(p)\n" + \
94*6640dac2SKeith Smiley                         "    if p.exists: return str(p.resolve())\n" + \
95*6640dac2SKeith Smiley                         "    if not p: return ''\n" + \
96*6640dac2SKeith Smiley                         "    return str((Path(__file__).parent / p).resolve())\n"
97*6640dac2SKeith Smiley
98*6640dac2SKeith SmileyLIT_SITE_CFG_IN_HEADER = "# Autogenerated, do not edit." + LLVM_LIT_PATH_FUNCTION
99*6640dac2SKeith Smiley
100*6640dac2SKeith Smileyexpand_template(
101*6640dac2SKeith Smiley    name = "lit_site_cfg_py",
102*6640dac2SKeith Smiley    testonly = True,
103*6640dac2SKeith Smiley    out = "test/lit.site.cfg.py",
104*6640dac2SKeith Smiley    substitutions = {
105*6640dac2SKeith Smiley        "@CMAKE_CURRENT_BINARY_DIR@": package_path("//clang-tools-extra/include-cleaner:BUILD") + "/test",
106*6640dac2SKeith Smiley        "@CMAKE_CURRENT_SOURCE_DIR@": package_path("//clang-tools-extra/include-cleaner:BUILD") + "/test",
107*6640dac2SKeith Smiley        "@CURRENT_TOOLS_DIR@": package_path("//clang-tools-extra/include-cleaner:BUILD"),
108*6640dac2SKeith Smiley        "@LIT_SITE_CFG_IN_HEADER@": LIT_SITE_CFG_IN_HEADER,
109*6640dac2SKeith Smiley        "@LLVM_LIBS_DIR@": package_path("//llvm:BUILD"),
110*6640dac2SKeith Smiley        "@LLVM_LIT_TOOLS_DIR@": package_path("//llvm:BUILD"),
111*6640dac2SKeith Smiley        "@LLVM_TOOLS_DIR@": package_path("//llvm:BUILD"),
112*6640dac2SKeith Smiley        "@TARGET_TRIPLE@": "",
113*6640dac2SKeith Smiley        '"@Python3_EXECUTABLE@"': "sys.executable",
114*6640dac2SKeith Smiley    },
115*6640dac2SKeith Smiley    template = "test/lit.site.cfg.py.in",
116*6640dac2SKeith Smiley)
117*6640dac2SKeith Smiley
118*6640dac2SKeith Smiley[
119*6640dac2SKeith Smiley    lit_test(
120*6640dac2SKeith Smiley        name = "%s.test" % src,
121*6640dac2SKeith Smiley        srcs = [src],
122*6640dac2SKeith Smiley        data = glob(["test/Inputs/**/*"]) + [
123*6640dac2SKeith Smiley            "test/lit.cfg.py",
124*6640dac2SKeith Smiley            "test/lit.site.cfg.py",
125*6640dac2SKeith Smiley            ":clang-include-cleaner",
126*6640dac2SKeith Smiley            "//llvm:FileCheck",
127*6640dac2SKeith Smiley            "//llvm:count",
128*6640dac2SKeith Smiley            "//llvm:not",
129*6640dac2SKeith Smiley        ],
130*6640dac2SKeith Smiley        args = ["-svv"],
131*6640dac2SKeith Smiley    )
132*6640dac2SKeith Smiley    for src in glob(["test/*.cpp"])
133*6640dac2SKeith Smiley]
134