1load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library") 2load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") 3load("@rules_cc//cc:cc_binary.bzl", "cc_binary") 4load("@rules_cc//cc:cc_library.bzl", "cc_library") 5load("@rules_java//java:java_binary.bzl", "java_binary") 6load("@rules_java//java:java_import.bzl", "java_import") 7 8package(default_visibility = ["//visibility:public"]) 9 10exports_files(glob(["**/*.jar"])) 11 12licenses(["notice"]) # Apache 2.0 13 14SUPRESSED_WARNINGS = select({ 15 ":windows": [], 16 "//conditions:default": [ 17 "-Wno-error", 18 "-Wno-old-style-cast", 19 ], 20}) 21 22filegroup( 23 name = "GenClass", 24 srcs = ["java_tools/GenClass_deploy.jar"], 25) 26 27filegroup( 28 name = "jacoco_coverage_runner_filegroup", 29 srcs = ["java_tools/JacocoCoverage_jarjar_deploy.jar"], 30) 31 32java_import( 33 name = "jacoco_coverage_runner", 34 jars = ["java_tools/JacocoCoverage_jarjar_deploy.jar"], 35) 36 37filegroup( 38 name = "JacocoCoverage", 39 srcs = ["java_tools/JacocoCoverage_jarjar_deploy.jar"], 40) 41 42filegroup( 43 name = "JavaBuilder", 44 srcs = ["java_tools/JavaBuilder_deploy.jar"], 45) 46 47filegroup( 48 name = "Runner", 49 srcs = ["java_tools/Runner_deploy.jar"], 50) 51 52filegroup( 53 name = "VanillaJavaBuilder", 54 srcs = ["java_tools/VanillaJavaBuilder_deploy.jar"], 55) 56 57filegroup( 58 name = "TurbineDirect", 59 srcs = ["java_tools/turbine_direct_binary_deploy.jar"], 60) 61 62java_import( 63 name = "jacoco-agent", 64 jars = ["java_tools/third_party/java/jacoco/org.jacoco.agent-0.8.11.jar"], 65 srcjar = "java_tools/third_party/java/jacoco/org.jacoco.agent-0.8.11-sources.jar", 66) 67 68java_import( 69 name = "jacoco-core", 70 jars = ["java_tools/third_party/java/jacoco/org.jacoco.core-0.8.11.jar"], 71 srcjar = "java_tools/third_party/java/jacoco/org.jacoco.core-0.8.11-sources.jar", 72 exports = [ 73 ":asm", 74 ":asm-commons", 75 ":asm-tree", 76 ], 77) 78 79filegroup( 80 name = "jacoco-core-jars", 81 srcs = ["java_tools/third_party/java/jacoco/org.jacoco.core-0.8.11.jar"], 82) 83 84java_import( 85 name = "jacoco-report", 86 jars = ["java_tools/third_party/java/jacoco/org.jacoco.report-0.8.11.jar"], 87 srcjar = "java_tools/third_party/java/jacoco/org.jacoco.report-0.8.11-sources.jar", 88 exports = [ 89 ":asm", 90 ":jacoco-core", 91 ], 92) 93 94java_import( 95 name = "bazel-jacoco-agent", 96 jars = ["java_tools/third_party/java/jacoco/jacocoagent-0.8.11.jar"], 97) 98 99java_import( 100 name = "bazel-jacoco-agent-neverlink", 101 jars = ["java_tools/third_party/java/jacoco/jacocoagent-0.8.11.jar"], 102 neverlink = 1, 103) 104 105java_import( 106 name = "asm", 107 jars = ["java_tools/third_party/java/jacoco/asm-9.6.jar"], 108 srcjar = "java_tools/third_party/java/jacoco/asm-9.6-sources.jar", 109) 110 111java_import( 112 name = "asm-commons", 113 jars = ["java_tools/third_party/java/jacoco/asm-commons-9.6.jar"], 114 srcjar = "java_tools/third_party/java/jacoco/asm-commons-9.6-sources.jar", 115 runtime_deps = [":asm-tree"], 116) 117 118java_import( 119 name = "asm-tree", 120 jars = ["java_tools/third_party/java/jacoco/asm-tree-9.6.jar"], 121 srcjar = "java_tools/third_party/java/jacoco/asm-tree-9.6-sources.jar", 122 runtime_deps = [":asm"], 123) 124 125config_setting( 126 name = "windows", 127 constraint_values = ["@platforms//os:windows"], 128) 129 130config_setting( 131 name = "freebsd", 132 constraint_values = ["@platforms//os:freebsd"], 133 visibility = ["//visibility:public"], 134) 135 136config_setting( 137 name = "openbsd", 138 constraint_values = ["@platforms//os:openbsd"], 139 visibility = ["//visibility:public"], 140) 141 142# Create intermediate cc_library, which does not implicitly depend on "malloc" 143# and "link_extra_lib" in @bazel_tools//tools/cpp, and thereby avoids include 144# path /Iexternal/tools being used in compiling actions which would result in 145# the wrong headers being picked up. 146cc_library( 147 name = "ijar_cc_binary_main", 148 srcs = [ 149 "java_tools/ijar/classfile.cc", 150 "java_tools/ijar/ijar.cc", 151 ], 152 copts = SUPRESSED_WARNINGS, 153 linkstatic = 1, # provides main() 154 deps = [":zip"], 155 alwayslink = 1, 156) 157 158cc_binary( 159 name = "ijar_cc_binary", 160 deps = [":ijar_cc_binary_main"], 161) 162 163cc_library( 164 name = "zip", 165 srcs = [ 166 "java_tools/ijar/zip.cc", 167 ] + select({ 168 ":windows": [ 169 "java_tools/ijar/mapped_file_windows.cc", 170 ], 171 "//conditions:default": [ 172 "java_tools/ijar/mapped_file_unix.cc", 173 ], 174 }), 175 hdrs = [ 176 "java_tools/ijar/common.h", 177 "java_tools/ijar/mapped_file.h", 178 "java_tools/ijar/zip.h", 179 ], 180 copts = SUPRESSED_WARNINGS, 181 include_prefix = "third_party", 182 strip_include_prefix = "java_tools", 183 deps = [ 184 ":platform_utils", 185 ":zlib_client", 186 ] + select({ 187 ":windows": [ 188 ":errors", 189 ":filesystem", 190 ":logging", 191 ":strings", 192 ], 193 "//conditions:default": [ 194 ], 195 }), 196) 197 198cc_library( 199 name = "platform_utils", 200 srcs = ["java_tools/ijar/platform_utils.cc"], 201 hdrs = [ 202 "java_tools/ijar/common.h", 203 "java_tools/ijar/platform_utils.h", 204 ], 205 copts = SUPRESSED_WARNINGS, 206 include_prefix = "third_party", 207 strip_include_prefix = "java_tools", 208 visibility = ["//visibility:private"], 209 deps = [ 210 ":errors", 211 ":filesystem", 212 ":logging", 213 ], 214) 215 216cc_library( 217 name = "cpp_util", 218 hdrs = [ 219 "java_tools/src/main/cpp/util/errors.h", 220 "java_tools/src/main/cpp/util/file.h", 221 "java_tools/src/main/cpp/util/file_platform.h", 222 "java_tools/src/main/cpp/util/md5.h", 223 "java_tools/src/main/cpp/util/numbers.h", 224 "java_tools/src/main/cpp/util/path.h", 225 "java_tools/src/main/cpp/util/path_platform.h", 226 "java_tools/src/main/cpp/util/port.h", 227 ], 228 strip_include_prefix = "java_tools", 229 visibility = ["//visibility:public"], 230 deps = [ 231 ":blaze_exit_code", 232 ":errors", 233 ":filesystem", 234 ":md5", 235 ":numbers", 236 ":port", 237 ":strings", 238 ], 239) 240 241cc_library( 242 name = "md5", 243 srcs = ["java_tools/src/main/cpp/util/md5.cc"], 244 hdrs = ["java_tools/src/main/cpp/util/md5.h"], 245 strip_include_prefix = "java_tools", 246) 247 248cc_library( 249 name = "numbers", 250 srcs = ["java_tools/src/main/cpp/util/numbers.cc"], 251 hdrs = ["java_tools/src/main/cpp/util/numbers.h"], 252 strip_include_prefix = "java_tools", 253 deps = [":strings"], 254) 255 256cc_library( 257 name = "filesystem", 258 srcs = [ 259 "java_tools/src/main/cpp/util/file.cc", 260 "java_tools/src/main/cpp/util/path.cc", 261 ] + select({ 262 ":windows": [ 263 "java_tools/src/main/cpp/util/file_windows.cc", 264 "java_tools/src/main/cpp/util/path_windows.cc", 265 ], 266 "//conditions:default": [ 267 "java_tools/src/main/cpp/util/file_posix.cc", 268 "java_tools/src/main/cpp/util/path_posix.cc", 269 ], 270 }), 271 hdrs = [ 272 "java_tools/src/main/cpp/util/file.h", 273 "java_tools/src/main/cpp/util/file_platform.h", 274 "java_tools/src/main/cpp/util/path.h", 275 "java_tools/src/main/cpp/util/path_platform.h", 276 ], 277 strip_include_prefix = "java_tools", 278 deps = [ 279 ":blaze_exit_code", 280 ":errors", 281 ":logging", 282 ":strings", 283 ] + select({ 284 ":windows": [":lib-file"], 285 "//conditions:default": [], 286 }), 287) 288 289cc_library( 290 name = "lib-file", 291 srcs = [ 292 "java_tools/src/main/native/windows/file.cc", 293 "java_tools/src/main/native/windows/util.cc", 294 ], 295 hdrs = [ 296 "java_tools/src/main/native/windows/file.h", 297 "java_tools/src/main/native/windows/util.h", 298 ], 299 linkopts = [ 300 "-DEFAULTLIB:advapi32.lib", 301 ], 302 strip_include_prefix = "java_tools", 303) 304 305cc_library( 306 name = "errors", 307 srcs = select({ 308 ":windows": ["java_tools/src/main/cpp/util/errors_windows.cc"], 309 "//conditions:default": ["java_tools/src/main/cpp/util/errors_posix.cc"], 310 }), 311 hdrs = ["java_tools/src/main/cpp/util/errors.h"], 312 strip_include_prefix = "java_tools", 313 deps = [ 314 ":logging", 315 ":port", 316 ":strings", 317 ], 318) 319 320cc_library( 321 name = "strings", 322 srcs = ["java_tools/src/main/cpp/util/strings.cc"], 323 hdrs = ["java_tools/src/main/cpp/util/strings.h"], 324 copts = SUPRESSED_WARNINGS, 325 # Automatically propagate the symbol definition to rules depending on this. 326 defines = [ 327 "BLAZE_OPENSOURCE", 328 ], 329 strip_include_prefix = "java_tools", 330 deps = [":blaze_exit_code"], 331) 332 333cc_library( 334 name = "blaze_exit_code", 335 hdrs = ["java_tools/src/main/cpp/util/exit_code.h"], 336 copts = SUPRESSED_WARNINGS, 337 strip_include_prefix = "java_tools", 338) 339 340cc_library( 341 name = "port", 342 srcs = ["java_tools/src/main/cpp/util/port.cc"], 343 hdrs = ["java_tools/src/main/cpp/util/port.h"], 344 copts = SUPRESSED_WARNINGS, 345 strip_include_prefix = "java_tools", 346) 347 348cc_library( 349 name = "logging", 350 srcs = ["java_tools/src/main/cpp/util/logging.cc"], 351 hdrs = ["java_tools/src/main/cpp/util/logging.h"], 352 copts = SUPRESSED_WARNINGS, 353 strip_include_prefix = "java_tools", 354 deps = [ 355 ":blaze_exit_code", 356 ":strings", 357 ], 358) 359 360cc_library( 361 name = "zlib_client", 362 srcs = ["java_tools/ijar/zlib_client.cc"], 363 hdrs = [ 364 "java_tools/ijar/common.h", 365 "java_tools/ijar/zlib_client.h", 366 ], 367 copts = SUPRESSED_WARNINGS, 368 include_prefix = "third_party", 369 strip_include_prefix = "java_tools", 370 deps = ["//java_tools/zlib"], 371) 372 373##################### singlejar 374 375# See comment for ":ijar_cc_binary_main". 376cc_library( 377 name = "singlejar_cc_bin_main", 378 srcs = [ 379 "java_tools/src/tools/singlejar/singlejar_main.cc", 380 ], 381 copts = SUPRESSED_WARNINGS, 382 linkopts = select({ 383 ":freebsd": ["-lm"], 384 ":openbsd": ["-lm"], 385 "//conditions:default": [], 386 }), 387 linkstatic = 1, # provides main() 388 deps = [ 389 ":combiners", 390 ":diag", 391 ":options", 392 ":output_jar", 393 "//java_tools/zlib", 394 ], 395 alwayslink = 1, 396) 397 398cc_binary( 399 name = "singlejar_cc_bin", 400 linkstatic = 1, 401 visibility = ["//visibility:public"], 402 deps = [":singlejar_cc_bin_main"], 403) 404 405cc_binary( 406 name = "singlejar_local", 407 srcs = [ 408 "java_tools/src/tools/singlejar/singlejar_local_main.cc", 409 ], 410 copts = SUPRESSED_WARNINGS, 411 linkopts = select({ 412 ":freebsd": ["-lm"], 413 ":openbsd": ["-lm"], 414 "//conditions:default": [], 415 }), 416 linkstatic = 1, 417 visibility = ["//visibility:public"], 418 deps = [ 419 ":combiners", 420 ":desugar_checking", 421 ":options", 422 ":output_jar", 423 "//java_tools/zlib", 424 ], 425) 426 427cc_library( 428 name = "combiners", 429 srcs = [ 430 "java_tools/src/tools/singlejar/combiners.cc", 431 ], 432 hdrs = [ 433 "java_tools/src/tools/singlejar/combiners.h", 434 ":transient_bytes", 435 ], 436 copts = SUPRESSED_WARNINGS, 437 strip_include_prefix = "java_tools", 438 deps = [ 439 "//java_tools/zlib", 440 ], 441) 442 443proto_library( 444 name = "desugar_deps_proto", 445 srcs = ["java_tools/src/main/protobuf/desugar_deps.proto"], 446) 447 448cc_proto_library( 449 name = "desugar_deps_cc_proto", 450 deps = [":desugar_deps_proto"], 451) 452 453cc_library( 454 name = "desugar_checking", 455 srcs = ["java_tools/src/tools/singlejar/desugar_checking.cc"], 456 hdrs = ["java_tools/src/tools/singlejar/desugar_checking.h"], 457 copts = SUPRESSED_WARNINGS, 458 strip_include_prefix = "java_tools", 459 deps = [ 460 ":combiners", 461 ":desugar_deps_cc_proto", 462 ], 463) 464 465cc_library( 466 name = "diag", 467 hdrs = ["java_tools/src/tools/singlejar/diag.h"], 468 copts = SUPRESSED_WARNINGS, 469 strip_include_prefix = "java_tools", 470 visibility = ["//visibility:private"], 471) 472 473cc_library( 474 name = "singlejar_port", 475 hdrs = ["java_tools/src/tools/singlejar/port.h"], 476 copts = SUPRESSED_WARNINGS, 477 strip_include_prefix = "java_tools", 478 visibility = ["//visibility:private"], 479) 480 481cc_library( 482 name = "mapped_file", 483 srcs = ["java_tools/src/tools/singlejar/mapped_file.cc"], 484 hdrs = ["java_tools/src/tools/singlejar/mapped_file.h"] + 485 select({ 486 ":windows": ["java_tools/src/tools/singlejar/mapped_file_windows.inc"], 487 "//conditions:default": ["java_tools/src/tools/singlejar/mapped_file_posix.inc"], 488 }), 489 copts = SUPRESSED_WARNINGS, 490 strip_include_prefix = "java_tools", 491 visibility = ["//visibility:private"], 492 deps = [ 493 ":cpp_util", 494 ":diag", 495 ":singlejar_port", 496 ], 497) 498 499cc_library( 500 name = "input_jar", 501 srcs = [ 502 "java_tools/src/tools/singlejar/input_jar.cc", 503 ], 504 hdrs = [ 505 "java_tools/src/tools/singlejar/input_jar.h", 506 "java_tools/src/tools/singlejar/zip_headers.h", 507 ], 508 copts = SUPRESSED_WARNINGS, 509 strip_include_prefix = "java_tools", 510 deps = [ 511 ":diag", 512 ":mapped_file", 513 ], 514) 515 516cc_library( 517 name = "options", 518 srcs = [ 519 "java_tools/src/tools/singlejar/options.cc", 520 "java_tools/src/tools/singlejar/options.h", 521 ], 522 hdrs = ["java_tools/src/tools/singlejar/options.h"], 523 copts = SUPRESSED_WARNINGS, 524 strip_include_prefix = "java_tools", 525 deps = [ 526 ":diag", 527 ":token_stream", 528 ], 529) 530 531cc_library( 532 name = "output_jar", 533 srcs = [ 534 "java_tools/src/tools/singlejar/output_jar.cc", 535 "java_tools/src/tools/singlejar/output_jar.h", 536 ":zip_headers", 537 ], 538 hdrs = ["java_tools/src/tools/singlejar/output_jar.h"], 539 copts = SUPRESSED_WARNINGS, 540 strip_include_prefix = "java_tools", 541 deps = [ 542 ":combiners", 543 ":cpp_util", 544 ":diag", 545 ":input_jar", 546 ":mapped_file", 547 ":options", 548 ":singlejar_port", 549 "//java_tools/zlib", 550 ], 551) 552 553cc_library( 554 name = "token_stream", 555 hdrs = ["java_tools/src/tools/singlejar/token_stream.h"], 556 copts = SUPRESSED_WARNINGS, 557 strip_include_prefix = "java_tools", 558 deps = [ 559 ":diag", 560 ":filesystem", 561 ], 562) 563 564filegroup( 565 name = "transient_bytes", 566 srcs = [ 567 "java_tools/src/tools/singlejar/diag.h", 568 "java_tools/src/tools/singlejar/transient_bytes.h", 569 "java_tools/src/tools/singlejar/zlib_interface.h", 570 ":zip_headers", 571 ], 572) 573 574filegroup( 575 name = "zip_headers", 576 srcs = ["java_tools/src/tools/singlejar/zip_headers.h"], 577) 578 579################### Proguard ################### 580java_import( 581 name = "proguard_import", 582 jars = ["java_tools/third_party/java/proguard/proguard.jar"], 583) 584 585java_binary( 586 name = "proguard", 587 main_class = "proguard.ProGuard", 588 visibility = ["//visibility:public"], 589 runtime_deps = [":proguard_import"], 590) 591 592##################### one_version 593 594# See comment for ":ijar_cc_binary_main". 595cc_library( 596 name = "one_version_cc_bin_main", 597 srcs = [ 598 "java_tools/src/tools/one_version/one_version_main.cc", 599 ], 600 copts = SUPRESSED_WARNINGS, 601 linkopts = select({ 602 ":freebsd": ["-lm"], 603 ":openbsd": ["-lm"], 604 "//conditions:default": [], 605 }), 606 linkstatic = 1, # provides main() 607 deps = [ 608 ":allowlist", 609 ":duplicate_class_collector", 610 ":input_jar", 611 ":one_version", 612 ":token_stream", 613 "@com_google_absl//absl/container:flat_hash_map", 614 "@com_google_absl//absl/container:flat_hash_set", 615 "@com_google_absl//absl/log:die_if_null", 616 "@com_google_absl//absl/strings", 617 ], 618 alwayslink = 1, 619) 620 621cc_binary( 622 name = "one_version_cc_bin", 623 linkstatic = 1, 624 visibility = ["//visibility:public"], 625 deps = [":one_version_cc_bin_main"], 626) 627 628cc_library( 629 name = "duplicate_class_collector", 630 srcs = ["java_tools/src/tools/one_version/duplicate_class_collector.cc"], 631 hdrs = ["java_tools/src/tools/one_version/duplicate_class_collector.h"], 632 copts = SUPRESSED_WARNINGS, 633 strip_include_prefix = "java_tools", 634 deps = [ 635 "@com_google_absl//absl/container:flat_hash_map", 636 "@com_google_absl//absl/strings", 637 ], 638) 639 640cc_library( 641 name = "allowlist", 642 srcs = ["java_tools/src/tools/one_version/allowlist.cc"], 643 hdrs = ["java_tools/src/tools/one_version/allowlist.h"], 644 copts = SUPRESSED_WARNINGS, 645 strip_include_prefix = "java_tools", 646 deps = [ 647 ":duplicate_class_collector", 648 "@com_google_absl//absl/container:flat_hash_map", 649 "@com_google_absl//absl/container:flat_hash_set", 650 "@com_google_absl//absl/strings", 651 "@com_google_absl//absl/types:span", 652 ], 653) 654 655cc_library( 656 name = "one_version", 657 srcs = ["java_tools/src/tools/one_version/one_version.cc"], 658 hdrs = ["java_tools/src/tools/one_version/one_version.h"], 659 copts = SUPRESSED_WARNINGS, 660 strip_include_prefix = "java_tools", 661 deps = [ 662 ":allowlist", 663 ":duplicate_class_collector", 664 ":input_jar", 665 "@com_google_absl//absl/log:die_if_null", 666 "@com_google_absl//absl/memory", 667 "@com_google_absl//absl/strings", 668 ], 669) 670