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