brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.3 KiB · baad2cf Raw
425 lines · plain
1# This file is licensed under the Apache License v2.0 with LLVM Exceptions.2# See https://llvm.org/LICENSE.txt for license information.3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception4 5load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")6load("@bazel_skylib//rules:expand_template.bzl", "expand_template")7load("@bazel_skylib//rules:native_binary.bzl", "native_binary")8load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")9load("defs.bzl", "clang_tidy_library")10 11package(12    default_visibility = ["//visibility:public"],13    features = ["layering_check"],14)15 16licenses(["notice"])17 18# Include static analyzer checks in clang-tidy. Usage:19#   $ bazel build --@llvm-project//clang-tools-extra/clang-tidy:enable_static_analyzer=true //...20#   $ bazel build --@llvm-project//clang-tools-extra/clang-tidy:enable_static_analyzer=false //...21bool_flag(22    name = "enable_static_analyzer",23    build_setting_default = True,24)25 26bool_flag(27    name = "enable_custom_checks",28    build_setting_default = True,29)30 31config_setting(32    name = "static_analyzer_enabled",33    flag_values = {34        ":enable_static_analyzer": "true",35    },36)37 38config_setting(39    name = "custom_checks_enabled",40    flag_values = {41        ":enable_custom_checks": "true",42    },43)44 45expand_template(46    name = "config",47    out = "clang-tidy-config.h",48    substitutions =49        select({50            ":custom_checks_enabled": {51                "#cmakedefine01 CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS": "#define CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS 1",52            },53            "//conditions:default": {54                "#cmakedefine01 CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS": "#define CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS 0",55            },56        }) | select({57            ":static_analyzer_enabled": {58                "#cmakedefine01 CLANG_TIDY_ENABLE_STATIC_ANALYZER": "#define CLANG_TIDY_ENABLE_STATIC_ANALYZER 1",59            },60            "//conditions:default": {61                "#cmakedefine01 CLANG_TIDY_ENABLE_STATIC_ANALYZER": "#define CLANG_TIDY_ENABLE_STATIC_ANALYZER 0",62            },63        }),64    template = "clang-tidy-config.h.cmake",65    visibility = ["//visibility:private"],66)67 68cc_binary(69    name = "confusable_table_builder",70    srcs = ["misc/ConfusableTable/BuildConfusableTable.cpp"],71    visibility = ["//visibility:private"],72    deps = ["//llvm:Support"],73)74 75genrule(76    name = "confusables_inc",77    srcs = ["misc/ConfusableTable/confusables.txt"],78    outs = ["Confusables.inc"],79    cmd = "$(location :confusable_table_builder) $(SRCS) $(OUTS)",80    tools = [":confusable_table_builder"],81    visibility = ["//visibility:private"],82)83 84cc_library(85    name = "confusables",86    hdrs = [":confusables_inc"],87    include_prefix = ".",88)89 90clang_tidy_library(91    name = "lib",92    srcs = glob(["*.cpp"]) + [":config"],93    hdrs = glob(["*.h"]),94    includes = ["."],95    deps = [96        "//clang:analysis",97        "//clang:format",98        "//clang:frontend_rewrite",99        "//clang:rewrite",100        "//clang:sema",101        "//clang:serialization",102        "//clang:static_analyzer_checkers_gen",103        "//clang:tooling",104        "//clang:tooling_core",105    ] + select({106        ":static_analyzer_enabled": [107            "//clang:static_analyzer_core",108            "//clang:static_analyzer_frontend",109        ],110        "//conditions:default": [],111    }),112)113 114clang_tidy_library(115    name = "misc",116    deps = [117        ":confusables",118        ":lib",119        ":utils",120        "//clang:analysis",121        "//clang:format",122        "//clang:serialization",123        "//clang:tooling",124        "//clang:tooling_core",125        "//clang:tooling_inclusions",126        "//clang-tools-extra/include-cleaner:include_cleaner",127    ],128)129 130clang_tidy_library(131    name = "portability",132    deps = [133        ":lib",134        "//llvm:TargetParser",135    ],136)137 138clang_tidy_library(139    name = "utils",140    deps = [141        ":lib",142        "//clang:analysis",143        "//clang:sema",144        "//clang:tooling",145        "//clang:transformer",146    ],147)148 149clang_tidy_library(150    name = "readability",151    deps = [152        ":lib",153        ":utils",154        "//clang:analysis",155        "//clang:tooling",156    ],157)158 159clang_tidy_library(160    name = "google",161    deps = [162        ":lib",163        ":readability",164        ":utils",165    ],166)167 168clang_tidy_library(169    name = "fuchsia",170    deps = [171        ":google",172        ":lib",173        ":utils",174    ],175)176 177clang_tidy_library(178    name = "llvm",179    deps = [180        ":lib",181        ":readability",182        ":utils",183        "//clang:tooling",184        "//clang:transformer",185    ],186)187 188clang_tidy_library(189    name = "llvmlibc",190    deps = [191        ":lib",192        ":portability",193        ":utils",194    ],195)196 197clang_tidy_library(198    name = "abseil",199    deps = [200        ":lib",201        ":utils",202        "//clang:tooling",203        "//clang:transformer",204    ],205)206 207clang_tidy_library(208    name = "altera",209    deps = [":lib"],210)211 212clang_tidy_library(213    name = "android",214    deps = [215        ":lib",216        ":utils",217    ],218)219 220clang_tidy_library(221    name = "boost",222    deps = [223        ":lib",224        ":utils",225    ],226)227 228clang_tidy_library(229    name = "custom",230    deps = [231        ":lib",232        "//clang:ast_matchers_dynamic",233        "//clang-tools-extra/clang-query:lib",234    ],235)236 237clang_tidy_library(238    name = "concurrency",239    deps = [":lib"],240)241 242clang_tidy_library(243    name = "darwin",244    deps = [":lib"],245)246 247clang_tidy_library(248    name = "linuxkernel",249    deps = [":lib"],250)251 252clang_tidy_library(253    name = "modernize",254    deps = [255        ":lib",256        ":utils",257        "//clang:tooling",258    ],259)260 261clang_tidy_library(262    name = "mpi",263    deps = [264        ":lib",265        "//clang:static_analyzer_checkers",266        "//clang:static_analyzer_core",267        "//clang:static_analyzer_frontend",268        "//clang:tooling",269    ],270)271 272clang_tidy_library(273    name = "objc",274    deps = [275        ":lib",276        ":utils",277    ],278)279 280clang_tidy_library(281    name = "openmp",282    deps = [283        ":lib",284        ":utils",285    ],286)287 288clang_tidy_library(289    name = "zircon",290    deps = [291        ":fuchsia",292        ":lib",293        ":utils",294    ],295)296 297clang_tidy_library(298    name = "cppcoreguidelines",299    deps = [300        ":bugprone",301        ":lib",302        ":misc",303        ":modernize",304        ":performance",305        ":readability",306        ":utils",307        "//clang:analysis",308    ],309)310 311clang_tidy_library(312    name = "bugprone",313    deps = [314        ":lib",315        ":utils",316        "//clang:analysis",317        "//clang:sema",318        "//clang:tooling",319        "//clang:transformer",320    ],321)322 323clang_tidy_library(324    name = "performance",325    deps = [326        ":lib",327        ":utils",328        "//clang:analysis",329        "//clang:tooling",330    ],331)332 333clang_tidy_library(334    name = "cert",335    deps = [336        ":bugprone",337        ":concurrency",338        ":google",339        ":lib",340        ":misc",341        ":modernize",342        ":performance",343        ":readability",344        ":utils",345    ],346)347 348clang_tidy_library(349    name = "hicpp",350    deps = [351        ":bugprone",352        ":cppcoreguidelines",353        ":google",354        ":lib",355        ":misc",356        ":modernize",357        ":performance",358        ":readability",359    ],360)361 362clang_tidy_library(363    name = "plugin",364    deps = [":lib"],365)366 367CHECKS = [368    ":abseil",369    ":altera",370    ":android",371    ":boost",372    ":bugprone",373    ":cert",374    ":concurrency",375    ":cppcoreguidelines",376    ":darwin",377    ":fuchsia",378    ":google",379    ":hicpp",380    ":linuxkernel",381    ":llvm",382    ":llvmlibc",383    ":misc",384    ":modernize",385    ":objc",386    ":openmp",387    ":performance",388    ":portability",389    ":readability",390    ":zircon",391] + select({392    ":static_analyzer_enabled": [":mpi"],393    "//conditions:default": [],394}) + select({395    ":custom_checks_enabled": [":custom"],396    "//conditions:default": [],397})398 399cc_library(400    name = "tool",401    srcs = ["tool/ClangTidyMain.cpp"],402    hdrs = ["tool/ClangTidyMain.h"],403    deps = CHECKS + [404        ":lib",405        ":utils",406        "//clang:tooling",407        "//llvm:Support",408        "//llvm:TargetParser",409    ],410)411 412cc_binary(413    name = "clang-tidy",414    srcs = ["tool/ClangTidyToolMain.cpp"],415    stamp = 0,416    deps = [":tool"],417)418 419native_binary(420    name = "run-clang-tidy",421    src = "tool/run-clang-tidy.py",422    out = "run-clang-tidy",423    data = [":clang-tidy"],424)425