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("@rules_python//python:defs.bzl", "py_binary") 6load( 7 "//:vars.bzl", 8 "LLVM_VERSION_MAJOR", 9 "LLVM_VERSION_MINOR", 10 "LLVM_VERSION_PATCH", 11 "PACKAGE_VERSION", 12) 13load("//:workspace_root.bzl", "workspace_root") 14load("//llvm:binary_alias.bzl", "binary_alias") 15load("//llvm:cc_plugin_library.bzl", "cc_plugin_library") 16load("//llvm:driver.bzl", "llvm_driver_cc_binary") 17load("//llvm:tblgen.bzl", "gentbl") 18 19package( 20 default_visibility = ["//visibility:public"], 21 features = ["layering_check"], 22) 23 24licenses(["notice"]) 25 26cc_binary( 27 name = "clang-tblgen", 28 srcs = glob([ 29 "utils/TableGen/*.cpp", 30 "utils/TableGen/*.h", 31 ]), 32 copts = [ 33 "$(STACK_FRAME_UNLIMITED)", 34 ], 35 stamp = 0, 36 deps = [ 37 ":support", 38 "//llvm:Support", 39 "//llvm:TableGen", 40 "//llvm:config", 41 ], 42) 43 44gentbl( 45 name = "diagnostic_defs_gen", 46 tbl_outs = [out for c in [ 47 "AST", 48 "Analysis", 49 "Comment", 50 "Common", 51 "CrossTU", 52 "Driver", 53 "Frontend", 54 "InstallAPI", 55 "Lex", 56 "Parse", 57 "Refactoring", 58 "Sema", 59 "Serialization", 60 ] for out in [ 61 ( 62 "-gen-clang-diags-defs -clang-component=%s" % c, 63 "include/clang/Basic/Diagnostic%sKinds.inc" % c, 64 ), 65 ( 66 "-gen-clang-diags-enums -clang-component=%s" % c, 67 "include/clang/Basic/Diagnostic%sEnums.inc" % c, 68 ), 69 ]] + [ 70 ( 71 "-gen-clang-diag-groups", 72 "include/clang/Basic/DiagnosticGroups.inc", 73 ), 74 ( 75 "-gen-clang-diags-index-name", 76 "include/clang/Basic/DiagnosticIndexName.inc", 77 ), 78 ], 79 tblgen = ":clang-tblgen", 80 td_file = "include/clang/Basic/Diagnostic.td", 81 td_srcs = glob(["include/clang/Basic/*.td"]), 82) 83 84gentbl( 85 name = "basic_arm_neon_inc_gen", 86 tbl_outs = [( 87 "-gen-arm-neon-sema", 88 "include/clang/Basic/arm_neon.inc", 89 )], 90 tblgen = ":clang-tblgen", 91 td_file = "include/clang/Basic/arm_neon.td", 92 td_srcs = [ 93 "include/clang/Basic/arm_immcheck_incl.td", 94 "include/clang/Basic/arm_neon.td", 95 "include/clang/Basic/arm_neon_incl.td", 96 ], 97) 98 99gentbl( 100 name = "basic_arm_fp16_inc_gen", 101 tbl_outs = [( 102 "-gen-arm-neon-sema", 103 "include/clang/Basic/arm_fp16.inc", 104 )], 105 tblgen = ":clang-tblgen", 106 td_file = "include/clang/Basic/arm_fp16.td", 107 td_srcs = [ 108 "include/clang/Basic/arm_fp16.td", 109 "include/clang/Basic/arm_immcheck_incl.td", 110 "include/clang/Basic/arm_neon_incl.td", 111 ], 112) 113 114gentbl( 115 name = "basic_arm_mve_aliases_gen", 116 tbl_outs = [( 117 "-gen-arm-mve-builtin-aliases", 118 "include/clang/Basic/arm_mve_builtin_aliases.inc", 119 )], 120 tblgen = ":clang-tblgen", 121 td_file = "include/clang/Basic/arm_mve.td", 122 td_srcs = [ 123 "include/clang/Basic/arm_immcheck_incl.td", 124 "include/clang/Basic/arm_mve.td", 125 "include/clang/Basic/arm_mve_defs.td", 126 ], 127) 128 129gentbl( 130 name = "basic_arm_sve_builtins_gen", 131 tbl_outs = [( 132 "-gen-arm-sve-builtins", 133 "include/clang/Basic/arm_sve_builtins.inc", 134 )], 135 tblgen = ":clang-tblgen", 136 td_file = "include/clang/Basic/arm_sve.td", 137 td_srcs = [ 138 "include/clang/Basic/arm_immcheck_incl.td", 139 "include/clang/Basic/arm_sve.td", 140 "include/clang/Basic/arm_sve_sme_incl.td", 141 ], 142) 143 144gentbl( 145 name = "basic_arm_sve_builtin_cg_gen", 146 tbl_outs = [( 147 "-gen-arm-sve-builtin-codegen", 148 "include/clang/Basic/arm_sve_builtin_cg.inc", 149 )], 150 tblgen = ":clang-tblgen", 151 td_file = "include/clang/Basic/arm_sve.td", 152 td_srcs = [ 153 "include/clang/Basic/arm_immcheck_incl.td", 154 "include/clang/Basic/arm_sve.td", 155 "include/clang/Basic/arm_sve_sme_incl.td", 156 ], 157) 158 159gentbl( 160 name = "basic_arm_sve_immcheck_types_gen", 161 tbl_outs = [( 162 "-gen-arm-immcheck-types", 163 "include/clang/Basic/arm_immcheck_types.inc", 164 )], 165 tblgen = ":clang-tblgen", 166 td_file = "include/clang/Basic/arm_sve.td", 167 td_srcs = [ 168 "include/clang/Basic/arm_immcheck_incl.td", 169 "include/clang/Basic/arm_sve.td", 170 "include/clang/Basic/arm_sve_sme_incl.td", 171 ], 172) 173 174gentbl( 175 name = "basic_arm_sve_typeflags_gen", 176 tbl_outs = [( 177 "-gen-arm-sve-typeflags", 178 "include/clang/Basic/arm_sve_typeflags.inc", 179 )], 180 tblgen = ":clang-tblgen", 181 td_file = "include/clang/Basic/arm_sve.td", 182 td_srcs = [ 183 "include/clang/Basic/arm_immcheck_incl.td", 184 "include/clang/Basic/arm_sve.td", 185 "include/clang/Basic/arm_sve_sme_incl.td", 186 ], 187) 188 189gentbl( 190 name = "basic_arm_sve_sema_rangechecks_gen", 191 tbl_outs = [( 192 "-gen-arm-sve-sema-rangechecks", 193 "include/clang/Basic/arm_sve_sema_rangechecks.inc", 194 )], 195 tblgen = ":clang-tblgen", 196 td_file = "include/clang/Basic/arm_sve.td", 197 td_srcs = [ 198 "include/clang/Basic/arm_immcheck_incl.td", 199 "include/clang/Basic/arm_sve.td", 200 "include/clang/Basic/arm_sve_sme_incl.td", 201 ], 202) 203 204gentbl( 205 name = "basic_arm_sve_streaming_attrs_gen", 206 tbl_outs = [( 207 "-gen-arm-sve-streaming-attrs", 208 "include/clang/Basic/arm_sve_streaming_attrs.inc", 209 )], 210 tblgen = ":clang-tblgen", 211 td_file = "include/clang/Basic/arm_sve.td", 212 td_srcs = [ 213 "include/clang/Basic/arm_immcheck_incl.td", 214 "include/clang/Basic/arm_sve.td", 215 "include/clang/Basic/arm_sve_sme_incl.td", 216 ], 217) 218 219gentbl( 220 name = "basic_arm_sme_builtins_gen", 221 tbl_outs = [( 222 "-gen-arm-sme-builtins", 223 "include/clang/Basic/arm_sme_builtins.inc", 224 )], 225 tblgen = ":clang-tblgen", 226 td_file = "include/clang/Basic/arm_sme.td", 227 td_srcs = [ 228 "include/clang/Basic/arm_immcheck_incl.td", 229 "include/clang/Basic/arm_sme.td", 230 "include/clang/Basic/arm_sve_sme_incl.td", 231 ], 232) 233 234gentbl( 235 name = "basic_arm_sme_builtin_cg_gen", 236 tbl_outs = [( 237 "-gen-arm-sme-builtin-codegen", 238 "include/clang/Basic/arm_sme_builtin_cg.inc", 239 )], 240 tblgen = ":clang-tblgen", 241 td_file = "include/clang/Basic/arm_sme.td", 242 td_srcs = [ 243 "include/clang/Basic/arm_sme.td", 244 "include/clang/Basic/arm_sve_sme_incl.td", 245 "include/clang/Basic/arm_immcheck_incl.td", 246 ], 247) 248 249gentbl( 250 name = "basic_arm_sme_builtins_za_state_gen", 251 tbl_outs = [( 252 "-gen-arm-sme-builtin-za-state", 253 "include/clang/Basic/arm_sme_builtins_za_state.inc", 254 )], 255 tblgen = ":clang-tblgen", 256 td_file = "include/clang/Basic/arm_sme.td", 257 td_srcs = [ 258 "include/clang/Basic/arm_immcheck_incl.td", 259 "include/clang/Basic/arm_sme.td", 260 "include/clang/Basic/arm_sve_sme_incl.td", 261 ], 262) 263 264gentbl( 265 name = "basic_arm_sme_sema_rangechecks_gen", 266 tbl_outs = [( 267 "-gen-arm-sme-sema-rangechecks", 268 "include/clang/Basic/arm_sme_sema_rangechecks.inc", 269 )], 270 tblgen = ":clang-tblgen", 271 td_file = "include/clang/Basic/arm_sme.td", 272 td_srcs = [ 273 "include/clang/Basic/arm_immcheck_incl.td", 274 "include/clang/Basic/arm_sme.td", 275 "include/clang/Basic/arm_sve_sme_incl.td", 276 ], 277) 278 279gentbl( 280 name = "basic_arm_sme_streaming_attrs_gen", 281 tbl_outs = [( 282 "-gen-arm-sme-streaming-attrs", 283 "include/clang/Basic/arm_sme_streaming_attrs.inc", 284 )], 285 tblgen = ":clang-tblgen", 286 td_file = "include/clang/Basic/arm_sme.td", 287 td_srcs = [ 288 "include/clang/Basic/arm_immcheck_incl.td", 289 "include/clang/Basic/arm_sme.td", 290 "include/clang/Basic/arm_sve_sme_incl.td", 291 ], 292) 293 294gentbl( 295 name = "basic_arm_mve_cg_gen", 296 tbl_outs = [( 297 "-gen-arm-mve-builtin-codegen", 298 "include/clang/Basic/arm_mve_builtin_cg.inc", 299 )], 300 tblgen = ":clang-tblgen", 301 td_file = "include/clang/Basic/arm_mve.td", 302 td_srcs = [ 303 "include/clang/Basic/arm_mve.td", 304 "include/clang/Basic/arm_mve_defs.td", 305 ], 306) 307 308gentbl( 309 name = "basic_arm_mve_inc_gen", 310 tbl_outs = [( 311 "-gen-arm-mve-builtin-def", 312 "include/clang/Basic/arm_mve_builtins.inc", 313 )], 314 tblgen = ":clang-tblgen", 315 td_file = "include/clang/Basic/arm_mve.td", 316 td_srcs = [ 317 "include/clang/Basic/arm_mve.td", 318 "include/clang/Basic/arm_mve_defs.td", 319 ], 320) 321 322gentbl( 323 name = "basic_arm_mve_sema_gen", 324 tbl_outs = [( 325 "-gen-arm-mve-builtin-sema", 326 "include/clang/Basic/arm_mve_builtin_sema.inc", 327 )], 328 tblgen = ":clang-tblgen", 329 td_file = "include/clang/Basic/arm_mve.td", 330 td_srcs = [ 331 "include/clang/Basic/arm_mve.td", 332 "include/clang/Basic/arm_mve_defs.td", 333 ], 334) 335 336gentbl( 337 name = "basic_builtins_bpf_gen", 338 tbl_outs = [( 339 "-gen-clang-builtins", 340 "include/clang/Basic/BuiltinsBPF.inc", 341 )], 342 tblgen = ":clang-tblgen", 343 td_file = "include/clang/Basic/BuiltinsBPF.td", 344 td_srcs = [ 345 "include/clang/Basic/BuiltinsBPF.td", 346 "include/clang/Basic/BuiltinsBase.td", 347 ], 348) 349 350gentbl( 351 name = "basic_builtins_hexagon_gen", 352 tbl_outs = [( 353 "-gen-clang-builtins", 354 "include/clang/Basic/BuiltinsHexagon.inc", 355 )], 356 tblgen = ":clang-tblgen", 357 td_file = "include/clang/Basic/BuiltinsHexagon.td", 358 td_srcs = [ 359 "include/clang/Basic/BuiltinsHexagon.td", 360 "include/clang/Basic/BuiltinsBase.td", 361 ], 362) 363 364gentbl( 365 name = "basic_builtins_nvptx_gen", 366 tbl_outs = [( 367 "-gen-clang-builtins", 368 "include/clang/Basic/BuiltinsNVPTX.inc", 369 )], 370 tblgen = ":clang-tblgen", 371 td_file = "include/clang/Basic/BuiltinsNVPTX.td", 372 td_srcs = [ 373 "include/clang/Basic/BuiltinsNVPTX.td", 374 "include/clang/Basic/BuiltinsBase.td", 375 ], 376) 377 378gentbl( 379 name = "basic_builtins_spirv_gen", 380 tbl_outs = [( 381 "-gen-clang-builtins", 382 "include/clang/Basic/BuiltinsSPIRV.inc", 383 )], 384 tblgen = ":clang-tblgen", 385 td_file = "include/clang/Basic/BuiltinsSPIRV.td", 386 td_srcs = [ 387 "include/clang/Basic/Builtins.td", 388 "include/clang/Basic/BuiltinsBase.td", 389 "include/clang/Basic/BuiltinsSPIRV.td", 390 ], 391) 392 393gentbl( 394 name = "basic_builtins_riscv_gen", 395 tbl_outs = [( 396 "-gen-clang-builtins", 397 "include/clang/Basic/BuiltinsRISCV.inc", 398 )], 399 tblgen = ":clang-tblgen", 400 td_file = "include/clang/Basic/BuiltinsRISCV.td", 401 td_srcs = [ 402 "include/clang/Basic/BuiltinsRISCV.td", 403 "include/clang/Basic/BuiltinsRISCVXCV.td", 404 "include/clang/Basic/BuiltinsBase.td", 405 ], 406) 407 408gentbl( 409 name = "basic_builtins_x86_gen", 410 tbl_outs = [( 411 "-gen-clang-builtins", 412 "include/clang/Basic/BuiltinsX86.inc", 413 )], 414 tblgen = ":clang-tblgen", 415 td_file = "include/clang/Basic/BuiltinsX86.td", 416 td_srcs = [ 417 "include/clang/Basic/BuiltinsX86.td", 418 "include/clang/Basic/BuiltinsX86Base.td", 419 "include/clang/Basic/BuiltinsBase.td", 420 ], 421) 422 423gentbl( 424 name = "basic_builtins_x86_64_gen", 425 tbl_outs = [( 426 "-gen-clang-builtins", 427 "include/clang/Basic/BuiltinsX86_64.inc", 428 )], 429 tblgen = ":clang-tblgen", 430 td_file = "include/clang/Basic/BuiltinsX86_64.td", 431 td_srcs = [ 432 "include/clang/Basic/BuiltinsX86_64.td", 433 "include/clang/Basic/BuiltinsX86Base.td", 434 "include/clang/Basic/BuiltinsBase.td", 435 ], 436) 437 438gentbl( 439 name = "basic_builtins_gen", 440 tbl_outs = [( 441 "-gen-clang-builtins", 442 "include/clang/Basic/Builtins.inc", 443 )], 444 tblgen = ":clang-tblgen", 445 td_file = "include/clang/Basic/Builtins.td", 446 td_srcs = [ 447 "include/clang/Basic/Builtins.td", 448 "include/clang/Basic/BuiltinsBase.td", 449 ], 450) 451 452gentbl( 453 name = "basic_riscv_vector_builtins_gen", 454 tbl_outs = [( 455 "-gen-riscv-vector-builtins", 456 "include/clang/Basic/riscv_vector_builtins.inc", 457 )], 458 tblgen = ":clang-tblgen", 459 td_file = "include/clang/Basic/riscv_vector.td", 460 td_srcs = [ 461 "include/clang/Basic/riscv_vector.td", 462 "include/clang/Basic/riscv_vector_common.td", 463 ], 464) 465 466gentbl( 467 name = "basic_riscv_vector_builtin_cg_gen", 468 tbl_outs = [( 469 "-gen-riscv-vector-builtin-codegen", 470 "include/clang/Basic/riscv_vector_builtin_cg.inc", 471 )], 472 tblgen = ":clang-tblgen", 473 td_file = "include/clang/Basic/riscv_vector.td", 474 td_srcs = [ 475 "include/clang/Basic/riscv_vector.td", 476 "include/clang/Basic/riscv_vector_common.td", 477 ], 478) 479 480gentbl( 481 name = "basic_riscv_vector_builtin_sema_gen", 482 tbl_outs = [( 483 "-gen-riscv-vector-builtin-sema", 484 "include/clang/Basic/riscv_vector_builtin_sema.inc", 485 )], 486 tblgen = ":clang-tblgen", 487 td_file = "include/clang/Basic/riscv_vector.td", 488 td_srcs = [ 489 "include/clang/Basic/riscv_vector.td", 490 "include/clang/Basic/riscv_vector_common.td", 491 ], 492) 493 494gentbl( 495 name = "basic_riscv_sifive_vector_builtins_gen", 496 tbl_outs = [( 497 "-gen-riscv-sifive-vector-builtins", 498 "include/clang/Basic/riscv_sifive_vector_builtins.inc", 499 )], 500 tblgen = ":clang-tblgen", 501 td_file = "include/clang/Basic/riscv_sifive_vector.td", 502 td_srcs = [ 503 "include/clang/Basic/riscv_sifive_vector.td", 504 "include/clang/Basic/riscv_vector_common.td", 505 ], 506) 507 508gentbl( 509 name = "basic_riscv_sifive_vector_builtin_cg_gen", 510 tbl_outs = [( 511 "-gen-riscv-sifive-vector-builtin-codegen", 512 "include/clang/Basic/riscv_sifive_vector_builtin_cg.inc", 513 )], 514 tblgen = ":clang-tblgen", 515 td_file = "include/clang/Basic/riscv_sifive_vector.td", 516 td_srcs = [ 517 "include/clang/Basic/riscv_sifive_vector.td", 518 "include/clang/Basic/riscv_vector_common.td", 519 ], 520) 521 522gentbl( 523 name = "basic_riscv_sifive_vector_builtin_sema_gen", 524 tbl_outs = [( 525 "-gen-riscv-sifive-vector-builtin-sema", 526 "include/clang/Basic/riscv_sifive_vector_builtin_sema.inc", 527 )], 528 tblgen = ":clang-tblgen", 529 td_file = "include/clang/Basic/riscv_sifive_vector.td", 530 td_srcs = [ 531 "include/clang/Basic/riscv_sifive_vector.td", 532 "include/clang/Basic/riscv_vector_common.td", 533 ], 534) 535 536gentbl( 537 name = "basic_arm_cde_gen", 538 tbl_outs = [( 539 "-gen-arm-cde-builtin-def", 540 "include/clang/Basic/arm_cde_builtins.inc", 541 )], 542 tblgen = ":clang-tblgen", 543 td_file = "include/clang/Basic/arm_cde.td", 544 td_srcs = [ 545 "include/clang/Basic/arm_cde.td", 546 "include/clang/Basic/arm_mve_defs.td", 547 ], 548) 549 550gentbl( 551 name = "basic_arm_cde_aliases_gen", 552 tbl_outs = [( 553 "-gen-arm-cde-builtin-aliases", 554 "include/clang/Basic/arm_cde_builtin_aliases.inc", 555 )], 556 tblgen = ":clang-tblgen", 557 td_file = "include/clang/Basic/arm_cde.td", 558 td_srcs = [ 559 "include/clang/Basic/arm_cde.td", 560 "include/clang/Basic/arm_mve_defs.td", 561 ], 562) 563 564gentbl( 565 name = "basic_arm_cde_cg_gen", 566 tbl_outs = [( 567 "-gen-arm-cde-builtin-codegen", 568 "include/clang/Basic/arm_cde_builtin_cg.inc", 569 )], 570 tblgen = ":clang-tblgen", 571 td_file = "include/clang/Basic/arm_cde.td", 572 td_srcs = [ 573 "include/clang/Basic/arm_cde.td", 574 "include/clang/Basic/arm_mve_defs.td", 575 ], 576) 577 578gentbl( 579 name = "basic_arm_cde_sema_gen", 580 tbl_outs = [( 581 "-gen-arm-cde-builtin-sema", 582 "include/clang/Basic/arm_cde_builtin_sema.inc", 583 )], 584 tblgen = ":clang-tblgen", 585 td_file = "include/clang/Basic/arm_cde.td", 586 td_srcs = [ 587 "include/clang/Basic/arm_cde.td", 588 "include/clang/Basic/arm_mve_defs.td", 589 ], 590) 591 592gentbl( 593 name = "basic_attr_gen", 594 tbl_outs = [ 595 ( 596 "-gen-clang-attr-has-attribute-impl", 597 "include/clang/Basic/AttrHasAttributeImpl.inc", 598 ), 599 ( 600 "-gen-clang-attr-list", 601 "include/clang/Basic/AttrList.inc", 602 ), 603 ( 604 "-gen-clang-attr-parsed-attr-list", 605 "include/clang/Basic/AttrParsedAttrList.inc", 606 ), 607 ( 608 "-gen-clang-attr-subject-match-rule-list", 609 "include/clang/Basic/AttrSubMatchRulesList.inc", 610 ), 611 ( 612 "-gen-clang-regular-keyword-attr-info", 613 "include/clang/Basic/RegularKeywordAttrInfo.inc", 614 ), 615 ( 616 "-gen-cxx11-attribute-info", 617 "include/clang/Basic/CXX11AttributeInfo.inc", 618 ), 619 ], 620 tblgen = ":clang-tblgen", 621 td_file = "include/clang/Basic/Attr.td", 622 td_srcs = [ 623 "include/clang/Basic/ASTNode.td", 624 "include/clang/Basic/Attr.td", 625 "include/clang/Basic/AttrDocs.td", 626 "include/clang/Basic/DeclNodes.td", 627 "include/clang/Basic/StmtNodes.td", 628 ], 629) 630 631gentbl( 632 name = "libsema_openclbuiltins_inc_gen", 633 strip_include_prefix = "lib/Sema", 634 tbl_outs = [( 635 "-gen-clang-opencl-builtins", 636 "lib/Sema/OpenCLBuiltins.inc", 637 )], 638 tblgen = ":clang-tblgen", 639 td_file = "lib/Sema/OpenCLBuiltins.td", 640 td_srcs = [ 641 "lib/Sema/OpenCLBuiltins.td", 642 ], 643) 644 645# Table definition files can be used for documentation: 646filegroup( 647 name = "all_table_defs", 648 srcs = glob(["include/**/*.td"]), 649) 650 651exports_files( 652 glob(["include/**/*.td"]), 653) 654 655genrule( 656 name = "basic_version_gen", 657 outs = ["include/clang/Basic/Version.inc"], 658 cmd = ( 659 "echo '#define CLANG_VERSION {vers}' >> $@\n" + 660 "echo '#define CLANG_VERSION_MAJOR {major}' >> $@\n" + 661 "echo '#define CLANG_VERSION_MAJOR_STRING \"{major}\"' >> $@\n" + 662 "echo '#define CLANG_VERSION_MINOR {minor}' >> $@\n" + 663 "echo '#define CLANG_VERSION_PATCHLEVEL {patch}' >> $@\n" + 664 "echo '#define MAX_CLANG_ABI_COMPAT_VERSION {major}' >> $@\n" + 665 "echo '#define CLANG_VERSION_STRING \"{vers}\"' >> $@\n" 666 ).format( 667 major = LLVM_VERSION_MAJOR, 668 minor = LLVM_VERSION_MINOR, 669 patch = LLVM_VERSION_PATCH, 670 vers = PACKAGE_VERSION, 671 ), 672) 673 674cc_library( 675 name = "config", 676 hdrs = [ 677 "include/clang/Basic/Version.inc", 678 "include/clang/Config/config.h", 679 ], 680 includes = ["include"], 681 deps = [ 682 # We rely on the LLVM config library to provide configuration defines. 683 "//llvm:config", 684 ], 685) 686 687# TODO: This should get replaced with something that actually generates the 688# correct version number. 689genrule( 690 name = "vcs_version_gen", 691 # This should be under lib/Basic, but because of how the include paths 692 # are passed through bazel, it's easier to drop generated files next to 693 # the other includes. 694 outs = ["include/VCSVersion.inc"], 695 cmd = "echo '#undef CLANG_REVISION' > $@", 696) 697 698py_binary( 699 name = "bundle_resources", 700 srcs = [ 701 "utils/bundle_resources.py", 702 ], 703 main = "utils/bundle_resources.py", 704) 705 706cc_library( 707 name = "basic", 708 srcs = [ 709 "include/VCSVersion.inc", 710 "include/clang/Basic/Version.inc", 711 ] + glob([ 712 "lib/Basic/*.cpp", 713 "lib/Basic/*.h", 714 "lib/Basic/Targets/*.cpp", 715 "lib/Basic/Targets/*.h", 716 ]), 717 hdrs = glob([ 718 "include/clang/Basic/*.h", 719 ]), 720 copts = [ 721 "-DHAVE_VCS_VERSION_INC", 722 "$(STACK_FRAME_UNLIMITED)", 723 "-I$(WORKSPACE_ROOT)/clang/lib/Basic", 724 ], 725 includes = ["include"], 726 textual_hdrs = [ 727 # keep sorted 728 "include/clang/Basic/AllDiagnosticKinds.inc", 729 "include/clang/Basic/AttrHasAttributeImpl.inc", 730 "include/clang/Basic/AttrList.inc", 731 "include/clang/Basic/AttrSubMatchRulesList.inc", 732 "include/clang/Basic/DiagnosticASTKinds.inc", 733 "include/clang/Basic/DiagnosticAnalysisKinds.inc", 734 "include/clang/Basic/DiagnosticCommentKinds.inc", 735 "include/clang/Basic/DiagnosticCommonKinds.inc", 736 "include/clang/Basic/DiagnosticCrossTUKinds.inc", 737 "include/clang/Basic/DiagnosticDriverKinds.inc", 738 "include/clang/Basic/DiagnosticFrontendKinds.inc", 739 "include/clang/Basic/DiagnosticGroups.inc", 740 "include/clang/Basic/DiagnosticIndexName.inc", 741 "include/clang/Basic/DiagnosticInstallAPIKinds.inc", 742 "include/clang/Basic/DiagnosticLexKinds.inc", 743 "include/clang/Basic/DiagnosticParseKinds.inc", 744 "include/clang/Basic/DiagnosticRefactoringKinds.inc", 745 "include/clang/Basic/DiagnosticSemaKinds.inc", 746 "include/clang/Basic/DiagnosticSerializationKinds.inc", 747 "include/clang/Basic/arm_fp16.inc", 748 "include/clang/Basic/arm_immcheck_types.inc", 749 "include/clang/Basic/arm_mve_builtin_aliases.inc", 750 "include/clang/Basic/arm_mve_builtin_cg.inc", 751 "include/clang/Basic/arm_mve_builtin_sema.inc", 752 "include/clang/Basic/arm_mve_builtins.inc", 753 "include/clang/Basic/arm_neon.inc", 754 "include/clang/Basic/arm_sme_builtin_cg.inc", 755 "include/clang/Basic/arm_sme_builtins.inc", 756 ] + glob([ 757 "include/clang/Basic/*.def", 758 ]), 759 toolchains = [":workspace_root"], 760 deps = [ 761 ":basic_arm_cde_gen", 762 ":basic_arm_fp16_inc_gen", 763 ":basic_arm_mve_aliases_gen", 764 ":basic_arm_mve_cg_gen", 765 ":basic_arm_mve_inc_gen", 766 ":basic_arm_mve_sema_gen", 767 ":basic_arm_neon_inc_gen", 768 ":basic_arm_sme_builtin_cg_gen", 769 ":basic_arm_sme_builtins_gen", 770 ":basic_arm_sve_builtins_gen", 771 ":basic_arm_sve_typeflags_gen", 772 ":basic_attr_gen", 773 ":basic_builtins_bpf_gen", 774 ":basic_builtins_gen", 775 ":basic_builtins_hexagon_gen", 776 ":basic_builtins_nvptx_gen", 777 ":basic_builtins_riscv_gen", 778 ":basic_builtins_spirv_gen", 779 ":basic_builtins_x86_64_gen", 780 ":basic_builtins_x86_gen", 781 ":basic_riscv_sifive_vector_builtins_gen", 782 ":basic_riscv_vector_builtin_cg_gen", 783 ":basic_riscv_vector_builtins_gen", 784 ":config", 785 ":diagnostic_defs_gen", 786 ":sema_attr_gen", 787 ":support", 788 "//llvm:Core", 789 "//llvm:FrontendDebug", 790 "//llvm:FrontendDriver", 791 "//llvm:FrontendOpenMP", 792 "//llvm:Instrumentation", 793 "//llvm:MC", 794 "//llvm:Support", 795 "//llvm:Target", 796 "//llvm:TargetParser", 797 "//llvm:config", 798 ], 799) 800 801cc_library( 802 name = "lex", 803 srcs = glob([ 804 "lib/Lex/*.cpp", 805 "lib/Lex/*.h", 806 ]), 807 hdrs = glob([ 808 "include/clang/Lex/*.h", 809 ]), 810 includes = ["include"], 811 deps = [ 812 ":basic", 813 ":config", 814 ":support", 815 "//llvm:Support", 816 "//llvm:TargetParser", 817 ], 818) 819 820gentbl( 821 name = "ast_attr_gen", 822 tbl_outs = [ 823 ( 824 "-gen-clang-attr-ast-visitor", 825 "include/clang/AST/AttrVisitor.inc", 826 ), 827 ( 828 "-gen-clang-attr-classes", 829 "include/clang/AST/Attrs.inc", 830 ), 831 ( 832 "-gen-clang-attr-doc-table", 833 "lib/AST/AttrDocTable.inc", 834 ), 835 ( 836 "-gen-clang-attr-text-node-dump", 837 "include/clang/AST/AttrTextNodeDump.inc", 838 ), 839 ( 840 "-gen-clang-attr-node-traverse", 841 "include/clang/AST/AttrNodeTraverse.inc", 842 ), 843 ( 844 "-gen-clang-attr-impl", 845 "include/clang/AST/AttrImpl.inc", 846 ), 847 ], 848 tblgen = ":clang-tblgen", 849 td_file = "include/clang/Basic/Attr.td", 850 td_srcs = [ 851 "include/clang/Basic/Attr.td", 852 "include/clang/Basic/AttrDocs.td", 853 "include/clang/Basic/ASTNode.td", 854 "include/clang/Basic/DeclNodes.td", 855 "include/clang/Basic/StmtNodes.td", 856 ], 857) 858 859gentbl( 860 name = "ast_decl_nodes_gen", 861 tbl_outs = [( 862 "-gen-clang-decl-nodes", 863 "include/clang/AST/DeclNodes.inc", 864 )], 865 tblgen = ":clang-tblgen", 866 td_file = "include/clang/Basic/DeclNodes.td", 867 td_srcs = [ 868 "include/clang/Basic/ASTNode.td", 869 "include/clang/Basic/DeclNodes.td", 870 ], 871) 872 873gentbl( 874 name = "ast_stmt_nodes_gen", 875 tbl_outs = [( 876 "-gen-clang-stmt-nodes", 877 "include/clang/AST/StmtNodes.inc", 878 )], 879 tblgen = ":clang-tblgen", 880 td_file = "include/clang/Basic/StmtNodes.td", 881 td_srcs = [ 882 "include/clang/Basic/ASTNode.td", 883 "include/clang/Basic/StmtNodes.td", 884 ], 885) 886 887gentbl( 888 name = "ast_comment_nodes_gen", 889 tbl_outs = [( 890 "-gen-clang-comment-nodes", 891 "include/clang/AST/CommentNodes.inc", 892 )], 893 tblgen = ":clang-tblgen", 894 td_file = "include/clang/Basic/CommentNodes.td", 895 td_srcs = [ 896 "include/clang/Basic/ASTNode.td", 897 "include/clang/Basic/CommentNodes.td", 898 ], 899) 900 901gentbl( 902 name = "ast_comment_command_info_gen", 903 tbl_outs = [ 904 ( 905 "-gen-clang-comment-command-info", 906 "include/clang/AST/CommentCommandInfo.inc", 907 ), 908 ( 909 "-gen-clang-comment-command-list", 910 "include/clang/AST/CommentCommandList.inc", 911 ), 912 ], 913 tblgen = ":clang-tblgen", 914 td_file = "include/clang/AST/CommentCommands.td", 915 td_srcs = ["include/clang/AST/CommentCommands.td"], 916) 917 918gentbl( 919 name = "ast_comment_html_tags_gen", 920 tbl_outs = [( 921 "-gen-clang-comment-html-tags", 922 "include/clang/AST/CommentHTMLTags.inc", 923 )], 924 tblgen = ":clang-tblgen", 925 td_file = "include/clang/AST/CommentHTMLTags.td", 926 td_srcs = ["include/clang/AST/CommentHTMLTags.td"], 927) 928 929gentbl( 930 name = "ast_comment_html_tags_properties_gen", 931 tbl_outs = [( 932 "-gen-clang-comment-html-tags-properties", 933 "include/clang/AST/CommentHTMLTagsProperties.inc", 934 )], 935 tblgen = ":clang-tblgen", 936 td_file = "include/clang/AST/CommentHTMLTags.td", 937 td_srcs = ["include/clang/AST/CommentHTMLTags.td"], 938) 939 940gentbl( 941 name = "ast_comment_html_named_character_references_gen", 942 tbl_outs = [( 943 "-gen-clang-comment-html-named-character-references", 944 "include/clang/AST/CommentHTMLNamedCharacterReferences.inc", 945 )], 946 tblgen = ":clang-tblgen", 947 td_file = "include/clang/AST/CommentHTMLNamedCharacterReferences.td", 948 td_srcs = ["include/clang/AST/CommentHTMLNamedCharacterReferences.td"], 949) 950 951gentbl( 952 name = "ast_stmt_data_collectors_gen", 953 tbl_outs = [( 954 "-gen-clang-data-collectors", 955 "include/clang/AST/StmtDataCollectors.inc", 956 )], 957 tblgen = ":clang-tblgen", 958 td_file = "include/clang/AST/StmtDataCollectors.td", 959 td_srcs = ["include/clang/AST/StmtDataCollectors.td"], 960) 961 962gentbl( 963 name = "ast_bytecode_opcodes_gen", 964 tbl_outs = [( 965 "-gen-clang-opcodes", 966 "lib/AST/ByteCode/Opcodes.inc", 967 )], 968 tblgen = ":clang-tblgen", 969 td_file = "lib/AST/ByteCode/Opcodes.td", 970 td_srcs = ["lib/AST/ByteCode/Opcodes.td"], 971) 972 973gentbl( 974 name = "ast_properties_base_gen", 975 tbl_outs = [ 976 ( 977 "-gen-clang-basic-reader", 978 "include/clang/AST/AbstractBasicReader.inc", 979 ), 980 ( 981 "-gen-clang-basic-writer", 982 "include/clang/AST/AbstractBasicWriter.inc", 983 ), 984 ], 985 tblgen = ":clang-tblgen", 986 td_file = "include/clang/AST/PropertiesBase.td", 987 td_srcs = ["include/clang/AST/PropertiesBase.td"], 988) 989 990gentbl( 991 name = "ast_type_properties_gen", 992 tbl_outs = [ 993 ( 994 "-gen-clang-type-reader", 995 "include/clang/AST/AbstractTypeReader.inc", 996 ), 997 ( 998 "-gen-clang-type-writer", 999 "include/clang/AST/AbstractTypeWriter.inc", 1000 ), 1001 ], 1002 tblgen = ":clang-tblgen", 1003 td_file = "include/clang/AST/TypeProperties.td", 1004 td_srcs = [ 1005 "include/clang/AST/PropertiesBase.td", 1006 "include/clang/AST/TypeProperties.td", 1007 "include/clang/Basic/ASTNode.td", 1008 "include/clang/Basic/TypeNodes.td", 1009 ], 1010) 1011 1012gentbl( 1013 name = "type_nodes_gen", 1014 tbl_outs = [( 1015 "-gen-clang-type-nodes", 1016 "include/clang/AST/TypeNodes.inc", 1017 )], 1018 tblgen = ":clang-tblgen", 1019 td_file = "include/clang/Basic/TypeNodes.td", 1020 td_srcs = [ 1021 "include/clang/Basic/ASTNode.td", 1022 "include/clang/Basic/TypeNodes.td", 1023 ], 1024) 1025 1026workspace_root(name = "workspace_root") 1027 1028cc_library( 1029 name = "ast", 1030 srcs = glob([ 1031 "lib/AST/*.cpp", 1032 "lib/AST/*.h", 1033 "lib/AST/ByteCode/*.cpp", 1034 "lib/AST/ByteCode/*.h", 1035 ]) + [ 1036 "lib/AST/AttrDocTable.inc", 1037 "lib/AST/ByteCode/Opcodes.inc", 1038 ], 1039 hdrs = glob([ 1040 "include/clang/AST/*.h", 1041 ]), 1042 copts = [ 1043 # FIXME: This is necessary to allow "file relative" include paths from 1044 # non-generated `srcs` to find generated `srcs` above. Bazel should 1045 # either make this work automatically by creating a unified tree of 1046 # `srcs` or at least provide a `local_includes` that has the path 1047 # translation logic of `includes` but is only used locally (similar to 1048 # `local_defines` vs. `defines`). Until one of those lands, this is the 1049 # least bad approach. Using `includes` is *specifically* problematic for 1050 # this library because it contains files that collide easily with system 1051 # headers such as `CXXABI.h`. 1052 "-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/lib/AST", 1053 "-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/lib/AST/ByteCode", 1054 ], 1055 textual_hdrs = [ 1056 "include/clang/AST/AttrImpl.inc", 1057 "include/clang/AST/AttrNodeTraverse.inc", 1058 "include/clang/AST/Attrs.inc", 1059 "include/clang/AST/AttrTextNodeDump.inc", 1060 "include/clang/AST/AttrVisitor.inc", 1061 "include/clang/AST/CommentCommandInfo.inc", 1062 "include/clang/AST/CommentCommandList.inc", 1063 "include/clang/AST/CommentHTMLNamedCharacterReferences.inc", 1064 "include/clang/AST/CommentHTMLTags.inc", 1065 "include/clang/AST/CommentHTMLTagsProperties.inc", 1066 "include/clang/AST/CommentNodes.inc", 1067 "include/clang/AST/DeclNodes.inc", 1068 "include/clang/AST/StmtDataCollectors.inc", 1069 "include/clang/AST/StmtNodes.inc", 1070 ] + glob([ 1071 "include/clang/AST/*.def", 1072 ]), 1073 toolchains = [":workspace_root"], 1074 deps = [ 1075 ":ast_attr_gen", 1076 ":ast_bytecode_opcodes_gen", 1077 ":ast_comment_command_info_gen", 1078 ":ast_comment_html_named_character_references_gen", 1079 ":ast_comment_html_tags_gen", 1080 ":ast_comment_html_tags_properties_gen", 1081 ":ast_comment_nodes_gen", 1082 ":ast_decl_nodes_gen", 1083 ":ast_properties_base_gen", 1084 ":ast_stmt_data_collectors_gen", 1085 ":ast_stmt_nodes_gen", 1086 ":ast_type_properties_gen", 1087 ":basic", 1088 ":basic_builtins_gen", 1089 ":lex", 1090 ":support", 1091 ":type_nodes_gen", 1092 "//llvm:BinaryFormat", 1093 "//llvm:Core", 1094 "//llvm:FrontendHLSL", 1095 "//llvm:FrontendOpenMP", 1096 "//llvm:Support", 1097 "//llvm:TargetParser", 1098 ], 1099) 1100 1101cc_library( 1102 name = "index", 1103 srcs = glob([ 1104 "lib/Index/*.cpp", 1105 "lib/Index/*.h", 1106 ]), 1107 hdrs = glob([ 1108 "include/clang/Index/*.h", 1109 "include/clang-c/*.h", 1110 ]), 1111 includes = ["include"], 1112 deps = [ 1113 ":ast", 1114 ":basic", 1115 ":format", 1116 ":frontend", 1117 ":lex", 1118 ":rewrite", 1119 ":serialization", 1120 "//llvm:Core", 1121 "//llvm:Support", 1122 ], 1123) 1124 1125genrule( 1126 name = "analysis_htmllogger_gen", 1127 srcs = [ 1128 "lib/Analysis/FlowSensitive/HTMLLogger.html", 1129 "lib/Analysis/FlowSensitive/HTMLLogger.css", 1130 "lib/Analysis/FlowSensitive/HTMLLogger.js", 1131 ], 1132 outs = ["lib/Analysis/FlowSensitive/HTMLLogger.inc"], 1133 cmd = "$(location :bundle_resources) $@ $(SRCS)", 1134 tools = [":bundle_resources"], 1135) 1136 1137cc_library( 1138 name = "analysis", 1139 srcs = glob([ 1140 "lib/Analysis/FlowSensitive/Models/*.cpp", 1141 "lib/Analysis/FlowSensitive/*.cpp", 1142 "lib/Analysis/*.cpp", 1143 ]) + [ 1144 ":analysis_htmllogger_gen", 1145 ], 1146 hdrs = glob([ 1147 "include/clang/Analysis/**/*.h", 1148 ]), 1149 includes = [ 1150 "include", 1151 "lib/Analysis/FlowSensitive", 1152 ], 1153 textual_hdrs = glob([ 1154 "include/clang/Analysis/**/*.def", 1155 ]), 1156 deps = [ 1157 ":ast", 1158 ":ast_matchers", 1159 ":basic", 1160 ":lex", 1161 ":support", 1162 "//llvm:Support", 1163 ], 1164) 1165 1166gentbl( 1167 name = "sema_attr_gen", 1168 tbl_outs = [ 1169 ( 1170 "-gen-clang-attr-parsed-attr-impl", 1171 "include/clang/Sema/AttrParsedAttrImpl.inc", 1172 ), 1173 ( 1174 "-gen-clang-attr-parsed-attr-kinds", 1175 "include/clang/Sema/AttrParsedAttrKinds.inc", 1176 ), 1177 ( 1178 "-gen-clang-attr-spelling-index", 1179 "include/clang/Sema/AttrSpellingListIndex.inc", 1180 ), 1181 ( 1182 "-gen-clang-attr-template-instantiate", 1183 "include/clang/Sema/AttrTemplateInstantiate.inc", 1184 ), 1185 ], 1186 tblgen = ":clang-tblgen", 1187 td_file = "include/clang/Basic/Attr.td", 1188 td_srcs = [ 1189 "include/clang/Basic/ASTNode.td", 1190 "include/clang/Basic/Attr.td", 1191 "include/clang/Basic/AttrDocs.td", 1192 "include/clang/Basic/DeclNodes.td", 1193 "include/clang/Basic/StmtNodes.td", 1194 ], 1195) 1196 1197cc_library( 1198 name = "sema", 1199 srcs = glob([ 1200 "lib/Sema/*.cpp", 1201 "lib/Sema/*.h", 1202 ]), 1203 hdrs = glob([ 1204 "include/clang/Sema/*.h", 1205 "include/clang-c/*.h", 1206 ]), 1207 copts = ["$(STACK_FRAME_UNLIMITED)"], 1208 includes = ["include"], 1209 textual_hdrs = [ 1210 "include/clang/Sema/AttrParsedAttrImpl.inc", 1211 "include/clang/Sema/AttrParsedAttrKinds.inc", 1212 "include/clang/Sema/AttrSpellingListIndex.inc", 1213 "include/clang/Sema/AttrTemplateInstantiate.inc", 1214 "lib/Sema/OpenCLBuiltins.inc", 1215 ], 1216 deps = [ 1217 ":analysis", 1218 ":apinotes", 1219 ":ast", 1220 ":basic", 1221 ":basic_arm_cde_aliases_gen", 1222 ":basic_arm_cde_sema_gen", 1223 ":basic_arm_sme_builtins_gen", 1224 ":basic_arm_sme_builtins_za_state_gen", 1225 ":basic_arm_sme_sema_rangechecks_gen", 1226 ":basic_arm_sme_streaming_attrs_gen", 1227 ":basic_arm_sve_builtins_gen", 1228 ":basic_arm_sve_sema_rangechecks_gen", 1229 ":basic_arm_sve_streaming_attrs_gen", 1230 ":basic_builtins_gen", 1231 ":basic_riscv_sifive_vector_builtin_sema_gen", 1232 ":basic_riscv_vector_builtin_sema_gen", 1233 ":edit", 1234 ":lex", 1235 ":libsema_openclbuiltins_inc_gen", 1236 ":sema_attr_gen", 1237 ":support", 1238 ":type_nodes_gen", 1239 "//llvm:AllTargetsAsmParsers", 1240 "//llvm:AllTargetsCodeGens", 1241 "//llvm:Core", 1242 "//llvm:Demangle", 1243 "//llvm:FrontendHLSL", 1244 "//llvm:FrontendOpenMP", 1245 "//llvm:MC", 1246 "//llvm:MCParser", 1247 "//llvm:Support", 1248 "//llvm:TargetParser", 1249 ], 1250) 1251 1252gentbl( 1253 name = "parse_attr_gen", 1254 tbl_outs = [ 1255 ( 1256 "-gen-clang-attr-parser-string-switches", 1257 "include/clang/Parse/AttrParserStringSwitches.inc", 1258 ), 1259 ( 1260 "-gen-clang-attr-subject-match-rules-parser-string-switches", 1261 "include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc", 1262 ), 1263 ], 1264 tblgen = ":clang-tblgen", 1265 td_file = "include/clang/Basic/Attr.td", 1266 td_srcs = [ 1267 "include/clang/Basic/ASTNode.td", 1268 "include/clang/Basic/Attr.td", 1269 "include/clang/Basic/AttrDocs.td", 1270 "include/clang/Basic/DeclNodes.td", 1271 "include/clang/Basic/StmtNodes.td", 1272 ], 1273) 1274 1275cc_library( 1276 name = "parse", 1277 srcs = glob([ 1278 "lib/Parse/*.cpp", 1279 ]), 1280 hdrs = [ 1281 "include/clang/Parse/AttrParserStringSwitches.inc", 1282 "include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc", 1283 ] + glob(["include/clang/Parse/*.h"]), 1284 includes = ["include"], 1285 deps = [ 1286 ":ast", 1287 ":basic", 1288 ":lex", 1289 ":parse_attr_gen", 1290 ":sema", 1291 "//llvm:FrontendOpenMP", 1292 "//llvm:MC", 1293 "//llvm:MCParser", 1294 "//llvm:Support", 1295 ], 1296) 1297 1298cc_library( 1299 name = "ast_matchers", 1300 srcs = glob([ 1301 "lib/ASTMatchers/*.cpp", 1302 ]), 1303 hdrs = glob(["include/clang/ASTMatchers/*.h"]), 1304 includes = ["include"], 1305 deps = [ 1306 ":ast", 1307 ":basic", 1308 ":lex", 1309 ":support", 1310 "//llvm:Support", 1311 ], 1312) 1313 1314cc_library( 1315 name = "ast_matchers_dynamic", 1316 srcs = glob([ 1317 "lib/ASTMatchers/Dynamic/*.cpp", 1318 "lib/ASTMatchers/Dynamic/*.h", 1319 ]), 1320 hdrs = glob(["include/clang/ASTMatchers/Dynamic/*.h"]), 1321 copts = ["$(STACK_FRAME_UNLIMITED)"], 1322 includes = ["include"], 1323 deps = [ 1324 ":ast", 1325 ":ast_matchers", 1326 ":basic", 1327 "//llvm:FrontendOpenMP", 1328 "//llvm:Support", 1329 ], 1330) 1331 1332cc_library( 1333 name = "rewrite", 1334 srcs = glob([ 1335 "lib/Rewrite/*.cpp", 1336 ]), 1337 hdrs = glob(["include/clang/Rewrite/Core/*.h"]), 1338 includes = ["include"], 1339 deps = [ 1340 ":ast", 1341 ":basic", 1342 ":edit", 1343 ":lex", 1344 "//llvm:Support", 1345 ], 1346) 1347 1348cc_library( 1349 name = "testing", 1350 testonly = 1, 1351 srcs = glob([ 1352 "lib/Testing/*.cpp", 1353 ]), 1354 hdrs = glob(["include/clang/Testing/*.h"]), 1355 includes = ["include"], 1356 textual_hdrs = [ 1357 "include/clang/Testing/TestLanguage.def", 1358 ], 1359 deps = [ 1360 ":basic", 1361 ":frontend", 1362 "//llvm:MC", 1363 "//llvm:Support", 1364 "//third-party/unittest:gtest", 1365 ], 1366) 1367 1368cc_library( 1369 name = "tooling_core", 1370 srcs = glob([ 1371 "lib/Tooling/Core/*.cpp", 1372 ]), 1373 hdrs = glob(["include/clang/Tooling/Core/*.h"]), 1374 includes = ["include"], 1375 deps = [ 1376 ":ast", 1377 ":basic", 1378 ":lex", 1379 ":rewrite", 1380 "//llvm:Support", 1381 ], 1382) 1383 1384cc_library( 1385 name = "tooling", 1386 srcs = glob([ 1387 "lib/Tooling/*.cpp", 1388 ]), 1389 hdrs = glob([ 1390 "include/clang/Tooling/*.h", 1391 ]), 1392 includes = ["include"], 1393 deps = [ 1394 ":ast", 1395 ":ast_matchers", 1396 ":basic", 1397 ":driver", 1398 ":format", 1399 ":frontend", 1400 ":lex", 1401 ":rewrite", 1402 ":support", 1403 ":tooling_core", 1404 "//llvm:Option", 1405 "//llvm:Support", 1406 "//llvm:TargetParser", 1407 ], 1408) 1409 1410cc_library( 1411 name = "tooling_inclusions", 1412 srcs = glob([ 1413 "lib/Tooling/Inclusions/**/*.cpp", 1414 "lib/Tooling/Inclusions/**/*.inc", 1415 ]), 1416 hdrs = glob([ 1417 "include/clang/Tooling/Inclusions/**/*.h", 1418 ]), 1419 deps = [ 1420 ":ast", 1421 ":basic", 1422 ":lex", 1423 ":rewrite", 1424 ":tooling_core", 1425 "//llvm:Support", 1426 ], 1427) 1428 1429cc_library( 1430 name = "tooling_refactoring", 1431 srcs = glob([ 1432 "lib/Tooling/Refactoring/**/*.cpp", 1433 ]), 1434 hdrs = glob([ 1435 "include/clang/Tooling/Refactoring/**/*.h", 1436 ]), 1437 deps = [ 1438 ":ast", 1439 ":ast_matchers", 1440 ":basic", 1441 ":format", 1442 ":frontend", 1443 ":index", 1444 ":lex", 1445 ":rewrite", 1446 ":tooling", 1447 ":tooling_core", 1448 "//llvm:Support", 1449 ], 1450) 1451 1452gentbl( 1453 name = "tooling_syntax_gen", 1454 tbl_outs = [ 1455 ("-gen-clang-syntax-node-list", "include/clang/Tooling/Syntax/Nodes.inc"), 1456 ("-gen-clang-syntax-node-classes", "include/clang/Tooling/Syntax/NodeClasses.inc"), 1457 ], 1458 tblgen = ":clang-tblgen", 1459 td_file = "include/clang/Tooling/Syntax/Nodes.td", 1460 td_srcs = [ 1461 "include/clang/Tooling/Syntax/Nodes.td", 1462 "include/clang/Tooling/Syntax/Syntax.td", 1463 ], 1464) 1465 1466cc_library( 1467 name = "tooling_syntax", 1468 srcs = glob(["lib/Tooling/Syntax/**/*.cpp"]), 1469 hdrs = glob(["include/clang/Tooling/Syntax/**/*.h"]), 1470 deps = [ 1471 ":ast", 1472 ":basic", 1473 ":lex", 1474 ":tooling_core", 1475 ":tooling_syntax_gen", 1476 "//llvm:Support", 1477 ], 1478) 1479 1480cc_library( 1481 name = "tooling_dependency_scanning", 1482 srcs = glob(["lib/Tooling/DependencyScanning/**/*.cpp"]), 1483 hdrs = glob(["include/clang/Tooling/DependencyScanning/**/*.h"]), 1484 deps = [ 1485 ":basic", 1486 ":driver", 1487 ":frontend", 1488 ":lex", 1489 ":serialization", 1490 ":tooling", 1491 "//llvm:Support", 1492 "//llvm:TargetParser", 1493 ], 1494) 1495 1496cc_library( 1497 name = "transformer", 1498 srcs = glob(["lib/Tooling/Transformer/**/*.cpp"]), 1499 hdrs = glob(["include/clang/Tooling/Transformer/**/*.h"]), 1500 deps = [ 1501 ":ast", 1502 ":ast_matchers", 1503 ":basic", 1504 ":lex", 1505 ":rewrite", 1506 ":tooling_refactoring", 1507 "//llvm:Support", 1508 ], 1509) 1510 1511cc_library( 1512 name = "ast-diff", 1513 srcs = glob(["lib/Tooling/ASTDiff/*.cpp"]), 1514 hdrs = glob(["include/clang/Tooling/ASTDiff/*.h"]), 1515 deps = [ 1516 ":ast", 1517 ":basic", 1518 ":lex", 1519 "//llvm:Support", 1520 ], 1521) 1522 1523cc_library( 1524 name = "crosstu", 1525 srcs = glob(["lib/CrossTU/*.cpp"]), 1526 hdrs = glob(["include/clang/CrossTU/*.h"]), 1527 deps = [ 1528 ":analysis", 1529 ":ast", 1530 ":basic", 1531 ":frontend", 1532 ":index", 1533 "//llvm:Option", 1534 "//llvm:Support", 1535 "//llvm:TargetParser", 1536 ], 1537) 1538 1539cc_library( 1540 name = "format", 1541 srcs = glob( 1542 [ 1543 "lib/Format/*.cpp", 1544 "lib/Format/*.h", 1545 ], 1546 ), 1547 hdrs = glob([ 1548 "include/clang/Format/*.h", 1549 ]), 1550 includes = ["include"], 1551 deps = [ 1552 ":basic", 1553 ":lex", 1554 ":tooling_core", 1555 ":tooling_inclusions", 1556 "//llvm:Support", 1557 ], 1558) 1559 1560cc_library( 1561 name = "edit", 1562 srcs = glob(["lib/Edit/*.cpp"]), 1563 hdrs = glob(["include/clang/Edit/*.h"]), 1564 includes = ["include"], 1565 deps = [ 1566 ":ast", 1567 ":basic", 1568 ":lex", 1569 "//llvm:Support", 1570 ], 1571) 1572 1573cc_library( 1574 name = "static_analyzer_core_options", 1575 hdrs = [ 1576 "include/clang/StaticAnalyzer/Core/AnalyzerOptions.h", 1577 ], 1578 textual_hdrs = [ 1579 "include/clang/StaticAnalyzer/Core/Analyses.def", 1580 "include/clang/StaticAnalyzer/Core/AnalyzerOptions.def", 1581 ], 1582 deps = [ 1583 ":analysis", 1584 ":basic", 1585 ":static_analyzer_checkers_gen", 1586 "//llvm:Support", 1587 ], 1588) 1589 1590cc_library( 1591 name = "static_analyzer_core", 1592 srcs = glob([ 1593 "lib/StaticAnalyzer/Core/**/*.cpp", 1594 "lib/StaticAnalyzer/Core/**/*.h", 1595 ]), 1596 hdrs = glob([ 1597 "include/clang/StaticAnalyzer/Core/**/*.h", 1598 ]), 1599 includes = ["include"], 1600 textual_hdrs = glob([ 1601 "include/clang/StaticAnalyzer/Core/**/*.def", 1602 ]), 1603 deps = [ 1604 ":analysis", 1605 ":ast", 1606 ":ast_matchers", 1607 ":basic", 1608 ":crosstu", 1609 ":driver", 1610 ":frontend", 1611 ":lex", 1612 ":rewrite", 1613 ":static_analyzer_checkers_gen", 1614 ":tooling", 1615 ":tooling_core", 1616 "//llvm:Support", 1617 ], 1618) 1619 1620gentbl( 1621 name = "static_analyzer_checkers_gen", 1622 tbl_outs = [( 1623 "-gen-clang-sa-checkers", 1624 "include/clang/StaticAnalyzer/Checkers/Checkers.inc", 1625 )], 1626 tblgen = ":clang-tblgen", 1627 td_file = "include/clang/StaticAnalyzer/Checkers/Checkers.td", 1628 td_srcs = [ 1629 "include/clang/StaticAnalyzer/Checkers/CheckerBase.td", 1630 "include/clang/StaticAnalyzer/Checkers/Checkers.td", 1631 ], 1632) 1633 1634cc_library( 1635 name = "static_analyzer_checkers", 1636 srcs = glob([ 1637 "lib/StaticAnalyzer/Checkers/**/*.cpp", 1638 "lib/StaticAnalyzer/Checkers/**/*.h", 1639 ]), 1640 hdrs = [ 1641 "include/clang/StaticAnalyzer/Checkers/Checkers.inc", 1642 ] + glob([ 1643 "include/clang/StaticAnalyzer/Checkers/**/*.h", 1644 ]), 1645 copts = ["$(STACK_FRAME_UNLIMITED)"], 1646 includes = ["include"], 1647 deps = [ 1648 ":analysis", 1649 ":ast", 1650 ":ast_matchers", 1651 ":basic", 1652 ":driver", 1653 ":lex", 1654 ":static_analyzer_checkers_gen", 1655 ":static_analyzer_core", 1656 "//llvm:Support", 1657 ], 1658) 1659 1660gentbl( 1661 name = "driver_options_inc_gen", 1662 tbl_outs = [( 1663 "-gen-opt-parser-defs", 1664 "include/clang/Driver/Options.inc", 1665 )], 1666 tblgen = "//llvm:llvm-tblgen", 1667 td_file = "include/clang/Driver/Options.td", 1668 td_srcs = [ 1669 "//llvm:include/llvm/Option/OptParser.td", 1670 ], 1671) 1672 1673cc_library( 1674 name = "driver", 1675 srcs = glob( 1676 [ 1677 "lib/Driver/*.cpp", 1678 "lib/Driver/ToolChains/*.cpp", 1679 "lib/Driver/ToolChains/*.h", 1680 "lib/Driver/ToolChains/Arch/*.cpp", 1681 "lib/Driver/ToolChains/Arch/*.h", 1682 ], 1683 exclude = [ 1684 "lib/Driver/ToolChains/MSVCSetupApi.h", 1685 ], 1686 ), 1687 hdrs = glob([ 1688 "include/clang/Driver/*.h", 1689 ]), 1690 copts = ["$(STACK_FRAME_UNLIMITED)"], 1691 includes = [ 1692 "include", 1693 # TODO: This is likely a layering issue, but files in Arch are currently 1694 # directly #including "Tools.h". 1695 "lib/Driver", 1696 ], 1697 linkopts = select({ 1698 "@platforms//os:windows": ["version.lib"], 1699 "//conditions:default": [], 1700 }), 1701 textual_hdrs = glob([ 1702 "include/clang/Driver/*.def", 1703 ]), 1704 deps = [ 1705 ":ast", 1706 ":basic", 1707 ":config", 1708 ":driver_options_inc_gen", 1709 ":parse", 1710 ":static_analyzer_checkers_gen", 1711 "//llvm:BinaryFormat", 1712 "//llvm:FrontendDebug", 1713 "//llvm:Instrumentation", 1714 "//llvm:MC", 1715 "//llvm:Object", 1716 "//llvm:Option", 1717 "//llvm:ProfileData", 1718 "//llvm:Support", 1719 "//llvm:Target", 1720 "//llvm:TargetParser", 1721 "//llvm:WindowsDriver", 1722 "//llvm:config", 1723 ], 1724) 1725 1726gentbl( 1727 name = "headers_arm_neon_gen", 1728 tbl_outs = [( 1729 "-gen-arm-neon", 1730 "lib/Headers/arm_neon.h", 1731 )], 1732 tblgen = ":clang-tblgen", 1733 td_file = "include/clang/Basic/arm_neon.td", 1734 td_srcs = [ 1735 "include/clang/Basic/arm_immcheck_incl.td", 1736 "include/clang/Basic/arm_neon.td", 1737 "include/clang/Basic/arm_neon_incl.td", 1738 ], 1739) 1740 1741gentbl( 1742 name = "headers_arm_fp16_gen", 1743 tbl_outs = [( 1744 "-gen-arm-fp16", 1745 "lib/Headers/arm_fp16.h", 1746 )], 1747 tblgen = ":clang-tblgen", 1748 td_file = "include/clang/Basic/arm_fp16.td", 1749 td_srcs = [ 1750 "include/clang/Basic/arm_fp16.td", 1751 "include/clang/Basic/arm_immcheck_incl.td", 1752 "include/clang/Basic/arm_neon_incl.td", 1753 ], 1754) 1755 1756gentbl( 1757 name = "headers_arm_mve_gen", 1758 tbl_outs = [( 1759 "-gen-arm-mve-header", 1760 "lib/Headers/arm_mve.h", 1761 )], 1762 tblgen = ":clang-tblgen", 1763 td_file = "include/clang/Basic/arm_mve.td", 1764 td_srcs = [ 1765 "include/clang/Basic/arm_mve.td", 1766 "include/clang/Basic/arm_mve_defs.td", 1767 ], 1768) 1769 1770gentbl( 1771 name = "headers_arm_cde_gen", 1772 tbl_outs = [( 1773 "-gen-arm-cde-header", 1774 "lib/Headers/arm_cde.h", 1775 )], 1776 tblgen = ":clang-tblgen", 1777 td_file = "include/clang/Basic/arm_cde.td", 1778 td_srcs = [ 1779 "include/clang/Basic/arm_cde.td", 1780 "include/clang/Basic/arm_mve_defs.td", 1781 ], 1782) 1783 1784gentbl( 1785 name = "headers_arm_sve_gen", 1786 tbl_outs = [( 1787 "-gen-arm-sve-header", 1788 "lib/Headers/arm_sve.h", 1789 )], 1790 tblgen = ":clang-tblgen", 1791 td_file = "include/clang/Basic/arm_sve.td", 1792 td_srcs = [ 1793 "include/clang/Basic/arm_immcheck_incl.td", 1794 "include/clang/Basic/arm_sve.td", 1795 "include/clang/Basic/arm_sve_sme_incl.td", 1796 ], 1797) 1798 1799gentbl( 1800 name = "headers_arm_bf16_gen", 1801 tbl_outs = [( 1802 "-gen-arm-bf16", 1803 "lib/Headers/arm_bf16.h", 1804 )], 1805 tblgen = ":clang-tblgen", 1806 td_file = "include/clang/Basic/arm_bf16.td", 1807 td_srcs = [ 1808 "include/clang/Basic/arm_bf16.td", 1809 "include/clang/Basic/arm_immcheck_incl.td", 1810 "include/clang/Basic/arm_neon_incl.td", 1811 ], 1812) 1813 1814gentbl( 1815 name = "headers_arm_sme_gen", 1816 tbl_outs = [( 1817 "-gen-arm-sme-header", 1818 "lib/Headers/arm_sme.h", 1819 )], 1820 tblgen = ":clang-tblgen", 1821 td_file = "include/clang/Basic/arm_sme.td", 1822 td_srcs = [ 1823 "include/clang/Basic/arm_immcheck_incl.td", 1824 "include/clang/Basic/arm_sme.td", 1825 "include/clang/Basic/arm_sve_sme_incl.td", 1826 ], 1827) 1828 1829gentbl( 1830 name = "headers_arm_vector_type_gen", 1831 tbl_outs = [( 1832 "-gen-arm-vector-type", 1833 "lib/Headers/arm_vector_types.h", 1834 )], 1835 tblgen = ":clang-tblgen", 1836 td_file = "include/clang/Basic/arm_neon.td", 1837 td_srcs = [ 1838 "include/clang/Basic/arm_immcheck_incl.td", 1839 "include/clang/Basic/arm_neon.td", 1840 "include/clang/Basic/arm_neon_incl.td", 1841 ], 1842) 1843 1844gentbl( 1845 name = "headers_riscv_vector", 1846 tbl_outs = [( 1847 "-gen-riscv-vector-header", 1848 "lib/Headers/riscv_vector.h", 1849 )], 1850 tblgen = ":clang-tblgen", 1851 td_file = "include/clang/Basic/riscv_vector.td", 1852 td_srcs = [ 1853 "include/clang/Basic/riscv_vector.td", 1854 "include/clang/Basic/riscv_vector_common.td", 1855 ], 1856) 1857 1858# We generate the set of builtin headers under a special subdirectory in the 1859# 'bin' section of the bazel output so that they can be used as data 1860# dependencies. It requires listing explicitly all the generated inputs here. 1861builtin_headers = glob( 1862 ["lib/Headers/**/*.h"], 1863 exclude = [ 1864 # FIXME: They are not handled in CMake side. 1865 "lib/Headers/openmp_wrappers/stdlib.h", 1866 "lib/Headers/openmp_wrappers/time.h", 1867 "lib/Headers/ppc_wrappers/nmmintrin.h", 1868 ], 1869) + [ 1870 # keep sorted 1871 "lib/Headers/arm_bf16.h", 1872 "lib/Headers/arm_cde.h", 1873 "lib/Headers/arm_fp16.h", 1874 "lib/Headers/arm_mve.h", 1875 "lib/Headers/arm_neon.h", 1876 "lib/Headers/arm_sme.h", 1877 "lib/Headers/arm_sve.h", 1878 "lib/Headers/arm_vector_types.h", 1879 "lib/Headers/cuda_wrappers/algorithm", 1880 "lib/Headers/cuda_wrappers/complex", 1881 "lib/Headers/cuda_wrappers/new", 1882 "lib/Headers/module.modulemap", 1883 "lib/Headers/openmp_wrappers/cmath", 1884 "lib/Headers/openmp_wrappers/complex", 1885 "lib/Headers/openmp_wrappers/new", 1886 "lib/Headers/riscv_vector.h", 1887] 1888 1889genrule( 1890 name = "builtin_headers_gen", 1891 srcs = builtin_headers, 1892 outs = [hdr.replace("lib/Headers/", "staging/include/") for hdr in builtin_headers], 1893 cmd = """ 1894 for src in $(SRCS); do 1895 relsrc=$${src#*"$(WORKSPACE_ROOT)"/clang/lib/Headers} 1896 target=$(@D)/staging/include/$$relsrc 1897 mkdir -p $$(dirname $$target) 1898 cp $$src $$target 1899 done""", 1900 output_to_bindir = 1, 1901 toolchains = [":workspace_root"], 1902) 1903 1904cc_library( 1905 name = "frontend", 1906 srcs = glob([ 1907 "lib/Frontend/*.cpp", 1908 "lib/Frontend/*.h", 1909 ]), 1910 hdrs = glob([ 1911 "include/clang/Frontend/*.h", 1912 ]), 1913 copts = ["$(STACK_FRAME_UNLIMITED)"], 1914 data = [":builtin_headers_gen"], 1915 includes = ["include"], 1916 deps = [ 1917 ":apinotes", 1918 ":ast", 1919 ":basic", 1920 ":config", 1921 ":driver", 1922 ":driver_options_inc_gen", 1923 ":edit", 1924 ":lex", 1925 ":parse", 1926 ":sema", 1927 ":serialization", 1928 ":static_analyzer_core_options", 1929 ":support", 1930 "//llvm:BinaryFormat", 1931 "//llvm:BitReader", 1932 "//llvm:BitstreamReader", 1933 "//llvm:BitstreamWriter", 1934 "//llvm:Core", 1935 "//llvm:FrontendDebug", 1936 "//llvm:Linker", 1937 "//llvm:MC", 1938 "//llvm:Option", 1939 "//llvm:ProfileData", 1940 "//llvm:Remarks", 1941 "//llvm:Support", 1942 "//llvm:Target", 1943 "//llvm:TargetParser", 1944 "//llvm:TextAPI", 1945 "//llvm:config", 1946 ], 1947) 1948 1949cc_library( 1950 name = "frontend_rewrite", 1951 srcs = glob([ 1952 "lib/Frontend/Rewrite/*.cpp", 1953 ]), 1954 hdrs = glob(["include/clang/Rewrite/Frontend/*.h"]), 1955 includes = ["include"], 1956 deps = [ 1957 ":ast", 1958 ":basic", 1959 ":config", 1960 ":edit", 1961 ":frontend", 1962 ":lex", 1963 ":parse", 1964 ":rewrite", 1965 ":serialization", 1966 "//llvm:Support", 1967 ], 1968) 1969 1970cc_library( 1971 name = "interpreter", 1972 srcs = glob( 1973 [ 1974 "lib/Interpreter/*.cpp", 1975 "lib/Interpreter/*.h", 1976 ], 1977 exclude = [ 1978 "lib/Interpreter/Wasm.cpp", 1979 "lib/Interpreter/Wasm.h", 1980 ], 1981 ), 1982 hdrs = glob(["include/clang/Interpreter/*.h"]), 1983 includes = ["include"], 1984 deps = [ 1985 ":analysis", 1986 ":ast", 1987 ":basic", 1988 ":codegen", 1989 ":driver", 1990 ":edit", 1991 ":frontend", 1992 ":frontend_tool", 1993 ":lex", 1994 ":parse", 1995 ":sema", 1996 ":serialization", 1997 "//llvm:AllTargetsAsmParsers", 1998 "//llvm:AllTargetsCodeGens", 1999 "//llvm:Core", 2000 "//llvm:ExecutionEngine", 2001 "//llvm:MC", 2002 "//llvm:Option", 2003 "//llvm:OrcDebugging", 2004 "//llvm:OrcJIT", 2005 "//llvm:OrcShared", 2006 "//llvm:OrcTargetProcess", 2007 "//llvm:Support", 2008 "//llvm:Target", 2009 "//llvm:TargetParser", 2010 "//llvm:TransformUtils", 2011 "//llvm:config", 2012 ], 2013) 2014 2015cc_library( 2016 name = "codegen", 2017 srcs = glob([ 2018 "lib/CodeGen/**/*.cpp", 2019 "lib/CodeGen/**/*.h", 2020 ]), 2021 hdrs = glob(["include/clang/CodeGen/*.h"]), 2022 copts = ["$(STACK_FRAME_UNLIMITED)"], 2023 includes = [ 2024 "include", 2025 "lib/CodeGen", 2026 ], 2027 deps = [ 2028 ":analysis", 2029 ":ast", 2030 ":basic", 2031 ":basic_arm_cde_cg_gen", 2032 ":basic_arm_sme_builtin_cg_gen", 2033 ":basic_arm_sve_builtin_cg_gen", 2034 ":basic_riscv_sifive_vector_builtin_cg_gen", 2035 ":basic_riscv_vector_builtin_cg_gen", 2036 ":driver", 2037 ":frontend", 2038 ":lex", 2039 ":sema", 2040 ":serialization", 2041 ":type_nodes_gen", 2042 "//llvm:AllTargetsAsmParsers", 2043 "//llvm:Analysis", 2044 "//llvm:BinaryFormat", 2045 "//llvm:BitReader", 2046 "//llvm:BitWriter", 2047 "//llvm:BitstreamReader", 2048 "//llvm:CodeGen", 2049 "//llvm:Core", 2050 "//llvm:Coroutines", 2051 "//llvm:Coverage", 2052 "//llvm:DebugInfoDWARF", 2053 "//llvm:Demangle", 2054 "//llvm:FrontendDriver", 2055 "//llvm:FrontendHLSL", 2056 "//llvm:FrontendOffloading", 2057 "//llvm:FrontendOpenMP", 2058 "//llvm:HipStdPar", 2059 "//llvm:IPO", 2060 "//llvm:IRPrinter", 2061 "//llvm:IRReader", 2062 "//llvm:InstCombine", 2063 "//llvm:Instrumentation", 2064 "//llvm:LTO", 2065 "//llvm:Linker", 2066 "//llvm:MC", 2067 "//llvm:ObjCARC", 2068 "//llvm:Object", 2069 "//llvm:Passes", 2070 "//llvm:ProfileData", 2071 "//llvm:Scalar", 2072 "//llvm:Support", 2073 "//llvm:Target", 2074 "//llvm:TargetParser", 2075 "//llvm:TransformUtils", 2076 ], 2077) 2078 2079cc_library( 2080 name = "static_analyzer_frontend", 2081 srcs = glob([ 2082 "lib/StaticAnalyzer/Frontend/**/*.cpp", 2083 "lib/StaticAnalyzer/Frontend/**/*.h", 2084 ]), 2085 hdrs = glob(["include/clang/StaticAnalyzer/Frontend/**/*.h"]), 2086 includes = ["include"], 2087 deps = [ 2088 ":analysis", 2089 ":ast", 2090 ":basic", 2091 ":crosstu", 2092 ":driver", 2093 ":frontend", 2094 ":lex", 2095 ":rewrite", 2096 ":serialization", 2097 ":static_analyzer_checkers", 2098 ":static_analyzer_core", 2099 ":tooling", 2100 ":tooling_core", 2101 "//llvm:Support", 2102 ], 2103) 2104 2105gentbl( 2106 name = "serialization_attr_gen", 2107 tbl_outs = [ 2108 ( 2109 "-gen-clang-attr-pch-read", 2110 "include/clang/Serialization/AttrPCHRead.inc", 2111 ), 2112 ( 2113 "-gen-clang-attr-pch-write", 2114 "include/clang/Serialization/AttrPCHWrite.inc", 2115 ), 2116 ], 2117 tblgen = ":clang-tblgen", 2118 td_file = "include/clang/Basic/Attr.td", 2119 td_srcs = [ 2120 "include/clang/Basic/ASTNode.td", 2121 "include/clang/Basic/Attr.td", 2122 "include/clang/Basic/AttrDocs.td", 2123 "include/clang/Basic/DeclNodes.td", 2124 "include/clang/Basic/StmtNodes.td", 2125 ], 2126) 2127 2128cc_library( 2129 name = "support", 2130 srcs = glob([ 2131 "lib/Support/*.cpp", 2132 ]), 2133 hdrs = glob([ 2134 "include/clang/Support/*.h", 2135 ]), 2136 includes = ["include"], 2137 deps = [ 2138 "//llvm:Support", 2139 ], 2140) 2141 2142cc_library( 2143 name = "install_api", 2144 srcs = glob([ 2145 "lib/InstallAPI/*.cpp", 2146 "lib/InstallAPI/*.h", 2147 ]), 2148 hdrs = glob([ 2149 "include/clang/InstallAPI/*.h", 2150 ]), 2151 includes = ["include"], 2152 deps = [ 2153 ":ast", 2154 ":basic", 2155 ":frontend", 2156 ":support", 2157 "//llvm:Core", 2158 "//llvm:Demangle", 2159 "//llvm:Support", 2160 "//llvm:TextAPI", 2161 "//llvm:TextAPIBinaryReader", 2162 ], 2163) 2164 2165cc_library( 2166 name = "serialization", 2167 srcs = [ 2168 "include/clang/Serialization/AttrPCHRead.inc", 2169 "include/clang/Serialization/AttrPCHWrite.inc", 2170 ] + glob([ 2171 "lib/Serialization/*.cpp", 2172 "lib/Serialization/*.h", 2173 ]), 2174 hdrs = glob([ 2175 "include/clang/Serialization/*.h", 2176 ]), 2177 includes = ["include"], 2178 textual_hdrs = glob([ 2179 "include/clang/Serialization/*.def", 2180 ]), 2181 deps = [ 2182 ":ast", 2183 ":basic", 2184 ":lex", 2185 ":sema", 2186 ":serialization_attr_gen", 2187 ":type_nodes_gen", 2188 "//llvm:BitReader", 2189 "//llvm:BitWriter", 2190 "//llvm:BitstreamReader", 2191 "//llvm:BitstreamWriter", 2192 "//llvm:FrontendOpenMP", 2193 "//llvm:Object", 2194 "//llvm:Support", 2195 "//llvm:TargetParser", 2196 ], 2197) 2198 2199cc_library( 2200 name = "frontend_tool", 2201 srcs = glob([ 2202 "lib/FrontendTool/*.cpp", 2203 ]), 2204 hdrs = glob(["include/clang/FrontendTool/*.h"]), 2205 includes = ["include"], 2206 deps = [ 2207 ":arc_migrate", 2208 ":codegen", 2209 ":config", 2210 ":driver", 2211 ":extract_api", 2212 ":frontend", 2213 ":frontend_rewrite", 2214 ":static_analyzer_frontend", 2215 "//llvm:Option", 2216 "//llvm:Support", 2217 ], 2218) 2219 2220cc_library( 2221 name = "arc_migrate", 2222 srcs = glob([ 2223 "lib/ARCMigrate/*.cpp", 2224 "lib/ARCMigrate/*.h", 2225 ]), 2226 hdrs = glob(["include/clang/ARCMigrate/*.h"]), 2227 includes = ["include"], 2228 deps = [ 2229 ":analysis", 2230 ":ast", 2231 ":basic", 2232 ":edit", 2233 ":frontend", 2234 ":frontend_rewrite", 2235 ":lex", 2236 ":parse", 2237 ":rewrite", 2238 ":sema", 2239 ":serialization", 2240 ":static_analyzer_checkers", 2241 ":static_analyzer_core", 2242 "//llvm:Support", 2243 "//llvm:TargetParser", 2244 ], 2245) 2246 2247cc_library( 2248 name = "libclang_static", 2249 srcs = glob([ 2250 "tools/libclang/*.cpp", 2251 "tools/libclang/*.h", 2252 ]), 2253 hdrs = glob(["include/clang-c/*.h"]), 2254 defines = ["CINDEX_NO_EXPORTS"], 2255 deps = [ 2256 ":arc_migrate", 2257 ":ast", 2258 ":basic", 2259 ":codegen", 2260 ":config", 2261 ":driver", 2262 ":extract_api", 2263 ":frontend", 2264 ":index", 2265 ":lex", 2266 ":rewrite", 2267 ":sema", 2268 ":tooling", 2269 "//llvm:BitstreamReader", 2270 "//llvm:FrontendOpenMP", 2271 "//llvm:Support", 2272 "//llvm:config", 2273 ], 2274) 2275 2276cc_plugin_library( 2277 name = "libclang", 2278 srcs = glob([ 2279 "tools/libclang/*.cpp", 2280 "tools/libclang/*.h", 2281 ]), 2282 hdrs = glob(["include/clang-c/*.h"]), 2283 copts = select({ 2284 "@platforms//os:windows": ["-D_CINDEX_LIB_"], 2285 "//conditions:default": [], 2286 }), 2287 strip_include_prefix = "include", 2288 deps = [ 2289 ":arc_migrate", 2290 ":ast", 2291 ":basic", 2292 ":codegen", 2293 ":config", 2294 ":driver", 2295 ":extract_api", 2296 ":frontend", 2297 ":index", 2298 ":lex", 2299 ":rewrite", 2300 ":sema", 2301 ":tooling", 2302 "//llvm:BitstreamReader", 2303 "//llvm:FrontendOpenMP", 2304 "//llvm:Support", 2305 "//llvm:config", 2306 ], 2307) 2308 2309filegroup( 2310 name = "python-sources", 2311 srcs = [ 2312 "bindings/python/clang/cindex.py", 2313 ], 2314) 2315 2316filegroup( 2317 name = "python-cindex-examples", 2318 srcs = [ 2319 "bindings/python/examples/cindex/cindex-dump.py", 2320 "bindings/python/examples/cindex/cindex-includes.py", 2321 ], 2322) 2323 2324cc_binary( 2325 name = "c-index-test", 2326 testonly = 1, 2327 srcs = [ 2328 "tools/c-index-test/c-index-test.c", 2329 "tools/c-index-test/core_main.cpp", 2330 ], 2331 copts = [ 2332 "-Wno-uninitialized", 2333 ], 2334 stamp = 0, 2335 deps = [ 2336 ":ast", 2337 ":basic", 2338 ":codegen", 2339 ":config", 2340 ":frontend", 2341 ":index", 2342 ":lex", 2343 ":libclang", 2344 ":serialization", 2345 "//llvm:Core", 2346 "//llvm:MC", 2347 "//llvm:Support", 2348 ], 2349) 2350 2351cc_library( 2352 name = "apinotes", 2353 srcs = glob([ 2354 "lib/APINotes/*.cpp", 2355 "lib/APINotes/*.h", 2356 ]), 2357 hdrs = glob(["include/clang/APINotes/*.h"]), 2358 deps = [ 2359 ":basic", 2360 "//llvm:BitWriter", 2361 "//llvm:BitstreamReader", 2362 "//llvm:BitstreamWriter", 2363 "//llvm:Support", 2364 ], 2365) 2366 2367cc_binary( 2368 name = "apinotes-test", 2369 testonly = 1, 2370 srcs = ["tools/apinotes-test/APINotesTest.cpp"], 2371 stamp = 0, 2372 deps = [ 2373 ":apinotes", 2374 "//llvm:Support", 2375 ], 2376) 2377 2378cc_binary( 2379 name = "arcmt-test", 2380 testonly = 1, 2381 srcs = ["tools/arcmt-test/arcmt-test.cpp"], 2382 stamp = 0, 2383 deps = [ 2384 ":arc_migrate", 2385 ":ast", 2386 ":basic", 2387 ":frontend", 2388 ":frontend_rewrite", 2389 ":lex", 2390 "//llvm:Support", 2391 ], 2392) 2393 2394cc_binary( 2395 name = "c-arcmt-test", 2396 testonly = 1, 2397 srcs = ["tools/c-arcmt-test/c-arcmt-test.c"], 2398 copts = select({ 2399 "@platforms//os:windows": [], 2400 "//conditions:default": ["-std=gnu99"], 2401 }), 2402 stamp = 0, 2403 deps = [ 2404 ":codegen", 2405 ":libclang", 2406 "//llvm:MC", 2407 "//llvm:Support", 2408 ], 2409) 2410 2411cc_binary( 2412 name = "clang-import-test", 2413 testonly = 1, 2414 srcs = glob([ 2415 "tools/clang-import-test/*.cpp", 2416 ]), 2417 stamp = 0, 2418 deps = [ 2419 ":ast", 2420 ":basic", 2421 ":codegen", 2422 ":driver", 2423 ":frontend", 2424 ":lex", 2425 ":parse", 2426 "//llvm:Core", 2427 "//llvm:Support", 2428 "//llvm:TargetParser", 2429 ], 2430) 2431 2432cc_library( 2433 name = "clang-driver", 2434 srcs = glob(["tools/driver/*.cpp"]), 2435 copts = [ 2436 # Disable stack frame size checks in the driver because 2437 # clang::ensureStackAddressSpace allocates a large array on the stack. 2438 "$(STACK_FRAME_UNLIMITED)", 2439 ], 2440 deps = [ 2441 ":analysis", 2442 ":ast", 2443 ":basic", 2444 ":codegen", 2445 ":config", 2446 ":driver", 2447 ":frontend", 2448 ":frontend_rewrite", 2449 ":frontend_tool", 2450 ":lex", 2451 ":parse", 2452 ":sema", 2453 ":serialization", 2454 ":static_analyzer_frontend", 2455 "//llvm:AllTargetsAsmParsers", 2456 "//llvm:AllTargetsCodeGens", 2457 "//llvm:BitReader", 2458 "//llvm:BitWriter", 2459 "//llvm:CodeGen", 2460 "//llvm:Core", 2461 "//llvm:IPO", 2462 "//llvm:MC", 2463 "//llvm:MCParser", 2464 "//llvm:Option", 2465 "//llvm:Support", 2466 "//llvm:Target", 2467 "//llvm:TargetParser", 2468 "//llvm:config", 2469 ], 2470) 2471 2472llvm_driver_cc_binary( 2473 name = "clang", 2474 stamp = 0, 2475 deps = [":clang-driver"], 2476) 2477 2478cc_binary( 2479 name = "diagtool", 2480 srcs = glob([ 2481 "tools/diagtool/*.cpp", 2482 "tools/diagtool/*.h", 2483 ]), 2484 stamp = 0, 2485 deps = [ 2486 ":basic", 2487 ":diagnostic_defs_gen", 2488 ":frontend", 2489 ":lex", 2490 ":sema", 2491 "//llvm:Support", 2492 ], 2493) 2494 2495filegroup( 2496 name = "exploded_graph_rewriter", 2497 testonly = 1, 2498 data = ["utils/analyzer/exploded-graph-rewriter.py"], 2499) 2500 2501filegroup( 2502 name = "module-deps-to-rsp", 2503 testonly = 1, 2504 data = ["utils/module-deps-to-rsp.py"], 2505) 2506 2507filegroup( 2508 name = "hmaptool", 2509 testonly = 1, 2510 data = ["utils/hmaptool/hmaptool"], 2511) 2512 2513binary_alias( 2514 name = "clang++", 2515 binary = ":clang", 2516) 2517 2518binary_alias( 2519 name = "clang-cl", 2520 binary = ":clang", 2521) 2522 2523cc_binary( 2524 name = "clang-check", 2525 srcs = ["tools/clang-check/ClangCheck.cpp"], 2526 stamp = 0, 2527 deps = [ 2528 ":ast", 2529 ":codegen", 2530 ":driver", 2531 ":frontend", 2532 ":frontend_rewrite", 2533 ":serialization", 2534 ":static_analyzer_frontend", 2535 ":tooling", 2536 ":tooling_syntax", 2537 "//llvm:Option", 2538 "//llvm:Support", 2539 ], 2540) 2541 2542cc_binary( 2543 name = "clang-format", 2544 srcs = [ 2545 "lib/Format/MatchFilePath.h", 2546 "tools/clang-format/ClangFormat.cpp", 2547 ], 2548 stamp = 0, 2549 deps = [ 2550 ":basic", 2551 ":format", 2552 ":frontend", 2553 ":rewrite", 2554 "//llvm:Support", 2555 ], 2556) 2557 2558cc_binary( 2559 name = "clang-diff", 2560 srcs = glob(["tools/clang-diff/*.cpp"]), 2561 stamp = 0, 2562 deps = [ 2563 ":ast-diff", 2564 ":tooling", 2565 "//llvm:Support", 2566 ], 2567) 2568 2569cc_binary( 2570 name = "clang-offload-bundler", 2571 srcs = glob(["tools/clang-offload-bundler/*.cpp"]), 2572 stamp = 0, 2573 deps = [ 2574 ":basic", 2575 ":driver", 2576 ":tooling", 2577 "//llvm:BitWriter", 2578 "//llvm:Core", 2579 "//llvm:Object", 2580 "//llvm:Support", 2581 "//llvm:TargetParser", 2582 ], 2583) 2584 2585cc_binary( 2586 name = "clang-offload-packager", 2587 srcs = glob(["tools/clang-offload-packager/*.cpp"]), 2588 stamp = 0, 2589 deps = [ 2590 ":basic", 2591 "//llvm:BinaryFormat", 2592 "//llvm:Object", 2593 "//llvm:Support", 2594 ], 2595) 2596 2597gentbl( 2598 name = "linker_wrapper_opts_gen", 2599 tbl_outs = [( 2600 "-gen-opt-parser-defs", 2601 "tools/clang-linker-wrapper/LinkerWrapperOpts.inc", 2602 )], 2603 tblgen = "//llvm:llvm-tblgen", 2604 td_file = "tools/clang-linker-wrapper/LinkerWrapperOpts.td", 2605 td_srcs = [ 2606 "tools/clang-linker-wrapper/LinkerWrapperOpts.td", 2607 "//llvm:include/llvm/Option/OptParser.td", 2608 ], 2609) 2610 2611cc_binary( 2612 name = "clang-linker-wrapper", 2613 srcs = [ 2614 "tools/clang-linker-wrapper/ClangLinkerWrapper.cpp", 2615 ], 2616 copts = [ 2617 "-I$(GENDIR)/$(WORKSPACE_ROOT)/clang/tools/clang-linker-wrapper", 2618 ], 2619 stamp = 0, 2620 toolchains = [":workspace_root"], 2621 deps = [ 2622 ":basic", 2623 ":linker_wrapper_opts_gen", 2624 "//llvm:AllTargetsAsmParsers", 2625 "//llvm:Analysis", 2626 "//llvm:BinaryFormat", 2627 "//llvm:BitWriter", 2628 "//llvm:CodeGen", 2629 "//llvm:Core", 2630 "//llvm:FrontendOffloading", 2631 "//llvm:IRReader", 2632 "//llvm:LTO", 2633 "//llvm:MC", 2634 "//llvm:Object", 2635 "//llvm:Option", 2636 "//llvm:Passes", 2637 "//llvm:Remarks", 2638 "//llvm:Support", 2639 "//llvm:Target", 2640 "//llvm:TargetParser", 2641 "//llvm:TransformUtils", 2642 ], 2643) 2644 2645cc_binary( 2646 name = "clang-refactor", 2647 srcs = glob([ 2648 "tools/clang-refactor/*.cpp", 2649 "tools/clang-refactor/*.h", 2650 ]), 2651 stamp = 0, 2652 deps = [ 2653 ":ast", 2654 ":basic", 2655 ":format", 2656 ":frontend", 2657 ":lex", 2658 ":rewrite", 2659 ":tooling", 2660 ":tooling_refactoring", 2661 "//llvm:Support", 2662 ], 2663) 2664 2665cc_binary( 2666 name = "clang-repl", 2667 srcs = glob(["tools/clang-repl/*.cpp"]), 2668 stamp = 0, 2669 deps = [ 2670 ":basic", 2671 ":frontend", 2672 ":interpreter", 2673 ":lex", 2674 ":sema", 2675 ":tooling", 2676 "//llvm:Core", 2677 "//llvm:LineEditor", 2678 "//llvm:Option", 2679 "//llvm:OrcJIT", 2680 "//llvm:Support", 2681 ], 2682) 2683 2684cc_binary( 2685 name = "clang-extdef-mapping", 2686 srcs = glob(["tools/clang-extdef-mapping/*.cpp"]), 2687 stamp = 0, 2688 deps = [ 2689 ":ast", 2690 ":basic", 2691 ":crosstu", 2692 ":frontend", 2693 ":tooling", 2694 "//llvm:Support", 2695 ], 2696) 2697 2698gentbl( 2699 name = "ScanDepsTableGen", 2700 strip_include_prefix = "tools/clang-scan-deps", 2701 tbl_outs = [( 2702 "-gen-opt-parser-defs", 2703 "tools/clang-scan-deps/Opts.inc", 2704 )], 2705 tblgen = "//llvm:llvm-tblgen", 2706 td_file = "tools/clang-scan-deps/Opts.td", 2707 td_srcs = ["//llvm:include/llvm/Option/OptParser.td"], 2708) 2709 2710cc_library( 2711 name = "clang-scan-deps-lib", 2712 srcs = glob(["tools/clang-scan-deps/*.cpp"]), 2713 deps = [ 2714 ":ScanDepsTableGen", 2715 ":driver", 2716 ":frontend", 2717 ":tooling", 2718 ":tooling_dependency_scanning", 2719 "//llvm:Support", 2720 "//llvm:TargetParser", 2721 ], 2722) 2723 2724llvm_driver_cc_binary( 2725 name = "clang-scan-deps", 2726 stamp = 0, 2727 deps = [":clang-scan-deps-lib"], 2728) 2729 2730cc_library( 2731 name = "extract_api", 2732 srcs = glob([ 2733 "lib/ExtractAPI/**/*.cpp", 2734 ]), 2735 hdrs = glob([ 2736 "include/clang/ExtractAPI/**/*.h", 2737 ]) + [ 2738 "include/clang/ExtractAPI/APIRecords.inc", 2739 ], 2740 includes = ["include"], 2741 deps = [ 2742 ":ast", 2743 ":basic", 2744 ":frontend", 2745 ":index", 2746 ":install_api", 2747 ":lex", 2748 "//llvm:Option", 2749 "//llvm:Support", 2750 "//llvm:TargetParser", 2751 ], 2752) 2753 2754cc_binary( 2755 name = "clang-fuzzer-dictionary", 2756 srcs = ["tools/clang-fuzzer/dictionary/dictionary.c"], 2757 deps = [":basic"], 2758) 2759 2760genrule( 2761 name = "fuzzer-dictionary", 2762 outs = ["fuzzer-dictionary.txt"], 2763 cmd = "$(location :clang-fuzzer-dictionary) > $@", 2764 tools = [":clang-fuzzer-dictionary"], 2765) 2766 2767cc_library( 2768 name = "handle-cxx", 2769 srcs = ["tools/clang-fuzzer/handle-cxx/handle_cxx.cpp"], 2770 hdrs = ["tools/clang-fuzzer/handle-cxx/handle_cxx.h"], 2771 deps = [ 2772 ":codegen", 2773 ":frontend", 2774 ":lex", 2775 ":tooling", 2776 "//llvm:Option", 2777 "//llvm:Support", 2778 ], 2779) 2780 2781proto_library( 2782 name = "cxx-proto", 2783 srcs = ["tools/clang-fuzzer/cxx_proto.proto"], 2784) 2785 2786cc_proto_library( 2787 name = "cxx_cc_proto", 2788 deps = [":cxx-proto"], 2789) 2790 2791cc_library( 2792 name = "proto-to-cxx-lib", 2793 srcs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.cpp"], 2794 hdrs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx.h"], 2795 includes = ["tools/clang-fuzzer"], 2796 deps = [":cxx_cc_proto"], 2797) 2798 2799cc_binary( 2800 name = "clang-proto-to-cxx", 2801 srcs = ["tools/clang-fuzzer/proto-to-cxx/proto_to_cxx_main.cpp"], 2802 deps = [":proto-to-cxx-lib"], 2803) 2804 2805cc_library( 2806 name = "clang-fuzzer-initialize", 2807 srcs = ["tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.cpp"], 2808 hdrs = ["tools/clang-fuzzer/fuzzer-initialize/fuzzer_initialize.h"], 2809 deps = [ 2810 "//llvm:Core", 2811 "//llvm:Support", 2812 ], 2813) 2814