1# This file is licensed under the Apache License v2.0 with LLVM Exceptions. 2# See https://llvm.org/LICENSE.txt for license information. 3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 4 5load("@bazel_skylib//rules:common_settings.bzl", "string_flag") 6load("@bazel_skylib//rules:expand_template.bzl", "expand_template") 7load("@rules_python//python:defs.bzl", "py_binary") 8load("//mlir:tblgen.bzl", "td_library") 9load(":binary_alias.bzl", "binary_alias") 10load(":config.bzl", "llvm_config_defines") 11load(":driver.bzl", "generate_driver_selects", "generate_driver_tools_def", "llvm_driver_cc_binary", "select_driver_tools") 12load(":enum_targets_gen.bzl", "enum_targets_gen") 13load(":targets.bzl", "llvm_targets") 14load(":tblgen.bzl", "gentbl") 15 16package( 17 default_visibility = ["//visibility:public"], 18 features = ["layering_check"], 19) 20 21licenses(["notice"]) 22 23exports_files([ 24 "LICENSE.TXT", 25 "cmake/modules/llvm-driver-template.cpp.in", 26 "include/llvm/BinaryFormat/Dwarf.def", 27 "include/llvm/CodeGen/SDNodeProperties.td", 28 "include/llvm/CodeGen/ValueTypes.td", 29 "include/llvm/Frontend/Directive/DirectiveBase.td", 30 "include/llvm/Frontend/OpenACC/ACC.td", 31 "include/llvm/Frontend/OpenMP/OMP.td", 32 "include/llvm/IR/Intrinsics.td", 33 "include/llvm/Option/OptParser.td", 34 "utils/lit/lit.py", 35 # This one is needed for building and vendoring out lldb from off tree. 36 "utils/lldbDataFormatters.py", 37]) 38 39# It may be tempting to add compiler flags here, but that should be avoided. 40# The necessary warnings and other compile flags should be provided by the 41# toolchain or the `.bazelrc` file. This is just a workaround until we have a 42# widely available feature to enable unlimited stack frame instead of using 43# this `Make` variable. 44llvm_copts = [ 45 "$(STACK_FRAME_UNLIMITED)", 46] 47 48enum_targets_gen( 49 name = "targets_def_gen", 50 src = "include/llvm/Config/Targets.def.in", 51 out = "include/llvm/Config/Targets.def", 52 macro_name = "TARGET", 53 targets = llvm_targets, 54) 55 56# Enabled targets with ASM printers. 57llvm_target_asm_printers = [ 58 t 59 for t in llvm_targets 60 if glob(["lib/Target/{}/*AsmPrinter.cpp".format(t)]) 61] 62 63enum_targets_gen( 64 name = "asm_printers_def_gen", 65 src = "include/llvm/Config/AsmPrinters.def.in", 66 out = "include/llvm/Config/AsmPrinters.def", 67 macro_name = "ASM_PRINTER", 68 targets = llvm_target_asm_printers, 69) 70 71# Enabled targets with ASM parsers. 72llvm_target_asm_parsers = [ 73 t 74 for t in llvm_targets 75 if glob( 76 ["lib/Target/{}/AsmParser/CMakeLists.txt".format(t)], 77 allow_empty = True, 78 ) 79] 80 81enum_targets_gen( 82 name = "asm_parsers_def_gen", 83 src = "include/llvm/Config/AsmParsers.def.in", 84 out = "include/llvm/Config/AsmParsers.def", 85 macro_name = "ASM_PARSER", 86 targets = llvm_target_asm_parsers, 87) 88 89# Enabled targets with disassemblers. 90llvm_target_disassemblers = [ 91 t 92 for t in llvm_targets 93 if glob( 94 ["lib/Target/{}/Disassembler/CMakeLists.txt".format(t)], 95 allow_empty = True, 96 ) 97] 98 99enum_targets_gen( 100 name = "disassemblers_def_gen", 101 src = "include/llvm/Config/Disassemblers.def.in", 102 out = "include/llvm/Config/Disassemblers.def", 103 macro_name = "DISASSEMBLER", 104 targets = llvm_target_disassemblers, 105) 106 107# Enabled targets with MCA. 108llvm_target_mcas = [ 109 t 110 for t in llvm_targets 111 if glob( 112 ["lib/Target/{}/MCA/CMakeLists.txt".format(t)], 113 allow_empty = True, 114 ) 115] 116 117enum_targets_gen( 118 name = "target_mca_def_gen", 119 src = "include/llvm/Config/TargetMCAs.def.in", 120 out = "include/llvm/Config/TargetMCAs.def", 121 macro_name = "TARGETMCA", 122 targets = llvm_target_mcas, 123) 124 125# Enabled targets with exegesis. 126llvm_target_exegesis = [ 127 t 128 for t in llvm_targets 129 if glob( 130 ["tools/llvm-exegesis/lib/{}/CMakeLists.txt".format(t)], 131 allow_empty = True, 132 ) 133] 134 135enum_targets_gen( 136 name = "target_exegesis_def_gen", 137 src = "include/llvm/Config/TargetExegesis.def.in", 138 out = "include/llvm/Config/TargetExegesis.def", 139 macro_name = "EXEGESIS", 140 placeholder_name = "@LLVM_ENUM_EXEGESIS@", 141 targets = llvm_target_exegesis, 142) 143 144expand_template( 145 name = "abi_breaking_h_gen", 146 out = "include/llvm/Config/abi-breaking.h", 147 substitutions = { 148 # Define to enable checks that alter the LLVM C++ ABI 149 "#cmakedefine01 LLVM_ENABLE_ABI_BREAKING_CHECKS": "#define LLVM_ENABLE_ABI_BREAKING_CHECKS 0", 150 151 # Define to enable reverse iteration of unordered llvm containers 152 "#cmakedefine01 LLVM_ENABLE_REVERSE_ITERATION": "#define LLVM_ENABLE_REVERSE_ITERATION 0", 153 }, 154 template = "include/llvm/Config/abi-breaking.h.cmake", 155) 156 157# To enable diff testing out of tree 158exports_files([ 159 "include/llvm/Config/config.h.cmake", 160 "include/llvm/Config/llvm-config.h.cmake", 161 "include/llvm/Config/abi-breaking.h.cmake", 162]) 163 164td_library( 165 name = "OptParserTdFiles", 166 srcs = ["include/llvm/Option/OptParser.td"], 167 includes = ["include"], 168) 169 170llvm_config_target_defines = [ 171 "LLVM_HAS_{}_TARGET=1".format(t) 172 for t in llvm_targets 173] 174 175cc_library( 176 name = "config", 177 hdrs = [ 178 "include/llvm/Config/abi-breaking.h", 179 "include/llvm/Config/llvm-config.h", 180 ], 181 copts = llvm_copts, 182 defines = llvm_config_defines + llvm_config_target_defines, 183 includes = ["include"], 184 textual_hdrs = [ 185 "include/llvm/Config/AsmParsers.def", 186 "include/llvm/Config/AsmPrinters.def", 187 "include/llvm/Config/Disassemblers.def", 188 "include/llvm/Config/Targets.def", 189 "include/llvm/Config/TargetExegesis.def", 190 "include/llvm/Config/TargetMCAs.def", 191 # Needed for include scanner to find execinfo.h 192 "include/llvm/Config/config.h", 193 ], 194) 195 196cc_library( 197 name = "Demangle", 198 srcs = glob([ 199 "lib/Demangle/*.cpp", 200 ]), 201 hdrs = glob([ 202 "include/llvm/Demangle/*.h", 203 "include/llvm/Demangle/*.def", 204 ]), 205 copts = llvm_copts, 206 deps = [":config"], 207) 208 209genrule( 210 name = "generate_vcs_revision", 211 outs = ["include/llvm/Support/VCSRevision.h"], 212 cmd = "echo '#undef LLVM_REVISION' >> $@\n" + 213 "echo '#undef LLVM_REPOSITORY' >> $@\n", 214) 215 216genrule( 217 name = "generate_static_extension_registry", 218 outs = ["include/llvm/Support/Extension.def"], 219 cmd = "echo -e '// extension handlers' >> $@\n" + 220 "echo -e '#undef HANDLE_EXTENSION' >> $@\n", 221) 222 223cc_library( 224 name = "Support", 225 srcs = glob([ 226 "lib/Support/*.c", 227 "lib/Support/*.cpp", 228 "lib/Support/*.h", 229 "lib/Support/*.inc", 230 # To avoid a dependency cycle. 231 "include/llvm/Option/*.h", 232 ]) + select({ 233 "@platforms//os:windows": glob([ 234 "lib/Support/Windows/*.inc", 235 ]), 236 "//conditions:default": glob([ 237 "lib/Support/Unix/*.h", 238 "lib/Support/Unix/*.inc", 239 ]), 240 }) + [ 241 "lib/Support/BLAKE3/blake3.c", 242 "lib/Support/BLAKE3/blake3_dispatch.c", 243 "lib/Support/BLAKE3/blake3_impl.h", 244 "lib/Support/BLAKE3/blake3_portable.c", 245 "lib/Support/BLAKE3/llvm_blake3_prefix.h", 246 ] + select({ 247 "@platforms//cpu:aarch64": [ 248 "lib/Support/BLAKE3/blake3_neon.c", 249 ], 250 "@platforms//cpu:x86_64": [ 251 "lib/Support/BLAKE3/blake3_avx2_x86-64_unix.S", 252 "lib/Support/BLAKE3/blake3_avx512_x86-64_unix.S", 253 "lib/Support/BLAKE3/blake3_sse2_x86-64_unix.S", 254 "lib/Support/BLAKE3/blake3_sse41_x86-64_unix.S", 255 ], 256 "//conditions:default": [ 257 ], 258 }), 259 hdrs = glob([ 260 "include/llvm/Support/**/*.h", 261 "include/llvm/ADT/*.h", 262 ]) + [ 263 "include/llvm-c/Core.h", 264 "include/llvm-c/DataTypes.h", 265 "include/llvm-c/Deprecated.h", 266 "include/llvm-c/DisassemblerTypes.h", 267 "include/llvm-c/Error.h", 268 "include/llvm-c/ErrorHandling.h", 269 "include/llvm-c/ExternC.h", 270 "include/llvm-c/Support.h", 271 "include/llvm-c/Types.h", 272 "include/llvm-c/blake3.h", 273 "include/llvm/ExecutionEngine/JITSymbol.h", 274 "include/llvm/Support/Extension.def", 275 "include/llvm/Support/VCSRevision.h", 276 ], 277 copts = llvm_copts, 278 defines = select({ 279 "@platforms//cpu:aarch64": [ 280 ], 281 "//conditions:default": [ 282 "BLAKE3_USE_NEON=0", 283 ], 284 }) + select({ 285 "@platforms//cpu:x86_64": [ 286 ], 287 "//conditions:default": [ 288 "BLAKE3_NO_AVX2", 289 "BLAKE3_NO_AVX512", 290 "BLAKE3_NO_SSE2", 291 "BLAKE3_NO_SSE41", 292 ], 293 }), 294 includes = ["include"], 295 linkopts = select({ 296 "@platforms//os:windows": [ 297 "ws2_32.lib", 298 "ntdll.lib", 299 ], 300 "@platforms//os:freebsd": [ 301 "-pthread", 302 "-lexecinfo", 303 "-ldl", 304 "-lm", 305 ], 306 "@platforms//os:macos": [ 307 "-pthread", 308 "-ldl", 309 ], 310 "//conditions:default": [ 311 "-pthread", 312 "-ldl", 313 "-lm", 314 ], 315 }), 316 textual_hdrs = glob([ 317 "include/llvm/Support/*.def", 318 ]), 319 deps = [ 320 ":config", 321 ":Demangle", 322 # We unconditionally depend on the custom LLVM zlib wrapper. This will 323 # be an empty library unless zlib is enabled, in which case it will 324 # both provide the necessary dependencies and configuration defines. 325 "@llvm_zlib//:zlib", 326 # We unconditionally depend on the custom LLVM zstd wrapper. This will 327 # be an empty library unless zstd is enabled, in which case it will 328 # both provide the necessary dependencies and configuration defines. 329 "@llvm_zstd//:zstd", 330 ], 331) 332 333# Note: although FileCheck (the binary) is a test utility, some non-test 334# targets depend on the FileCheck library target. 335cc_library( 336 name = "FileCheckLib", 337 srcs = glob([ 338 "lib/FileCheck/*.cpp", 339 "lib/FileCheck/*.h", 340 ]), 341 hdrs = glob(["include/llvm/FileCheck/*.h"]), 342 copts = llvm_copts, 343 deps = [":Support"], 344) 345 346cc_library( 347 name = "LineEditor", 348 srcs = glob([ 349 "lib/LineEditor/*.cpp", 350 ]), 351 hdrs = glob(["include/llvm/LineEditor/*.h"]), 352 copts = llvm_copts, 353 deps = [ 354 ":Support", 355 ":config", 356 ], 357) 358 359cc_library( 360 name = "Option", 361 srcs = glob([ 362 "lib/Option/*.cpp", 363 ]), 364 hdrs = glob(["include/llvm/Option/*.h"]), 365 copts = llvm_copts, 366 deps = [ 367 ":Support", 368 ":config", 369 ], 370) 371 372cc_library( 373 name = "TableGen", 374 srcs = glob([ 375 "lib/TableGen/*.cpp", 376 "lib/TableGen/*.h", 377 ]), 378 hdrs = glob(["include/llvm/TableGen/*.h"]), 379 copts = llvm_copts, 380 deps = [ 381 ":Support", 382 ":config", 383 ], 384) 385 386# This exists to avoid circular dependencies. 387cc_library( 388 name = "ir_headers", 389 hdrs = glob( 390 [ 391 "include/llvm/*.h", 392 "include/llvm/IR/*.h", 393 ], 394 exclude = [ 395 "include/llvm/LinkAllPasses.h", 396 ], 397 ) + [ 398 "include/llvm-c/Comdat.h", 399 "include/llvm-c/DebugInfo.h", 400 "include/llvm/IR/Value.def", 401 ], 402 copts = llvm_copts, 403) 404 405cc_library( 406 name = "BinaryFormat", 407 srcs = glob([ 408 "lib/BinaryFormat/*.cpp", 409 ]), 410 hdrs = glob([ 411 "include/llvm/BinaryFormat/*.h", 412 ]), 413 copts = llvm_copts, 414 includes = ["include"], 415 textual_hdrs = glob([ 416 "include/llvm/BinaryFormat/*.def", 417 "include/llvm/BinaryFormat/ELFRelocs/*.def", 418 ]), 419 deps = [ 420 ":Support", 421 ":TargetParser", 422 ], 423) 424 425cc_library( 426 name = "DebugInfo", 427 hdrs = glob(["include/llvm/DebugInfo/*.h"]), 428 copts = llvm_copts, 429 deps = [ 430 ":Object", 431 ":Support", 432 ], 433) 434 435cc_library( 436 name = "DebugInfoMSF", 437 srcs = glob([ 438 "lib/DebugInfo/MSF/*.cpp", 439 ]), 440 hdrs = glob(["include/llvm/DebugInfo/MSF/*.h"]), 441 copts = llvm_copts, 442 deps = [":Support"], 443) 444 445cc_library( 446 name = "DebugInfoBTF", 447 srcs = glob([ 448 "lib/DebugInfo/BTF/*.cpp", 449 ]), 450 hdrs = glob(["include/llvm/DebugInfo/BTF/*.h"]) + [ 451 "include/llvm/DebugInfo/BTF/BTF.def", 452 ], 453 copts = llvm_copts, 454 deps = [ 455 ":DebugInfo", 456 ":Object", 457 ":Support", 458 ], 459) 460 461cc_library( 462 name = "DebugInfoCodeView", 463 srcs = glob([ 464 "lib/DebugInfo/CodeView/*.cpp", 465 ]), 466 hdrs = glob([ 467 "include/llvm/DebugInfo/CodeView/*.h", 468 ]), 469 copts = llvm_copts, 470 textual_hdrs = glob([ 471 "include/llvm/DebugInfo/CodeView/*.def", 472 ]), 473 deps = [ 474 ":BinaryFormat", 475 ":DebugInfoMSF", 476 ":Support", 477 ], 478) 479 480cc_library( 481 name = "DebugInfoLogicalView", 482 srcs = glob([ 483 "lib/DebugInfo/LogicalView/**/*.cpp", 484 ]), 485 hdrs = glob([ 486 "include/llvm/DebugInfo/LogicalView/**/*.h", 487 ]), 488 copts = llvm_copts, 489 deps = [ 490 ":BinaryFormat", 491 ":DebugInfo", 492 ":DebugInfoCodeView", 493 ":DebugInfoDWARF", 494 ":DebugInfoPDB", 495 ":Demangle", 496 ":MC", 497 ":MCDisassembler", 498 ":Object", 499 ":Support", 500 ], 501) 502 503cc_library( 504 name = "DebugInfoPDB", 505 srcs = glob([ 506 "lib/DebugInfo/PDB/*.cpp", 507 "lib/DebugInfo/PDB/Native/*.cpp", 508 ]), 509 hdrs = glob([ 510 "include/llvm/DebugInfo/PDB/*.h", 511 "include/llvm/DebugInfo/PDB/Native/*.h", 512 ]), 513 copts = llvm_copts, 514 deps = [ 515 ":BinaryFormat", 516 ":DebugInfo", 517 ":DebugInfoBTF", 518 ":DebugInfoCodeView", 519 ":DebugInfoMSF", 520 ":Object", 521 ":Support", 522 ":config", 523 ], 524) 525 526cc_library( 527 name = "Debuginfod", 528 srcs = glob([ 529 "lib/Debuginfod/*.cpp", 530 ]), 531 hdrs = glob([ 532 "include/llvm/Debuginfod/*.h", 533 ]), 534 copts = llvm_copts, 535 deps = [ 536 ":BinaryFormat", 537 ":DebugInfoDWARF", 538 ":Object", 539 ":Support", 540 ":Symbolize", 541 ], 542) 543 544cc_library( 545 name = "MC", 546 srcs = glob([ 547 "lib/MC/*.cpp", 548 ]), 549 hdrs = glob([ 550 "include/llvm/MC/*.h", 551 ]), 552 copts = llvm_copts, 553 deps = [ 554 ":BinaryFormat", 555 ":DebugInfoCodeView", 556 ":Support", 557 ":TargetParser", 558 ":config", 559 ":ir_headers", 560 ], 561) 562 563cc_library( 564 name = "DebugInfoDWARF", 565 srcs = glob([ 566 "lib/DebugInfo/DWARF/*.cpp", 567 ]), 568 hdrs = glob(["include/llvm/DebugInfo/DWARF/*.h"]), 569 copts = llvm_copts, 570 deps = [ 571 ":BinaryFormat", 572 ":DebugInfo", 573 ":MC", 574 ":Object", 575 ":Support", 576 ":TargetParser", 577 ], 578) 579 580cc_library( 581 name = "DebugInfoGSYM", 582 srcs = glob([ 583 "lib/DebugInfo/GSYM/*.cpp", 584 ]), 585 hdrs = glob(["include/llvm/DebugInfo/GSYM/*.h"]), 586 copts = llvm_copts, 587 deps = [ 588 ":DebugInfo", 589 ":DebugInfoDWARF", 590 ":MC", 591 ":Object", 592 ":Support", 593 ], 594) 595 596cc_library( 597 name = "Symbolize", 598 srcs = glob([ 599 "lib/DebugInfo/Symbolize/*.cpp", 600 ]), 601 hdrs = glob([ 602 "include/llvm/DebugInfo/Symbolize/*.h", 603 "include/llvm/Debuginfod/*.h", 604 ]), 605 copts = llvm_copts, 606 deps = [ 607 ":BinaryFormat", 608 ":DebugInfo", 609 ":DebugInfoBTF", 610 ":DebugInfoDWARF", 611 ":DebugInfoPDB", 612 ":Demangle", 613 ":Object", 614 ":Support", 615 ":TargetParser", 616 ], 617) 618 619# Command line flag to control which tools get included in the llvm driver binary. 620# The macro also generates config_setting targets used by select_driver_tools(). 621generate_driver_selects(name = "driver-tools") 622 623generate_driver_tools_def( 624 name = "gen_llvm_driver_tools_def", 625 out = "LLVMDriverTools.def", 626 driver_tools = select_driver_tools(":driver-tools"), 627) 628 629# Workaround inability to put `.def` files into `srcs` with a library 630cc_library( 631 name = "llvm_driver_tools_def_lib", 632 includes = ["."], 633 textual_hdrs = ["LLVMDriverTools.def"], 634) 635 636cc_binary( 637 name = "llvm", 638 srcs = glob(["tools/llvm-driver/*.cpp"]), 639 deps = [ 640 ":Support", 641 ":llvm_driver_tools_def_lib", 642 ] + select_driver_tools(":driver-tools"), 643) 644 645cc_binary( 646 name = "llvm-min-tblgen", 647 srcs = [ 648 "utils/TableGen/Basic/ARMTargetDefEmitter.cpp", 649 "utils/TableGen/Basic/Attributes.cpp", 650 "utils/TableGen/Basic/CodeGenIntrinsics.cpp", 651 "utils/TableGen/Basic/CodeGenIntrinsics.h", 652 "utils/TableGen/Basic/DirectiveEmitter.cpp", 653 "utils/TableGen/Basic/IntrinsicEmitter.cpp", 654 "utils/TableGen/Basic/RISCVTargetDefEmitter.cpp", 655 "utils/TableGen/Basic/SDNodeProperties.cpp", 656 "utils/TableGen/Basic/SDNodeProperties.h", 657 "utils/TableGen/Basic/SequenceToOffsetTable.h", 658 "utils/TableGen/Basic/TableGen.cpp", 659 "utils/TableGen/Basic/TableGen.h", 660 "utils/TableGen/Basic/VTEmitter.cpp", 661 "utils/TableGen/llvm-min-tblgen.cpp", 662 ], 663 copts = llvm_copts, 664 stamp = 0, 665 deps = [ 666 ":Support", 667 ":TableGen", 668 ":config", 669 ], 670) 671 672cc_library( 673 name = "TableGenGlobalISel", 674 srcs = [ 675 "utils/TableGen/Common/GlobalISel/CodeExpander.cpp", 676 ], 677 hdrs = [ 678 # We have to include these headers here as well as in the `hdrs` below 679 # to allow the `.cpp` files to use file-relative-inclusion to find 680 # them, even though consumers of this library use inclusion relative to 681 # `utils/TableGen` with the `strip_includes_prefix` of this library. 682 # This mixture appears to be incompatible with header modules. 683 "utils/TableGen/Common/GlobalISel/CodeExpander.h", 684 "utils/TableGen/Common/GlobalISel/CodeExpansions.h", 685 ], 686 copts = llvm_copts, 687 features = ["-header_modules"], 688 strip_include_prefix = "utils/TableGen", 689 deps = [ 690 ":CodeGenTypes", 691 ":Support", 692 ":TableGen", 693 ":config", 694 ], 695) 696 697cc_library( 698 name = "llvm-tblgen-headers", 699 textual_hdrs = glob(["utils/TableGen/*.def"]), 700) 701 702cc_binary( 703 name = "llvm-tblgen", 704 srcs = glob( 705 [ 706 "utils/TableGen/*.cpp", 707 "utils/TableGen/*.h", 708 "utils/TableGen/Basic/*.cpp", 709 "utils/TableGen/Basic/*.h", 710 "utils/TableGen/Common/*.cpp", 711 "utils/TableGen/Common/*.h", 712 "utils/TableGen/Common/GlobalISel/*.cpp", 713 "utils/TableGen/Common/GlobalISel/*.h", 714 715 # Some tablegen sources include headers from MC, so these have to be 716 # listed here. MC uses headers produced by tablegen, so it cannot be a 717 # regular dependency. 718 "include/llvm/MC/*.h", 719 ], 720 exclude = [ 721 "utils/TableGen/Common/GlobalISel/CodeExpander.cpp", 722 "utils/TableGen/llvm-min-tblgen.cpp", 723 ], 724 ) + [ 725 "include/llvm/TargetParser/SubtargetFeature.h", 726 ], 727 copts = llvm_copts, 728 includes = ["utils/TableGen"], 729 stamp = 0, 730 deps = [ 731 ":CodeGenTypes", 732 ":Support", 733 ":TableGen", 734 ":TableGenGlobalISel", 735 ":TargetParser", 736 ":config", 737 ":llvm-tblgen-headers", 738 ":vt_gen", 739 ], 740) 741 742gentbl( 743 name = "intrinsic_enums_gen", 744 tbl_outs = [("-gen-intrinsic-enums", "include/llvm/IR/IntrinsicEnums.inc")], 745 tblgen = ":llvm-min-tblgen", 746 td_file = "include/llvm/IR/Intrinsics.td", 747 td_srcs = glob([ 748 "include/llvm/CodeGen/*.td", 749 "include/llvm/IR/Intrinsics*.td", 750 ]), 751) 752 753gentbl( 754 name = "intrinsics_impl_gen", 755 tbl_outs = [("-gen-intrinsic-impl", "include/llvm/IR/IntrinsicImpl.inc")], 756 tblgen = ":llvm-min-tblgen", 757 td_file = "include/llvm/IR/Intrinsics.td", 758 td_srcs = glob([ 759 "include/llvm/CodeGen/*.td", 760 "include/llvm/IR/Intrinsics*.td", 761 ]), 762) 763 764gentbl( 765 name = "vt_gen", 766 tbl_outs = [("-gen-vt", "include/llvm/CodeGen/GenVT.inc")], 767 tblgen = ":llvm-min-tblgen", 768 td_file = "include/llvm/CodeGen/ValueTypes.td", 769 td_srcs = [ 770 "include/llvm/CodeGen/ValueTypes.td", 771 ], 772) 773 774# Note that the intrinsics are not currently set up so they can be pruned for 775# disabled targets. 776llvm_target_intrinsics_list = [ 777 { 778 "name": "AArch64", 779 "intrinsic_prefix": "aarch64", 780 }, 781 { 782 "name": "AMDGPU", 783 "intrinsic_prefix": "amdgcn", 784 }, 785 { 786 "name": "ARM", 787 "intrinsic_prefix": "arm", 788 }, 789 { 790 "name": "BPF", 791 "intrinsic_prefix": "bpf", 792 }, 793 { 794 "name": "DirectX", 795 "intrinsic_prefix": "dx", 796 }, 797 { 798 "name": "Hexagon", 799 "intrinsic_prefix": "hexagon", 800 }, 801 { 802 "name": "LoongArch", 803 "intrinsic_prefix": "loongarch", 804 }, 805 { 806 "name": "Mips", 807 "intrinsic_prefix": "mips", 808 }, 809 { 810 "name": "NVPTX", 811 "intrinsic_prefix": "nvvm", 812 }, 813 { 814 "name": "PowerPC", 815 "intrinsic_prefix": "ppc", 816 }, 817 { 818 "name": "R600", 819 "intrinsic_prefix": "r600", 820 }, 821 { 822 "name": "RISCV", 823 "intrinsic_prefix": "riscv", 824 }, 825 { 826 "name": "S390", 827 "intrinsic_prefix": "s390", 828 }, 829 { 830 "name": "SPIRV", 831 "intrinsic_prefix": "spv", 832 }, 833 { 834 "name": "VE", 835 "intrinsic_prefix": "ve", 836 }, 837 { 838 "name": "WebAssembly", 839 "intrinsic_prefix": "wasm", 840 }, 841 { 842 "name": "X86", 843 "intrinsic_prefix": "x86", 844 }, 845 { 846 "name": "XCore", 847 "intrinsic_prefix": "xcore", 848 }, 849] 850 851[[ 852 gentbl( 853 name = "intrinsic_" + target["name"] + "_gen", 854 tbl_outs = [( 855 "-gen-intrinsic-enums -intrinsic-prefix=" + target["intrinsic_prefix"], 856 "include/llvm/IR/Intrinsics" + target["name"] + ".h", 857 )], 858 tblgen = ":llvm-min-tblgen", 859 td_file = "include/llvm/IR/Intrinsics.td", 860 td_srcs = glob([ 861 "include/llvm/CodeGen/*.td", 862 "include/llvm/IR/*.td", 863 ]), 864 ), 865] for target in llvm_target_intrinsics_list] 866 867gentbl( 868 name = "attributes_gen", 869 tbl_outs = [("-gen-attrs", "include/llvm/IR/Attributes.inc")], 870 tblgen = ":llvm-min-tblgen", 871 td_file = "include/llvm/IR/Attributes.td", 872 td_srcs = ["include/llvm/IR/Attributes.td"], 873) 874 875cc_library( 876 name = "BitstreamReader", 877 srcs = glob([ 878 "lib/Bitstream/Reader/*.cpp", 879 ]), 880 hdrs = [ 881 "include/llvm/Bitstream/BitCodeEnums.h", 882 "include/llvm/Bitstream/BitCodes.h", 883 "include/llvm/Bitstream/BitstreamReader.h", 884 ], 885 copts = llvm_copts, 886 deps = [ 887 ":Support", 888 ], 889) 890 891cc_library( 892 name = "BitstreamWriter", 893 hdrs = [ 894 "include/llvm/Bitstream/BitCodeEnums.h", 895 "include/llvm/Bitstream/BitCodes.h", 896 "include/llvm/Bitstream/BitstreamWriter.h", 897 ], 898 copts = llvm_copts, 899 deps = [ 900 ":Support", 901 ], 902) 903 904cc_library( 905 name = "Remarks", 906 srcs = glob( 907 [ 908 "lib/Remarks/*.cpp", 909 "lib/Remarks/*.h", 910 ], 911 exclude = ["lib/Remarks/RemarkLinker.cpp"], 912 ), 913 hdrs = glob( 914 [ 915 "include/llvm/Remarks/*.h", 916 ], 917 exclude = ["include/llvm/Remarks/RemarkLinker.h"], 918 ) + [ 919 "include/llvm-c/Remarks.h", 920 ], 921 copts = llvm_copts, 922 deps = [ 923 ":BitstreamReader", 924 ":BitstreamWriter", 925 ":Support", 926 ], 927) 928 929cc_library( 930 name = "remark_linker", 931 srcs = ["lib/Remarks/RemarkLinker.cpp"], 932 hdrs = ["include/llvm/Remarks/RemarkLinker.h"], 933 copts = llvm_copts, 934 deps = [ 935 ":Object", 936 ":Remarks", 937 ":Support", 938 ], 939) 940 941filegroup( 942 name = "llvm_intrinsics_headers", 943 srcs = [ 944 "include/llvm/IR/Intrinsics" + target["name"] + ".h" 945 for target in llvm_target_intrinsics_list 946 ], 947) 948 949cc_library( 950 name = "Core", 951 srcs = glob([ 952 "lib/IR/*.cpp", 953 "lib/IR/*.h", 954 ]), 955 hdrs = glob( 956 [ 957 "include/llvm/*.h", 958 "include/llvm/IR/*.h", 959 ], 960 exclude = [ 961 "include/llvm/LinkAllPasses.h", 962 ], 963 ) + [ 964 "include/llvm-c/Comdat.h", 965 "include/llvm-c/DebugInfo.h", 966 "include/llvm/Analysis/SimplifyQuery.h", 967 "include/llvm/Analysis/ValueTracking.h", 968 "include/llvm/Analysis/WithCache.h", 969 ] + [":llvm_intrinsics_headers"], 970 copts = llvm_copts, 971 textual_hdrs = glob(["include/llvm/IR/*.def"]), 972 deps = [ 973 ":BinaryFormat", 974 ":Demangle", 975 ":Remarks", 976 ":Support", 977 ":TargetParser", 978 ":attributes_gen", 979 ":config", 980 ":intrinsic_enums_gen", 981 ":intrinsics_impl_gen", 982 ], 983) 984 985cc_library( 986 name = "BitReader", 987 srcs = glob([ 988 "lib/Bitcode/Reader/*.cpp", 989 "lib/Bitcode/Reader/*.h", 990 ]), 991 hdrs = [ 992 "include/llvm-c/BitReader.h", 993 "include/llvm/Bitcode/BitcodeAnalyzer.h", 994 "include/llvm/Bitcode/BitcodeCommon.h", 995 "include/llvm/Bitcode/BitcodeReader.h", 996 "include/llvm/Bitcode/LLVMBitCodes.h", 997 ], 998 copts = llvm_copts, 999 deps = [ 1000 ":BinaryFormat", 1001 ":BitstreamReader", 1002 ":Core", 1003 ":Support", 1004 ":TargetParser", 1005 ":config", 1006 ], 1007) 1008 1009cc_library( 1010 name = "MCParser", 1011 srcs = glob([ 1012 "lib/MC/MCParser/*.cpp", 1013 ]), 1014 hdrs = glob(["include/llvm/MC/MCParser/*.h"]), 1015 copts = llvm_copts, 1016 deps = [ 1017 ":BinaryFormat", 1018 ":DebugInfoCodeView", 1019 ":MC", 1020 ":Support", 1021 ":TargetParser", 1022 ":config", 1023 ], 1024) 1025 1026cc_library( 1027 name = "TextAPI", 1028 srcs = glob( 1029 [ 1030 "lib/TextAPI/**/*.cpp", 1031 ], 1032 exclude = ["lib/TextAPI/BinaryReader/**"], 1033 ), 1034 hdrs = glob( 1035 [ 1036 "include/llvm/TextAPI/**/*.h", 1037 "include/llvm/TextAPI/**/*.def", 1038 "lib/TextAPI/**/*.h", 1039 ], 1040 exclude = [ 1041 "lib/TextAPI/BinaryReader/**", 1042 "include/llvm/TextAPI/DylibReader.h", 1043 ], 1044 ), 1045 copts = llvm_copts, 1046 deps = [ 1047 ":BinaryFormat", 1048 ":Support", 1049 ":TargetParser", 1050 ], 1051) 1052 1053cc_library( 1054 name = "TextAPIBinaryReader", 1055 srcs = glob([ 1056 "lib/TextAPI/BinaryReader/**/*.cpp", 1057 ]), 1058 hdrs = ["include/llvm/TextAPI/DylibReader.h"], 1059 copts = llvm_copts, 1060 deps = [ 1061 ":DebugInfoDWARF", 1062 ":Object", 1063 ":Support", 1064 ":TargetParser", 1065 ":TextAPI", 1066 ], 1067) 1068 1069cc_library( 1070 name = "ObjCopy", 1071 srcs = glob([ 1072 "lib/ObjCopy/**/*.cpp", 1073 "lib/ObjCopy/**/*.h", 1074 ]), 1075 hdrs = glob([ 1076 "include/llvm/ObjCopy/**/*.h", 1077 ]), 1078 copts = llvm_copts, 1079 includes = ["lib/ObjCopy"], 1080 deps = [ 1081 ":BinaryFormat", 1082 ":MC", 1083 ":Object", 1084 ":ObjectYAML", 1085 ":Option", 1086 ":Support", 1087 ":Target", 1088 ":intrinsics_impl_gen", 1089 ], 1090) 1091 1092cc_library( 1093 name = "Object", 1094 srcs = glob([ 1095 "lib/Object/*.cpp", 1096 "lib/Object/*.h", 1097 ]), 1098 hdrs = glob([ 1099 "include/llvm/Object/*.h", 1100 ]) + [ 1101 "include/llvm-c/Object.h", 1102 ], 1103 copts = llvm_copts, 1104 deps = [ 1105 ":BinaryFormat", 1106 ":BitReader", 1107 ":Core", 1108 ":IRReader", 1109 ":MC", 1110 ":MCParser", 1111 ":Support", 1112 ":TargetParser", 1113 ":TextAPI", 1114 ":config", 1115 ], 1116) 1117 1118cc_library( 1119 name = "ObjectYAML", 1120 srcs = glob([ 1121 "lib/ObjectYAML/*.cpp", 1122 ]), 1123 hdrs = glob(["include/llvm/ObjectYAML/*.h"]), 1124 copts = llvm_copts, 1125 deps = [ 1126 ":BinaryFormat", 1127 ":DebugInfoCodeView", 1128 ":MC", 1129 ":Object", 1130 ":Support", 1131 ":TargetParser", 1132 ], 1133) 1134 1135cc_library( 1136 name = "ProfileData", 1137 srcs = glob([ 1138 "lib/ProfileData/*.cpp", 1139 ]), 1140 hdrs = glob([ 1141 "include/llvm/ProfileData/*.h", 1142 "include/llvm/ProfileData/*.inc", 1143 ]), 1144 copts = llvm_copts, 1145 deps = [ 1146 ":BitstreamReader", 1147 ":BitstreamWriter", 1148 ":Core", 1149 ":DebugInfo", 1150 ":DebugInfoDWARF", 1151 ":Demangle", 1152 ":Object", 1153 ":Support", 1154 ":Symbolize", 1155 ":TargetParser", 1156 ":config", 1157 ], 1158) 1159 1160cc_library( 1161 name = "Coverage", 1162 srcs = glob([ 1163 "lib/ProfileData/Coverage/*.cpp", 1164 ]), 1165 hdrs = glob(["include/llvm/ProfileData/Coverage/*.h"]), 1166 copts = llvm_copts, 1167 deps = [ 1168 ":BinaryFormat", 1169 ":Object", 1170 ":ProfileData", 1171 ":Support", 1172 ":TargetParser", 1173 ], 1174) 1175 1176cc_library( 1177 name = "Analysis", 1178 srcs = glob( 1179 [ 1180 "lib/Analysis/*.cpp", 1181 ], 1182 ), 1183 hdrs = glob( 1184 [ 1185 "include/llvm/Analysis/*.h", 1186 "include/llvm/Analysis/Utils/*.h", 1187 ], 1188 ) + [ 1189 "include/llvm-c/Analysis.h", 1190 ], 1191 copts = llvm_copts, 1192 textual_hdrs = glob([ 1193 "include/llvm/Analysis/*.def", 1194 ]), 1195 deps = [ 1196 ":BinaryFormat", 1197 ":Core", 1198 ":Object", 1199 ":ProfileData", 1200 ":Support", 1201 ":TargetParser", 1202 ":config", 1203 ], 1204) 1205 1206cc_library( 1207 name = "BitWriter", 1208 srcs = glob([ 1209 "lib/Bitcode/Writer/*.cpp", 1210 "lib/Bitcode/Writer/*.h", 1211 ]), 1212 hdrs = [ 1213 "include/llvm-c/BitWriter.h", 1214 "include/llvm/Bitcode/BitcodeCommon.h", 1215 "include/llvm/Bitcode/BitcodeConvenience.h", 1216 "include/llvm/Bitcode/BitcodeWriter.h", 1217 "include/llvm/Bitcode/BitcodeWriterPass.h", 1218 "include/llvm/Bitcode/LLVMBitCodes.h", 1219 ], 1220 copts = llvm_copts, 1221 deps = [ 1222 ":Analysis", 1223 ":BitReader", 1224 ":BitstreamWriter", 1225 ":Core", 1226 ":MC", 1227 ":Object", 1228 ":ProfileData", 1229 ":Support", 1230 ":TargetParser", 1231 ":config", 1232 ], 1233) 1234 1235cc_library( 1236 name = "Target", 1237 srcs = glob([ 1238 "lib/Target/*.cpp", 1239 ]), 1240 hdrs = glob([ 1241 "include/llvm/Target/*.h", 1242 ]) + [ 1243 "include/llvm-c/Target.h", 1244 "include/llvm-c/TargetMachine.h", 1245 ], 1246 copts = llvm_copts, 1247 deps = [ 1248 ":Analysis", 1249 ":BinaryFormat", 1250 ":Core", 1251 ":MC", 1252 ":Support", 1253 ":TargetParser", 1254 ":config", 1255 ], 1256) 1257 1258filegroup( 1259 name = "common_target_td_sources", 1260 srcs = glob([ 1261 "include/llvm/CodeGen/*.td", 1262 "include/llvm/Frontend/Directive/*.td", 1263 "include/llvm/IR/Intrinsics*.td", 1264 "include/llvm/TableGen/*.td", 1265 "include/llvm/Target/*.td", 1266 "include/llvm/Target/GlobalISel/*.td", 1267 ]), 1268) 1269 1270td_library( 1271 name = "CommonTargetTdFiles", 1272 srcs = [":common_target_td_sources"], 1273 includes = ["include"], 1274) 1275 1276gentbl( 1277 name = "ARMTargetParserDefGen", 1278 tbl_outs = [("-gen-arm-target-def", "include/llvm/TargetParser/ARMTargetParserDef.inc")], 1279 tblgen = ":llvm-min-tblgen", 1280 td_file = "lib/Target/ARM/ARM.td", 1281 td_srcs = [ 1282 ":common_target_td_sources", 1283 ] + glob([ 1284 "lib/Target/ARM/**/*.td", 1285 ]), 1286) 1287 1288gentbl( 1289 name = "AArch64TargetParserDefGen", 1290 tbl_outs = [("-gen-arm-target-def", "include/llvm/TargetParser/AArch64TargetParserDef.inc")], 1291 tblgen = ":llvm-min-tblgen", 1292 td_file = "lib/Target/AArch64/AArch64.td", 1293 td_srcs = [ 1294 ":common_target_td_sources", 1295 ] + glob([ 1296 "lib/Target/AArch64/**/*.td", 1297 ]), 1298) 1299 1300gentbl( 1301 name = "RISCVTargetParserDefGen", 1302 tbl_outs = [("-gen-riscv-target-def", "include/llvm/TargetParser/RISCVTargetParserDef.inc")], 1303 tblgen = ":llvm-min-tblgen", 1304 td_file = "lib/Target/RISCV/RISCV.td", 1305 td_srcs = [ 1306 ":common_target_td_sources", 1307 ] + glob([ 1308 "lib/Target/RISCV/**/*.td", 1309 ]), 1310) 1311 1312cc_library( 1313 name = "TargetParser", 1314 srcs = glob([ 1315 "lib/TargetParser/*.cpp", 1316 ]) + select({ 1317 "@platforms//os:windows": glob([ 1318 "lib/TargetParser/Windows/*.inc", 1319 ]), 1320 "//conditions:default": glob([ 1321 "lib/TargetParser/Unix/*.inc", 1322 ]), 1323 }), 1324 hdrs = glob([ 1325 "include/llvm/TargetParser/*.h", 1326 ]), 1327 copts = llvm_copts, 1328 includes = ["include"], 1329 textual_hdrs = [ 1330 "include/llvm/TargetParser/AArch64CPUFeatures.inc", 1331 "include/llvm/TargetParser/AArch64FeatPriorities.inc", 1332 "include/llvm/TargetParser/AArch64TargetParserDef.inc", 1333 "include/llvm/TargetParser/ARMTargetParserDef.inc", 1334 "include/llvm/TargetParser/RISCVTargetParserDef.inc", 1335 ] + glob([ 1336 "include/llvm/TargetParser/*.def", 1337 ]), 1338 deps = [ 1339 ":Support", 1340 ":config", 1341 ], 1342) 1343 1344cc_library( 1345 name = "DWP", 1346 srcs = glob([ 1347 "lib/DWP/*.cpp", 1348 ]), 1349 hdrs = glob(["include/llvm/DWP/*.h"]), 1350 copts = llvm_copts, 1351 deps = [ 1352 ":DebugInfoDWARF", 1353 ":MC", 1354 ":Object", 1355 ":Support", 1356 ":Target", 1357 ], 1358) 1359 1360cc_library( 1361 name = "TransformUtils", 1362 srcs = glob([ 1363 "lib/Transforms/Utils/*.cpp", 1364 ]), 1365 hdrs = glob(["include/llvm/Transforms/Utils/*.h"]) + [ 1366 "include/llvm/Transforms/Utils.h", 1367 ], 1368 copts = llvm_copts, 1369 deps = [ 1370 ":Analysis", 1371 ":BinaryFormat", 1372 ":BitWriter", 1373 ":Core", 1374 ":ProfileData", 1375 ":Support", 1376 ":Target", 1377 ":TargetParser", 1378 ":config", 1379 ], 1380) 1381 1382gentbl( 1383 name = "InstCombineTableGen", 1384 strip_include_prefix = "lib/Target/AMDGPU", 1385 tbl_outs = [( 1386 "-gen-searchable-tables", 1387 "lib/Target/AMDGPU/InstCombineTables.inc", 1388 )], 1389 tblgen = ":llvm-tblgen", 1390 td_file = "lib/Target/AMDGPU/InstCombineTables.td", 1391 td_srcs = glob([ 1392 "lib/Target/AMDGPU/*.td", 1393 ]) + [ 1394 ":common_target_td_sources", 1395 ], 1396) 1397 1398cc_library( 1399 name = "InstCombine", 1400 srcs = glob([ 1401 "lib/Transforms/InstCombine/*.cpp", 1402 "lib/Transforms/InstCombine/*.h", 1403 ]), 1404 hdrs = glob(["include/llvm/Transforms/InstCombine/*.h"]), 1405 copts = llvm_copts, 1406 deps = [ 1407 ":Analysis", 1408 ":Core", 1409 ":Support", 1410 ":Target", 1411 ":TransformUtils", 1412 ":config", 1413 ], 1414) 1415 1416cc_library( 1417 name = "AggressiveInstCombine", 1418 srcs = glob([ 1419 "lib/Transforms/AggressiveInstCombine/*.cpp", 1420 "lib/Transforms/AggressiveInstCombine/*.h", 1421 ]), 1422 hdrs = [ 1423 "include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h", 1424 ], 1425 copts = llvm_copts, 1426 deps = [ 1427 ":Analysis", 1428 ":Core", 1429 ":Support", 1430 ":TransformUtils", 1431 ], 1432) 1433 1434cc_library( 1435 name = "Instrumentation", 1436 srcs = glob([ 1437 "lib/Transforms/Instrumentation/*.cpp", 1438 "lib/Transforms/Instrumentation/*.h", 1439 "lib/Transforms/Instrumentation/*.inc", 1440 ]), 1441 hdrs = glob(["include/llvm/Transforms/Instrumentation/*.h"]) + [ 1442 "include/llvm/Transforms/Utils/Instrumentation.h", 1443 ], 1444 copts = llvm_copts, 1445 deps = [ 1446 ":Analysis", 1447 ":BinaryFormat", 1448 ":Core", 1449 ":Demangle", 1450 ":MC", 1451 ":ProfileData", 1452 ":Scalar", 1453 ":Support", 1454 ":Target", 1455 ":TargetParser", 1456 ":TransformUtils", 1457 ":config", 1458 ], 1459) 1460 1461cc_library( 1462 name = "ObjCARC", 1463 srcs = glob([ 1464 "lib/Transforms/ObjCARC/*.cpp", 1465 "lib/Transforms/ObjCARC/*.h", 1466 ]), 1467 hdrs = ["include/llvm/Transforms/ObjCARC.h"], 1468 copts = llvm_copts, 1469 deps = [ 1470 ":Analysis", 1471 ":Core", 1472 ":Support", 1473 ":Target", 1474 ":TransformUtils", 1475 ":config", 1476 ], 1477) 1478 1479cc_library( 1480 name = "SandboxIR", 1481 srcs = glob([ 1482 "lib/SandboxIR/*.cpp", 1483 ]), 1484 hdrs = glob(["include/llvm/SandboxIR/*.h"]), 1485 copts = llvm_copts, 1486 textual_hdrs = ["include/llvm/SandboxIR/Values.def"], 1487 deps = [ 1488 ":Analysis", 1489 ":Core", 1490 ":Support", 1491 ], 1492) 1493 1494cc_library( 1495 name = "Scalar", 1496 srcs = glob([ 1497 "lib/Transforms/Scalar/*.cpp", 1498 ]), 1499 hdrs = glob(["include/llvm/Transforms/Scalar/*.h"]) + [ 1500 "include/llvm/Transforms/Scalar.h", 1501 ], 1502 copts = llvm_copts, 1503 deps = [ 1504 ":AggressiveInstCombine", 1505 ":Analysis", 1506 ":BinaryFormat", 1507 ":Core", 1508 ":InstCombine", 1509 ":ProfileData", 1510 ":Support", 1511 ":Target", 1512 ":TransformUtils", 1513 ":config", 1514 ], 1515) 1516 1517cc_library( 1518 name = "Vectorize", 1519 srcs = glob([ 1520 "lib/Transforms/Vectorize/**/*.cpp", 1521 "lib/Transforms/Vectorize/**/*.h", 1522 ]), 1523 hdrs = glob([ 1524 "include/llvm/Transforms/Vectorize/**/*.h", 1525 ]), 1526 copts = llvm_copts, 1527 textual_hdrs = [ 1528 "lib/Transforms/Vectorize/SandboxVectorizer/Passes/PassRegistry.def", 1529 ], 1530 deps = [ 1531 ":Analysis", 1532 ":Core", 1533 ":SandboxIR", 1534 ":Scalar", 1535 ":Support", 1536 ":Target", 1537 ":TransformUtils", 1538 ":config", 1539 ], 1540) 1541 1542cc_library( 1543 name = "FrontendDebug", 1544 hdrs = glob([ 1545 "include/llvm/Frontend/Debug/*.h", 1546 ]), 1547 copts = llvm_copts, 1548 deps = [ 1549 ":Support", 1550 ], 1551) 1552 1553cc_library( 1554 name = "FrontendDriver", 1555 srcs = glob([ 1556 "lib/Frontend/Driver/*.cpp", 1557 ]), 1558 hdrs = glob([ 1559 "include/llvm/Frontend/Driver/*.h", 1560 ]), 1561 copts = llvm_copts, 1562 deps = [ 1563 ":Analysis", 1564 ":TargetParser", 1565 ], 1566) 1567 1568cc_library( 1569 name = "FrontendHLSL", 1570 srcs = glob([ 1571 "lib/Frontend/HLSL/*.cpp", 1572 ]), 1573 hdrs = glob([ 1574 "include/llvm/Frontend/HLSL/*.h", 1575 ]), 1576 copts = llvm_copts, 1577 deps = [ 1578 ":Core", 1579 ":Support", 1580 ], 1581) 1582 1583cc_library( 1584 name = "FrontendOffloading", 1585 srcs = glob([ 1586 "lib/Frontend/Offloading/*.cpp", 1587 ]), 1588 hdrs = glob([ 1589 "include/llvm/Frontend/Offloading/*.h", 1590 ]), 1591 copts = llvm_copts, 1592 deps = [ 1593 ":BinaryFormat", 1594 ":Core", 1595 ":Object", 1596 ":Support", 1597 ":TargetParser", 1598 ":TransformUtils", 1599 ], 1600) 1601 1602filegroup( 1603 name = "omp_td_files", 1604 srcs = glob([ 1605 "include/llvm/Frontend/OpenMP/*.td", 1606 "include/llvm/Frontend/Directive/*.td", 1607 ]), 1608) 1609 1610gentbl( 1611 name = "omp_gen", 1612 library = False, 1613 tbl_outs = [ 1614 ("--gen-directive-decl", "include/llvm/Frontend/OpenMP/OMP.h.inc"), 1615 ], 1616 tblgen = ":llvm-min-tblgen", 1617 td_file = "include/llvm/Frontend/OpenMP/OMP.td", 1618 td_srcs = [":omp_td_files"], 1619) 1620 1621gentbl( 1622 name = "omp_gen_impl", 1623 library = False, 1624 tbl_outs = [ 1625 ("--gen-directive-impl", "include/llvm/Frontend/OpenMP/OMP.inc"), 1626 ], 1627 tblgen = ":llvm-min-tblgen", 1628 td_file = "include/llvm/Frontend/OpenMP/OMP.td", 1629 td_srcs = [":omp_td_files"], 1630) 1631 1632cc_library( 1633 name = "FrontendAtomic", 1634 srcs = glob([ 1635 "lib/Frontend/Atomic/*.cpp", 1636 ]), 1637 hdrs = glob([ 1638 "include/llvm/Frontend/Atomic/*.h", 1639 ]), 1640 copts = llvm_copts, 1641 deps = [ 1642 ":Core", 1643 ":Support", 1644 ], 1645) 1646 1647cc_library( 1648 name = "FrontendOpenMP", 1649 srcs = glob([ 1650 "lib/Frontend/OpenMP/*.cpp", 1651 ]), 1652 hdrs = glob([ 1653 "include/llvm/Frontend/OpenMP/*.h", 1654 ]) + [ 1655 "include/llvm/Frontend/OpenMP/OMP.h.inc", 1656 "include/llvm/Frontend/OpenMP/OMP.inc", 1657 ], 1658 copts = llvm_copts, 1659 textual_hdrs = glob([ 1660 "include/llvm/Frontend/OpenMP/*.def", 1661 ]), 1662 deps = [ 1663 ":Analysis", 1664 ":BitReader", 1665 ":Core", 1666 ":Demangle", 1667 ":FrontendAtomic", 1668 ":FrontendOffloading", 1669 ":MC", 1670 ":Scalar", 1671 ":Support", 1672 ":Target", 1673 ":TargetParser", 1674 ":TransformUtils", 1675 ], 1676) 1677 1678filegroup( 1679 name = "acc_td_files", 1680 srcs = glob([ 1681 "include/llvm/Frontend/OpenACC/*.td", 1682 "include/llvm/Frontend/Directive/*.td", 1683 ]), 1684) 1685 1686gentbl( 1687 name = "acc_gen", 1688 library = False, 1689 tbl_outs = [ 1690 ("--gen-directive-decl", "include/llvm/Frontend/OpenACC/ACC.h.inc"), 1691 ], 1692 tblgen = ":llvm-min-tblgen", 1693 td_file = "include/llvm/Frontend/OpenACC/ACC.td", 1694 td_srcs = [":acc_td_files"], 1695) 1696 1697gentbl( 1698 name = "acc_gen_impl", 1699 library = False, 1700 tbl_outs = [ 1701 ("--gen-directive-impl", "include/llvm/Frontend/OpenACC/ACC.inc"), 1702 ], 1703 tblgen = ":llvm-min-tblgen", 1704 td_file = "include/llvm/Frontend/OpenACC/ACC.td", 1705 td_srcs = [":acc_td_files"], 1706) 1707 1708cc_library( 1709 name = "FrontendOpenACC", 1710 srcs = glob([ 1711 "lib/Frontend/OpenACC/*.cpp", 1712 ]) + [ 1713 "include/llvm/Frontend/OpenACC/ACC.inc", 1714 ], 1715 hdrs = ["include/llvm/Frontend/OpenACC/ACC.h.inc"], 1716 copts = llvm_copts, 1717 deps = [ 1718 ":Analysis", 1719 ":Core", 1720 ":Support", 1721 ":TransformUtils", 1722 ], 1723) 1724 1725cc_library( 1726 name = "AsmParser", 1727 srcs = glob([ 1728 "lib/AsmParser/*.cpp", 1729 ]), 1730 hdrs = glob(["include/llvm/AsmParser/*.h"]), 1731 copts = llvm_copts, 1732 deps = [ 1733 ":BinaryFormat", 1734 ":Core", 1735 ":Support", 1736 ":attributes_gen", 1737 ], 1738) 1739 1740cc_library( 1741 name = "IRPrinter", 1742 srcs = glob([ 1743 "lib/IRPrinter/*.cpp", 1744 ]), 1745 hdrs = glob([ 1746 "include/llvm/IRPrinter/*.h", 1747 ]), 1748 copts = llvm_copts, 1749 deps = [ 1750 ":Analysis", 1751 ":Core", 1752 ":Support", 1753 ], 1754) 1755 1756cc_library( 1757 name = "IRReader", 1758 srcs = glob([ 1759 "lib/IRReader/*.cpp", 1760 ]), 1761 hdrs = glob([ 1762 "include/llvm/IRReader/*.h", 1763 ]) + [ 1764 "include/llvm-c/IRReader.h", 1765 ], 1766 copts = llvm_copts, 1767 deps = [ 1768 ":AsmParser", 1769 ":BitReader", 1770 ":Core", 1771 ":Support", 1772 ":config", 1773 ], 1774) 1775 1776cc_library( 1777 name = "Linker", 1778 srcs = glob([ 1779 "lib/Linker/*.cpp", 1780 "lib/Linker/*.h", 1781 ]), 1782 hdrs = glob([ 1783 "include/llvm/Linker/*.h", 1784 ]) + [ 1785 "include/llvm-c/Linker.h", 1786 ], 1787 copts = llvm_copts, 1788 deps = [ 1789 ":Core", 1790 ":Object", 1791 ":Support", 1792 ":TargetParser", 1793 ":TransformUtils", 1794 ":config", 1795 ], 1796) 1797 1798cc_library( 1799 name = "IPO", 1800 srcs = glob([ 1801 "lib/Transforms/IPO/*.cpp", 1802 ]), 1803 hdrs = glob([ 1804 "include/llvm/Transforms/IPO/*.h", 1805 ]) + [ 1806 "include/llvm/Transforms/IPO.h", 1807 ], 1808 copts = llvm_copts, 1809 deps = [ 1810 ":AggressiveInstCombine", 1811 ":Analysis", 1812 ":BinaryFormat", 1813 ":BitReader", 1814 ":BitWriter", 1815 ":Core", 1816 ":FrontendOpenMP", 1817 ":IRPrinter", 1818 ":IRReader", 1819 ":InstCombine", 1820 ":Instrumentation", 1821 ":Linker", 1822 ":ObjCARC", 1823 ":Object", 1824 ":ProfileData", 1825 ":Scalar", 1826 ":Support", 1827 ":Target", 1828 ":TargetParser", 1829 ":TransformUtils", 1830 ":Vectorize", 1831 ":config", 1832 ":ir_headers", 1833 ], 1834) 1835 1836cc_library( 1837 name = "CFGuard", 1838 srcs = glob([ 1839 "lib/Transforms/CFGuard/*.cpp", 1840 ]), 1841 hdrs = ["include/llvm/Transforms/CFGuard.h"], 1842 copts = llvm_copts, 1843 deps = [ 1844 ":Core", 1845 ":Support", 1846 ":TargetParser", 1847 ], 1848) 1849 1850cc_library( 1851 name = "HipStdPar", 1852 srcs = glob([ 1853 "lib/Transforms/HipStdPar/*.cpp", 1854 ]), 1855 hdrs = ["include/llvm/Transforms/HipStdPar/HipStdPar.h"], 1856 copts = llvm_copts, 1857 deps = [ 1858 ":Analysis", 1859 ":Core", 1860 ":Support", 1861 ":TargetParser", 1862 ":TransformUtils", 1863 ], 1864) 1865 1866cc_library( 1867 name = "Coroutines", 1868 srcs = glob([ 1869 "lib/Transforms/Coroutines/*.cpp", 1870 "lib/Transforms/Coroutines/*.h", 1871 ]), 1872 hdrs = glob(["include/llvm/Transforms/Coroutines/*.h"]), 1873 copts = llvm_copts, 1874 deps = [ 1875 ":Analysis", 1876 ":BinaryFormat", 1877 ":Core", 1878 ":IPO", 1879 ":Scalar", 1880 ":Support", 1881 ":TransformUtils", 1882 ":config", 1883 ], 1884) 1885 1886# Meta-target for clients which depend on all of the transforms libraries. 1887cc_library( 1888 name = "common_transforms", 1889 deps = [ 1890 ":AggressiveInstCombine", 1891 ":CFGuard", 1892 ":Coroutines", 1893 ":IPO", 1894 ":InstCombine", 1895 ":Instrumentation", 1896 ":ObjCARC", 1897 ":Scalar", 1898 ":Vectorize", 1899 ], 1900) 1901 1902cc_library( 1903 name = "asm_printer_defs", 1904 copts = llvm_copts, 1905 textual_hdrs = glob(["lib/CodeGen/AsmPrinter/*.def"]), 1906) 1907 1908cc_library( 1909 name = "CodeGenTypes", 1910 srcs = glob([ 1911 "lib/CodeGenTypes/**/*.cpp", 1912 ]), 1913 hdrs = glob([ 1914 "include/llvm/CodeGenTypes/**/*.h", 1915 ]), 1916 copts = llvm_copts, 1917 deps = [ 1918 ":Support", 1919 ":vt_gen", 1920 ], 1921) 1922 1923cc_library( 1924 name = "CGData", 1925 srcs = glob(["lib/CGData/**/*.cpp"]), 1926 hdrs = glob([ 1927 "include/llvm/CGData/**/*.h", 1928 "include/llvm/CGData/**/*.inc", 1929 ]), 1930 copts = llvm_copts, 1931 deps = [ 1932 ":BitReader", 1933 ":BitWriter", 1934 ":Core", 1935 ":Object", 1936 ":ObjectYAML", 1937 ":Support", 1938 ":TargetParser", 1939 ], 1940) 1941 1942cc_library( 1943 name = "CodeGen", 1944 srcs = glob( 1945 [ 1946 "lib/CodeGen/**/*.cpp", 1947 "lib/CodeGen/**/*.h", 1948 "lib/CodeGen/SelectionDAG/*.cpp", 1949 "lib/CodeGen/SelectionDAG/*.h", 1950 ], 1951 ), 1952 hdrs = [ 1953 "include/llvm/LinkAllPasses.h", 1954 ] + glob( 1955 [ 1956 "include/llvm/CodeGen/**/*.h", 1957 ], 1958 ), 1959 copts = llvm_copts, 1960 textual_hdrs = glob([ 1961 "include/llvm/CodeGen/**/*.def", 1962 ]), 1963 deps = [ 1964 ":AggressiveInstCombine", 1965 ":Analysis", 1966 ":AsmParser", 1967 ":BinaryFormat", 1968 ":BitReader", 1969 ":BitWriter", 1970 ":CFGuard", 1971 ":CGData", 1972 ":CodeGenTypes", 1973 ":Core", 1974 ":DebugInfoCodeView", 1975 ":DebugInfoDWARF", 1976 ":IPO", 1977 ":IRPrinter", 1978 ":Instrumentation", 1979 ":MC", 1980 ":MCParser", 1981 ":ObjCARC", 1982 ":Object", 1983 ":ProfileData", 1984 ":Remarks", 1985 ":Scalar", 1986 ":Support", 1987 ":Target", 1988 ":TargetParser", 1989 ":TransformUtils", 1990 ":asm_printer_defs", 1991 ":config", 1992 ":vt_gen", 1993 ], 1994) 1995 1996cc_library( 1997 name = "MCDisassembler", 1998 srcs = glob([ 1999 "lib/MC/MCDisassembler/*.cpp", 2000 "lib/MC/MCDisassembler/*.h", 2001 ]), 2002 hdrs = glob([ 2003 "include/llvm/MC/MCDisassembler/*.h", 2004 ]) + [ 2005 "include/llvm-c/Disassembler.h", 2006 ], 2007 copts = llvm_copts, 2008 deps = [ 2009 ":BinaryFormat", 2010 ":MC", 2011 ":Support", 2012 ":TargetParser", 2013 ":config", 2014 ], 2015) 2016 2017llvm_target_lib_list = [lib for lib in [ 2018 { 2019 "name": "AArch64", 2020 "short_name": "AArch64", 2021 "tbl_outs": [ 2022 ("-gen-register-bank", "lib/Target/AArch64/AArch64GenRegisterBank.inc"), 2023 ("-gen-register-info", "lib/Target/AArch64/AArch64GenRegisterInfo.inc"), 2024 ("-gen-instr-info", "lib/Target/AArch64/AArch64GenInstrInfo.inc"), 2025 ("-gen-emitter", "lib/Target/AArch64/AArch64GenMCCodeEmitter.inc"), 2026 ("-gen-pseudo-lowering", "lib/Target/AArch64/AArch64GenMCPseudoLowering.inc"), 2027 ("-gen-asm-writer", "lib/Target/AArch64/AArch64GenAsmWriter.inc"), 2028 ("-gen-asm-writer -asmwriternum=1", "lib/Target/AArch64/AArch64GenAsmWriter1.inc"), 2029 ("-gen-asm-matcher", "lib/Target/AArch64/AArch64GenAsmMatcher.inc"), 2030 ("-gen-dag-isel", "lib/Target/AArch64/AArch64GenDAGISel.inc"), 2031 ("-gen-fast-isel", "lib/Target/AArch64/AArch64GenFastISel.inc"), 2032 ("-gen-global-isel", "lib/Target/AArch64/AArch64GenGlobalISel.inc"), 2033 ("-gen-global-isel-combiner -combiners=AArch64O0PreLegalizerCombiner", "lib/Target/AArch64/AArch64GenO0PreLegalizeGICombiner.inc"), 2034 ("-gen-global-isel-combiner -combiners=AArch64PreLegalizerCombiner", "lib/Target/AArch64/AArch64GenPreLegalizeGICombiner.inc"), 2035 ("-gen-global-isel-combiner -combiners=AArch64PostLegalizerCombiner", "lib/Target/AArch64/AArch64GenPostLegalizeGICombiner.inc"), 2036 ("-gen-global-isel-combiner -combiners=AArch64PostLegalizerLowering", "lib/Target/AArch64/AArch64GenPostLegalizeGILowering.inc"), 2037 ("-gen-callingconv", "lib/Target/AArch64/AArch64GenCallingConv.inc"), 2038 ("-gen-subtarget", "lib/Target/AArch64/AArch64GenSubtargetInfo.inc"), 2039 ("-gen-disassembler", "lib/Target/AArch64/AArch64GenDisassemblerTables.inc"), 2040 ("-gen-searchable-tables", "lib/Target/AArch64/AArch64GenSystemOperands.inc"), 2041 ("-gen-exegesis", "lib/Target/AArch64/AArch64GenExegesis.inc"), 2042 ], 2043 }, 2044 { 2045 "name": "ARM", 2046 "short_name": "ARM", 2047 "tbl_outs": [ 2048 ("-gen-register-bank", "lib/Target/ARM/ARMGenRegisterBank.inc"), 2049 ("-gen-register-info", "lib/Target/ARM/ARMGenRegisterInfo.inc"), 2050 ("-gen-searchable-tables", "lib/Target/ARM/ARMGenSystemRegister.inc"), 2051 ("-gen-instr-info", "lib/Target/ARM/ARMGenInstrInfo.inc"), 2052 ("-gen-emitter", "lib/Target/ARM/ARMGenMCCodeEmitter.inc"), 2053 ("-gen-pseudo-lowering", "lib/Target/ARM/ARMGenMCPseudoLowering.inc"), 2054 ("-gen-asm-writer", "lib/Target/ARM/ARMGenAsmWriter.inc"), 2055 ("-gen-asm-matcher", "lib/Target/ARM/ARMGenAsmMatcher.inc"), 2056 ("-gen-dag-isel", "lib/Target/ARM/ARMGenDAGISel.inc"), 2057 ("-gen-fast-isel", "lib/Target/ARM/ARMGenFastISel.inc"), 2058 ("-gen-global-isel", "lib/Target/ARM/ARMGenGlobalISel.inc"), 2059 ("-gen-callingconv", "lib/Target/ARM/ARMGenCallingConv.inc"), 2060 ("-gen-subtarget", "lib/Target/ARM/ARMGenSubtargetInfo.inc"), 2061 ("-gen-disassembler", "lib/Target/ARM/ARMGenDisassemblerTables.inc"), 2062 ], 2063 }, 2064 { 2065 "name": "AMDGPU", 2066 "short_name": "AMDGPU", 2067 "tbl_outs": [ 2068 ("-gen-register-bank", "lib/Target/AMDGPU/AMDGPUGenRegisterBank.inc"), 2069 ("-gen-register-info", "lib/Target/AMDGPU/AMDGPUGenRegisterInfo.inc"), 2070 ("-gen-instr-info", "lib/Target/AMDGPU/AMDGPUGenInstrInfo.inc"), 2071 ("-gen-emitter", "lib/Target/AMDGPU/AMDGPUGenMCCodeEmitter.inc"), 2072 ("-gen-pseudo-lowering", "lib/Target/AMDGPU/AMDGPUGenMCPseudoLowering.inc"), 2073 ("-gen-asm-writer", "lib/Target/AMDGPU/AMDGPUGenAsmWriter.inc"), 2074 ("-gen-asm-matcher", "lib/Target/AMDGPU/AMDGPUGenAsmMatcher.inc"), 2075 ("-gen-dag-isel", "lib/Target/AMDGPU/AMDGPUGenDAGISel.inc"), 2076 ("-gen-callingconv", "lib/Target/AMDGPU/AMDGPUGenCallingConv.inc"), 2077 ("-gen-subtarget", "lib/Target/AMDGPU/AMDGPUGenSubtargetInfo.inc"), 2078 ("-gen-disassembler", "lib/Target/AMDGPU/AMDGPUGenDisassemblerTables.inc"), 2079 ("-gen-searchable-tables", "lib/Target/AMDGPU/AMDGPUGenSearchableTables.inc"), 2080 ], 2081 "tbl_deps": [ 2082 ":InstCombineTableGen", 2083 ":amdgpu_isel_target_gen", 2084 ":r600_target_gen", 2085 ], 2086 }, 2087 { 2088 "name": "AVR", 2089 "short_name": "AVR", 2090 "tbl_outs": [ 2091 ("-gen-asm-matcher", "lib/Target/AVR/AVRGenAsmMatcher.inc"), 2092 ("-gen-asm-writer", "lib/Target/AVR/AVRGenAsmWriter.inc"), 2093 ("-gen-callingconv", "lib/Target/AVR/AVRGenCallingConv.inc"), 2094 ("-gen-dag-isel", "lib/Target/AVR/AVRGenDAGISel.inc"), 2095 ("-gen-disassembler", "lib/Target/AVR/AVRGenDisassemblerTables.inc"), 2096 ("-gen-emitter", "lib/Target/AVR/AVRGenMCCodeEmitter.inc"), 2097 ("-gen-instr-info", "lib/Target/AVR/AVRGenInstrInfo.inc"), 2098 ("-gen-register-info", "lib/Target/AVR/AVRGenRegisterInfo.inc"), 2099 ("-gen-subtarget", "lib/Target/AVR/AVRGenSubtargetInfo.inc"), 2100 ], 2101 }, 2102 { 2103 "name": "BPF", 2104 "short_name": "BPF", 2105 "tbl_outs": [ 2106 ("-gen-register-bank", "lib/Target/BPF/BPFGenRegisterBank.inc"), 2107 ("-gen-asm-writer", "lib/Target/BPF/BPFGenAsmWriter.inc"), 2108 ("-gen-asm-matcher", "lib/Target/BPF/BPFGenAsmMatcher.inc"), 2109 ("-gen-callingconv", "lib/Target/BPF/BPFGenCallingConv.inc"), 2110 ("-gen-dag-isel", "lib/Target/BPF/BPFGenDAGISel.inc"), 2111 ("-gen-global-isel", "lib/Target/BPF/BPFGenGlobalISel.inc"), 2112 ("-gen-disassembler", "lib/Target/BPF/BPFGenDisassemblerTables.inc"), 2113 ("-gen-emitter", "lib/Target/BPF/BPFGenMCCodeEmitter.inc"), 2114 ("-gen-instr-info", "lib/Target/BPF/BPFGenInstrInfo.inc"), 2115 ("-gen-register-info", "lib/Target/BPF/BPFGenRegisterInfo.inc"), 2116 ("-gen-subtarget", "lib/Target/BPF/BPFGenSubtargetInfo.inc"), 2117 ], 2118 }, 2119 { 2120 "name": "Hexagon", 2121 "short_name": "Hexagon", 2122 "tbl_outs": [ 2123 ("-gen-asm-matcher", "lib/Target/Hexagon/HexagonGenAsmMatcher.inc"), 2124 ("-gen-asm-writer", "lib/Target/Hexagon/HexagonGenAsmWriter.inc"), 2125 ("-gen-callingconv", "lib/Target/Hexagon/HexagonGenCallingConv.inc"), 2126 ("-gen-dag-isel", "lib/Target/Hexagon/HexagonGenDAGISel.inc"), 2127 ("-gen-dfa-packetizer", "lib/Target/Hexagon/HexagonGenDFAPacketizer.inc"), 2128 ("-gen-disassembler", "lib/Target/Hexagon/HexagonGenDisassemblerTables.inc"), 2129 ("-gen-instr-info", "lib/Target/Hexagon/HexagonGenInstrInfo.inc"), 2130 ("-gen-emitter", "lib/Target/Hexagon/HexagonGenMCCodeEmitter.inc"), 2131 ("-gen-register-info", "lib/Target/Hexagon/HexagonGenRegisterInfo.inc"), 2132 ("-gen-subtarget", "lib/Target/Hexagon/HexagonGenSubtargetInfo.inc"), 2133 ], 2134 }, 2135 { 2136 "name": "Lanai", 2137 "short_name": "Lanai", 2138 "tbl_outs": [ 2139 ("-gen-asm-matcher", "lib/Target/Lanai/LanaiGenAsmMatcher.inc"), 2140 ("-gen-asm-writer", "lib/Target/Lanai/LanaiGenAsmWriter.inc"), 2141 ("-gen-callingconv", "lib/Target/Lanai/LanaiGenCallingConv.inc"), 2142 ("-gen-dag-isel", "lib/Target/Lanai/LanaiGenDAGISel.inc"), 2143 ("-gen-disassembler", "lib/Target/Lanai/LanaiGenDisassemblerTables.inc"), 2144 ("-gen-emitter", "lib/Target/Lanai/LanaiGenMCCodeEmitter.inc"), 2145 ("-gen-instr-info", "lib/Target/Lanai/LanaiGenInstrInfo.inc"), 2146 ("-gen-register-info", "lib/Target/Lanai/LanaiGenRegisterInfo.inc"), 2147 ("-gen-subtarget", "lib/Target/Lanai/LanaiGenSubtargetInfo.inc"), 2148 ], 2149 }, 2150 { 2151 "name": "LoongArch", 2152 "short_name": "LoongArch", 2153 "tbl_outs": [ 2154 ("-gen-asm-matcher", "lib/Target/LoongArch/LoongArchGenAsmMatcher.inc"), 2155 ("-gen-asm-writer", "lib/Target/LoongArch/LoongArchGenAsmWriter.inc"), 2156 ("-gen-dag-isel", "lib/Target/LoongArch/LoongArchGenDAGISel.inc"), 2157 ("-gen-disassembler", "lib/Target/LoongArch/LoongArchGenDisassemblerTables.inc"), 2158 ("-gen-emitter", "lib/Target/LoongArch/LoongArchGenMCCodeEmitter.inc"), 2159 ("-gen-instr-info", "lib/Target/LoongArch/LoongArchGenInstrInfo.inc"), 2160 ("-gen-pseudo-lowering", "lib/Target/LoongArch/LoongArchGenMCPseudoLowering.inc"), 2161 ("-gen-register-info", "lib/Target/LoongArch/LoongArchGenRegisterInfo.inc"), 2162 ("-gen-subtarget", "lib/Target/LoongArch/LoongArchGenSubtargetInfo.inc"), 2163 ], 2164 }, 2165 { 2166 "name": "Mips", 2167 "short_name": "Mips", 2168 "tbl_outs": [ 2169 ("-gen-asm-matcher", "lib/Target/Mips/MipsGenAsmMatcher.inc"), 2170 ("-gen-asm-writer", "lib/Target/Mips/MipsGenAsmWriter.inc"), 2171 ("-gen-callingconv", "lib/Target/Mips/MipsGenCallingConv.inc"), 2172 ("-gen-dag-isel", "lib/Target/Mips/MipsGenDAGISel.inc"), 2173 ("-gen-disassembler", "lib/Target/Mips/MipsGenDisassemblerTables.inc"), 2174 ("-gen-emitter", "lib/Target/Mips/MipsGenMCCodeEmitter.inc"), 2175 ("-gen-exegesis", "lib/Target/Mips/MipsGenExegesis.inc"), 2176 ("-gen-fast-isel", "lib/Target/Mips/MipsGenFastISel.inc"), 2177 ("-gen-global-isel", "lib/Target/Mips/MipsGenGlobalISel.inc"), 2178 ("-gen-global-isel-combiner -combiners=MipsPostLegalizerCombiner", "lib/Target/Mips/MipsGenPostLegalizeGICombiner.inc"), 2179 ("-gen-instr-info", "lib/Target/Mips/MipsGenInstrInfo.inc"), 2180 ("-gen-pseudo-lowering", "lib/Target/Mips/MipsGenMCPseudoLowering.inc"), 2181 ("-gen-register-bank", "lib/Target/Mips/MipsGenRegisterBank.inc"), 2182 ("-gen-register-info", "lib/Target/Mips/MipsGenRegisterInfo.inc"), 2183 ("-gen-subtarget", "lib/Target/Mips/MipsGenSubtargetInfo.inc"), 2184 ], 2185 }, 2186 { 2187 "name": "MSP430", 2188 "short_name": "MSP430", 2189 "tbl_outs": [ 2190 ("-gen-asm-matcher", "lib/Target/MSP430/MSP430GenAsmMatcher.inc"), 2191 ("-gen-asm-writer", "lib/Target/MSP430/MSP430GenAsmWriter.inc"), 2192 ("-gen-callingconv", "lib/Target/MSP430/MSP430GenCallingConv.inc"), 2193 ("-gen-dag-isel", "lib/Target/MSP430/MSP430GenDAGISel.inc"), 2194 ("-gen-disassembler", "lib/Target/MSP430/MSP430GenDisassemblerTables.inc"), 2195 ("-gen-emitter", "lib/Target/MSP430/MSP430GenMCCodeEmitter.inc"), 2196 ("-gen-instr-info", "lib/Target/MSP430/MSP430GenInstrInfo.inc"), 2197 ("-gen-register-info", "lib/Target/MSP430/MSP430GenRegisterInfo.inc"), 2198 ("-gen-subtarget", "lib/Target/MSP430/MSP430GenSubtargetInfo.inc"), 2199 ], 2200 }, 2201 { 2202 "name": "NVPTX", 2203 "short_name": "NVPTX", 2204 "tbl_outs": [ 2205 ("-gen-register-info", "lib/Target/NVPTX/NVPTXGenRegisterInfo.inc"), 2206 ("-gen-instr-info", "lib/Target/NVPTX/NVPTXGenInstrInfo.inc"), 2207 ("-gen-asm-writer", "lib/Target/NVPTX/NVPTXGenAsmWriter.inc"), 2208 ("-gen-dag-isel", "lib/Target/NVPTX/NVPTXGenDAGISel.inc"), 2209 ("-gen-subtarget", "lib/Target/NVPTX/NVPTXGenSubtargetInfo.inc"), 2210 ], 2211 }, 2212 { 2213 "name": "PowerPC", 2214 "short_name": "PPC", 2215 "tbl_outs": [ 2216 ("-gen-asm-writer", "lib/Target/PowerPC/PPCGenAsmWriter.inc"), 2217 ("-gen-asm-matcher", "lib/Target/PowerPC/PPCGenAsmMatcher.inc"), 2218 ("-gen-emitter", "lib/Target/PowerPC/PPCGenMCCodeEmitter.inc"), 2219 ("-gen-register-info", "lib/Target/PowerPC/PPCGenRegisterInfo.inc"), 2220 ("-gen-instr-info", "lib/Target/PowerPC/PPCGenInstrInfo.inc"), 2221 ("-gen-dag-isel", "lib/Target/PowerPC/PPCGenDAGISel.inc"), 2222 ("-gen-fast-isel", "lib/Target/PowerPC/PPCGenFastISel.inc"), 2223 ("-gen-callingconv", "lib/Target/PowerPC/PPCGenCallingConv.inc"), 2224 ("-gen-subtarget", "lib/Target/PowerPC/PPCGenSubtargetInfo.inc"), 2225 ("-gen-disassembler", "lib/Target/PowerPC/PPCGenDisassemblerTables.inc"), 2226 ("-gen-register-bank", "lib/Target/PowerPC/PPCGenRegisterBank.inc"), 2227 ("-gen-global-isel", "lib/Target/PowerPC/PPCGenGlobalISel.inc"), 2228 ("-gen-exegesis", "lib/Target/PowerPC/PPCGenExegesis.inc"), 2229 ], 2230 }, 2231 { 2232 "name": "RISCV", 2233 "short_name": "RISCV", 2234 "tbl_outs": [ 2235 ("-gen-asm-matcher", "lib/Target/RISCV/RISCVGenAsmMatcher.inc"), 2236 ("-gen-asm-writer", "lib/Target/RISCV/RISCVGenAsmWriter.inc"), 2237 ("-gen-compress-inst-emitter", "lib/Target/RISCV/RISCVGenCompressInstEmitter.inc"), 2238 ("-gen-dag-isel", "lib/Target/RISCV/RISCVGenDAGISel.inc"), 2239 ("-gen-disassembler", "lib/Target/RISCV/RISCVGenDisassemblerTables.inc"), 2240 ("-gen-instr-info", "lib/Target/RISCV/RISCVGenInstrInfo.inc"), 2241 ("-gen-macro-fusion-pred", "lib/Target/RISCV/RISCVGenMacroFusion.inc"), 2242 ("-gen-emitter", "lib/Target/RISCV/RISCVGenMCCodeEmitter.inc"), 2243 ("-gen-pseudo-lowering", "lib/Target/RISCV/RISCVGenMCPseudoLowering.inc"), 2244 ("-gen-register-bank", "lib/Target/RISCV/RISCVGenRegisterBank.inc"), 2245 ("-gen-register-info", "lib/Target/RISCV/RISCVGenRegisterInfo.inc"), 2246 ("-gen-subtarget", "lib/Target/RISCV/RISCVGenSubtargetInfo.inc"), 2247 ("-gen-searchable-tables", "lib/Target/RISCV/RISCVGenSearchableTables.inc"), 2248 ("-gen-exegesis", "lib/Target/RISCV/RISCVGenExegesis.inc"), 2249 ], 2250 "tbl_deps": [ 2251 ":riscv_isel_target_gen", 2252 ], 2253 }, 2254 { 2255 "name": "Sparc", 2256 "short_name": "Sparc", 2257 "tbl_outs": [ 2258 ("-gen-asm-writer", "lib/Target/Sparc/SparcGenAsmWriter.inc"), 2259 ("-gen-asm-matcher", "lib/Target/Sparc/SparcGenAsmMatcher.inc"), 2260 ("-gen-emitter", "lib/Target/Sparc/SparcGenMCCodeEmitter.inc"), 2261 ("-gen-register-info", "lib/Target/Sparc/SparcGenRegisterInfo.inc"), 2262 ("-gen-instr-info", "lib/Target/Sparc/SparcGenInstrInfo.inc"), 2263 ("-gen-dag-isel", "lib/Target/Sparc/SparcGenDAGISel.inc"), 2264 ("-gen-callingconv", "lib/Target/Sparc/SparcGenCallingConv.inc"), 2265 ("-gen-subtarget", "lib/Target/Sparc/SparcGenSubtargetInfo.inc"), 2266 ("-gen-disassembler", "lib/Target/Sparc/SparcGenDisassemblerTables.inc"), 2267 ("-gen-searchable-tables", "lib/Target/Sparc/SparcGenSearchableTables.inc"), 2268 ], 2269 }, 2270 { 2271 "name": "SPIRV", 2272 "short_name": "SPIRV", 2273 "tbl_outs": [ 2274 ("-gen-asm-writer", "lib/Target/SPIRV/SPIRVGenAsmWriter.inc"), 2275 ("-gen-emitter", "lib/Target/SPIRV/SPIRVGenMCCodeEmitter.inc"), 2276 ("-gen-global-isel", "lib/Target/SPIRV/SPIRVGenGlobalISel.inc"), 2277 ("-gen-global-isel-combiner -combiners=SPIRVPreLegalizerCombiner", "lib/Target/SPIRV/SPIRVGenPreLegalizeGICombiner.inc"), 2278 ("-gen-instr-info", "lib/Target/SPIRV/SPIRVGenInstrInfo.inc"), 2279 ("-gen-register-bank", "lib/Target/SPIRV/SPIRVGenRegisterBank.inc"), 2280 ("-gen-register-info", "lib/Target/SPIRV/SPIRVGenRegisterInfo.inc"), 2281 ("-gen-searchable-tables", "lib/Target/SPIRV/SPIRVGenTables.inc"), 2282 ("-gen-subtarget", "lib/Target/SPIRV/SPIRVGenSubtargetInfo.inc"), 2283 ], 2284 }, 2285 { 2286 "name": "SystemZ", 2287 "short_name": "SystemZ", 2288 "tbl_outs": [ 2289 ("-gen-asm-matcher", "lib/Target/SystemZ/SystemZGenAsmMatcher.inc"), 2290 ("-gen-asm-writer", "lib/Target/SystemZ/SystemZGenGNUAsmWriter.inc"), 2291 ("-gen-asm-writer -asmwriternum=1", "lib/Target/SystemZ/SystemZGenHLASMAsmWriter.inc"), 2292 ("-gen-callingconv", "lib/Target/SystemZ/SystemZGenCallingConv.inc"), 2293 ("-gen-dag-isel", "lib/Target/SystemZ/SystemZGenDAGISel.inc"), 2294 ("-gen-disassembler", "lib/Target/SystemZ/SystemZGenDisassemblerTables.inc"), 2295 ("-gen-emitter", "lib/Target/SystemZ/SystemZGenMCCodeEmitter.inc"), 2296 ("-gen-instr-info", "lib/Target/SystemZ/SystemZGenInstrInfo.inc"), 2297 ("-gen-register-info", "lib/Target/SystemZ/SystemZGenRegisterInfo.inc"), 2298 ("-gen-subtarget", "lib/Target/SystemZ/SystemZGenSubtargetInfo.inc"), 2299 ], 2300 }, 2301 { 2302 "name": "VE", 2303 "short_name": "VE", 2304 "tbl_outs": [ 2305 ("-gen-asm-matcher", "lib/Target/VE/VEGenAsmMatcher.inc"), 2306 ("-gen-asm-writer", "lib/Target/VE/VEGenAsmWriter.inc"), 2307 ("-gen-callingconv", "lib/Target/VE/VEGenCallingConv.inc"), 2308 ("-gen-dag-isel", "lib/Target/VE/VEGenDAGISel.inc"), 2309 ("-gen-disassembler", "lib/Target/VE/VEGenDisassemblerTables.inc"), 2310 ("-gen-emitter", "lib/Target/VE/VEGenMCCodeEmitter.inc"), 2311 ("-gen-instr-info", "lib/Target/VE/VEGenInstrInfo.inc"), 2312 ("-gen-register-info", "lib/Target/VE/VEGenRegisterInfo.inc"), 2313 ("-gen-subtarget", "lib/Target/VE/VEGenSubtargetInfo.inc"), 2314 ], 2315 }, 2316 { 2317 "name": "WebAssembly", 2318 "short_name": "WebAssembly", 2319 "tbl_outs": [ 2320 ("-gen-disassembler", "lib/Target/WebAssembly/WebAssemblyGenDisassemblerTables.inc"), 2321 ("-gen-asm-writer", "lib/Target/WebAssembly/WebAssemblyGenAsmWriter.inc"), 2322 ("-gen-instr-info", "lib/Target/WebAssembly/WebAssemblyGenInstrInfo.inc"), 2323 ("-gen-dag-isel", "lib/Target/WebAssembly/WebAssemblyGenDAGISel.inc"), 2324 ("-gen-fast-isel", "lib/Target/WebAssembly/WebAssemblyGenFastISel.inc"), 2325 ("-gen-emitter", "lib/Target/WebAssembly/WebAssemblyGenMCCodeEmitter.inc"), 2326 ("-gen-register-info", "lib/Target/WebAssembly/WebAssemblyGenRegisterInfo.inc"), 2327 ("-gen-subtarget", "lib/Target/WebAssembly/WebAssemblyGenSubtargetInfo.inc"), 2328 ("-gen-asm-matcher", "lib/Target/WebAssembly/WebAssemblyGenAsmMatcher.inc"), 2329 ], 2330 }, 2331 { 2332 "name": "X86", 2333 "short_name": "X86", 2334 "tbl_outs": [ 2335 ("-gen-register-bank", "lib/Target/X86/X86GenRegisterBank.inc"), 2336 ("-gen-register-info", "lib/Target/X86/X86GenRegisterInfo.inc"), 2337 ("-gen-disassembler", "lib/Target/X86/X86GenDisassemblerTables.inc"), 2338 ("-gen-instr-info", "lib/Target/X86/X86GenInstrInfo.inc"), 2339 ("-gen-asm-writer", "lib/Target/X86/X86GenAsmWriter.inc"), 2340 ("-gen-asm-writer -asmwriternum=1", "lib/Target/X86/X86GenAsmWriter1.inc"), 2341 ("-gen-asm-matcher", "lib/Target/X86/X86GenAsmMatcher.inc"), 2342 ("-gen-dag-isel", "lib/Target/X86/X86GenDAGISel.inc"), 2343 ("-gen-fast-isel", "lib/Target/X86/X86GenFastISel.inc"), 2344 ("-gen-global-isel", "lib/Target/X86/X86GenGlobalISel.inc"), 2345 ("-gen-callingconv", "lib/Target/X86/X86GenCallingConv.inc"), 2346 ("-gen-subtarget", "lib/Target/X86/X86GenSubtargetInfo.inc"), 2347 ("-gen-x86-fold-tables -asmwriternum=1", "lib/Target/X86/X86GenFoldTables.inc"), 2348 ("-gen-x86-instr-mapping", "lib/Target/X86/X86GenInstrMapping.inc"), 2349 ("-gen-exegesis", "lib/Target/X86/X86GenExegesis.inc"), 2350 ("-gen-x86-mnemonic-tables -asmwriternum=1", "lib/Target/X86/X86GenMnemonicTables.inc"), 2351 ], 2352 }, 2353 { 2354 "name": "XCore", 2355 "short_name": "XCore", 2356 "tbl_outs": [ 2357 ("-gen-asm-writer", "lib/Target/XCore/XCoreGenAsmWriter.inc"), 2358 ("-gen-callingconv", "lib/Target/XCore/XCoreGenCallingConv.inc"), 2359 ("-gen-dag-isel", "lib/Target/XCore/XCoreGenDAGISel.inc"), 2360 ("-gen-disassembler", "lib/Target/XCore/XCoreGenDisassemblerTables.inc"), 2361 ("-gen-instr-info", "lib/Target/XCore/XCoreGenInstrInfo.inc"), 2362 ("-gen-register-info", "lib/Target/XCore/XCoreGenRegisterInfo.inc"), 2363 ("-gen-subtarget", "lib/Target/XCore/XCoreGenSubtargetInfo.inc"), 2364 ], 2365 }, 2366] if lib["name"] in llvm_targets] 2367 2368cc_library( 2369 name = "x86_target_layering_problem_hdrs", 2370 textual_hdrs = ["lib/Target/X86/X86InstrInfo.h"], 2371) 2372 2373gentbl( 2374 name = "amdgpu_isel_target_gen", 2375 strip_include_prefix = "lib/Target/AMDGPU", 2376 tbl_outs = [ 2377 ("-gen-global-isel", "lib/Target/AMDGPU/AMDGPUGenGlobalISel.inc"), 2378 ("-gen-global-isel-combiner -combiners=AMDGPUPreLegalizerCombiner", "lib/Target/AMDGPU/AMDGPUGenPreLegalizeGICombiner.inc"), 2379 ("-gen-global-isel-combiner -combiners=AMDGPUPostLegalizerCombiner", "lib/Target/AMDGPU/AMDGPUGenPostLegalizeGICombiner.inc"), 2380 ("-gen-global-isel-combiner -combiners=AMDGPURegBankCombiner", "lib/Target/AMDGPU/AMDGPUGenRegBankGICombiner.inc"), 2381 ], 2382 tblgen = ":llvm-tblgen", 2383 td_file = "lib/Target/AMDGPU/AMDGPUGISel.td", 2384 td_srcs = [ 2385 ":common_target_td_sources", 2386 ] + glob([ 2387 "lib/Target/AMDGPU/*.td", 2388 ]), 2389) 2390 2391gentbl( 2392 name = "r600_target_gen", 2393 strip_include_prefix = "lib/Target/AMDGPU", 2394 tbl_outs = [ 2395 ("-gen-asm-writer", "lib/Target/AMDGPU/R600GenAsmWriter.inc"), 2396 ("-gen-callingconv", "lib/Target/AMDGPU/R600GenCallingConv.inc"), 2397 ("-gen-dag-isel", "lib/Target/AMDGPU/R600GenDAGISel.inc"), 2398 ("-gen-dfa-packetizer", "lib/Target/AMDGPU/R600GenDFAPacketizer.inc"), 2399 ("-gen-instr-info", "lib/Target/AMDGPU/R600GenInstrInfo.inc"), 2400 ("-gen-emitter", "lib/Target/AMDGPU/R600GenMCCodeEmitter.inc"), 2401 ("-gen-register-info", "lib/Target/AMDGPU/R600GenRegisterInfo.inc"), 2402 ("-gen-subtarget", "lib/Target/AMDGPU/R600GenSubtargetInfo.inc"), 2403 ], 2404 tblgen = ":llvm-tblgen", 2405 td_file = "lib/Target/AMDGPU/R600.td", 2406 td_srcs = [ 2407 ":common_target_td_sources", 2408 ] + glob([ 2409 "lib/Target/AMDGPU/*.td", 2410 ]), 2411) 2412 2413gentbl( 2414 name = "riscv_isel_target_gen", 2415 strip_include_prefix = "lib/Target/RISCV", 2416 tbl_outs = [ 2417 ("-gen-global-isel", "lib/Target/RISCV/RISCVGenGlobalISel.inc"), 2418 ("-gen-global-isel-combiner -combiners=RISCVO0PreLegalizerCombiner", "lib/Target/RISCV/RISCVGenO0PreLegalizeGICombiner.inc"), 2419 ("-gen-global-isel-combiner -combiners=RISCVPostLegalizerCombiner", "lib/Target/RISCV/RISCVGenPostLegalizeGICombiner.inc"), 2420 ("-gen-global-isel-combiner -combiners=RISCVPreLegalizerCombiner", "lib/Target/RISCV/RISCVGenPreLegalizeGICombiner.inc"), 2421 ], 2422 tblgen = ":llvm-tblgen", 2423 td_file = "lib/Target/RISCV/RISCVGISel.td", 2424 td_srcs = [ 2425 ":common_target_td_sources", 2426 ] + glob([ 2427 "lib/Target/RISCV/**/*.td", 2428 ]), 2429) 2430 2431[[ 2432 [gentbl( 2433 name = target["name"] + "CommonTableGen", 2434 strip_include_prefix = "lib/Target/" + target["name"], 2435 tbl_outs = target["tbl_outs"], 2436 tblgen = ":llvm-tblgen", 2437 # MSVC isn't happy with long string literals, while other compilers 2438 # which support them get significant compile time improvements with 2439 # them enabled. Ideally this flag would only be enabled on Windows via 2440 # a select() on `@platforms//os:windows,`, but that would 2441 # require refactoring gentbl from a macro into a rule. 2442 # TODO(#92): Refactor gentbl to support this use 2443 tblgen_args = "--long-string-literals=0", 2444 td_file = "lib/Target/" + target["name"] + "/" + target["short_name"] + ".td", 2445 td_srcs = [ 2446 ":common_target_td_sources", 2447 ] + glob( 2448 [ 2449 "lib/Target/" + target["name"] + "/*.td", 2450 "lib/Target/" + target["name"] + "/GISel/*.td", 2451 ], 2452 allow_empty = True, 2453 ), 2454 deps = target.get("tbl_deps", []), 2455 )], 2456 [cc_library( 2457 name = target["name"] + "Info", 2458 srcs = ["lib/Target/" + target["name"] + "/TargetInfo/" + target["name"] + "TargetInfo.cpp"], 2459 hdrs = glob(["lib/Target/" + target["name"] + "/TargetInfo/*.h"]), 2460 copts = llvm_copts, 2461 # Workaround for https://github.com/bazelbuild/bazel/issues/3828 2462 # TODO(gcmn): Remove this when upgrading to a Bazel version containing 2463 # https://github.com/bazelbuild/bazel/commit/e3b7e17b05f1 2464 includes = ["lib/Target/" + target["name"]], 2465 strip_include_prefix = "lib/Target/" + target["name"], 2466 deps = [ 2467 ":" + target["name"] + "CommonTableGen", 2468 ":MC", 2469 ":Support", 2470 ":Target", 2471 ], 2472 )], 2473 # We cannot separate the `Utils` and `MCTargetDesc` sublibraries of 2474 # a number of targets due to crisscrossing inclusion of headers. 2475 [cc_library( 2476 name = target["name"] + "UtilsAndDesc", 2477 srcs = glob( 2478 [ 2479 "lib/Target/" + target["name"] + "/MCTargetDesc/*.cpp", 2480 "lib/Target/" + target["name"] + "/Utils/*.cpp", 2481 2482 # We have to include these headers here as well as in the `hdrs` 2483 # below to allow the `.cpp` files to use file-relative-inclusion to 2484 # find them, even though consumers of this library use inclusion 2485 # relative to the target with the `strip_includes_prefix` of this 2486 # library. This mixture is likely incompatible with header modules. 2487 "lib/Target/" + target["name"] + "/MCTargetDesc/*.h", 2488 "lib/Target/" + target["name"] + "/Utils/*.h", 2489 ], 2490 allow_empty = True, 2491 ), 2492 hdrs = glob( 2493 [ 2494 "lib/Target/" + target["name"] + "/MCTargetDesc/*.h", 2495 "lib/Target/" + target["name"] + "/Utils/*.h", 2496 2497 # This a bit of a hack to allow us to expose common, internal 2498 # target header files to other libraries within the target via 2499 # target-relative includes. This usage of headers is inherently 2500 # non-modular as there is a mixture of target-relative inclusion 2501 # using this rule and file-relative inclusion using the repeated 2502 # listing of these headers in the `srcs` of subsequent rules. 2503 "lib/Target/" + target["name"] + "/*.h", 2504 2505 # FIXME: The entries below should be `textual_hdrs` instead of 2506 # `hdrs`, but unfortunately that doesn't work with 2507 # `strip_include_prefix`: 2508 # https://github.com/bazelbuild/bazel/issues/12424 2509 # 2510 # Once that issue is fixed and released, we can switch this to 2511 # `textual_hdrs` and remove the feature disabling the various Bazel 2512 # features (both current and under-development) that motivated the 2513 # distinction between these two. 2514 "lib/Target/" + target["name"] + "/*.def", 2515 "lib/Target/" + target["name"] + "/*.inc", 2516 "lib/Target/" + target["name"] + "/MCTargetDesc/*.def", 2517 ], 2518 allow_empty = True, 2519 ), 2520 copts = llvm_copts, 2521 features = [ 2522 "-parse_headers", 2523 "-header_modules", 2524 "-layering_check", 2525 ], 2526 strip_include_prefix = "lib/Target/" + target["name"], 2527 deps = [ 2528 ":BinaryFormat", 2529 ":CodeGen", 2530 ":CodeGenTypes", 2531 ":Core", 2532 ":DebugInfoCodeView", 2533 ":MC", 2534 ":MCDisassembler", 2535 ":Support", 2536 ":Target", 2537 ":config", 2538 ":" + target["name"] + "CommonTableGen", 2539 ":" + target["name"] + "Info", 2540 ], 2541 )], 2542 [cc_library( 2543 name = target["name"] + "CodeGen", 2544 srcs = glob( 2545 [ 2546 "lib/Target/" + target["name"] + "/GISel/*.cpp", 2547 "lib/Target/" + target["name"] + "/GISel/*.h", 2548 "lib/Target/" + target["name"] + "/*.cpp", 2549 "lib/Target/" + target["name"] + "/*.h", 2550 ], 2551 allow_empty = True, 2552 ), 2553 hdrs = ["lib/Target/" + target["name"] + "/" + target["short_name"] + ".h"], 2554 copts = llvm_copts, 2555 features = ["-layering_check"], 2556 strip_include_prefix = "lib/Target/" + target["name"], 2557 textual_hdrs = glob( 2558 [ 2559 "lib/Target/" + target["name"] + "/*.def", 2560 "lib/Target/" + target["name"] + "/*.inc", 2561 ], 2562 allow_empty = True, 2563 ), 2564 deps = [ 2565 ":Analysis", 2566 ":BinaryFormat", 2567 ":CFGuard", 2568 ":CodeGen", 2569 ":CodeGenTypes", 2570 ":Core", 2571 ":IPO", 2572 ":MC", 2573 ":Passes", # TODO(chandlerc): Likely a layering violation. 2574 ":ProfileData", 2575 ":Scalar", 2576 ":Support", 2577 ":Target", 2578 ":TransformUtils", 2579 ":Vectorize", 2580 ":config", 2581 ":" + target["name"] + "Analysis", 2582 ":" + target["name"] + "CommonTableGen", 2583 ":" + target["name"] + "Info", 2584 ":" + target["name"] + "UtilsAndDesc", 2585 ], 2586 )], 2587 [cc_library( 2588 name = target["name"] + "AsmParser", 2589 srcs = glob( 2590 [ 2591 "lib/Target/" + target["name"] + "/AsmParser/*.cpp", 2592 "lib/Target/" + target["name"] + "/AsmParser/*.h", 2593 ], 2594 allow_empty = True, 2595 ), 2596 copts = llvm_copts, 2597 deps = [ 2598 ":BinaryFormat", 2599 ":CodeGenTypes", 2600 ":MC", 2601 ":MCParser", 2602 ":Support", 2603 ":Target", 2604 ":TargetParser", 2605 ":" + target["name"] + "CodeGen", 2606 ":" + target["name"] + "CommonTableGen", 2607 ":" + target["name"] + "Info", 2608 ":" + target["name"] + "UtilsAndDesc", 2609 ], 2610 )], 2611 # This target is a bit of a hack to allow us to expose internal 2612 # disassembler header files via internal target-relative include paths. 2613 # This usage of headers is inherently non-modular as there is a mixture of 2614 # target-relative inclusion using this rule and same-directory inclusion 2615 # using the repeated listing of these headers in the `srcs` below. 2616 [cc_library( 2617 name = target["name"] + "DisassemblerInternalHeaders", 2618 # FIXME: This should be `textual_hdrs` instead of `hdrs`, but 2619 # unfortunately that doesn't work with `strip_include_prefix`: 2620 # https://github.com/bazelbuild/bazel/issues/12424 2621 # 2622 # Once that issue is fixed and released, we can switch this to 2623 # `textual_hdrs` and remove the feature disabling the various Bazel 2624 # features (both current and under-development) that motivated the 2625 # distinction between these two. 2626 hdrs = glob( 2627 [ 2628 "lib/Target/" + target["name"] + "/Disassembler/*.h", 2629 ], 2630 allow_empty = True, 2631 ), 2632 features = [ 2633 "-parse_headers", 2634 "-header_modules", 2635 ], 2636 strip_include_prefix = "lib/Target/" + target["name"], 2637 )], 2638 [cc_library( 2639 name = target["name"] + "Disassembler", 2640 srcs = glob( 2641 [ 2642 "lib/Target/" + target["name"] + "/Disassembler/*.cpp", 2643 "lib/Target/" + target["name"] + "/Disassembler/*.c", 2644 "lib/Target/" + target["name"] + "/Disassembler/*.h", 2645 ], 2646 allow_empty = True, 2647 ), 2648 copts = llvm_copts, 2649 features = ["-layering_check"], 2650 deps = [ 2651 ":CodeGenTypes", 2652 ":Core", 2653 ":MC", 2654 ":MCDisassembler", 2655 ":Support", 2656 ":Target", 2657 ":" + target["name"] + "CodeGen", 2658 ":" + target["name"] + "DisassemblerInternalHeaders", 2659 ":" + target["name"] + "CommonTableGen", 2660 ":" + target["name"] + "UtilsAndDesc", 2661 ], 2662 )], 2663 [cc_library( 2664 name = target["name"] + "TargetMCA", 2665 srcs = glob( 2666 [ 2667 "lib/Target/" + target["name"] + "/MCA/*.cpp", 2668 "lib/Target/" + target["name"] + "/MCA/*.c", 2669 "lib/Target/" + target["name"] + "/MCA/*.h", 2670 ], 2671 allow_empty = True, 2672 ), 2673 copts = llvm_copts, 2674 features = ["-layering_check"], 2675 deps = [ 2676 ":CodeGenTypes", 2677 ":MC", 2678 ":MCA", 2679 ":MCParser", 2680 ":Support", 2681 ":" + target["name"] + "DisassemblerInternalHeaders", 2682 ":" + target["name"] + "Info", 2683 ":" + target["name"] + "UtilsAndDesc", 2684 ], 2685 )], 2686 [cc_library( 2687 name = target["name"] + "Analysis", 2688 srcs = glob( 2689 [ 2690 "lib/Target/" + target["name"] + "/Analysis/*.cpp", 2691 "lib/Target/" + target["name"] + "/Analysis/*.h", 2692 ], 2693 allow_empty = True, 2694 ), 2695 copts = llvm_copts, 2696 features = ["-layering_check"], 2697 deps = [ 2698 ":Analysis", 2699 ":Core", 2700 ":Support", 2701 ":TransformUtils", 2702 ], 2703 )], 2704] for target in llvm_target_lib_list] 2705 2706cc_library( 2707 name = "AllTargetsCodeGens", 2708 copts = llvm_copts, 2709 deps = [ 2710 target["name"] + "CodeGen" 2711 for target in llvm_target_lib_list 2712 ], 2713) 2714 2715cc_library( 2716 name = "AllTargetsAsmParsers", 2717 copts = llvm_copts, 2718 deps = [ 2719 target["name"] + "AsmParser" 2720 for target in llvm_target_lib_list 2721 ], 2722) 2723 2724cc_library( 2725 name = "AllTargetsDisassemblers", 2726 copts = llvm_copts, 2727 deps = [ 2728 target["name"] + "Disassembler" 2729 for target in llvm_target_lib_list 2730 ], 2731) 2732 2733cc_library( 2734 name = "AllTargetsMCAs", 2735 copts = llvm_copts, 2736 deps = [ 2737 target["name"] + "TargetMCA" 2738 for target in llvm_target_lib_list 2739 ], 2740) 2741 2742cc_library( 2743 name = "pass_registry_def", 2744 copts = llvm_copts, 2745 textual_hdrs = ["lib/Passes/PassRegistry.def"], 2746) 2747 2748cc_library( 2749 name = "Passes", 2750 srcs = glob([ 2751 "lib/Passes/*.cpp", 2752 ]), 2753 hdrs = glob([ 2754 "include/llvm/Passes/*.h", 2755 "include/llvm/Passes/*.def", 2756 "include/llvm/Passes/*.inc", 2757 ]) + ["include/llvm-c/Transforms/PassBuilder.h"], 2758 copts = llvm_copts, 2759 deps = [ 2760 ":AggressiveInstCombine", 2761 ":Analysis", 2762 ":CFGuard", 2763 ":CodeGen", 2764 ":Core", 2765 ":Coroutines", 2766 ":HipStdPar", 2767 ":IPO", 2768 ":IRPrinter", 2769 ":InstCombine", 2770 ":Instrumentation", 2771 ":MC", 2772 ":ObjCARC", 2773 ":Scalar", 2774 ":Support", 2775 ":Target", 2776 ":TransformUtils", 2777 ":Vectorize", 2778 ":common_transforms", 2779 ":config", 2780 ":pass_registry_def", 2781 ], 2782) 2783 2784cc_library( 2785 name = "LTO", 2786 srcs = glob([ 2787 "lib/LTO/*.cpp", 2788 ]), 2789 hdrs = glob([ 2790 "include/llvm/LTO/*.h", 2791 "include/llvm/LTO/legacy/*.h", 2792 ]) + [ 2793 "include/llvm-c/lto.h", 2794 ], 2795 copts = llvm_copts, 2796 deps = [ 2797 ":Analysis", 2798 ":BitReader", 2799 ":BitWriter", 2800 ":CGData", 2801 ":CodeGen", 2802 ":CodeGenTypes", 2803 ":Core", 2804 ":IPO", 2805 ":IRPrinter", 2806 ":IRReader", 2807 ":Linker", 2808 ":MC", 2809 ":MCParser", 2810 ":ObjCARC", 2811 ":Object", 2812 ":Passes", 2813 ":Remarks", 2814 ":Scalar", 2815 ":Support", 2816 ":Target", 2817 ":TargetParser", 2818 ":TransformUtils", 2819 ":common_transforms", 2820 ":config", 2821 ], 2822) 2823 2824cc_library( 2825 name = "ExecutionEngine", 2826 srcs = glob([ 2827 "lib/ExecutionEngine/*.cpp", 2828 "lib/ExecutionEngine/RuntimeDyld/*.cpp", 2829 "lib/ExecutionEngine/RuntimeDyld/*.h", 2830 "lib/ExecutionEngine/RuntimeDyld/Targets/*.cpp", 2831 "lib/ExecutionEngine/RuntimeDyld/Targets/*.h", 2832 ]), 2833 hdrs = glob( 2834 [ 2835 "include/llvm/ExecutionEngine/*.h", 2836 ], 2837 exclude = [ 2838 "include/llvm/ExecutionEngine/MCJIT*.h", 2839 "include/llvm/ExecutionEngine/OProfileWrapper.h", 2840 ], 2841 ) + [ 2842 "include/llvm-c/ExecutionEngine.h", 2843 ], 2844 copts = llvm_copts, 2845 deps = [ 2846 ":BinaryFormat", 2847 ":CodeGen", 2848 ":Core", 2849 ":DebugInfo", 2850 ":MC", 2851 ":MCDisassembler", 2852 ":Object", 2853 ":OrcShared", 2854 ":OrcTargetProcess", 2855 ":Passes", 2856 ":Support", 2857 ":Target", 2858 ":TargetParser", 2859 ":config", 2860 ], 2861) 2862 2863cc_library( 2864 name = "Interpreter", 2865 srcs = glob([ 2866 "lib/ExecutionEngine/Interpreter/*.cpp", 2867 "lib/ExecutionEngine/Interpreter/*.h", 2868 ]), 2869 hdrs = ["include/llvm/ExecutionEngine/Interpreter.h"], 2870 copts = llvm_copts, 2871 deps = [ 2872 ":CodeGen", 2873 ":Core", 2874 ":ExecutionEngine", 2875 ":Support", 2876 ":Target", 2877 ":config", 2878 ], 2879) 2880 2881gentbl( 2882 name = "JITLinkTableGen", 2883 strip_include_prefix = "lib/ExecutionEngine/JITLink", 2884 tbl_outs = [( 2885 "-gen-opt-parser-defs", 2886 "lib/ExecutionEngine/JITLink/COFFOptions.inc", 2887 )], 2888 tblgen = ":llvm-tblgen", 2889 td_file = "lib/ExecutionEngine/JITLink/COFFOptions.td", 2890 td_srcs = ["include/llvm/Option/OptParser.td"], 2891) 2892 2893cc_library( 2894 name = "JITLink", 2895 srcs = glob([ 2896 "lib/ExecutionEngine/JITLink/*.cpp", 2897 "lib/ExecutionEngine/JITLink/*.h", 2898 ]), 2899 hdrs = glob([ 2900 "include/llvm/ExecutionEngine/JITLink/*.h", 2901 "include/llvm/ExecutionEngine/Orc/*.h", 2902 ]), 2903 copts = llvm_copts, 2904 deps = [ 2905 ":BinaryFormat", 2906 ":ExecutionEngine", 2907 ":JITLinkTableGen", 2908 ":Object", 2909 ":Option", 2910 ":OrcShared", 2911 ":OrcTargetProcess", 2912 ":Support", 2913 ":TargetParser", 2914 ":config", 2915 ], 2916) 2917 2918cc_library( 2919 name = "MCJIT", 2920 srcs = glob([ 2921 "lib/ExecutionEngine/MCJIT/*.cpp", 2922 "lib/ExecutionEngine/MCJIT/*.h", 2923 ]), 2924 hdrs = glob(["include/llvm/ExecutionEngine/MCJIT*.h"]), 2925 copts = llvm_copts, 2926 deps = [ 2927 ":CodeGen", 2928 ":Core", 2929 ":ExecutionEngine", 2930 ":MC", 2931 ":Object", 2932 ":Support", 2933 ":Target", 2934 ":config", 2935 ], 2936) 2937 2938cc_library( 2939 name = "OrcJIT", 2940 srcs = glob([ 2941 "lib/ExecutionEngine/Orc/*.cpp", 2942 ]), 2943 hdrs = glob([ 2944 "include/llvm/ExecutionEngine/Orc/*.h", 2945 ]) + [ 2946 "include/llvm-c/LLJIT.h", 2947 "include/llvm-c/Orc.h", 2948 "include/llvm-c/OrcEE.h", 2949 ], 2950 copts = llvm_copts, 2951 linkopts = select({ 2952 "@platforms//os:android": [], 2953 "@platforms//os:windows": [], 2954 "@platforms//os:freebsd": [], 2955 "@platforms//os:macos": [], 2956 "//conditions:default": [ 2957 "-lrt", 2958 ], 2959 }), 2960 deps = [ 2961 ":Analysis", 2962 ":BinaryFormat", 2963 ":BitReader", 2964 ":BitWriter", 2965 ":Core", 2966 ":DebugInfoDWARF", 2967 ":ExecutionEngine", 2968 ":JITLink", 2969 ":MC", 2970 ":MCDisassembler", 2971 ":Object", 2972 ":OrcShared", 2973 ":OrcTargetProcess", 2974 ":Passes", 2975 ":Support", 2976 ":Target", 2977 ":TargetParser", 2978 ":TransformUtils", 2979 ":WindowsDriver", 2980 ":config", 2981 ], 2982) 2983 2984cc_library( 2985 name = "OrcShared", 2986 srcs = glob([ 2987 "lib/ExecutionEngine/Orc/Shared/*.cpp", 2988 ]), 2989 hdrs = glob([ 2990 "include/llvm/ExecutionEngine/Orc/Shared/*.h", 2991 ] + [ 2992 "include/llvm/ExecutionEngine/Orc/SymbolStringPool.h", 2993 ]), 2994 copts = llvm_copts, 2995 deps = [ 2996 ":BinaryFormat", 2997 ":CodeGen", 2998 ":Core", 2999 ":DebugInfo", 3000 ":MC", 3001 ":MCDisassembler", 3002 ":Object", 3003 ":Passes", 3004 ":Support", 3005 ":Target", 3006 ":config", 3007 ], 3008) 3009 3010cc_library( 3011 name = "OrcDebugging", 3012 srcs = glob([ 3013 "lib/ExecutionEngine/Orc/Debugging/*.cpp", 3014 ]), 3015 hdrs = glob([ 3016 "include/llvm/ExecutionEngine/Orc/Debugging/*.h", 3017 ]) + ["include/llvm-c/LLJITUtils.h"], 3018 copts = llvm_copts, 3019 deps = [ 3020 ":BinaryFormat", 3021 ":DebugInfo", 3022 ":DebugInfoDWARF", 3023 ":JITLink", 3024 ":OrcJIT", 3025 ":OrcShared", 3026 ":Support", 3027 ":TargetParser", 3028 ], 3029) 3030 3031cc_library( 3032 name = "OrcTargetProcess", 3033 srcs = glob([ 3034 "lib/ExecutionEngine/Orc/TargetProcess/*.cpp", 3035 "lib/ExecutionEngine/Orc/TargetProcess/*.h", 3036 ]), 3037 hdrs = glob([ 3038 "include/llvm/ExecutionEngine/Orc/TargetProcess/*.h", 3039 ]), 3040 copts = llvm_copts, 3041 linkopts = select({ 3042 "@platforms//os:android": [], 3043 "@platforms//os:windows": [], 3044 "@platforms//os:freebsd": [], 3045 "@platforms//os:macos": [], 3046 "//conditions:default": [ 3047 "-lrt", 3048 ], 3049 }), 3050 deps = [ 3051 ":BinaryFormat", 3052 ":CodeGen", 3053 ":Core", 3054 ":DebugInfo", 3055 ":MC", 3056 ":MCDisassembler", 3057 ":Object", 3058 ":OrcShared", 3059 ":Passes", 3060 ":Support", 3061 ":Target", 3062 ":TargetParser", 3063 ":config", 3064 ], 3065) 3066 3067cc_library( 3068 name = "DWARFLinker", 3069 srcs = glob([ 3070 "lib/DWARFLinker/Classic/*.cpp", 3071 ]), 3072 hdrs = glob(["include/llvm/DWARFLinker/Classic/*.h"]), 3073 copts = llvm_copts, 3074 deps = [ 3075 ":BinaryFormat", 3076 ":CodeGen", 3077 ":CodeGenTypes", 3078 ":DWARFLinkerBase", 3079 ":DebugInfoDWARF", 3080 ":MC", 3081 ":Support", 3082 ":Target", 3083 ":TargetParser", 3084 ], 3085) 3086 3087cc_library( 3088 name = "DWARFLinkerBase", 3089 srcs = glob([ 3090 "lib/DWARFLinker/*.cpp", 3091 ]), 3092 hdrs = glob(["include/llvm/DWARFLinker/*.h"]), 3093 copts = llvm_copts, 3094 deps = [ 3095 ":BinaryFormat", 3096 ":CodeGen", 3097 ":DebugInfoDWARF", 3098 ":Support", 3099 ":Target", 3100 ], 3101) 3102 3103cc_library( 3104 name = "DWARFLinkerParallel", 3105 srcs = glob([ 3106 "lib/DWARFLinker/Parallel/*.cpp", 3107 "lib/DWARFLinker/Parallel/*.h", 3108 ]), 3109 hdrs = glob(["include/llvm/DWARFLinker/Parallel/*.h"]), 3110 copts = llvm_copts, 3111 deps = [ 3112 ":BinaryFormat", 3113 ":CodeGen", 3114 ":DWARFLinkerBase", 3115 ":DebugInfoDWARF", 3116 ":MC", 3117 ":Object", 3118 ":Support", 3119 ":Target", 3120 ":TargetParser", 3121 ], 3122) 3123 3124gentbl( 3125 name = "DllOptionsTableGen", 3126 strip_include_prefix = "lib/ToolDrivers/llvm-dlltool", 3127 tbl_outs = [( 3128 "-gen-opt-parser-defs", 3129 "lib/ToolDrivers/llvm-dlltool/Options.inc", 3130 )], 3131 tblgen = ":llvm-tblgen", 3132 td_file = "lib/ToolDrivers/llvm-dlltool/Options.td", 3133 td_srcs = ["include/llvm/Option/OptParser.td"], 3134) 3135 3136cc_library( 3137 name = "DlltoolDriver", 3138 srcs = glob(["lib/ToolDrivers/llvm-dlltool/*.cpp"]), 3139 hdrs = glob(["include/llvm/ToolDrivers/llvm-dlltool/*.h"]), 3140 copts = llvm_copts, 3141 deps = [ 3142 ":DllOptionsTableGen", 3143 ":Object", 3144 ":Option", 3145 ":Support", 3146 ":TargetParser", 3147 ], 3148) 3149 3150gentbl( 3151 name = "LibOptionsTableGen", 3152 strip_include_prefix = "lib/ToolDrivers/llvm-lib", 3153 tbl_outs = [( 3154 "-gen-opt-parser-defs", 3155 "lib/ToolDrivers/llvm-lib/Options.inc", 3156 )], 3157 tblgen = ":llvm-tblgen", 3158 td_file = "lib/ToolDrivers/llvm-lib/Options.td", 3159 td_srcs = ["include/llvm/Option/OptParser.td"], 3160) 3161 3162cc_library( 3163 name = "LibDriver", 3164 srcs = glob(["lib/ToolDrivers/llvm-lib/*.cpp"]), 3165 hdrs = glob(["include/llvm/ToolDrivers/llvm-lib/*.h"]), 3166 copts = llvm_copts, 3167 deps = [ 3168 ":BinaryFormat", 3169 ":BitReader", 3170 ":LibOptionsTableGen", 3171 ":Object", 3172 ":Option", 3173 ":Support", 3174 ], 3175) 3176 3177cc_library( 3178 name = "InterfaceStub", 3179 srcs = glob([ 3180 "lib/InterfaceStub/*.cpp", 3181 ]), 3182 hdrs = glob([ 3183 "include/llvm/InterfaceStub/*.h", 3184 ]), 3185 copts = llvm_copts, 3186 deps = [ 3187 ":BinaryFormat", 3188 ":MC", 3189 ":Object", 3190 ":Support", 3191 ":TargetParser", 3192 ":config", 3193 ], 3194) 3195 3196cc_library( 3197 name = "WindowsDriver", 3198 srcs = glob([ 3199 "lib/WindowsDriver/*.cpp", 3200 ]), 3201 hdrs = glob([ 3202 "include/llvm/WindowsDriver/*.h", 3203 ]), 3204 copts = llvm_copts, 3205 deps = [ 3206 ":Option", 3207 ":Support", 3208 ":TargetParser", 3209 ], 3210) 3211 3212cc_library( 3213 name = "WindowsManifest", 3214 srcs = glob([ 3215 "lib/WindowsManifest/*.cpp", 3216 ]), 3217 hdrs = glob([ 3218 "include/llvm/WindowsManifest/*.h", 3219 ]), 3220 copts = llvm_copts, 3221 deps = [ 3222 ":Support", 3223 ":config", 3224 ], 3225) 3226 3227cc_library( 3228 name = "MCA", 3229 srcs = glob([ 3230 "lib/MCA/**/*.cpp", 3231 ]), 3232 hdrs = glob([ 3233 "include/llvm/MCA/**/*.h", 3234 ]), 3235 copts = llvm_copts, 3236 deps = [ 3237 ":MC", 3238 ":MCDisassembler", 3239 ":Object", 3240 ":Support", 3241 ], 3242) 3243 3244cc_library( 3245 name = "MCAApplication", 3246 srcs = glob([ 3247 "tools/llvm-mca/Views/*.cpp", 3248 ]) + [ 3249 mca_source 3250 for mca_source in glob(["tools/llvm-mca/*.cpp"]) 3251 if mca_source != "tools/llvm-mca/llvm-mca.cpp" 3252 ], 3253 hdrs = glob([ 3254 "tools/llvm-mca/*.h", 3255 "tools/llvm-mca/Views/*.h", 3256 ]), 3257 strip_include_prefix = "tools/llvm-mca", 3258 deps = [ 3259 ":MC", 3260 ":MCA", 3261 ":MCParser", 3262 ":Support", 3263 ":TargetParser", 3264 ], 3265) 3266 3267cc_library( 3268 name = "XRay", 3269 srcs = glob([ 3270 "lib/XRay/*.cpp", 3271 ]), 3272 hdrs = glob(["include/llvm/XRay/*.h"]), 3273 copts = llvm_copts, 3274 deps = [ 3275 ":Object", 3276 ":Support", 3277 ":TargetParser", 3278 ], 3279) 3280 3281# A flag to pick which `pfm` to use for Exegesis. 3282# Usage: `--@llvm-project//llvm:pfm=<disable|external|system>`. 3283# Flag documentation: https://bazel.build/extending/config 3284string_flag( 3285 name = "pfm", 3286 build_setting_default = "external", 3287 values = [ 3288 "disable", # Don't include pfm at all 3289 "external", # Build pfm from source 3290 "system", # Use system pfm (non hermetic) 3291 ], 3292) 3293 3294config_setting( 3295 name = "pfm_disable", 3296 flag_values = {":pfm": "disable"}, 3297) 3298 3299config_setting( 3300 name = "pfm_external", 3301 flag_values = {":pfm": "external"}, 3302) 3303 3304config_setting( 3305 name = "pfm_system", 3306 flag_values = {":pfm": "system"}, 3307) 3308 3309cc_library( 3310 name = "maybe_pfm", 3311 # We want dependencies of this library to have -DHAVE_LIBPFM conditionally 3312 # defined, so we set `defines` instead of `copts`. 3313 defines = select({ 3314 ":pfm_external": ["HAVE_LIBPFM=1"], 3315 ":pfm_system": ["HAVE_LIBPFM=1"], 3316 "//conditions:default": [], 3317 }), 3318 deps = select({ 3319 ":pfm_external": ["@pfm//:pfm_external"], 3320 ":pfm_system": ["@pfm//:pfm_system"], 3321 "//conditions:default": [], 3322 }), 3323) 3324 3325cc_library( 3326 name = "Exegesis", 3327 srcs = glob( 3328 [ 3329 "tools/llvm-exegesis/lib/*.cpp", 3330 # We have to include these headers here as well as in the `hdrs` below 3331 # to allow the `.cpp` files to use file-relative-inclusion to find 3332 # them, even though consumers of this library use inclusion relative to 3333 # `tools/llvm-exegesis/lib` with the `strip_includes_prefix` of this 3334 # library. This mixture appears to be incompatible with header modules. 3335 "tools/llvm-exegesis/lib/*.h", 3336 ] + [ 3337 "tools/llvm-exegesis/lib/{}/*.cpp".format(t) 3338 for t in llvm_target_exegesis 3339 ] + [ 3340 "tools/llvm-exegesis/lib/{}/*.h".format(t) 3341 for t in llvm_target_exegesis 3342 ], 3343 allow_empty = True, 3344 ), 3345 hdrs = glob(["tools/llvm-exegesis/lib/*.h"]), 3346 copts = llvm_copts, 3347 features = [ 3348 "-header_modules", 3349 "-layering_check", 3350 ], 3351 strip_include_prefix = "tools/llvm-exegesis/lib", 3352 deps = [ 3353 ":AllTargetsAsmParsers", 3354 ":AllTargetsCodeGens", 3355 ":CodeGen", 3356 ":CodeGenTypes", 3357 ":Core", 3358 ":ExecutionEngine", 3359 ":MC", 3360 ":MCA", 3361 ":MCDisassembler", 3362 ":Object", 3363 ":ObjectYAML", 3364 ":OrcJIT", 3365 ":Support", 3366 ":Target", 3367 ":config", 3368 ] + select({ 3369 "@platforms//os:linux": [":maybe_pfm"], 3370 "//conditions:default": [], 3371 }), 3372) 3373 3374################################################################################ 3375# LLVM toolchain and development binaries 3376 3377gentbl( 3378 name = "DsymutilTableGen", 3379 strip_include_prefix = "tools/dsymutil", 3380 tbl_outs = [( 3381 "-gen-opt-parser-defs", 3382 "tools/dsymutil/Options.inc", 3383 )], 3384 tblgen = ":llvm-tblgen", 3385 td_file = "tools/dsymutil/Options.td", 3386 td_srcs = ["include/llvm/Option/OptParser.td"], 3387) 3388 3389cc_library( 3390 name = "dsymutil-lib", 3391 srcs = glob([ 3392 "tools/dsymutil/*.cpp", 3393 "tools/dsymutil/*.h", 3394 ]), 3395 copts = llvm_copts, 3396 deps = [ 3397 ":AllTargetsCodeGens", 3398 ":BinaryFormat", 3399 ":CodeGen", 3400 ":CodeGenTypes", 3401 ":DWARFLinker", 3402 ":DWARFLinkerParallel", 3403 ":DebugInfo", 3404 ":DebugInfoDWARF", 3405 ":DsymutilTableGen", 3406 ":MC", 3407 ":Object", 3408 ":Option", 3409 ":Remarks", 3410 ":Support", 3411 ":Target", 3412 ":TargetParser", 3413 ":config", 3414 ":remark_linker", 3415 ], 3416) 3417 3418llvm_driver_cc_binary( 3419 name = "dsymutil", 3420 stamp = 0, 3421 deps = [":dsymutil-lib"], 3422) 3423 3424cc_binary( 3425 name = "llc", 3426 srcs = glob([ 3427 "tools/llc/*.cpp", 3428 "tools/llc/*.h", 3429 ]), 3430 copts = llvm_copts, 3431 stamp = 0, 3432 deps = [ 3433 ":AllTargetsAsmParsers", 3434 ":AllTargetsCodeGens", 3435 ":Analysis", 3436 ":AsmParser", 3437 ":BitReader", 3438 ":CodeGen", 3439 ":CodeGenTypes", 3440 ":Core", 3441 ":IRPrinter", 3442 ":IRReader", 3443 ":MC", 3444 ":Passes", 3445 ":Remarks", 3446 ":Scalar", 3447 ":Support", 3448 ":Target", 3449 ":TargetParser", 3450 ":TransformUtils", 3451 ], 3452) 3453 3454cc_binary( 3455 name = "lli", 3456 srcs = glob([ 3457 "tools/lli/*.cpp", 3458 "tools/lli/*.h", 3459 ]), 3460 copts = llvm_copts, 3461 # ll scripts rely on symbols from dependent 3462 # libraries being resolvable. 3463 linkopts = select({ 3464 "@platforms//os:windows": [], 3465 "@platforms//os:macos": [], 3466 "//conditions:default": [ 3467 "-Wl,--undefined=_ZTIi", 3468 "-Wl,--export-dynamic-symbol=_ZTIi", 3469 "-Wl,--export-dynamic-symbol=__cxa_begin_catch", 3470 "-Wl,--export-dynamic-symbol=__cxa_end_catch", 3471 "-Wl,--export-dynamic-symbol=__gxx_personality_v0", 3472 "-Wl,--export-dynamic-symbol=__cxa_allocate_exception", 3473 "-Wl,--export-dynamic-symbol=__cxa_throw", 3474 "-Wl,--export-dynamic-symbol=llvm_orc_registerJITLoaderGDBWrapper", 3475 "-Wl,--export-dynamic-symbol=llvm_orc_registerEHFrameSectionWrapper", 3476 "-Wl,--export-dynamic-symbol=llvm_orc_deregisterEHFrameSectionWrapper", 3477 ], 3478 }), 3479 stamp = 0, 3480 deps = [ 3481 ":AllTargetsAsmParsers", 3482 ":AllTargetsCodeGens", 3483 ":AsmParser", 3484 ":BitReader", 3485 ":CodeGen", 3486 ":Core", 3487 ":ExecutionEngine", 3488 ":IRPrinter", 3489 ":IRReader", 3490 ":Instrumentation", 3491 ":Interpreter", 3492 ":MCJIT", 3493 ":Object", 3494 ":OrcDebugging", 3495 ":OrcJIT", 3496 ":OrcTargetProcess", 3497 ":Support", 3498 ":TargetParser", 3499 ":config", 3500 ], 3501) 3502 3503cc_library( 3504 name = "llvm-ar-lib", 3505 srcs = glob(["tools/llvm-ar/*.cpp"]), 3506 copts = llvm_copts, 3507 deps = [ 3508 ":AllTargetsAsmParsers", 3509 ":AllTargetsCodeGens", 3510 ":BinaryFormat", 3511 ":Core", 3512 ":DlltoolDriver", 3513 ":LibDriver", 3514 ":Object", 3515 ":Support", 3516 ":TargetParser", 3517 ], 3518) 3519 3520llvm_driver_cc_binary( 3521 name = "llvm-ar", 3522 stamp = 0, 3523 deps = [":llvm-ar-lib"], 3524) 3525 3526# We need to run llvm-ar with different basenames to make it run with 3527# different behavior. 3528binary_alias( 3529 name = "llvm-dlltool", 3530 binary = ":llvm-ar", 3531) 3532 3533binary_alias( 3534 name = "llvm-lib", 3535 binary = ":llvm-ar", 3536) 3537 3538binary_alias( 3539 name = "llvm-ranlib", 3540 binary = ":llvm-ar", 3541) 3542 3543cc_binary( 3544 name = "llvm-as", 3545 srcs = glob([ 3546 "tools/llvm-as/*.cpp", 3547 ]), 3548 copts = llvm_copts, 3549 stamp = 0, 3550 deps = [ 3551 ":Analysis", 3552 ":AsmParser", 3553 ":BitWriter", 3554 ":Core", 3555 ":Support", 3556 ], 3557) 3558 3559cc_binary( 3560 name = "llvm-bcanalyzer", 3561 srcs = glob([ 3562 "tools/llvm-bcanalyzer/*.cpp", 3563 ]), 3564 copts = llvm_copts, 3565 stamp = 0, 3566 deps = [ 3567 ":BitReader", 3568 ":Support", 3569 ], 3570) 3571 3572cc_binary( 3573 name = "llvm-cat", 3574 srcs = glob([ 3575 "tools/llvm-cat/*.cpp", 3576 ]), 3577 copts = llvm_copts, 3578 stamp = 0, 3579 deps = [ 3580 ":BitReader", 3581 ":BitWriter", 3582 ":Core", 3583 ":IRPrinter", 3584 ":IRReader", 3585 ":Support", 3586 ], 3587) 3588 3589gentbl( 3590 name = "CGDataOptsTableGen", 3591 strip_include_prefix = "tools/llvm-cgdata", 3592 tbl_outs = [( 3593 "-gen-opt-parser-defs", 3594 "tools/llvm-cgdata/Opts.inc", 3595 )], 3596 tblgen = ":llvm-tblgen", 3597 td_file = "tools/llvm-cgdata/Opts.td", 3598 td_srcs = ["include/llvm/Option/OptParser.td"], 3599) 3600 3601cc_library( 3602 name = "llvm-cgdata-lib", 3603 srcs = glob(["tools/llvm-cgdata/*.cpp"]), 3604 copts = llvm_copts, 3605 deps = [ 3606 ":CGData", 3607 ":CGDataOptsTableGen", 3608 ":CodeGen", 3609 ":Core", 3610 ":Object", 3611 ":Option", 3612 ":Support", 3613 ], 3614) 3615 3616llvm_driver_cc_binary( 3617 name = "llvm-cgdata", 3618 stamp = 0, 3619 deps = [":llvm-cgdata-lib"], 3620) 3621 3622cc_binary( 3623 name = "llvm-cfi-verify", 3624 srcs = glob([ 3625 "tools/llvm-cfi-verify/*.cpp", 3626 "tools/llvm-cfi-verify/lib/*.cpp", 3627 "tools/llvm-cfi-verify/lib/*.h", 3628 ]), 3629 copts = llvm_copts, 3630 stamp = 0, 3631 deps = [ 3632 ":AllTargetsAsmParsers", 3633 ":AllTargetsCodeGens", 3634 ":AllTargetsDisassemblers", 3635 ":BinaryFormat", 3636 ":DebugInfoDWARF", 3637 ":MC", 3638 ":MCDisassembler", 3639 ":MCParser", 3640 ":Object", 3641 ":Support", 3642 ":Symbolize", 3643 ], 3644) 3645 3646cc_binary( 3647 name = "llvm-cov", 3648 srcs = glob([ 3649 "tools/llvm-cov/*.cpp", 3650 "tools/llvm-cov/*.h", 3651 ]), 3652 copts = llvm_copts, 3653 stamp = 0, 3654 deps = [ 3655 ":Coverage", 3656 ":Debuginfod", 3657 ":Instrumentation", 3658 ":Object", 3659 ":ProfileData", 3660 ":Support", 3661 ":TargetParser", 3662 ":config", 3663 ], 3664) 3665 3666gentbl( 3667 name = "CvtResTableGen", 3668 strip_include_prefix = "tools/llvm-cvtres", 3669 tbl_outs = [( 3670 "-gen-opt-parser-defs", 3671 "tools/llvm-cvtres/Opts.inc", 3672 )], 3673 tblgen = ":llvm-tblgen", 3674 td_file = "tools/llvm-cvtres/Opts.td", 3675 td_srcs = ["include/llvm/Option/OptParser.td"], 3676) 3677 3678cc_binary( 3679 name = "llvm-cvtres", 3680 srcs = glob([ 3681 "tools/llvm-cvtres/*.cpp", 3682 ]), 3683 copts = llvm_copts, 3684 stamp = 0, 3685 deps = [ 3686 ":BinaryFormat", 3687 ":CvtResTableGen", 3688 ":Object", 3689 ":Option", 3690 ":Support", 3691 ], 3692) 3693 3694cc_binary( 3695 name = "llvm-cxxdump", 3696 srcs = glob([ 3697 "tools/llvm-cxxdump/*.cpp", 3698 "tools/llvm-cxxdump/*.h", 3699 ]), 3700 copts = llvm_copts, 3701 stamp = 0, 3702 deps = [ 3703 ":AllTargetsCodeGens", 3704 ":BitReader", 3705 ":MC", 3706 ":Object", 3707 ":Support", 3708 ], 3709) 3710 3711cc_binary( 3712 name = "llvm-cxxmap", 3713 srcs = glob([ 3714 "tools/llvm-cxxmap/*.cpp", 3715 ]), 3716 copts = llvm_copts, 3717 stamp = 0, 3718 deps = [ 3719 ":ProfileData", 3720 ":Support", 3721 ], 3722) 3723 3724gentbl( 3725 name = "CxxfiltOptsTableGen", 3726 strip_include_prefix = "tools/llvm-cxxfilt", 3727 tbl_outs = [( 3728 "-gen-opt-parser-defs", 3729 "tools/llvm-cxxfilt/Opts.inc", 3730 )], 3731 tblgen = ":llvm-tblgen", 3732 td_file = "tools/llvm-cxxfilt/Opts.td", 3733 td_srcs = ["include/llvm/Option/OptParser.td"], 3734) 3735 3736cc_library( 3737 name = "llvm-cxxfilt-lib", 3738 srcs = glob(["tools/llvm-cxxfilt/*.cpp"]), 3739 copts = llvm_copts, 3740 deps = [ 3741 ":CxxfiltOptsTableGen", 3742 ":Demangle", 3743 ":Option", 3744 ":Support", 3745 ":TargetParser", 3746 ], 3747) 3748 3749llvm_driver_cc_binary( 3750 name = "llvm-cxxfilt", 3751 stamp = 0, 3752 deps = [":llvm-cxxfilt-lib"], 3753) 3754 3755cc_binary( 3756 name = "llvm-debuginfo-analyzer", 3757 srcs = glob([ 3758 "tools/llvm-debuginfo-analyzer/*.cpp", 3759 "tools/llvm-debuginfo-analyzer/*.h", 3760 ]), 3761 copts = llvm_copts, 3762 stamp = 0, 3763 deps = [ 3764 ":AllTargetsCodeGens", 3765 ":AllTargetsDisassemblers", 3766 ":DebugInfoLogicalView", 3767 ":Support", 3768 ], 3769) 3770 3771gentbl( 3772 name = "DebugInfodFindOptsTableGen", 3773 strip_include_prefix = "tools/llvm-debuginfod-find", 3774 tbl_outs = [( 3775 "-gen-opt-parser-defs", 3776 "tools/llvm-debuginfod-find/Opts.inc", 3777 )], 3778 tblgen = ":llvm-tblgen", 3779 td_file = "tools/llvm-debuginfod-find/Opts.td", 3780 td_srcs = ["include/llvm/Option/OptParser.td"], 3781) 3782 3783cc_library( 3784 name = "llvm-debuginfod-find-lib", 3785 srcs = glob([ 3786 "tools/llvm-debuginfod-find/*.cpp", 3787 ]), 3788 copts = llvm_copts, 3789 deps = [ 3790 ":BitReader", 3791 ":Core", 3792 ":DebugInfodFindOptsTableGen", 3793 ":Debuginfod", 3794 ":Option", 3795 ":Support", 3796 ":Symbolize", 3797 ], 3798) 3799 3800llvm_driver_cc_binary( 3801 name = "llvm-debuginfod-find", 3802 stamp = 0, 3803 deps = [":llvm-debuginfod-find-lib"], 3804) 3805 3806cc_binary( 3807 name = "llvm-dis", 3808 srcs = glob([ 3809 "tools/llvm-dis/*.cpp", 3810 ]), 3811 copts = llvm_copts, 3812 stamp = 0, 3813 deps = [ 3814 ":Analysis", 3815 ":BitReader", 3816 ":Core", 3817 ":Support", 3818 ], 3819) 3820 3821cc_binary( 3822 name = "llvm-dwarfdump", 3823 srcs = glob([ 3824 "tools/llvm-dwarfdump/*.cpp", 3825 "tools/llvm-dwarfdump/*.h", 3826 ]), 3827 copts = llvm_copts, 3828 stamp = 0, 3829 deps = [ 3830 ":AllTargetsCodeGens", 3831 ":BinaryFormat", 3832 ":DebugInfo", 3833 ":DebugInfoDWARF", 3834 ":MC", 3835 ":Object", 3836 ":Support", 3837 ":TargetParser", 3838 ], 3839) 3840 3841gentbl( 3842 name = "DwarfutilOptionsTableGen", 3843 strip_include_prefix = "tools/llvm-dwarfutil", 3844 tbl_outs = [( 3845 "-gen-opt-parser-defs", 3846 "tools/llvm-dwarfutil/Options.inc", 3847 )], 3848 tblgen = ":llvm-tblgen", 3849 td_file = "tools/llvm-dwarfutil/Options.td", 3850 td_srcs = ["include/llvm/Option/OptParser.td"], 3851) 3852 3853cc_binary( 3854 name = "llvm-dwarfutil", 3855 srcs = glob([ 3856 "tools/llvm-dwarfutil/*.cpp", 3857 "tools/llvm-dwarfutil/*.h", 3858 ]), 3859 copts = llvm_copts, 3860 stamp = 0, 3861 deps = [ 3862 ":AllTargetsAsmParsers", 3863 ":AllTargetsCodeGens", 3864 ":CodeGenTypes", 3865 ":DWARFLinker", 3866 ":DWARFLinkerParallel", 3867 ":DebugInfoDWARF", 3868 ":DwarfutilOptionsTableGen", 3869 ":MC", 3870 ":ObjCopy", 3871 ":Object", 3872 ":Option", 3873 ":Support", 3874 ":Target", 3875 ":TargetParser", 3876 ], 3877) 3878 3879gentbl( 3880 name = "DwpOptionsTableGen", 3881 strip_include_prefix = "tools/llvm-dwp", 3882 tbl_outs = [( 3883 "-gen-opt-parser-defs", 3884 "tools/llvm-dwp/Opts.inc", 3885 )], 3886 tblgen = ":llvm-tblgen", 3887 td_file = "tools/llvm-dwp/Opts.td", 3888 td_srcs = ["include/llvm/Option/OptParser.td"], 3889) 3890 3891cc_library( 3892 name = "llvm-dwp-lib", 3893 srcs = glob(["tools/llvm-dwp/*.cpp"]), 3894 copts = llvm_copts, 3895 deps = [ 3896 ":AllTargetsCodeGens", 3897 ":DWP", 3898 ":DwpOptionsTableGen", 3899 ":MC", 3900 ":Option", 3901 ":Support", 3902 ], 3903) 3904 3905llvm_driver_cc_binary( 3906 name = "llvm-dwp", 3907 stamp = 0, 3908 deps = [":llvm-dwp-lib"], 3909) 3910 3911cc_binary( 3912 name = "llvm-exegesis", 3913 srcs = [ 3914 "tools/llvm-exegesis/llvm-exegesis.cpp", 3915 ], 3916 copts = llvm_copts, 3917 stamp = 0, 3918 deps = [ 3919 ":AllTargetsAsmParsers", 3920 ":AllTargetsCodeGens", 3921 ":AllTargetsDisassemblers", 3922 ":CodeGenTypes", 3923 ":Exegesis", 3924 ":MC", 3925 ":MCParser", 3926 ":Object", 3927 ":Support", 3928 ":TargetParser", 3929 ":config", 3930 ], 3931) 3932 3933cc_binary( 3934 name = "llvm-extract", 3935 srcs = glob([ 3936 "tools/llvm-extract/*.cpp", 3937 ]), 3938 copts = llvm_copts, 3939 stamp = 0, 3940 deps = [ 3941 ":AsmParser", 3942 ":BitReader", 3943 ":BitWriter", 3944 ":Core", 3945 ":IPO", 3946 ":IRPrinter", 3947 ":IRReader", 3948 ":Passes", 3949 ":Support", 3950 ], 3951) 3952 3953gentbl( 3954 name = "GSYMUtilOptionsTableGen", 3955 strip_include_prefix = "tools/llvm-gsymutil", 3956 tbl_outs = [( 3957 "-gen-opt-parser-defs", 3958 "tools/llvm-gsymutil/Opts.inc", 3959 )], 3960 tblgen = ":llvm-tblgen", 3961 td_file = "tools/llvm-gsymutil/Opts.td", 3962 td_srcs = ["include/llvm/Option/OptParser.td"], 3963) 3964 3965cc_library( 3966 name = "llvm-gsymutil-lib", 3967 srcs = glob(["tools/llvm-gsymutil/*.cpp"]), 3968 copts = llvm_copts, 3969 deps = [ 3970 ":AllTargetsCodeGens", 3971 ":DebugInfo", 3972 ":DebugInfoDWARF", 3973 ":DebugInfoGSYM", 3974 ":GSYMUtilOptionsTableGen", 3975 ":MC", 3976 ":Object", 3977 ":Option", 3978 ":Support", 3979 ":Target", 3980 ":TargetParser", 3981 ], 3982) 3983 3984llvm_driver_cc_binary( 3985 name = "llvm-gsymutil", 3986 stamp = 0, 3987 deps = [":llvm-gsymutil-lib"], 3988) 3989 3990gentbl( 3991 name = "IfsOptionsTableGen", 3992 strip_include_prefix = "tools/llvm-ifs", 3993 tbl_outs = [( 3994 "-gen-opt-parser-defs", 3995 "tools/llvm-ifs/Opts.inc", 3996 )], 3997 tblgen = ":llvm-tblgen", 3998 td_file = "tools/llvm-ifs/Opts.td", 3999 td_srcs = ["include/llvm/Option/OptParser.td"], 4000) 4001 4002cc_library( 4003 name = "llvm-ifs-lib", 4004 srcs = glob([ 4005 "tools/llvm-ifs/*.cpp", 4006 "tools/llvm-ifs/*.h", 4007 ]), 4008 copts = llvm_copts, 4009 deps = [ 4010 ":BinaryFormat", 4011 ":IfsOptionsTableGen", 4012 ":InterfaceStub", 4013 ":ObjectYAML", 4014 ":Option", 4015 ":Support", 4016 ":TargetParser", 4017 ":TextAPI", 4018 ], 4019) 4020 4021llvm_driver_cc_binary( 4022 name = "llvm-ifs", 4023 stamp = 0, 4024 deps = [":llvm-ifs-lib"], 4025) 4026 4027cc_binary( 4028 name = "llvm-jitlink", 4029 srcs = glob([ 4030 "tools/llvm-jitlink/*.cpp", 4031 "tools/llvm-jitlink/*.h", 4032 ]), 4033 copts = llvm_copts, 4034 # Make symbols from the standard library dynamically resolvable. 4035 linkopts = select({ 4036 "@platforms//os:windows": [], 4037 "@platforms//os:macos": [], 4038 "//conditions:default": [ 4039 "-Wl,--undefined=_ZTIi", 4040 "-Wl,--export-dynamic-symbol=_ZTIi", 4041 "-Wl,--export-dynamic-symbol=__cxa_begin_catch", 4042 "-Wl,--export-dynamic-symbol=__cxa_end_catch", 4043 "-Wl,--export-dynamic-symbol=__gxx_personality_v0", 4044 "-Wl,--export-dynamic-symbol=__cxa_allocate_exception", 4045 "-Wl,--export-dynamic-symbol=__cxa_throw", 4046 "-Wl,--export-dynamic-symbol=llvm_orc_registerJITLoaderGDBWrapper", 4047 ], 4048 }), 4049 stamp = 0, 4050 deps = [ 4051 ":AllTargetsAsmParsers", 4052 ":AllTargetsCodeGens", 4053 ":AllTargetsDisassemblers", 4054 ":AsmParser", 4055 ":BinaryFormat", 4056 ":BitReader", 4057 ":CodeGen", 4058 ":ExecutionEngine", 4059 ":MC", 4060 ":MCDisassembler", 4061 ":MCJIT", 4062 ":Object", 4063 ":OrcDebugging", 4064 ":OrcJIT", 4065 ":OrcShared", 4066 ":OrcTargetProcess", 4067 ":Support", 4068 ":TargetParser", 4069 ":config", 4070 ], 4071) 4072 4073gentbl( 4074 name = "LibtoolDarwinOptionsTableGen", 4075 strip_include_prefix = "tools/llvm-libtool-darwin", 4076 tbl_outs = [( 4077 "-gen-opt-parser-defs", 4078 "tools/llvm-libtool-darwin/Opts.inc", 4079 )], 4080 tblgen = ":llvm-tblgen", 4081 td_file = "tools/llvm-libtool-darwin/Opts.td", 4082 td_srcs = ["include/llvm/Option/OptParser.td"], 4083) 4084 4085cc_library( 4086 name = "llvm-libtool-darwin-lib", 4087 srcs = glob([ 4088 "tools/llvm-libtool-darwin/*.cpp", 4089 "tools/llvm-libtool-darwin/*.h", 4090 ]), 4091 copts = llvm_copts, 4092 deps = [ 4093 ":AllTargetsAsmParsers", 4094 ":AllTargetsCodeGens", 4095 ":BinaryFormat", 4096 ":Core", 4097 ":LibtoolDarwinOptionsTableGen", 4098 ":Object", 4099 ":Option", 4100 ":Support", 4101 ":TextAPI", 4102 ], 4103) 4104 4105llvm_driver_cc_binary( 4106 name = "llvm-libtool-darwin", 4107 stamp = 0, 4108 deps = [":llvm-libtool-darwin-lib"], 4109) 4110 4111cc_binary( 4112 name = "llvm-link", 4113 srcs = glob([ 4114 "tools/llvm-link/*.cpp", 4115 ]), 4116 copts = llvm_copts, 4117 stamp = 0, 4118 deps = [ 4119 ":AsmParser", 4120 ":BinaryFormat", 4121 ":BitReader", 4122 ":BitWriter", 4123 ":Core", 4124 ":IPO", 4125 ":IRPrinter", 4126 ":IRReader", 4127 ":Linker", 4128 ":Object", 4129 ":Support", 4130 ":TransformUtils", 4131 ], 4132) 4133 4134gentbl( 4135 name = "LipoOptsTableGen", 4136 strip_include_prefix = "tools/llvm-lipo", 4137 tbl_outs = [( 4138 "-gen-opt-parser-defs", 4139 "tools/llvm-lipo/LipoOpts.inc", 4140 )], 4141 tblgen = ":llvm-tblgen", 4142 td_file = "tools/llvm-lipo/LipoOpts.td", 4143 td_srcs = ["include/llvm/Option/OptParser.td"], 4144) 4145 4146cc_library( 4147 name = "llvm-lipo-lib", 4148 srcs = ["tools/llvm-lipo/llvm-lipo.cpp"], 4149 copts = llvm_copts, 4150 deps = [ 4151 ":AllTargetsAsmParsers", 4152 ":BinaryFormat", 4153 ":Core", 4154 ":LipoOptsTableGen", 4155 ":Object", 4156 ":Option", 4157 ":Support", 4158 ":TargetParser", 4159 ":TextAPI", 4160 ], 4161) 4162 4163llvm_driver_cc_binary( 4164 name = "llvm-lipo", 4165 stamp = 0, 4166 deps = [":llvm-lipo-lib"], 4167) 4168 4169cc_binary( 4170 name = "llvm-lto", 4171 srcs = glob([ 4172 "tools/llvm-lto/*.cpp", 4173 ]), 4174 copts = llvm_copts, 4175 stamp = 0, 4176 deps = [ 4177 ":AllTargetsAsmParsers", 4178 ":AllTargetsCodeGens", 4179 ":BitReader", 4180 ":BitWriter", 4181 ":CodeGen", 4182 ":Core", 4183 ":IRPrinter", 4184 ":IRReader", 4185 ":LTO", 4186 ":Support", 4187 ":Target", 4188 ], 4189) 4190 4191cc_binary( 4192 name = "llvm-lto2", 4193 srcs = glob([ 4194 "tools/llvm-lto2/*.cpp", 4195 ]), 4196 copts = llvm_copts, 4197 stamp = 0, 4198 deps = [ 4199 ":AllTargetsAsmParsers", 4200 ":AllTargetsCodeGens", 4201 ":BitReader", 4202 ":CodeGen", 4203 ":Core", 4204 ":LTO", 4205 ":Passes", 4206 ":Remarks", 4207 ":Support", 4208 ], 4209) 4210 4211cc_binary( 4212 name = "llvm-mc", 4213 srcs = glob([ 4214 "tools/llvm-mc/*.cpp", 4215 "tools/llvm-mc/*.h", 4216 ]), 4217 copts = llvm_copts, 4218 stamp = 0, 4219 deps = [ 4220 ":AllTargetsAsmParsers", 4221 ":AllTargetsCodeGens", 4222 ":AllTargetsDisassemblers", 4223 ":MC", 4224 ":MCDisassembler", 4225 ":MCParser", 4226 ":Object", 4227 ":Support", 4228 ":TargetParser", 4229 ], 4230) 4231 4232cc_binary( 4233 name = "llvm-mca", 4234 srcs = [ 4235 "tools/llvm-mca/llvm-mca.cpp", 4236 ], 4237 copts = llvm_copts, 4238 stamp = 0, 4239 deps = [ 4240 ":AllTargetsAsmParsers", 4241 ":AllTargetsCodeGens", 4242 ":AllTargetsDisassemblers", 4243 ":AllTargetsMCAs", 4244 ":MC", 4245 ":MCA", 4246 ":MCAApplication", 4247 ":MCParser", 4248 ":Support", 4249 ":TargetParser", 4250 ], 4251) 4252 4253gentbl( 4254 name = "MlTableGen", 4255 strip_include_prefix = "tools/llvm-ml", 4256 tbl_outs = [( 4257 "-gen-opt-parser-defs", 4258 "tools/llvm-ml/Opts.inc", 4259 )], 4260 tblgen = ":llvm-tblgen", 4261 td_file = "tools/llvm-ml/Opts.td", 4262 td_srcs = ["include/llvm/Option/OptParser.td"], 4263) 4264 4265cc_library( 4266 name = "llvm-ml-lib", 4267 srcs = glob([ 4268 "tools/llvm-ml/*.cpp", 4269 "tools/llvm-ml/*.h", 4270 ]), 4271 copts = llvm_copts, 4272 deps = [ 4273 ":AllTargetsAsmParsers", 4274 ":AllTargetsCodeGens", 4275 ":AllTargetsDisassemblers", 4276 ":MC", 4277 ":MCDisassembler", 4278 ":MCParser", 4279 ":MlTableGen", 4280 ":Option", 4281 ":Support", 4282 ":TargetParser", 4283 ], 4284) 4285 4286llvm_driver_cc_binary( 4287 name = "llvm-ml", 4288 stamp = 0, 4289 deps = [":llvm-ml-lib"], 4290) 4291 4292cc_binary( 4293 name = "llvm-modextract", 4294 srcs = glob([ 4295 "tools/llvm-modextract/*.cpp", 4296 ]), 4297 copts = llvm_copts, 4298 stamp = 0, 4299 deps = [ 4300 ":BitReader", 4301 ":BitWriter", 4302 ":IRPrinter", 4303 ":IRReader", 4304 ":Support", 4305 ], 4306) 4307 4308gentbl( 4309 name = "MtTableGen", 4310 strip_include_prefix = "tools/llvm-mt", 4311 tbl_outs = [( 4312 "-gen-opt-parser-defs", 4313 "tools/llvm-mt/Opts.inc", 4314 )], 4315 tblgen = ":llvm-tblgen", 4316 td_file = "tools/llvm-mt/Opts.td", 4317 td_srcs = ["include/llvm/Option/OptParser.td"], 4318) 4319 4320cc_library( 4321 name = "llvm-mt-lib", 4322 srcs = glob(["tools/llvm-mt/*.cpp"]), 4323 copts = llvm_copts, 4324 deps = [ 4325 ":MtTableGen", 4326 ":Option", 4327 ":Support", 4328 ":WindowsManifest", 4329 ":config", 4330 ], 4331) 4332 4333llvm_driver_cc_binary( 4334 name = "llvm-mt", 4335 stamp = 0, 4336 deps = [":llvm-mt-lib"], 4337) 4338 4339gentbl( 4340 name = "NmOptsTableGen", 4341 strip_include_prefix = "tools/llvm-nm", 4342 tbl_outs = [( 4343 "-gen-opt-parser-defs", 4344 "tools/llvm-nm/Opts.inc", 4345 )], 4346 tblgen = ":llvm-tblgen", 4347 td_file = "tools/llvm-nm/Opts.td", 4348 td_srcs = ["include/llvm/Option/OptParser.td"], 4349) 4350 4351cc_library( 4352 name = "llvm-nm-lib", 4353 srcs = glob(["tools/llvm-nm/*.cpp"]), 4354 copts = llvm_copts, 4355 deps = [ 4356 ":AllTargetsAsmParsers", 4357 ":AllTargetsCodeGens", 4358 ":BinaryFormat", 4359 ":BitReader", 4360 ":Core", 4361 ":Demangle", 4362 ":NmOptsTableGen", 4363 ":Object", 4364 ":Option", 4365 ":Support", 4366 ":Symbolize", 4367 ":TargetParser", 4368 ], 4369) 4370 4371llvm_driver_cc_binary( 4372 name = "llvm-nm", 4373 stamp = 0, 4374 deps = [":llvm-nm-lib"], 4375) 4376 4377gentbl( 4378 name = "llvm-objcopy-opts", 4379 strip_include_prefix = "tools/llvm-objcopy", 4380 tbl_outs = [( 4381 "-gen-opt-parser-defs", 4382 "tools/llvm-objcopy/ObjcopyOpts.inc", 4383 )], 4384 tblgen = ":llvm-tblgen", 4385 td_file = "tools/llvm-objcopy/ObjcopyOpts.td", 4386 td_srcs = [ 4387 "include/llvm/Option/OptParser.td", 4388 "tools/llvm-objcopy/CommonOpts.td", 4389 ], 4390) 4391 4392gentbl( 4393 name = "llvm-installnametool-opts", 4394 strip_include_prefix = "tools/llvm-objcopy", 4395 tbl_outs = [( 4396 "-gen-opt-parser-defs", 4397 "tools/llvm-objcopy/InstallNameToolOpts.inc", 4398 )], 4399 tblgen = ":llvm-tblgen", 4400 td_file = "tools/llvm-objcopy/InstallNameToolOpts.td", 4401 td_srcs = [ 4402 "include/llvm/Option/OptParser.td", 4403 "tools/llvm-objcopy/CommonOpts.td", 4404 ], 4405) 4406 4407gentbl( 4408 name = "llvm-strip-opts", 4409 strip_include_prefix = "tools/llvm-objcopy", 4410 tbl_outs = [( 4411 "-gen-opt-parser-defs", 4412 "tools/llvm-objcopy/StripOpts.inc", 4413 )], 4414 tblgen = ":llvm-tblgen", 4415 td_file = "tools/llvm-objcopy/StripOpts.td", 4416 td_srcs = [ 4417 "include/llvm/Option/OptParser.td", 4418 "tools/llvm-objcopy/CommonOpts.td", 4419 ], 4420) 4421 4422gentbl( 4423 name = "llvm-bitcode-strip-opts", 4424 strip_include_prefix = "tools/llvm-objcopy", 4425 tbl_outs = [( 4426 "-gen-opt-parser-defs", 4427 "tools/llvm-objcopy/BitcodeStripOpts.inc", 4428 )], 4429 tblgen = ":llvm-tblgen", 4430 td_file = "tools/llvm-objcopy/BitcodeStripOpts.td", 4431 td_srcs = [ 4432 "include/llvm/Option/OptParser.td", 4433 "tools/llvm-objcopy/CommonOpts.td", 4434 ], 4435) 4436 4437cc_binary( 4438 name = "llvm-stress", 4439 srcs = glob([ 4440 "tools/llvm-stress/*.cpp", 4441 ]), 4442 copts = llvm_copts, 4443 stamp = 0, 4444 deps = [ 4445 ":Core", 4446 ":Support", 4447 ], 4448) 4449 4450cc_library( 4451 name = "llvm-objcopy-lib", 4452 srcs = glob([ 4453 "tools/llvm-objcopy/*.cpp", 4454 "tools/llvm-objcopy/*.h", 4455 ]), 4456 copts = llvm_copts, 4457 deps = [ 4458 ":BinaryFormat", 4459 ":MC", 4460 ":ObjCopy", 4461 ":Object", 4462 ":ObjectYAML", 4463 ":Option", 4464 ":Support", 4465 ":Target", 4466 ":TargetParser", 4467 ":llvm-bitcode-strip-opts", 4468 ":llvm-installnametool-opts", 4469 ":llvm-objcopy-opts", 4470 ":llvm-strip-opts", 4471 ], 4472) 4473 4474llvm_driver_cc_binary( 4475 name = "llvm-objcopy", 4476 stamp = 0, 4477 deps = [":llvm-objcopy-lib"], 4478) 4479 4480binary_alias( 4481 name = "llvm-strip", 4482 binary = ":llvm-objcopy", 4483) 4484 4485binary_alias( 4486 name = "llvm-bitcode-strip", 4487 binary = ":llvm-objcopy", 4488) 4489 4490binary_alias( 4491 name = "llvm-install-name-tool", 4492 binary = ":llvm-objcopy", 4493) 4494 4495cc_library( 4496 name = "llvm-objdump-lib", 4497 srcs = glob([ 4498 "tools/llvm-objdump/*.cpp", 4499 "tools/llvm-objdump/*.h", 4500 ]), 4501 copts = llvm_copts, 4502 deps = [ 4503 ":AllTargetsAsmParsers", 4504 ":AllTargetsCodeGens", 4505 ":AllTargetsDisassemblers", 4506 ":BinaryFormat", 4507 ":CodeGen", 4508 ":DebugInfo", 4509 ":DebugInfoBTF", 4510 ":DebugInfoDWARF", 4511 ":Debuginfod", 4512 ":Demangle", 4513 ":MC", 4514 ":MCDisassembler", 4515 ":ObjdumpOptsTableGen", 4516 ":Object", 4517 ":Option", 4518 ":OtoolOptsTableGen", 4519 ":Support", 4520 ":Symbolize", 4521 ":TargetParser", 4522 ":config", 4523 ], 4524) 4525 4526llvm_driver_cc_binary( 4527 name = "llvm-objdump", 4528 stamp = 0, 4529 deps = [":llvm-objdump-lib"], 4530) 4531 4532gentbl( 4533 name = "ObjdumpOptsTableGen", 4534 strip_include_prefix = "tools/llvm-objdump", 4535 tbl_outs = [( 4536 "-gen-opt-parser-defs", 4537 "tools/llvm-objdump/ObjdumpOpts.inc", 4538 )], 4539 tblgen = ":llvm-tblgen", 4540 td_file = "tools/llvm-objdump/ObjdumpOpts.td", 4541 td_srcs = ["include/llvm/Option/OptParser.td"], 4542) 4543 4544binary_alias( 4545 name = "llvm-otool", 4546 binary = ":llvm-objdump", 4547) 4548 4549gentbl( 4550 name = "OtoolOptsTableGen", 4551 strip_include_prefix = "tools/llvm-objdump", 4552 tbl_outs = [( 4553 "-gen-opt-parser-defs", 4554 "tools/llvm-objdump/OtoolOpts.inc", 4555 )], 4556 tblgen = ":llvm-tblgen", 4557 td_file = "tools/llvm-objdump/OtoolOpts.td", 4558 td_srcs = ["include/llvm/Option/OptParser.td"], 4559) 4560 4561cc_binary( 4562 name = "llvm-opt-report", 4563 srcs = glob([ 4564 "tools/llvm-opt-report/*.cpp", 4565 ]), 4566 copts = llvm_copts, 4567 stamp = 0, 4568 deps = [ 4569 ":AllTargetsCodeGens", 4570 ":Demangle", 4571 ":Remarks", 4572 ":Support", 4573 ], 4574) 4575 4576cc_binary( 4577 name = "llvm-pdbutil", 4578 srcs = glob([ 4579 "tools/llvm-pdbutil/*.cpp", 4580 "tools/llvm-pdbutil/*.h", 4581 ]), 4582 copts = llvm_copts, 4583 stamp = 0, 4584 deps = [ 4585 ":BinaryFormat", 4586 ":DebugInfoBTF", 4587 ":DebugInfoCodeView", 4588 ":DebugInfoMSF", 4589 ":DebugInfoPDB", 4590 ":Object", 4591 ":ObjectYAML", 4592 ":Support", 4593 ":config", 4594 ], 4595) 4596 4597cc_library( 4598 name = "llvm-profdata-lib", 4599 srcs = glob(["tools/llvm-profdata/*.cpp"]), 4600 copts = llvm_copts, 4601 deps = [ 4602 ":Core", 4603 ":Debuginfod", 4604 ":Object", 4605 ":ProfileData", 4606 ":Support", 4607 ], 4608) 4609 4610llvm_driver_cc_binary( 4611 name = "llvm-profdata", 4612 stamp = 0, 4613 deps = [":llvm-profdata-lib"], 4614) 4615 4616cc_binary( 4617 name = "llvm-profgen", 4618 srcs = glob([ 4619 "tools/llvm-profgen/*.cpp", 4620 "tools/llvm-profgen/*.h", 4621 ]), 4622 copts = llvm_copts, 4623 stamp = 0, 4624 deps = [ 4625 ":AllTargetsCodeGens", 4626 ":AllTargetsDisassemblers", 4627 ":Core", 4628 ":DebugInfoDWARF", 4629 ":Demangle", 4630 ":IPO", 4631 ":MC", 4632 ":MCDisassembler", 4633 ":Object", 4634 ":ProfileData", 4635 ":Support", 4636 ":Symbolize", 4637 ":TargetParser", 4638 ], 4639) 4640 4641gentbl( 4642 name = "RcTableGen", 4643 strip_include_prefix = "tools/llvm-rc", 4644 tbl_outs = [( 4645 "-gen-opt-parser-defs", 4646 "tools/llvm-rc/Opts.inc", 4647 )], 4648 tblgen = ":llvm-tblgen", 4649 td_file = "tools/llvm-rc/Opts.td", 4650 td_srcs = ["include/llvm/Option/OptParser.td"], 4651) 4652 4653gentbl( 4654 name = "WindresTableGen", 4655 strip_include_prefix = "tools/llvm-rc", 4656 tbl_outs = [( 4657 "-gen-opt-parser-defs", 4658 "tools/llvm-rc/WindresOpts.inc", 4659 )], 4660 tblgen = ":llvm-tblgen", 4661 td_file = "tools/llvm-rc/WindresOpts.td", 4662 td_srcs = ["include/llvm/Option/OptParser.td"], 4663) 4664 4665# Workaround inability to put `.def` files into `srcs` with a library. 4666cc_library( 4667 name = "llvm-rc-defs-lib", 4668 textual_hdrs = glob(["tools/llvm-rc/*.def"]), 4669) 4670 4671cc_library( 4672 name = "llvm-rc-lib", 4673 srcs = glob([ 4674 "tools/llvm-rc/*.cpp", 4675 "tools/llvm-rc/*.h", 4676 ]), 4677 copts = llvm_copts, 4678 deps = [ 4679 ":Object", 4680 ":Option", 4681 ":RcTableGen", 4682 ":Support", 4683 ":TargetParser", 4684 ":WindresTableGen", 4685 ":config", 4686 ":llvm-rc-defs-lib", 4687 ], 4688) 4689 4690llvm_driver_cc_binary( 4691 name = "llvm-rc", 4692 stamp = 0, 4693 deps = [":llvm-rc-lib"], 4694) 4695 4696binary_alias( 4697 name = "llvm-windres", 4698 binary = ":llvm-rc", 4699) 4700 4701gentbl( 4702 name = "ReadobjOptsTableGen", 4703 strip_include_prefix = "tools/llvm-readobj", 4704 tbl_outs = [( 4705 "-gen-opt-parser-defs", 4706 "tools/llvm-readobj/Opts.inc", 4707 )], 4708 tblgen = ":llvm-tblgen", 4709 td_file = "tools/llvm-readobj/Opts.td", 4710 td_srcs = ["include/llvm/Option/OptParser.td"], 4711) 4712 4713cc_library( 4714 name = "llvm-readobj-lib", 4715 srcs = glob([ 4716 "tools/llvm-readobj/*.cpp", 4717 "tools/llvm-readobj/*.h", 4718 ]), 4719 copts = llvm_copts, 4720 deps = [ 4721 ":AllTargetsCodeGens", 4722 ":BinaryFormat", 4723 ":BitReader", 4724 ":DebugInfoCodeView", 4725 ":DebugInfoDWARF", 4726 ":Demangle", 4727 ":MC", 4728 ":Object", 4729 ":Option", 4730 ":ReadobjOptsTableGen", 4731 ":Support", 4732 ], 4733) 4734 4735llvm_driver_cc_binary( 4736 name = "llvm-readobj", 4737 stamp = 0, 4738 deps = [":llvm-readobj-lib"], 4739) 4740 4741# Create an 'llvm-readelf' named binary from the 'llvm-readobj' tool. 4742binary_alias( 4743 name = "llvm-readelf", 4744 binary = ":llvm-readobj", 4745) 4746 4747cc_binary( 4748 name = "llvm-reduce", 4749 srcs = glob([ 4750 "tools/llvm-reduce/**/*.cpp", 4751 "tools/llvm-reduce/**/*.h", 4752 ]), 4753 copts = llvm_copts, 4754 includes = ["tools/llvm-reduce"], 4755 stamp = 0, 4756 deps = [ 4757 ":AllTargetsAsmParsers", 4758 ":AllTargetsCodeGens", 4759 ":Analysis", 4760 ":BitReader", 4761 ":BitWriter", 4762 ":CodeGen", 4763 ":CodeGenTypes", 4764 ":Core", 4765 ":IPO", 4766 ":IRReader", 4767 ":MC", 4768 ":Passes", 4769 ":Support", 4770 ":Target", 4771 ":TargetParser", 4772 ":TransformUtils", 4773 ":config", 4774 ], 4775) 4776 4777cc_binary( 4778 name = "llvm-rtdyld", 4779 srcs = glob([ 4780 "tools/llvm-rtdyld/*.cpp", 4781 ]), 4782 copts = llvm_copts, 4783 stamp = 0, 4784 deps = [ 4785 ":AllTargetsCodeGens", 4786 ":AllTargetsDisassemblers", 4787 ":DebugInfo", 4788 ":DebugInfoDWARF", 4789 ":ExecutionEngine", 4790 ":MC", 4791 ":MCDisassembler", 4792 ":Object", 4793 ":Support", 4794 ], 4795) 4796 4797gentbl( 4798 name = "SizeOptsTableGen", 4799 strip_include_prefix = "tools/llvm-size", 4800 tbl_outs = [( 4801 "-gen-opt-parser-defs", 4802 "tools/llvm-size/Opts.inc", 4803 )], 4804 tblgen = ":llvm-tblgen", 4805 td_file = "tools/llvm-size/Opts.td", 4806 td_srcs = ["include/llvm/Option/OptParser.td"], 4807) 4808 4809cc_library( 4810 name = "llvm-size-lib", 4811 srcs = glob(["tools/llvm-size/*.cpp"]), 4812 copts = llvm_copts, 4813 deps = [ 4814 ":Object", 4815 ":Option", 4816 ":SizeOptsTableGen", 4817 ":Support", 4818 ], 4819) 4820 4821llvm_driver_cc_binary( 4822 name = "llvm-size", 4823 stamp = 0, 4824 deps = [":llvm-size-lib"], 4825) 4826 4827cc_binary( 4828 name = "llvm-split", 4829 srcs = glob([ 4830 "tools/llvm-split/*.cpp", 4831 ]), 4832 copts = llvm_copts, 4833 stamp = 0, 4834 deps = [ 4835 ":AllTargetsAsmParsers", 4836 ":AllTargetsCodeGens", 4837 ":BitWriter", 4838 ":Core", 4839 ":IRPrinter", 4840 ":IRReader", 4841 ":MC", 4842 ":Support", 4843 ":Target", 4844 ":TargetParser", 4845 ":TransformUtils", 4846 ], 4847) 4848 4849gentbl( 4850 name = "StringsOptsTableGen", 4851 strip_include_prefix = "tools/llvm-strings", 4852 tbl_outs = [( 4853 "-gen-opt-parser-defs", 4854 "tools/llvm-strings/Opts.inc", 4855 )], 4856 tblgen = ":llvm-tblgen", 4857 td_file = "tools/llvm-strings/Opts.td", 4858 td_srcs = ["include/llvm/Option/OptParser.td"], 4859) 4860 4861cc_binary( 4862 name = "llvm-strings", 4863 srcs = glob([ 4864 "tools/llvm-strings/*.cpp", 4865 ]), 4866 copts = llvm_copts, 4867 stamp = 0, 4868 deps = [ 4869 ":Object", 4870 ":Option", 4871 ":StringsOptsTableGen", 4872 ":Support", 4873 ], 4874) 4875 4876gentbl( 4877 name = "SymbolizerOptsTableGen", 4878 strip_include_prefix = "tools/llvm-symbolizer", 4879 tbl_outs = [( 4880 "-gen-opt-parser-defs", 4881 "tools/llvm-symbolizer/Opts.inc", 4882 )], 4883 tblgen = ":llvm-tblgen", 4884 td_file = "tools/llvm-symbolizer/Opts.td", 4885 td_srcs = ["include/llvm/Option/OptParser.td"], 4886) 4887 4888cc_library( 4889 name = "llvm-symbolizer-lib", 4890 srcs = glob(["tools/llvm-symbolizer/*.cpp"]), 4891 copts = llvm_copts, 4892 deps = [ 4893 ":DebugInfoDWARF", 4894 ":DebugInfoPDB", 4895 ":Debuginfod", 4896 ":Object", 4897 ":Option", 4898 ":Support", 4899 ":Symbolize", 4900 ":SymbolizerOptsTableGen", 4901 ":config", 4902 ], 4903) 4904 4905llvm_driver_cc_binary( 4906 name = "llvm-symbolizer", 4907 stamp = 0, 4908 deps = [":llvm-symbolizer-lib"], 4909) 4910 4911binary_alias( 4912 name = "llvm-addr2line", 4913 binary = ":llvm-symbolizer", 4914) 4915 4916cc_binary( 4917 name = "llvm-undname", 4918 srcs = glob([ 4919 "tools/llvm-undname/*.cpp", 4920 ]), 4921 copts = llvm_copts, 4922 stamp = 0, 4923 deps = [ 4924 ":Demangle", 4925 ":Support", 4926 ], 4927) 4928 4929cc_binary( 4930 name = "llvm-xray", 4931 srcs = glob([ 4932 "tools/llvm-xray/*.cpp", 4933 "tools/llvm-xray/*.h", 4934 ]), 4935 copts = llvm_copts, 4936 stamp = 0, 4937 deps = [ 4938 ":DebugInfoDWARF", 4939 ":Object", 4940 ":Support", 4941 ":Symbolize", 4942 ":XRay", 4943 ], 4944) 4945 4946cc_library( 4947 name = "opt-driver", 4948 srcs = glob([ 4949 "tools/opt/*.cpp", 4950 "tools/opt/*.h", 4951 ]), 4952 copts = llvm_copts, 4953 linkopts = select({ 4954 "@platforms//os:windows": [], 4955 "@platforms//os:macos": [], 4956 "//conditions:default": ["-Wl,--export-dynamic"], 4957 }), 4958 deps = [ 4959 ":AllTargetsAsmParsers", 4960 ":AllTargetsCodeGens", 4961 ":Analysis", 4962 ":AsmParser", 4963 ":BitReader", 4964 ":BitWriter", 4965 ":CodeGen", 4966 ":Core", 4967 ":IPO", 4968 ":IRPrinter", 4969 ":IRReader", 4970 ":Instrumentation", 4971 ":MC", 4972 ":Passes", 4973 ":Remarks", 4974 ":Scalar", 4975 ":Support", 4976 ":Target", 4977 ":TargetParser", 4978 ":TransformUtils", 4979 ":common_transforms", 4980 ":config", 4981 ], 4982) 4983 4984cc_binary( 4985 name = "opt", 4986 stamp = 0, 4987 deps = [":opt-driver"], 4988) 4989 4990gentbl( 4991 name = "SancovOptsTableGen", 4992 strip_include_prefix = "tools/sancov", 4993 tbl_outs = [( 4994 "-gen-opt-parser-defs", 4995 "tools/sancov/Opts.inc", 4996 )], 4997 tblgen = ":llvm-tblgen", 4998 td_file = "tools/sancov/Opts.td", 4999 td_srcs = ["include/llvm/Option/OptParser.td"], 5000) 5001 5002cc_library( 5003 name = "sancov-lib", 5004 srcs = glob(["tools/sancov/*.cpp"]), 5005 copts = llvm_copts, 5006 deps = [ 5007 ":AllTargetsCodeGens", 5008 ":AllTargetsDisassemblers", 5009 ":DebugInfoDWARF", 5010 ":DebugInfoPDB", 5011 ":MC", 5012 ":MCDisassembler", 5013 ":Object", 5014 ":Option", 5015 ":SancovOptsTableGen", 5016 ":Support", 5017 ":Symbolize", 5018 ], 5019) 5020 5021llvm_driver_cc_binary( 5022 name = "sancov", 5023 stamp = 0, 5024 deps = [":sancov-lib"], 5025) 5026 5027cc_binary( 5028 name = "sanstats", 5029 srcs = glob([ 5030 "tools/sanstats/*.cpp", 5031 ]), 5032 copts = llvm_copts, 5033 stamp = 0, 5034 deps = [ 5035 ":Support", 5036 ":Symbolize", 5037 ":TransformUtils", 5038 ], 5039) 5040 5041cc_binary( 5042 name = "split-file", 5043 srcs = glob([ 5044 "utils/split-file/*.cpp", 5045 ]), 5046 copts = llvm_copts, 5047 stamp = 0, 5048 deps = [ 5049 ":Support", 5050 ], 5051) 5052 5053################################################################################ 5054# Begin testonly libraries 5055 5056cc_library( 5057 name = "FuzzMutate", 5058 testonly = True, 5059 srcs = glob(["lib/FuzzMutate/*.cpp"]), 5060 hdrs = glob(["include/llvm/FuzzMutate/*.h"]), 5061 copts = llvm_copts, 5062 includes = ["include"], 5063 deps = [ 5064 ":Analysis", 5065 ":BitReader", 5066 ":BitWriter", 5067 ":Core", 5068 ":Scalar", 5069 ":Support", 5070 ":TargetParser", 5071 ":TransformUtils", 5072 ], 5073) 5074 5075cc_library( 5076 name = "Diff", 5077 testonly = True, 5078 srcs = glob(["tools/llvm-diff/lib/*.cpp"]), 5079 hdrs = glob(["tools/llvm-diff/lib/*.h"]), 5080 deps = [ 5081 ":Core", 5082 ":Support", 5083 ], 5084) 5085 5086py_binary( 5087 name = "lit", 5088 testonly = True, 5089 srcs = ["utils/lit/lit.py"] + glob(["utils/lit/lit/**/*.py"]), 5090 imports = ["utils/lit"], 5091) 5092 5093py_binary( 5094 name = "extract_ir", 5095 srcs = [ 5096 "utils/mlgo-utils/mlgo/__init__.py", 5097 "utils/mlgo-utils/mlgo/corpus/extract_ir.py", 5098 "utils/mlgo-utils/mlgo/corpus/extract_ir_lib.py", 5099 ], 5100 imports = ["utils/mlgo-utils"], 5101) 5102 5103py_binary( 5104 name = "combine_training_corpus", 5105 srcs = [ 5106 "utils/mlgo-utils/mlgo/__init__.py", 5107 "utils/mlgo-utils/mlgo/corpus/combine_training_corpus.py", 5108 "utils/mlgo-utils/mlgo/corpus/combine_training_corpus_lib.py", 5109 ], 5110 imports = ["utils/mlgo-utils"], 5111) 5112 5113py_binary( 5114 name = "make_corpus", 5115 srcs = [ 5116 "utils/mlgo-utils/mlgo/__init__.py", 5117 "utils/mlgo-utils/mlgo/corpus/make_corpus.py", 5118 "utils/mlgo-utils/mlgo/corpus/make_corpus_lib.py", 5119 ], 5120 imports = ["utils/mlgo-utils"], 5121) 5122 5123cc_library( 5124 name = "TestingADT", 5125 testonly = True, 5126 hdrs = glob([ 5127 "include/llvm/Testing/ADT/*.h", 5128 ]), 5129 copts = llvm_copts, 5130 deps = [ 5131 ":Support", 5132 "//third-party/unittest:gmock", 5133 ], 5134) 5135 5136cc_library( 5137 name = "TestingSupport", 5138 testonly = True, 5139 srcs = glob([ 5140 "lib/Testing/Support/*.cpp", 5141 ]), 5142 hdrs = glob(["include/llvm/Testing/Support/*.h"]), 5143 copts = llvm_copts, 5144 deps = [ 5145 ":Support", 5146 ":config", 5147 "//third-party/unittest:gmock", 5148 "//third-party/unittest:gtest", 5149 ], 5150) 5151 5152cc_library( 5153 name = "TestingAnnotations", 5154 testonly = True, 5155 srcs = ["lib/Testing/Annotations/Annotations.cpp"], 5156 hdrs = ["include/llvm/Testing/Annotations/Annotations.h"], 5157 copts = llvm_copts, 5158 deps = [":Support"], 5159) 5160 5161################################################################################ 5162# Begin testonly binary utilities 5163 5164cc_binary( 5165 name = "FileCheck", 5166 testonly = True, 5167 srcs = glob([ 5168 "utils/FileCheck/*.cpp", 5169 ]), 5170 copts = llvm_copts, 5171 stamp = 0, 5172 deps = [ 5173 ":FileCheckLib", 5174 ":Support", 5175 ], 5176) 5177 5178cc_binary( 5179 name = "bugpoint", 5180 srcs = glob([ 5181 "tools/bugpoint/*.cpp", 5182 "tools/bugpoint/*.h", 5183 ]), 5184 copts = llvm_copts, 5185 stamp = 0, 5186 deps = [ 5187 ":AllTargetsAsmParsers", 5188 ":AllTargetsCodeGens", 5189 ":Analysis", 5190 ":AsmParser", 5191 ":BitReader", 5192 ":BitWriter", 5193 ":CodeGen", 5194 ":Core", 5195 ":IPO", 5196 ":IRPrinter", 5197 ":IRReader", 5198 ":Linker", 5199 ":Passes", 5200 ":Scalar", 5201 ":Support", 5202 ":TargetParser", 5203 ":TransformUtils", 5204 ":common_transforms", 5205 ":config", 5206 ], 5207) 5208 5209cc_binary( 5210 name = "count", 5211 testonly = True, 5212 srcs = glob([ 5213 "utils/count/*.c", 5214 ]), 5215 stamp = 0, 5216 deps = [":Support"], 5217) 5218 5219cc_binary( 5220 name = "lli-child-target", 5221 testonly = True, 5222 srcs = glob([ 5223 "tools/lli/ChildTarget/*.cpp", 5224 ]), 5225 copts = llvm_copts, 5226 # The tests load code into this binary that expect to see symbols 5227 # from libstdc++ such as __cxa_begin_catch and _ZTIi. The latter 5228 # isn't even used in the main binary, so we also need to force it 5229 # to be included. 5230 linkopts = select({ 5231 "@platforms//os:windows": [], 5232 "@platforms//os:macos": [], 5233 "//conditions:default": [ 5234 "-rdynamic", 5235 "-u_ZTIi", 5236 ], 5237 }), 5238 stamp = 0, 5239 deps = [ 5240 ":OrcJIT", 5241 ":OrcTargetProcess", 5242 ":Support", 5243 ":attributes_gen", 5244 ":config", 5245 ":intrinsic_enums_gen", 5246 ], 5247) 5248 5249cc_binary( 5250 name = "llvm-c-test", 5251 testonly = True, 5252 srcs = glob([ 5253 "tools/llvm-c-test/*.c", 5254 "tools/llvm-c-test/*.cpp", 5255 "tools/llvm-c-test/*.h", 5256 ]), 5257 stamp = 0, 5258 deps = [ 5259 ":AllTargetsAsmParsers", 5260 ":AllTargetsCodeGens", 5261 ":AllTargetsDisassemblers", 5262 ":Analysis", 5263 ":BitReader", 5264 ":BitWriter", 5265 ":Core", 5266 ":ExecutionEngine", 5267 ":IPO", 5268 ":IRReader", 5269 ":InstCombine", 5270 ":LTO", 5271 ":Linker", 5272 ":MCDisassembler", 5273 ":Object", 5274 ":OrcJIT", 5275 ":Passes", 5276 ":Remarks", 5277 ":Scalar", 5278 ":Support", 5279 ":Target", 5280 ":TransformUtils", 5281 ":Vectorize", 5282 ], 5283) 5284 5285cc_binary( 5286 name = "llvm-diff", 5287 testonly = True, 5288 srcs = glob([ 5289 "tools/llvm-diff/*.cpp", 5290 ]), 5291 copts = llvm_copts, 5292 stamp = 0, 5293 deps = [ 5294 ":Core", 5295 ":Diff", 5296 ":IRPrinter", 5297 ":IRReader", 5298 ":Support", 5299 ], 5300) 5301 5302cc_binary( 5303 name = "llvm-isel-fuzzer", 5304 testonly = True, 5305 srcs = glob([ 5306 "tools/llvm-isel-fuzzer/*.cpp", 5307 ]), 5308 copts = llvm_copts, 5309 stamp = 0, 5310 deps = [ 5311 ":AllTargetsAsmParsers", 5312 ":AllTargetsCodeGens", 5313 ":Analysis", 5314 ":BitReader", 5315 ":BitWriter", 5316 ":CodeGen", 5317 ":Core", 5318 ":FuzzMutate", 5319 ":IRPrinter", 5320 ":IRReader", 5321 ":MC", 5322 ":Support", 5323 ":Target", 5324 ], 5325) 5326 5327# This is really a Python script, but call it sh_binary to ignore the hyphen in 5328# the path, which py_binary does not allow. 5329# Also, note: llvm-locstats expects llvm-dwarfdump to be in the same directory 5330# when executed. 5331sh_binary( 5332 name = "llvm-locstats", 5333 testonly = True, 5334 srcs = glob([ 5335 "utils/llvm-locstats/*.py", 5336 ]), 5337 # llvm-locstats is a thin wrapper around llvm-dwarfdump. 5338 data = [":llvm-dwarfdump"], 5339) 5340 5341sh_binary( 5342 name = "llvm-original-di-preservation", 5343 testonly = True, 5344 srcs = ["utils/llvm-original-di-preservation.py"], 5345) 5346 5347cc_binary( 5348 name = "not", 5349 testonly = True, 5350 srcs = glob([ 5351 "utils/not/*.cpp", 5352 ]), 5353 copts = llvm_copts, 5354 stamp = 0, 5355 deps = [":Support"], 5356) 5357 5358cc_binary( 5359 name = "llvm-opt-fuzzer", 5360 testonly = True, 5361 srcs = glob([ 5362 "tools/llvm-opt-fuzzer/*.cpp", 5363 ]), 5364 copts = llvm_copts, 5365 stamp = 0, 5366 deps = [ 5367 ":AllTargetsCodeGens", 5368 ":Analysis", 5369 ":BitReader", 5370 ":BitWriter", 5371 ":CodeGen", 5372 ":Core", 5373 ":Coroutines", 5374 ":FuzzMutate", 5375 ":MC", 5376 ":Passes", 5377 ":Support", 5378 ":Target", 5379 ], 5380) 5381 5382gentbl( 5383 name = "ReadTAPIOptsTableGen", 5384 strip_include_prefix = "tools/llvm-readtapi", 5385 tbl_outs = [( 5386 "-gen-opt-parser-defs", 5387 "tools/llvm-readtapi/TapiOpts.inc", 5388 )], 5389 tblgen = ":llvm-tblgen", 5390 td_file = "tools/llvm-readtapi/TapiOpts.td", 5391 td_srcs = ["include/llvm/Option/OptParser.td"], 5392) 5393 5394cc_binary( 5395 name = "llvm-readtapi", 5396 testonly = True, 5397 srcs = glob([ 5398 "tools/llvm-readtapi/*.cpp", 5399 "tools/llvm-readtapi/*.h", 5400 ]), 5401 copts = llvm_copts, 5402 stamp = 0, 5403 deps = [ 5404 ":BinaryFormat", 5405 ":Object", 5406 ":Option", 5407 ":ReadTAPIOptsTableGen", 5408 ":Support", 5409 ":TextAPI", 5410 ":TextAPIBinaryReader", 5411 ], 5412) 5413 5414gentbl( 5415 name = "TLICheckerOptsTableGen", 5416 strip_include_prefix = "tools/llvm-tli-checker", 5417 tbl_outs = [( 5418 "-gen-opt-parser-defs", 5419 "tools/llvm-tli-checker/Opts.inc", 5420 )], 5421 tblgen = ":llvm-tblgen", 5422 td_file = "tools/llvm-tli-checker/Opts.td", 5423 td_srcs = ["include/llvm/Option/OptParser.td"], 5424) 5425 5426cc_binary( 5427 name = "llvm-tli-checker", 5428 testonly = True, 5429 srcs = glob([ 5430 "tools/llvm-tli-checker/*.cpp", 5431 ]), 5432 copts = llvm_copts, 5433 stamp = 0, 5434 deps = [ 5435 ":Analysis", 5436 ":BinaryFormat", 5437 ":BitReader", 5438 ":BitstreamReader", 5439 ":Core", 5440 ":Demangle", 5441 ":MC", 5442 ":MCParser", 5443 ":Object", 5444 ":Option", 5445 ":Remarks", 5446 ":Support", 5447 ":TLICheckerOptsTableGen", 5448 ":TargetParser", 5449 ":TextAPI", 5450 ":config", 5451 ], 5452) 5453 5454cc_binary( 5455 name = "obj2yaml", 5456 testonly = True, 5457 srcs = glob([ 5458 "tools/obj2yaml/*.cpp", 5459 "tools/obj2yaml/*.h", 5460 ]), 5461 copts = llvm_copts, 5462 stamp = 0, 5463 deps = [ 5464 ":BinaryFormat", 5465 ":DebugInfoCodeView", 5466 ":DebugInfoDWARF", 5467 ":Object", 5468 ":ObjectYAML", 5469 ":Support", 5470 ], 5471) 5472 5473cc_binary( 5474 name = "verify-uselistorder", 5475 srcs = glob([ 5476 "tools/verify-uselistorder/*.cpp", 5477 ]), 5478 copts = llvm_copts, 5479 stamp = 0, 5480 deps = [ 5481 ":AsmParser", 5482 ":BitReader", 5483 ":BitWriter", 5484 ":Core", 5485 ":IRPrinter", 5486 ":IRReader", 5487 ":Support", 5488 ], 5489) 5490 5491cc_binary( 5492 name = "yaml2obj", 5493 testonly = True, 5494 srcs = glob([ 5495 "tools/yaml2obj/*.cpp", 5496 ]), 5497 copts = llvm_copts, 5498 stamp = 0, 5499 deps = [ 5500 ":BinaryFormat", 5501 ":DebugInfoCodeView", 5502 ":MC", 5503 ":Object", 5504 ":ObjectYAML", 5505 ":Support", 5506 ], 5507) 5508 5509cc_binary( 5510 name = "yaml-bench", 5511 testonly = True, 5512 srcs = glob([ 5513 "utils/yaml-bench/*.cpp", 5514 ]), 5515 copts = llvm_copts, 5516 stamp = 0, 5517 deps = [ 5518 ":Support", 5519 ], 5520) 5521