2025-04-08 11:13:07 -07:00

2423 lines
62 KiB
Python

# 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("@rules_python//python:defs.bzl", "py_binary")
load(
"//:vars.bzl",
"LLVM_VERSION_MAJOR",
"LLVM_VERSION_MINOR",
"LLVM_VERSION_PATCH",
"PACKAGE_VERSION",
)
load("//:workspace_root.bzl", "workspace_root")
load("//llvm:binary_alias.bzl", "binary_alias")
load("//llvm:cc_plugin_library.bzl", "cc_plugin_library")
load("//llvm:driver.bzl", "llvm_driver_cc_binary")
load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library")
package(
default_visibility = ["//visibility:public"],
features = ["layering_check"],
)
licenses(["notice"])
cc_binary(
name = "clang-tblgen",
srcs = glob([
"utils/TableGen/*.cpp",
"utils/TableGen/*.h",
]),
copts = [
"$(STACK_FRAME_UNLIMITED)",
],
stamp = 0,
deps = [
":support",
"//llvm:Support",
"//llvm:TableGen",
"//llvm:config",
],
)
gentbl_cc_library(
name = "diagnostic_defs_gen",
tbl_outs = [out for c in [
"AST",
"Analysis",
"Comment",
"Common",
"CrossTU",
"Driver",
"Frontend",
"InstallAPI",
"Lex",
"Parse",
"Refactoring",
"Sema",
"Serialization",
] for out in [
(
[
"-gen-clang-diags-defs",
"-clang-component=%s" % c,
],
"include/clang/Basic/Diagnostic%sKinds.inc" % c,
),
(
[
"-gen-clang-diags-enums",
"-clang-component=%s" % c,
],
"include/clang/Basic/Diagnostic%sEnums.inc" % c,
),
(
[
"-gen-clang-diags-compat-ids",
"-clang-component=%s" % c,
],
"include/clang/Basic/Diagnostic%sCompatIDs.inc" % c,
),
(
[
"-gen-clang-diags-iface",
"-clang-component=%s" % c,
],
"include/clang/Basic/Diagnostic%sInterface.inc" % c,
),
]] + [
(
["-gen-clang-diag-groups"],
"include/clang/Basic/DiagnosticGroups.inc",
),
(
["-gen-clang-diags-index-name"],
"include/clang/Basic/DiagnosticIndexName.inc",
),
(
["-gen-clang-diags-compat-ids"],
"include/clang/Basic/DiagnosticAllCompatIDs.inc",
),
],
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Diagnostic.td",
deps = [":BasicTdFiles"],
)
td_library(
name = "ArmTdFiles",
srcs = [
"include/clang/Basic/arm_immcheck_incl.td",
"include/clang/Basic/arm_mve_defs.td",
"include/clang/Basic/arm_neon_incl.td",
"include/clang/Basic/arm_sve_sme_incl.td",
],
includes = ["include"],
)
gentbl_cc_library(
name = "basic_arm_neon_inc_gen",
tbl_outs = {"include/clang/Basic/arm_neon.inc": ["-gen-arm-neon-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_neon.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_fp16_inc_gen",
tbl_outs = {"include/clang/Basic/arm_fp16.inc": ["-gen-arm-neon-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_fp16.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_mve_aliases_gen",
tbl_outs = {"include/clang/Basic/arm_mve_builtin_aliases.inc": ["-gen-arm-mve-builtin-aliases"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_mve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_builtins_gen",
tbl_outs = {"include/clang/Basic/arm_sve_builtins.inc": ["-gen-arm-sve-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_builtin_cg_gen",
tbl_outs = {"include/clang/Basic/arm_sve_builtin_cg.inc": ["-gen-arm-sve-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_immcheck_types_gen",
tbl_outs = {"include/clang/Basic/arm_immcheck_types.inc": ["-gen-arm-immcheck-types"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_typeflags_gen",
tbl_outs = {"include/clang/Basic/arm_sve_typeflags.inc": ["-gen-arm-sve-typeflags"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_sema_rangechecks_gen",
tbl_outs = {"include/clang/Basic/arm_sve_sema_rangechecks.inc": ["-gen-arm-sve-sema-rangechecks"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sve_streaming_attrs_gen",
tbl_outs = {"include/clang/Basic/arm_sve_streaming_attrs.inc": ["-gen-arm-sve-streaming-attrs"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sme_builtins_gen",
tbl_outs = {"include/clang/Basic/arm_sme_builtins.inc": ["-gen-arm-sme-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sme_builtin_cg_gen",
tbl_outs = {"include/clang/Basic/arm_sme_builtin_cg.inc": ["-gen-arm-sme-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sme_builtins_za_state_gen",
tbl_outs = {"include/clang/Basic/arm_sme_builtins_za_state.inc": ["-gen-arm-sme-builtin-za-state"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sme_sema_rangechecks_gen",
tbl_outs = {"include/clang/Basic/arm_sme_sema_rangechecks.inc": ["-gen-arm-sme-sema-rangechecks"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_sme_streaming_attrs_gen",
tbl_outs = {"include/clang/Basic/arm_sme_streaming_attrs.inc": ["-gen-arm-sme-streaming-attrs"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_mve_cg_gen",
tbl_outs = {"include/clang/Basic/arm_mve_builtin_cg.inc": ["-gen-arm-mve-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_mve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_mve_inc_gen",
tbl_outs = {"include/clang/Basic/arm_mve_builtins.inc": ["-gen-arm-mve-builtin-def"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_mve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_mve_sema_gen",
tbl_outs = {"include/clang/Basic/arm_mve_builtin_sema.inc": ["-gen-arm-mve-builtin-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_mve.td",
deps = [":ArmTdFiles"],
)
td_library(
name = "BuiltinsBaseTdFiles",
srcs = ["include/clang/Basic/BuiltinsBase.td"],
includes = ["include"],
)
td_library(
name = "BuiltinsRISCVXCVTdFiles",
srcs = ["include/clang/Basic/BuiltinsRISCVXCV.td"],
includes = ["include"],
)
td_library(
name = "BuiltinsX86BaseTdFiles",
srcs = ["include/clang/Basic/BuiltinsX86Base.td"],
includes = ["include"],
)
gentbl_cc_library(
name = "basic_builtins_bpf_gen",
tbl_outs = {"include/clang/Basic/BuiltinsBPF.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsBPF.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtins_hexagon_gen",
tbl_outs = {"include/clang/Basic/BuiltinsHexagon.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsHexagon.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtins_nvptx_gen",
tbl_outs = {"include/clang/Basic/BuiltinsNVPTX.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsNVPTX.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtins_directx_gen",
tbl_outs = {"include/clang/Basic/BuiltinsDirectX.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsDirectX.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtins_spirv_gen",
tbl_outs = {"include/clang/Basic/BuiltinsSPIRV.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsSPIRV.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtins_riscv_gen",
tbl_outs = {"include/clang/Basic/BuiltinsRISCV.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsRISCV.td",
deps = [
":BuiltinsBaseTdFiles",
":BuiltinsRISCVXCVTdFiles",
],
)
gentbl_cc_library(
name = "basic_builtins_x86_gen",
tbl_outs = {"include/clang/Basic/BuiltinsX86.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsX86.td",
deps = [
":BuiltinsBaseTdFiles",
":BuiltinsX86BaseTdFiles",
],
)
gentbl_cc_library(
name = "basic_builtins_x86_64_gen",
tbl_outs = {"include/clang/Basic/BuiltinsX86_64.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinsX86_64.td",
deps = [
":BuiltinsBaseTdFiles",
":BuiltinsX86BaseTdFiles",
],
)
gentbl_cc_library(
name = "basic_builtins_gen",
tbl_outs = {"include/clang/Basic/Builtins.inc": ["-gen-clang-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Builtins.td",
deps = [":BuiltinsBaseTdFiles"],
)
gentbl_cc_library(
name = "basic_builtin_templates_gen",
tbl_outs = {"include/clang/Basic/BuiltinTemplates.inc": ["-gen-clang-builtin-templates"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/BuiltinTemplates.td",
deps = [
":BuiltinsBaseTdFiles",
],
)
td_library(
name = "RiscvTdFiles",
srcs = [
"include/clang/Basic/riscv_vector_common.td",
],
includes = ["include"],
)
gentbl_cc_library(
name = "basic_riscv_vector_builtins_gen",
tbl_outs = {"include/clang/Basic/riscv_vector_builtins.inc": ["-gen-riscv-vector-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_riscv_vector_builtin_cg_gen",
tbl_outs = {"include/clang/Basic/riscv_vector_builtin_cg.inc": ["-gen-riscv-vector-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_riscv_vector_builtin_sema_gen",
tbl_outs = {"include/clang/Basic/riscv_vector_builtin_sema.inc": ["-gen-riscv-vector-builtin-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_riscv_sifive_vector_builtins_gen",
tbl_outs = {"include/clang/Basic/riscv_sifive_vector_builtins.inc": ["-gen-riscv-sifive-vector-builtins"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_sifive_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_riscv_sifive_vector_builtin_cg_gen",
tbl_outs = {"include/clang/Basic/riscv_sifive_vector_builtin_cg.inc": ["-gen-riscv-sifive-vector-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_sifive_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_riscv_sifive_vector_builtin_sema_gen",
tbl_outs = {"include/clang/Basic/riscv_sifive_vector_builtin_sema.inc": ["-gen-riscv-sifive-vector-builtin-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_sifive_vector.td",
deps = [":RiscvTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_cde_gen",
tbl_outs = {"include/clang/Basic/arm_cde_builtins.inc": ["-gen-arm-cde-builtin-def"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_cde.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_cde_aliases_gen",
tbl_outs = {"include/clang/Basic/arm_cde_builtin_aliases.inc": ["-gen-arm-cde-builtin-aliases"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_cde.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_cde_cg_gen",
tbl_outs = {"include/clang/Basic/arm_cde_builtin_cg.inc": ["-gen-arm-cde-builtin-codegen"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_cde.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "basic_arm_cde_sema_gen",
tbl_outs = {"include/clang/Basic/arm_cde_builtin_sema.inc": ["-gen-arm-cde-builtin-sema"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_cde.td",
deps = [":ArmTdFiles"],
)
td_library(
name = "ASTNodeTdFiles",
srcs = ["include/clang/Basic/ASTNode.td"],
includes = ["include"],
)
td_library(
name = "BasicCoreTdFiles",
srcs = [
"include/clang/Basic/AttrDocs.td",
"include/clang/Basic/DeclNodes.td",
"include/clang/Basic/StmtNodes.td",
],
includes = ["include"],
deps = [":ASTNodeTdFiles"],
)
td_library(
name = "BasicTdFiles",
srcs = glob(["include/clang/Basic/*.td"]),
includes = ["include"],
)
gentbl_cc_library(
name = "basic_attr_gen",
tbl_outs = {
"include/clang/Basic/AttrHasAttributeImpl.inc": ["-gen-clang-attr-has-attribute-impl"],
"include/clang/Basic/AttrList.inc": ["-gen-clang-attr-list"],
"include/clang/Basic/AttrParsedAttrList.inc": ["-gen-clang-attr-parsed-attr-list"],
"include/clang/Basic/AttrSubMatchRulesList.inc": ["-gen-clang-attr-subject-match-rule-list"],
"include/clang/Basic/RegularKeywordAttrInfo.inc": ["-gen-clang-regular-keyword-attr-info"],
"include/clang/Basic/CXX11AttributeInfo.inc": ["-gen-cxx11-attribute-info"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
gentbl_cc_library(
name = "libsema_openclbuiltins_inc_gen",
strip_include_prefix = "lib/Sema",
tbl_outs = {"lib/Sema/OpenCLBuiltins.inc": ["-gen-clang-opencl-builtins"]},
tblgen = ":clang-tblgen",
td_file = "lib/Sema/OpenCLBuiltins.td",
)
# Table definition files can be used for documentation:
filegroup(
name = "all_table_defs",
srcs = glob(["include/**/*.td"]),
)
exports_files(
glob(["include/**/*.td"]),
)
genrule(
name = "basic_version_gen",
outs = ["include/clang/Basic/Version.inc"],
cmd = (
"echo '#define CLANG_VERSION {vers}' >> $@\n" +
"echo '#define CLANG_VERSION_MAJOR {major}' >> $@\n" +
"echo '#define CLANG_VERSION_MAJOR_STRING \"{major}\"' >> $@\n" +
"echo '#define CLANG_VERSION_MINOR {minor}' >> $@\n" +
"echo '#define CLANG_VERSION_PATCHLEVEL {patch}' >> $@\n" +
"echo '#define MAX_CLANG_ABI_COMPAT_VERSION {major}' >> $@\n" +
"echo '#define CLANG_VERSION_STRING \"{vers}\"' >> $@\n"
).format(
major = LLVM_VERSION_MAJOR,
minor = LLVM_VERSION_MINOR,
patch = LLVM_VERSION_PATCH,
vers = PACKAGE_VERSION,
),
)
cc_library(
name = "config",
hdrs = [
"include/clang/Basic/Version.inc",
"include/clang/Config/config.h",
],
includes = ["include"],
deps = [
# We rely on the LLVM config library to provide configuration defines.
"//llvm:config",
],
)
# TODO: This should get replaced with something that actually generates the
# correct version number.
genrule(
name = "vcs_version_gen",
# This should be under lib/Basic, but because of how the include paths
# are passed through bazel, it's easier to drop generated files next to
# the other includes.
outs = ["include/VCSVersion.inc"],
cmd = "echo '#undef CLANG_REVISION' > $@",
)
py_binary(
name = "bundle_resources",
srcs = [
"utils/bundle_resources.py",
],
main = "utils/bundle_resources.py",
)
cc_library(
name = "basic",
srcs = [
"include/VCSVersion.inc",
"include/clang/Basic/Version.inc",
] + glob([
"lib/Basic/*.cpp",
"lib/Basic/*.h",
"lib/Basic/Targets/*.cpp",
"lib/Basic/Targets/*.h",
]),
hdrs = glob([
"include/clang/Basic/*.h",
]),
copts = [
"-DHAVE_VCS_VERSION_INC",
"$(STACK_FRAME_UNLIMITED)",
"-I$(WORKSPACE_ROOT)/clang/lib/Basic",
],
includes = ["include"],
textual_hdrs = [
# keep sorted
"include/clang/Basic/AllDiagnosticKinds.inc",
"include/clang/Basic/AttrHasAttributeImpl.inc",
"include/clang/Basic/AttrList.inc",
"include/clang/Basic/AttrSubMatchRulesList.inc",
"include/clang/Basic/BuiltinTemplates.inc",
"include/clang/Basic/DiagnosticASTKinds.inc",
"include/clang/Basic/DiagnosticAnalysisKinds.inc",
"include/clang/Basic/DiagnosticCommentKinds.inc",
"include/clang/Basic/DiagnosticCommonKinds.inc",
"include/clang/Basic/DiagnosticCrossTUKinds.inc",
"include/clang/Basic/DiagnosticDriverKinds.inc",
"include/clang/Basic/DiagnosticFrontendKinds.inc",
"include/clang/Basic/DiagnosticGroups.inc",
"include/clang/Basic/DiagnosticIndexName.inc",
"include/clang/Basic/DiagnosticInstallAPIKinds.inc",
"include/clang/Basic/DiagnosticLexKinds.inc",
"include/clang/Basic/DiagnosticParseKinds.inc",
"include/clang/Basic/DiagnosticRefactoringKinds.inc",
"include/clang/Basic/DiagnosticSemaKinds.inc",
"include/clang/Basic/DiagnosticSerializationKinds.inc",
"include/clang/Basic/arm_fp16.inc",
"include/clang/Basic/arm_immcheck_types.inc",
"include/clang/Basic/arm_mve_builtin_aliases.inc",
"include/clang/Basic/arm_mve_builtin_cg.inc",
"include/clang/Basic/arm_mve_builtin_sema.inc",
"include/clang/Basic/arm_mve_builtins.inc",
"include/clang/Basic/arm_neon.inc",
"include/clang/Basic/arm_sme_builtin_cg.inc",
"include/clang/Basic/arm_sme_builtins.inc",
] + glob([
"include/clang/Basic/*.def",
]),
toolchains = [":workspace_root"],
deps = [
":basic_arm_cde_gen",
":basic_arm_fp16_inc_gen",
":basic_arm_mve_aliases_gen",
":basic_arm_mve_cg_gen",
":basic_arm_mve_inc_gen",
":basic_arm_mve_sema_gen",
":basic_arm_neon_inc_gen",
":basic_arm_sme_builtin_cg_gen",
":basic_arm_sme_builtins_gen",
":basic_arm_sve_builtins_gen",
":basic_arm_sve_typeflags_gen",
":basic_attr_gen",
":basic_builtin_templates_gen",
":basic_builtins_bpf_gen",
":basic_builtins_directx_gen",
":basic_builtins_gen",
":basic_builtins_hexagon_gen",
":basic_builtins_nvptx_gen",
":basic_builtins_riscv_gen",
":basic_builtins_spirv_gen",
":basic_builtins_x86_64_gen",
":basic_builtins_x86_gen",
":basic_riscv_sifive_vector_builtins_gen",
":basic_riscv_vector_builtin_cg_gen",
":basic_riscv_vector_builtins_gen",
":config",
":diagnostic_defs_gen",
":sema_attr_gen",
":support",
"//llvm:Core",
"//llvm:FrontendDebug",
"//llvm:FrontendDriver",
"//llvm:FrontendOpenMP",
"//llvm:Instrumentation",
"//llvm:MC",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:config",
],
)
cc_library(
name = "lex",
srcs = glob([
"lib/Lex/*.cpp",
"lib/Lex/*.h",
]),
hdrs = glob([
"include/clang/Lex/*.h",
]),
includes = ["include"],
textual_hdrs = glob([
"include/clang/Lex/*.def",
]),
deps = [
":basic",
":config",
":support",
"//llvm:Support",
"//llvm:TargetParser",
],
)
gentbl_cc_library(
name = "ast_attr_gen",
tbl_outs = {
"include/clang/AST/AttrVisitor.inc": ["-gen-clang-attr-ast-visitor"],
"include/clang/AST/Attrs.inc": ["-gen-clang-attr-classes"],
"include/clang/AST/AttrTextNodeDump.inc": ["-gen-clang-attr-text-node-dump"],
"include/clang/AST/AttrNodeTraverse.inc": ["-gen-clang-attr-node-traverse"],
"include/clang/AST/AttrImpl.inc": ["-gen-clang-attr-impl"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
gentbl_cc_library(
name = "ast_attr_doc_table_gen",
strip_include_prefix = "lib/AST",
tbl_outs = {"lib/AST/AttrDocTable.inc": ["-gen-clang-attr-doc-table"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
gentbl_cc_library(
name = "ast_decl_nodes_gen",
tbl_outs = {"include/clang/AST/DeclNodes.inc": ["-gen-clang-decl-nodes"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/DeclNodes.td",
deps = [":ASTNodeTdFiles"],
)
gentbl_cc_library(
name = "ast_stmt_nodes_gen",
tbl_outs = {"include/clang/AST/StmtNodes.inc": ["-gen-clang-stmt-nodes"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/StmtNodes.td",
deps = [":ASTNodeTdFiles"],
)
gentbl_cc_library(
name = "ast_comment_nodes_gen",
tbl_outs = {"include/clang/AST/CommentNodes.inc": ["-gen-clang-comment-nodes"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/CommentNodes.td",
deps = [":ASTNodeTdFiles"],
)
gentbl_cc_library(
name = "ast_comment_command_info_gen",
tbl_outs = {
"include/clang/AST/CommentCommandInfo.inc": ["-gen-clang-comment-command-info"],
"include/clang/AST/CommentCommandList.inc": ["-gen-clang-comment-command-list"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/CommentCommands.td",
)
gentbl_cc_library(
name = "ast_comment_html_tags_gen",
tbl_outs = {"include/clang/AST/CommentHTMLTags.inc": ["-gen-clang-comment-html-tags"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/CommentHTMLTags.td",
)
gentbl_cc_library(
name = "ast_comment_html_tags_properties_gen",
tbl_outs = {"include/clang/AST/CommentHTMLTagsProperties.inc": ["-gen-clang-comment-html-tags-properties"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/CommentHTMLTags.td",
)
gentbl_cc_library(
name = "ast_comment_html_named_character_references_gen",
tbl_outs = {"include/clang/AST/CommentHTMLNamedCharacterReferences.inc": ["-gen-clang-comment-html-named-character-references"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/CommentHTMLNamedCharacterReferences.td",
)
gentbl_cc_library(
name = "ast_stmt_data_collectors_gen",
tbl_outs = {"include/clang/AST/StmtDataCollectors.inc": ["-gen-clang-data-collectors"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/StmtDataCollectors.td",
)
gentbl_cc_library(
name = "ast_bytecode_opcodes_gen",
strip_include_prefix = "lib/AST/ByteCode",
tbl_outs = {"lib/AST/ByteCode/Opcodes.inc": ["-gen-clang-opcodes"]},
tblgen = ":clang-tblgen",
td_file = "lib/AST/ByteCode/Opcodes.td",
)
gentbl_cc_library(
name = "ast_properties_base_gen",
tbl_outs = {
"include/clang/AST/AbstractBasicReader.inc": ["-gen-clang-basic-reader"],
"include/clang/AST/AbstractBasicWriter.inc": ["-gen-clang-basic-writer"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/PropertiesBase.td",
)
gentbl_cc_library(
name = "ast_type_properties_gen",
tbl_outs = {
"include/clang/AST/AbstractTypeReader.inc": ["-gen-clang-type-reader"],
"include/clang/AST/AbstractTypeWriter.inc": ["-gen-clang-type-writer"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/AST/TypeProperties.td",
td_srcs = [
"include/clang/AST/PropertiesBase.td",
"include/clang/Basic/TypeNodes.td",
],
deps = [":ASTNodeTdFiles"],
)
gentbl_cc_library(
name = "type_nodes_gen",
tbl_outs = {"include/clang/AST/TypeNodes.inc": ["-gen-clang-type-nodes"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/TypeNodes.td",
deps = [":ASTNodeTdFiles"],
)
workspace_root(name = "workspace_root")
cc_library(
name = "ast",
srcs = glob([
"lib/AST/*.cpp",
"lib/AST/*.h",
"lib/AST/ByteCode/*.cpp",
"lib/AST/ByteCode/*.h",
]) + [
"lib/AST/AttrDocTable.inc",
"lib/AST/ByteCode/Opcodes.inc",
],
hdrs = glob([
"include/clang/AST/*.h",
]),
copts = [
# FIXME: This is necessary to allow "file relative" include paths from
# non-generated `srcs` to find generated `srcs` above. Bazel should
# either make this work automatically by creating a unified tree of
# `srcs` or at least provide a `local_includes` that has the path
# translation logic of `includes` but is only used locally (similar to
# `local_defines` vs. `defines`). Until one of those lands, this is the
# least bad approach. Using `includes` is *specifically* problematic for
# this library because it contains files that collide easily with system
# headers such as `CXXABI.h`.
"-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/lib/AST",
"-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/lib/AST/ByteCode",
],
textual_hdrs = [
"include/clang/AST/AttrImpl.inc",
"include/clang/AST/AttrNodeTraverse.inc",
"include/clang/AST/Attrs.inc",
"include/clang/AST/AttrTextNodeDump.inc",
"include/clang/AST/AttrVisitor.inc",
"include/clang/AST/CommentCommandInfo.inc",
"include/clang/AST/CommentCommandList.inc",
"include/clang/AST/CommentHTMLNamedCharacterReferences.inc",
"include/clang/AST/CommentHTMLTags.inc",
"include/clang/AST/CommentHTMLTagsProperties.inc",
"include/clang/AST/CommentNodes.inc",
"include/clang/AST/DeclNodes.inc",
"include/clang/AST/StmtDataCollectors.inc",
"include/clang/AST/StmtNodes.inc",
] + glob([
"include/clang/AST/*.def",
]),
toolchains = [":workspace_root"],
deps = [
":ast_attr_doc_table_gen",
":ast_attr_gen",
":ast_bytecode_opcodes_gen",
":ast_comment_command_info_gen",
":ast_comment_html_named_character_references_gen",
":ast_comment_html_tags_gen",
":ast_comment_html_tags_properties_gen",
":ast_comment_nodes_gen",
":ast_decl_nodes_gen",
":ast_properties_base_gen",
":ast_stmt_data_collectors_gen",
":ast_stmt_nodes_gen",
":ast_type_properties_gen",
":basic",
":basic_builtins_gen",
":lex",
":support",
":type_nodes_gen",
"//llvm:BinaryFormat",
"//llvm:Core",
"//llvm:FrontendHLSL",
"//llvm:FrontendOpenMP",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "index",
srcs = glob([
"lib/Index/*.cpp",
"lib/Index/*.h",
]),
hdrs = glob([
"include/clang/Index/*.h",
"include/clang-c/*.h",
]),
includes = ["include"],
deps = [
":ast",
":basic",
":format",
":frontend",
":lex",
":rewrite",
":sema",
":serialization",
"//llvm:Core",
"//llvm:Support",
],
)
genrule(
name = "analysis_htmllogger_gen",
srcs = [
"lib/Analysis/FlowSensitive/HTMLLogger.html",
"lib/Analysis/FlowSensitive/HTMLLogger.css",
"lib/Analysis/FlowSensitive/HTMLLogger.js",
],
outs = ["lib/Analysis/FlowSensitive/HTMLLogger.inc"],
cmd = "$(location :bundle_resources) $@ $(SRCS)",
tools = [":bundle_resources"],
)
cc_library(
name = "analysis",
srcs = glob([
"lib/Analysis/FlowSensitive/Models/*.cpp",
"lib/Analysis/FlowSensitive/*.cpp",
"lib/Analysis/*.cpp",
]) + [
":analysis_htmllogger_gen",
],
hdrs = glob([
"include/clang/Analysis/**/*.h",
]),
includes = [
"include",
"lib/Analysis/FlowSensitive",
],
textual_hdrs = glob([
"include/clang/Analysis/**/*.def",
]),
deps = [
":ast",
":ast_matchers",
":basic",
":lex",
":support",
"//llvm:Support",
],
)
gentbl_cc_library(
name = "sema_attr_gen",
tbl_outs = {
"include/clang/Sema/AttrParsedAttrImpl.inc": ["-gen-clang-attr-parsed-attr-impl"],
"include/clang/Sema/AttrParsedAttrKinds.inc": ["-gen-clang-attr-parsed-attr-kinds"],
"include/clang/Sema/AttrSpellingListIndex.inc": ["-gen-clang-attr-spelling-index"],
"include/clang/Sema/AttrTemplateInstantiate.inc": ["-gen-clang-attr-template-instantiate"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
cc_library(
name = "sema",
srcs = glob([
"lib/Sema/*.cpp",
"lib/Sema/*.h",
]),
hdrs = glob([
"include/clang/Sema/*.h",
"include/clang-c/*.h",
]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
includes = ["include"],
textual_hdrs = [
"include/clang/Sema/AttrParsedAttrImpl.inc",
"include/clang/Sema/AttrParsedAttrKinds.inc",
"include/clang/Sema/AttrSpellingListIndex.inc",
"include/clang/Sema/AttrTemplateInstantiate.inc",
"lib/Sema/OpenCLBuiltins.inc",
],
deps = [
":analysis",
":apinotes",
":ast",
":basic",
":basic_arm_cde_aliases_gen",
":basic_arm_cde_sema_gen",
":basic_arm_sme_builtins_gen",
":basic_arm_sme_builtins_za_state_gen",
":basic_arm_sme_sema_rangechecks_gen",
":basic_arm_sme_streaming_attrs_gen",
":basic_arm_sve_builtins_gen",
":basic_arm_sve_sema_rangechecks_gen",
":basic_arm_sve_streaming_attrs_gen",
":basic_builtins_gen",
":basic_riscv_sifive_vector_builtin_sema_gen",
":basic_riscv_vector_builtin_sema_gen",
":edit",
":lex",
":libsema_openclbuiltins_inc_gen",
":sema_attr_gen",
":support",
":type_nodes_gen",
"//llvm:AllTargetsAsmParsers",
"//llvm:AllTargetsCodeGens",
"//llvm:Core",
"//llvm:Demangle",
"//llvm:FrontendHLSL",
"//llvm:FrontendOpenMP",
"//llvm:MC",
"//llvm:MCParser",
"//llvm:Support",
"//llvm:TargetParser",
],
)
gentbl_cc_library(
name = "parse_attr_gen",
tbl_outs = {
"include/clang/Parse/AttrParserStringSwitches.inc": ["-gen-clang-attr-parser-string-switches"],
"include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc": ["-gen-clang-attr-subject-match-rules-parser-string-switches"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
cc_library(
name = "parse",
srcs = glob([
"lib/Parse/*.cpp",
]),
hdrs = [
"include/clang/Parse/AttrParserStringSwitches.inc",
"include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc",
] + glob(["include/clang/Parse/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":lex",
":parse_attr_gen",
":sema",
"//llvm:FrontendHLSL",
"//llvm:FrontendOpenMP",
"//llvm:MC",
"//llvm:MCParser",
"//llvm:Support",
],
)
cc_library(
name = "ast_matchers",
srcs = glob([
"lib/ASTMatchers/*.cpp",
]),
hdrs = glob(["include/clang/ASTMatchers/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":lex",
":support",
"//llvm:Support",
],
)
cc_library(
name = "ast_matchers_dynamic",
srcs = glob([
"lib/ASTMatchers/Dynamic/*.cpp",
"lib/ASTMatchers/Dynamic/*.h",
]),
hdrs = glob(["include/clang/ASTMatchers/Dynamic/*.h"]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
includes = ["include"],
deps = [
":ast",
":ast_matchers",
":basic",
"//llvm:FrontendOpenMP",
"//llvm:Support",
],
)
cc_library(
name = "rewrite",
srcs = glob([
"lib/Rewrite/*.cpp",
]),
hdrs = glob(["include/clang/Rewrite/Core/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":edit",
":lex",
"//llvm:Support",
],
)
cc_library(
name = "testing",
testonly = 1,
srcs = glob([
"lib/Testing/*.cpp",
]),
hdrs = glob(["include/clang/Testing/*.h"]),
includes = ["include"],
textual_hdrs = [
"include/clang/Testing/TestLanguage.def",
],
deps = [
":basic",
":frontend",
"//llvm:MC",
"//llvm:Support",
"//third-party/unittest:gtest",
],
)
cc_library(
name = "tooling_core",
srcs = glob([
"lib/Tooling/Core/*.cpp",
]),
hdrs = glob(["include/clang/Tooling/Core/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":lex",
":rewrite",
"//llvm:Support",
],
)
cc_library(
name = "tooling",
srcs = glob([
"lib/Tooling/*.cpp",
]),
hdrs = glob([
"include/clang/Tooling/*.h",
]),
includes = ["include"],
deps = [
":ast",
":ast_matchers",
":basic",
":driver",
":format",
":frontend",
":lex",
":rewrite",
":support",
":tooling_core",
"//llvm:Option",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "tooling_inclusions",
srcs = glob([
"lib/Tooling/Inclusions/**/*.cpp",
"lib/Tooling/Inclusions/**/*.inc",
]),
hdrs = glob([
"include/clang/Tooling/Inclusions/**/*.h",
]),
deps = [
":ast",
":basic",
":lex",
":rewrite",
":tooling_core",
"//llvm:Support",
],
)
cc_library(
name = "tooling_refactoring",
srcs = glob([
"lib/Tooling/Refactoring/**/*.cpp",
]),
hdrs = glob([
"include/clang/Tooling/Refactoring/**/*.h",
]),
deps = [
":ast",
":ast_matchers",
":basic",
":format",
":frontend",
":index",
":lex",
":rewrite",
":tooling",
":tooling_core",
"//llvm:Support",
],
)
td_library(
name = "ToolingSyntaxTdFiles",
srcs = ["include/clang/Tooling/Syntax/Syntax.td"],
includes = ["include"],
)
gentbl_cc_library(
name = "tooling_syntax_gen",
tbl_outs = {
"include/clang/Tooling/Syntax/Nodes.inc": ["-gen-clang-syntax-node-list"],
"include/clang/Tooling/Syntax/NodeClasses.inc": ["-gen-clang-syntax-node-classes"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Tooling/Syntax/Nodes.td",
deps = [":ToolingSyntaxTdFiles"],
)
cc_library(
name = "tooling_syntax",
srcs = glob(["lib/Tooling/Syntax/**/*.cpp"]),
hdrs = glob(["include/clang/Tooling/Syntax/**/*.h"]),
deps = [
":ast",
":basic",
":lex",
":tooling_core",
":tooling_syntax_gen",
"//llvm:Support",
],
)
cc_library(
name = "tooling_dependency_scanning",
srcs = glob(["lib/Tooling/DependencyScanning/**/*.cpp"]),
hdrs = glob(["include/clang/Tooling/DependencyScanning/**/*.h"]),
deps = [
":basic",
":driver",
":frontend",
":lex",
":serialization",
":tooling",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "transformer",
srcs = glob(["lib/Tooling/Transformer/**/*.cpp"]),
hdrs = glob(["include/clang/Tooling/Transformer/**/*.h"]),
deps = [
":ast",
":ast_matchers",
":basic",
":lex",
":rewrite",
":tooling_refactoring",
"//llvm:Support",
],
)
cc_library(
name = "ast-diff",
srcs = glob(["lib/Tooling/ASTDiff/*.cpp"]),
hdrs = glob(["include/clang/Tooling/ASTDiff/*.h"]),
deps = [
":ast",
":basic",
":lex",
"//llvm:Support",
],
)
cc_library(
name = "crosstu",
srcs = glob(["lib/CrossTU/*.cpp"]),
hdrs = glob(["include/clang/CrossTU/*.h"]),
deps = [
":analysis",
":ast",
":basic",
":frontend",
":index",
"//llvm:Option",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "format",
srcs = glob(
[
"lib/Format/*.cpp",
"lib/Format/*.h",
],
),
hdrs = glob([
"include/clang/Format/*.h",
]),
includes = ["include"],
deps = [
":basic",
":lex",
":tooling_core",
":tooling_inclusions",
"//llvm:Support",
],
)
cc_library(
name = "edit",
srcs = glob(["lib/Edit/*.cpp"]),
hdrs = glob(["include/clang/Edit/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":lex",
"//llvm:Support",
],
)
cc_library(
name = "static_analyzer_core_options",
hdrs = [
"include/clang/StaticAnalyzer/Core/AnalyzerOptions.h",
],
textual_hdrs = [
"include/clang/StaticAnalyzer/Core/Analyses.def",
"include/clang/StaticAnalyzer/Core/AnalyzerOptions.def",
],
deps = [
":analysis",
":basic",
":static_analyzer_checkers_gen",
"//llvm:Support",
],
)
cc_library(
name = "static_analyzer_core",
srcs = glob([
"lib/StaticAnalyzer/Core/**/*.cpp",
"lib/StaticAnalyzer/Core/**/*.h",
]),
hdrs = glob([
"include/clang/StaticAnalyzer/Core/**/*.h",
]),
includes = ["include"],
textual_hdrs = glob([
"include/clang/StaticAnalyzer/Core/**/*.def",
]),
deps = [
":analysis",
":ast",
":ast_matchers",
":basic",
":crosstu",
":driver",
":frontend",
":lex",
":rewrite",
":static_analyzer_checkers_gen",
":tooling",
":tooling_core",
"//llvm:Support",
],
)
td_library(
name = "CheckerBaseTdFiles",
srcs = [
"include/clang/StaticAnalyzer/Checkers/CheckerBase.td",
],
includes = ["include"],
)
gentbl_cc_library(
name = "static_analyzer_checkers_gen",
tbl_outs = {"include/clang/StaticAnalyzer/Checkers/Checkers.inc": ["-gen-clang-sa-checkers"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/StaticAnalyzer/Checkers/Checkers.td",
deps = [":CheckerBaseTdFiles"],
)
cc_library(
name = "static_analyzer_checkers",
srcs = glob([
"lib/StaticAnalyzer/Checkers/**/*.cpp",
"lib/StaticAnalyzer/Checkers/**/*.h",
]),
hdrs = [
"include/clang/StaticAnalyzer/Checkers/Checkers.inc",
] + glob([
"include/clang/StaticAnalyzer/Checkers/**/*.h",
]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
includes = ["include"],
deps = [
":analysis",
":ast",
":ast_matchers",
":basic",
":driver",
":lex",
":static_analyzer_checkers_gen",
":static_analyzer_core",
"//llvm:Support",
],
)
gentbl_cc_library(
name = "driver_options_inc_gen",
tbl_outs = {"include/clang/Driver/Options.inc": ["-gen-opt-parser-defs"]},
tblgen = "//llvm:llvm-tblgen",
td_file = "include/clang/Driver/Options.td",
deps = ["//llvm:OptParserTdFiles"],
)
cc_library(
name = "driver",
srcs = glob(
[
"lib/Driver/*.cpp",
"lib/Driver/ToolChains/*.cpp",
"lib/Driver/ToolChains/*.h",
"lib/Driver/ToolChains/Arch/*.cpp",
"lib/Driver/ToolChains/Arch/*.h",
],
exclude = [
"lib/Driver/ToolChains/MSVCSetupApi.h",
],
),
hdrs = glob([
"include/clang/Driver/*.h",
]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
includes = [
"include",
# TODO: This is likely a layering issue, but files in Arch are currently
# directly #including "Tools.h".
"lib/Driver",
],
linkopts = select({
"@platforms//os:windows": ["version.lib"],
"//conditions:default": [],
}),
textual_hdrs = glob([
"include/clang/Driver/*.def",
]),
deps = [
":ast",
":basic",
":config",
":driver_options_inc_gen",
":parse",
":static_analyzer_checkers_gen",
"//llvm:BinaryFormat",
"//llvm:FrontendDebug",
"//llvm:Instrumentation",
"//llvm:MC",
"//llvm:Object",
"//llvm:Option",
"//llvm:ProfileData",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:WindowsDriver",
"//llvm:config",
],
)
gentbl_cc_library(
name = "headers_arm_neon_gen",
tbl_outs = {"lib/Headers/arm_neon.h": ["-gen-arm-neon"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_neon.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_fp16_gen",
tbl_outs = {"lib/Headers/arm_fp16.h": ["-gen-arm-fp16"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_fp16.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_mve_gen",
tbl_outs = {"lib/Headers/arm_mve.h": ["-gen-arm-mve-header"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_mve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_cde_gen",
tbl_outs = {"lib/Headers/arm_cde.h": ["-gen-arm-cde-header"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_cde.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_sve_gen",
tbl_outs = {"lib/Headers/arm_sve.h": ["-gen-arm-sve-header"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sve.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_bf16_gen",
tbl_outs = {"lib/Headers/arm_bf16.h": ["-gen-arm-bf16"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_bf16.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_sme_gen",
tbl_outs = {"lib/Headers/arm_sme.h": ["-gen-arm-sme-header"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_sme.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_arm_vector_type_gen",
tbl_outs = {"lib/Headers/arm_vector_types.h": ["-gen-arm-vector-type"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/arm_neon.td",
deps = [":ArmTdFiles"],
)
gentbl_cc_library(
name = "headers_riscv_vector",
tbl_outs = {"lib/Headers/riscv_vector.h": ["-gen-riscv-vector-header"]},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/riscv_vector.td",
deps = [":RiscvTdFiles"],
)
# We generate the set of builtin headers under a special subdirectory in the
# 'bin' section of the bazel output so that they can be used as data
# dependencies. It requires listing explicitly all the generated inputs here.
builtin_headers = glob(
["lib/Headers/**/*.h"],
exclude = [
# FIXME: They are not handled in CMake side.
"lib/Headers/openmp_wrappers/stdlib.h",
"lib/Headers/openmp_wrappers/time.h",
"lib/Headers/ppc_wrappers/nmmintrin.h",
],
) + [
# keep sorted
"lib/Headers/arm_bf16.h",
"lib/Headers/arm_cde.h",
"lib/Headers/arm_fp16.h",
"lib/Headers/arm_mve.h",
"lib/Headers/arm_neon.h",
"lib/Headers/arm_sme.h",
"lib/Headers/arm_sve.h",
"lib/Headers/arm_vector_types.h",
"lib/Headers/cuda_wrappers/algorithm",
"lib/Headers/cuda_wrappers/complex",
"lib/Headers/cuda_wrappers/new",
"lib/Headers/module.modulemap",
"lib/Headers/openmp_wrappers/cmath",
"lib/Headers/openmp_wrappers/complex",
"lib/Headers/openmp_wrappers/new",
"lib/Headers/riscv_vector.h",
]
genrule(
name = "builtin_headers_gen",
srcs = builtin_headers,
outs = [hdr.replace("lib/Headers/", "staging/include/") for hdr in builtin_headers],
cmd = """
for src in $(SRCS); do
relsrc=$${src#*"$(WORKSPACE_ROOT)"/clang/lib/Headers}
target=$(@D)/staging/include/$$relsrc
mkdir -p $$(dirname $$target)
cp $$src $$target
done""",
output_to_bindir = 1,
toolchains = [":workspace_root"],
)
cc_library(
name = "frontend",
srcs = glob([
"lib/Frontend/*.cpp",
"lib/Frontend/*.h",
]),
hdrs = glob([
"include/clang/Frontend/*.h",
]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
data = [":builtin_headers_gen"],
includes = ["include"],
deps = [
":apinotes",
":ast",
":basic",
":config",
":driver",
":driver_options_inc_gen",
":edit",
":lex",
":parse",
":sema",
":serialization",
":static_analyzer_core_options",
":support",
"//llvm:BinaryFormat",
"//llvm:BitReader",
"//llvm:BitstreamReader",
"//llvm:BitstreamWriter",
"//llvm:Core",
"//llvm:FrontendDebug",
"//llvm:Linker",
"//llvm:MC",
"//llvm:Option",
"//llvm:ProfileData",
"//llvm:Remarks",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:TextAPI",
"//llvm:config",
],
)
cc_library(
name = "frontend_rewrite",
srcs = glob([
"lib/Frontend/Rewrite/*.cpp",
]),
hdrs = glob(["include/clang/Rewrite/Frontend/*.h"]),
includes = ["include"],
deps = [
":ast",
":basic",
":config",
":edit",
":frontend",
":lex",
":parse",
":rewrite",
":serialization",
"//llvm:Support",
],
)
cc_library(
name = "interpreter",
srcs = glob(
[
"lib/Interpreter/*.cpp",
"lib/Interpreter/*.h",
],
exclude = [
"lib/Interpreter/Wasm.cpp",
"lib/Interpreter/Wasm.h",
],
),
hdrs = glob(["include/clang/Interpreter/*.h"]),
includes = ["include"],
deps = [
":analysis",
":ast",
":basic",
":codegen",
":driver",
":edit",
":frontend",
":frontend_tool",
":lex",
":parse",
":sema",
":serialization",
"//llvm:AllTargetsAsmParsers",
"//llvm:AllTargetsCodeGens",
"//llvm:Core",
"//llvm:ExecutionEngine",
"//llvm:MC",
"//llvm:Option",
"//llvm:OrcDebugging",
"//llvm:OrcJIT",
"//llvm:OrcShared",
"//llvm:OrcTargetProcess",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:TransformUtils",
"//llvm:config",
],
)
cc_library(
name = "codegen",
srcs = glob([
"lib/CodeGen/**/*.cpp",
"lib/CodeGen/**/*.h",
]),
hdrs = glob(["include/clang/CodeGen/*.h"]),
copts = ["$(STACK_FRAME_UNLIMITED)"],
includes = [
"include",
"lib/CodeGen",
],
deps = [
":analysis",
":ast",
":basic",
":basic_arm_cde_cg_gen",
":basic_arm_sme_builtin_cg_gen",
":basic_arm_sve_builtin_cg_gen",
":basic_riscv_sifive_vector_builtin_cg_gen",
":basic_riscv_vector_builtin_cg_gen",
":driver",
":frontend",
":lex",
":sema",
":serialization",
":type_nodes_gen",
"//llvm:AllTargetsAsmParsers",
"//llvm:Analysis",
"//llvm:BinaryFormat",
"//llvm:BitReader",
"//llvm:BitWriter",
"//llvm:BitstreamReader",
"//llvm:CodeGen",
"//llvm:Core",
"//llvm:Coroutines",
"//llvm:Coverage",
"//llvm:DebugInfoDWARF",
"//llvm:Demangle",
"//llvm:FrontendDriver",
"//llvm:FrontendHLSL",
"//llvm:FrontendOffloading",
"//llvm:FrontendOpenMP",
"//llvm:HipStdPar",
"//llvm:IPO",
"//llvm:IRPrinter",
"//llvm:IRReader",
"//llvm:InstCombine",
"//llvm:Instrumentation",
"//llvm:LTO",
"//llvm:Linker",
"//llvm:MC",
"//llvm:ObjCARC",
"//llvm:Object",
"//llvm:Passes",
"//llvm:ProfileData",
"//llvm:Scalar",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:TransformUtils",
],
)
cc_library(
name = "static_analyzer_frontend",
srcs = glob([
"lib/StaticAnalyzer/Frontend/**/*.cpp",
"lib/StaticAnalyzer/Frontend/**/*.h",
]),
hdrs = glob(["include/clang/StaticAnalyzer/Frontend/**/*.h"]),
includes = ["include"],
deps = [
":analysis",
":ast",
":basic",
":crosstu",
":driver",
":frontend",
":lex",
":rewrite",
":serialization",
":static_analyzer_checkers",
":static_analyzer_core",
":tooling",
":tooling_core",
"//llvm:Support",
],
)
gentbl_cc_library(
name = "serialization_attr_gen",
tbl_outs = {
"include/clang/Serialization/AttrPCHRead.inc": ["-gen-clang-attr-pch-read"],
"include/clang/Serialization/AttrPCHWrite.inc": ["-gen-clang-attr-pch-write"],
},
tblgen = ":clang-tblgen",
td_file = "include/clang/Basic/Attr.td",
deps = [":BasicCoreTdFiles"],
)
cc_library(
name = "support",
srcs = glob([
"lib/Support/*.cpp",
]),
hdrs = glob([
"include/clang/Support/*.h",
]),
includes = ["include"],
deps = [
"//llvm:Support",
],
)
cc_library(
name = "install_api",
srcs = glob([
"lib/InstallAPI/*.cpp",
"lib/InstallAPI/*.h",
]),
hdrs = glob([
"include/clang/InstallAPI/*.h",
]),
includes = ["include"],
deps = [
":ast",
":basic",
":frontend",
":support",
"//llvm:Core",
"//llvm:Demangle",
"//llvm:Support",
"//llvm:TextAPI",
"//llvm:TextAPIBinaryReader",
],
)
cc_library(
name = "serialization",
srcs = [
"include/clang/Serialization/AttrPCHRead.inc",
"include/clang/Serialization/AttrPCHWrite.inc",
] + glob([
"lib/Serialization/*.cpp",
"lib/Serialization/*.h",
]),
hdrs = glob([
"include/clang/Serialization/*.h",
]),
includes = ["include"],
textual_hdrs = glob([
"include/clang/Serialization/*.def",
]),
deps = [
":ast",
":basic",
":lex",
":sema",
":serialization_attr_gen",
":type_nodes_gen",
"//llvm:BitReader",
"//llvm:BitWriter",
"//llvm:BitstreamReader",
"//llvm:BitstreamWriter",
"//llvm:FrontendOpenMP",
"//llvm:Object",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "frontend_tool",
srcs = glob([
"lib/FrontendTool/*.cpp",
]),
hdrs = glob(["include/clang/FrontendTool/*.h"]),
includes = ["include"],
deps = [
":codegen",
":config",
":driver",
":extract_api",
":frontend",
":frontend_rewrite",
":static_analyzer_frontend",
"//llvm:Option",
"//llvm:Support",
],
)
cc_library(
name = "libclang_static",
srcs = glob([
"tools/libclang/*.cpp",
"tools/libclang/*.h",
]),
hdrs = glob(["include/clang-c/*.h"]),
defines = ["CINDEX_NO_EXPORTS"],
deps = [
":ast",
":basic",
":codegen",
":config",
":driver",
":extract_api",
":frontend",
":index",
":lex",
":rewrite",
":sema",
":tooling",
"//llvm:BitstreamReader",
"//llvm:FrontendOpenMP",
"//llvm:Support",
"//llvm:config",
],
)
cc_plugin_library(
name = "libclang",
srcs = glob([
"tools/libclang/*.cpp",
"tools/libclang/*.h",
]),
hdrs = glob(["include/clang-c/*.h"]),
copts = select({
"@platforms//os:windows": ["-D_CINDEX_LIB_"],
"//conditions:default": [],
}),
strip_include_prefix = "include",
deps = [
":ast",
":basic",
":codegen",
":config",
":driver",
":extract_api",
":frontend",
":index",
":lex",
":rewrite",
":sema",
":tooling",
"//llvm:BitstreamReader",
"//llvm:FrontendOpenMP",
"//llvm:Support",
"//llvm:config",
],
)
filegroup(
name = "python-sources",
srcs = [
"bindings/python/clang/cindex.py",
],
)
filegroup(
name = "python-cindex-examples",
srcs = [
"bindings/python/examples/cindex/cindex-dump.py",
"bindings/python/examples/cindex/cindex-includes.py",
],
)
cc_binary(
name = "c-index-test",
testonly = 1,
srcs = [
"tools/c-index-test/c-index-test.c",
"tools/c-index-test/core_main.cpp",
],
copts = [
"-Wno-uninitialized",
],
stamp = 0,
deps = [
":ast",
":basic",
":codegen",
":config",
":frontend",
":index",
":lex",
":libclang",
":serialization",
"//llvm:Core",
"//llvm:MC",
"//llvm:Support",
],
)
cc_library(
name = "apinotes",
srcs = glob([
"lib/APINotes/*.cpp",
"lib/APINotes/*.h",
]),
hdrs = glob(["include/clang/APINotes/*.h"]),
deps = [
":basic",
"//llvm:BitWriter",
"//llvm:BitstreamReader",
"//llvm:BitstreamWriter",
"//llvm:Support",
],
)
cc_binary(
name = "apinotes-test",
testonly = 1,
srcs = ["tools/apinotes-test/APINotesTest.cpp"],
stamp = 0,
deps = [
":apinotes",
"//llvm:Support",
],
)
cc_binary(
name = "clang-import-test",
testonly = 1,
srcs = glob([
"tools/clang-import-test/*.cpp",
]),
stamp = 0,
deps = [
":ast",
":basic",
":codegen",
":driver",
":frontend",
":lex",
":parse",
"//llvm:Core",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_library(
name = "clang-driver",
srcs = glob(["tools/driver/*.cpp"]),
copts = [
# Disable stack frame size checks in the driver because
# clang::ensureStackAddressSpace allocates a large array on the stack.
"$(STACK_FRAME_UNLIMITED)",
],
deps = [
":analysis",
":ast",
":basic",
":codegen",
":config",
":driver",
":frontend",
":frontend_rewrite",
":frontend_tool",
":lex",
":parse",
":sema",
":serialization",
":static_analyzer_frontend",
"//llvm:AllTargetsAsmParsers",
"//llvm:AllTargetsCodeGens",
"//llvm:BitReader",
"//llvm:BitWriter",
"//llvm:CodeGen",
"//llvm:Core",
"//llvm:IPO",
"//llvm:MC",
"//llvm:MCParser",
"//llvm:Option",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:config",
],
)
llvm_driver_cc_binary(
name = "clang",
stamp = 0,
deps = [":clang-driver"],
)
cc_binary(
name = "diagtool",
srcs = glob([
"tools/diagtool/*.cpp",
"tools/diagtool/*.h",
]),
stamp = 0,
deps = [
":basic",
":diagnostic_defs_gen",
":frontend",
":lex",
":sema",
"//llvm:Support",
],
)
filegroup(
name = "exploded_graph_rewriter",
testonly = 1,
data = ["utils/analyzer/exploded-graph-rewriter.py"],
)
filegroup(
name = "module-deps-to-rsp",
testonly = 1,
data = ["utils/module-deps-to-rsp.py"],
)
filegroup(
name = "hmaptool",
testonly = 1,
data = ["utils/hmaptool/hmaptool"],
)
binary_alias(
name = "clang++",
binary = ":clang",
)
binary_alias(
name = "clang-cl",
binary = ":clang",
)
cc_binary(
name = "clang-check",
srcs = ["tools/clang-check/ClangCheck.cpp"],
stamp = 0,
deps = [
":ast",
":codegen",
":driver",
":frontend",
":frontend_rewrite",
":serialization",
":static_analyzer_frontend",
":tooling",
":tooling_syntax",
"//llvm:Option",
"//llvm:Support",
],
)
cc_binary(
name = "clang-format",
srcs = [
"lib/Format/MatchFilePath.h",
"tools/clang-format/ClangFormat.cpp",
],
stamp = 0,
deps = [
":basic",
":format",
":frontend",
":rewrite",
"//llvm:Support",
],
)
cc_binary(
name = "clang-diff",
srcs = glob(["tools/clang-diff/*.cpp"]),
stamp = 0,
deps = [
":ast-diff",
":tooling",
"//llvm:Support",
],
)
cc_binary(
name = "clang-offload-bundler",
srcs = glob(["tools/clang-offload-bundler/*.cpp"]),
stamp = 0,
deps = [
":basic",
":driver",
":tooling",
"//llvm:BitWriter",
"//llvm:Core",
"//llvm:Object",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_binary(
name = "clang-offload-packager",
srcs = glob(["tools/clang-offload-packager/*.cpp"]),
stamp = 0,
deps = [
":basic",
"//llvm:BinaryFormat",
"//llvm:Object",
"//llvm:Support",
],
)
gentbl_cc_library(
name = "linker_wrapper_opts_gen",
strip_include_prefix = "tools/clang-linker-wrapper",
tbl_outs = {"tools/clang-linker-wrapper/LinkerWrapperOpts.inc": ["-gen-opt-parser-defs"]},
tblgen = "//llvm:llvm-tblgen",
td_file = "tools/clang-linker-wrapper/LinkerWrapperOpts.td",
deps = ["//llvm:OptParserTdFiles"],
)
cc_binary(
name = "clang-linker-wrapper",
srcs = [
"tools/clang-linker-wrapper/ClangLinkerWrapper.cpp",
],
copts = [
"-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/tools/clang-linker-wrapper",
],
stamp = 0,
toolchains = [":workspace_root"],
deps = [
":basic",
":linker_wrapper_opts_gen",
"//llvm:AllTargetsAsmParsers",
"//llvm:Analysis",
"//llvm:BinaryFormat",
"//llvm:BitWriter",
"//llvm:CodeGen",
"//llvm:Core",
"//llvm:FrontendOffloading",
"//llvm:IRReader",
"//llvm:LTO",
"//llvm:MC",
"//llvm:Object",
"//llvm:Option",
"//llvm:Passes",
"//llvm:Remarks",
"//llvm:Support",
"//llvm:Target",
"//llvm:TargetParser",
"//llvm:TransformUtils",
],
)
cc_binary(
name = "clang-refactor",
srcs = glob([
"tools/clang-refactor/*.cpp",
"tools/clang-refactor/*.h",
]),
stamp = 0,
deps = [
":ast",
":basic",
":format",
":frontend",
":lex",
":rewrite",
":tooling",
":tooling_refactoring",
"//llvm:Support",
],
)
cc_binary(
name = "clang-repl",
srcs = glob(["tools/clang-repl/*.cpp"]),
stamp = 0,
deps = [
":basic",
":frontend",
":interpreter",
":lex",
":sema",
":tooling",
"//llvm:Core",
"//llvm:LineEditor",
"//llvm:Option",
"//llvm:OrcJIT",
"//llvm:Support",
],
)
cc_binary(
name = "clang-extdef-mapping",
srcs = glob(["tools/clang-extdef-mapping/*.cpp"]),
stamp = 0,
deps = [
":ast",
":basic",
":crosstu",
":frontend",
":tooling",
"//llvm:Support",
],
)
gentbl_cc_library(
name = "ScanDepsTableGen",
strip_include_prefix = "tools/clang-scan-deps",
tbl_outs = {"tools/clang-scan-deps/Opts.inc": ["-gen-opt-parser-defs"]},
tblgen = "//llvm:llvm-tblgen",
td_file = "tools/clang-scan-deps/Opts.td",
deps = ["//llvm:OptParserTdFiles"],
)
cc_library(
name = "clang-scan-deps-lib",
srcs = glob(["tools/clang-scan-deps/*.cpp"]),
deps = [
":ScanDepsTableGen",
":driver",
":frontend",
":tooling",
":tooling_dependency_scanning",
"//llvm:Support",
"//llvm:TargetParser",
],
)
llvm_driver_cc_binary(
name = "clang-scan-deps",
stamp = 0,
deps = [":clang-scan-deps-lib"],
)
cc_library(
name = "extract_api",
srcs = glob([
"lib/ExtractAPI/**/*.cpp",
]),
hdrs = glob([
"include/clang/ExtractAPI/**/*.h",
]) + [
"include/clang/ExtractAPI/APIRecords.inc",
],
includes = ["include"],
deps = [
":ast",
":basic",
":frontend",
":index",
":install_api",
":lex",
"//llvm:Option",
"//llvm:Support",
"//llvm:TargetParser",
],
)
cc_binary(
name = "clang-fuzzer-dictionary",
srcs = ["tools/clang-fuzzer/dictionary/dictionary.c"],
deps = [":basic"],
)
genrule(
name = "fuzzer-dictionary",
outs = ["fuzzer-dictionary.txt"],
cmd = "$(location :clang-fuzzer-dictionary) > $@",
tools = [":clang-fuzzer-dictionary"],
)
cc_library(
name = "handle-cxx",
srcs = ["tools/clang-fuzzer/handle-cxx/handle_cxx.cpp"],
hdrs = ["tools/clang-fuzzer/handle-cxx/handle_cxx.h"],
deps = [
":codegen",
":frontend",
":lex",
":tooling",
"//llvm:Option",
"//llvm:Support",
],
)
proto_library(
name = "cxx-proto",
srcs = ["tools/clang-fuzzer/cxx_proto.proto"],
)
cc_proto_library(
name = "cxx_cc_proto",
deps = [":cxx-proto"],
)
cc_library(
name = "proto-to-cxx-lib",
srcs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.cpp"],
hdrs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.h"],
includes = ["tools/clang-fuzzer"],
deps = [":cxx_cc_proto"],
)
cc_binary(
name = "clang-proto-to-cxx",
srcs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx_main.cpp"],
deps = [":proto-to-cxx-lib"],
)
cc_library(
name = "clang-fuzzer-initialize",
srcs = ["tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp"],
hdrs = ["tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h"],
deps = [
"//llvm:Core",
"//llvm:Support",
],
)