# 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_cc//cc:defs.bzl", "cc_binary", "cc_library") 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 = dict([out for c in [ "AST", "Analysis", "Comment", "Common", "CrossTU", "Driver", "Frontend", "InstallAPI", "Lex", "Parse", "Refactoring", "Sema", "Serialization", "Trap", ] for out in [ ( "include/clang/Basic/Diagnostic%sKinds.inc" % c, [ "-gen-clang-diags-defs", "-clang-component=%s" % c, ], ), ( "include/clang/Basic/Diagnostic%sEnums.inc" % c, [ "-gen-clang-diags-enums", "-clang-component=%s" % c, ], ), ( "include/clang/Basic/Diagnostic%sCompatIDs.inc" % c, [ "-gen-clang-diags-compat-ids", "-clang-component=%s" % c, ], ), ( "include/clang/Basic/Diagnostic%sInterface.inc" % c, [ "-gen-clang-diags-iface", "-clang-component=%s" % c, ], ), ]] + [ ( "include/clang/Basic/DiagnosticGroups.inc", ["-gen-clang-diag-groups"], ), ( "include/clang/Basic/DiagnosticIndexName.inc", ["-gen-clang-diags-index-name"], ), ( "include/clang/Basic/DiagnosticAllCompatIDs.inc", ["-gen-clang-diags-compat-ids"], ), ]), 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 = "BuiltinsSPIRVBaseTdFiles", srcs = ["include/clang/Basic/BuiltinsSPIRVBase.td"], includes = ["include"], ) td_library( name = "BuiltinsRISCVXCVTdFiles", srcs = ["include/clang/Basic/BuiltinsRISCVXCV.td"], includes = ["include"], ) td_library( name = "BuiltinsRISCVXAndesTdFiles", srcs = ["include/clang/Basic/BuiltinsRISCVXAndes.td"], includes = ["include"], ) td_library( name = "BuiltinsRISCVXMIPSTdFiles", srcs = ["include/clang/Basic/BuiltinsRISCVXMIPS.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_cl_gen", tbl_outs = {"include/clang/Basic/BuiltinsSPIRVCL.inc": ["-gen-clang-builtins"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/BuiltinsSPIRVCL.td", deps = [ ":BuiltinsBaseTdFiles", ":BuiltinsSPIRVBaseTdFiles", ], ) gentbl_cc_library( name = "basic_builtins_spirv_common_gen", tbl_outs = {"include/clang/Basic/BuiltinsSPIRVCommon.inc": ["-gen-clang-builtins"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/BuiltinsSPIRVCommon.td", deps = [ ":BuiltinsBaseTdFiles", ":BuiltinsSPIRVBaseTdFiles", ], ) gentbl_cc_library( name = "basic_builtins_spirv_vk_gen", tbl_outs = {"include/clang/Basic/BuiltinsSPIRVVK.inc": ["-gen-clang-builtins"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/BuiltinsSPIRVVK.td", deps = [ ":BuiltinsBaseTdFiles", ":BuiltinsSPIRVBaseTdFiles", ], ) 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", ":BuiltinsRISCVXAndesTdFiles", ":BuiltinsRISCVXCVTdFiles", ":BuiltinsRISCVXMIPSTdFiles", ], ) 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_riscv_andes_vector_builtins_gen", tbl_outs = {"include/clang/Basic/riscv_andes_vector_builtins.inc": ["-gen-riscv-andes-vector-builtins"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/riscv_andes_vector.td", deps = [":RiscvTdFiles"], ) gentbl_cc_library( name = "basic_riscv_andes_vector_builtin_cg_gen", tbl_outs = {"include/clang/Basic/riscv_andes_vector_builtin_cg.inc": ["-gen-riscv-andes-vector-builtin-codegen"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/riscv_andes_vector.td", deps = [":RiscvTdFiles"], ) gentbl_cc_library( name = "basic_riscv_andes_vector_builtin_sema_gen", tbl_outs = {"include/clang/Basic/riscv_andes_vector_builtin_sema.inc": ["-gen-riscv-andes-vector-builtin-sema"]}, tblgen = ":clang-tblgen", td_file = "include/clang/Basic/riscv_andes_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/AttributeSpellingList.inc": ["-gen-attribute-spelling-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_cl_gen", ":basic_builtins_spirv_common_gen", ":basic_builtins_spirv_vk_gen", ":basic_builtins_x86_64_gen", ":basic_builtins_x86_gen", ":basic_riscv_andes_vector_builtins_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:BinaryFormat", "//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/LifetimeSafety/*.cpp", "lib/Analysis/LifetimeSafety/*.h", "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/AttrIsTypeDependent.inc": ["-gen-clang-attr-is-type-dependent"], "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", ]) + [ "//llvm:include/llvm/Frontend/OpenACC/ACC.inc", ], 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_andes_vector_builtin_sema_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", ":options", ":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/**/*.h", "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", ":driver", ":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", ":index", ":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/Options/Options.inc": ["-gen-opt-parser-defs"]}, tblgen = "//llvm:llvm-tblgen", td_file = "include/clang/Options/Options.td", deps = ["//llvm:OptParserTdFiles"], ) cc_library( name = "options", srcs = glob(["lib/Options/*.cpp"]), hdrs = glob(["include/clang/Options/*.h"]), includes = ["include"], deps = [ ":basic", ":config", ":driver_options_inc_gen", ":static_analyzer_checkers_gen", "//llvm:Option", "//llvm:Support", ], ) 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", ":frontend", ":lex", ":options", ":parse", ":serialization", ":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_options_inc_gen", ":edit", ":lex", ":options", ":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", ":options", ":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_andes_vector_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", "//llvm:config", ], ) 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 = "directory_watcher", srcs = glob([ "lib/DirectoryWatcher/*.cpp", "lib/DirectoryWatcher/*.h", ]) + select({ "@platforms//os:windows": glob(["lib/DirectoryWatcher/windows/*.cpp"]), "@platforms//os:macos": glob(["lib/DirectoryWatcher/mac/*.cpp"]), "@platforms//os:linux": glob(["lib/DirectoryWatcher/linux/*.cpp"]), "//conditions:default": glob(["lib/DirectoryWatcher/default/*.cpp"]), }), hdrs = glob([ "include/clang/DirectoryWatcher/*.h", ]), includes = [ "include", "lib/DirectoryWatcher", ], 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 = [ ":basic", ":codegen", ":config", ":driver", ":extract_api", ":frontend", ":frontend_rewrite", ":options", ":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", ":options", ":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", ":options", ":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", ":driver", ":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", ":options", ":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", ":driver", ":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", ":options", ":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", ], ) 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", ":config", ":frontend", ":interpreter", ":lex", ":sema", ":tooling", "//llvm:Core", "//llvm:LineEditor", "//llvm:Option", "//llvm:OrcDebugging", "//llvm:OrcJIT", "//llvm:Support", "//llvm:TargetParser", ], ) 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", ], )