| package(default_visibility = ["//visibility:public"]) |
| |
| load("@rules_java//java:defs.bzl", "java_import") |
| load("@rules_python//python:defs.bzl", "py_binary", "py_test") |
| load(":launcher_flag_alias.bzl", "launcher_flag_alias") |
| |
| exports_files([ |
| "BUILD.java_tools", |
| "java_stub_template.txt", |
| ]) |
| |
| # A single binary distribution of a JDK (e.g., OpenJDK 17 for Windows arm64) provides three |
| # different types of toolchains from the perspective of Bazel: |
| |
| # The compilation toolchain, which provides the Java runtime used to execute the Java compiler, as |
| # well as various helper tools and settings. |
| # |
| # Toolchains of this type typically have constraints on the execution platform so that their Java |
| # runtime can run the compiler, but not on the target platform as Java compilation outputs are |
| # platform independent. |
| # |
| # Obtain the associated JavaToolchainInfo via: |
| # ctx.toolchains["@bazel_tools//tools/jdk:toolchain_type"].java |
| toolchain_type(name = "toolchain_type") |
| |
| # The Java runtime that executable Java compilation outputs (e.g., java_binary with |
| # create_executable = True) will run on. |
| # |
| # Toolchains of this type typically have constraints on the target platform so that the runtime's |
| # native 'java' binary can be run there, but not on the execution platform as building an executable |
| # Java target only requires copying or symlinking the runtime, which can be done on any platform. |
| # |
| # Obtain the associated JavaRuntimeInfo via: |
| # ctx.toolchains["@bazel_tools//tools/jdk:runtime_toolchain_type"].java_runtime |
| toolchain_type(name = "runtime_toolchain_type") |
| |
| # The Java runtime to extract the bootclasspath from that is then used to compile Java sources. |
| # |
| # As the bootclasspath is platform independent, toolchains of this type may have no constraints. |
| # Purely as an optimization to prevent unnecessary fetches of remote runtimes for other |
| # architectures, toolchains of this type may have constraints on the execution platform that match |
| # those on the corresponding compilation toolchain. |
| # |
| # Toolchains of this type are only consumed internally by the bootclasspath rule and should not be |
| # accessed from Starlark. |
| toolchain_type(name = "bootstrap_runtime_toolchain_type") |
| |
| # Aliases value of --plugins flag as a JavaPluginInfo |
| java_plugins_flag_alias( |
| name = "java_plugins_flag_alias", |
| ) |
| |
| alias( |
| name = "genclass", |
| actual = "@remote_java_tools//:GenClass", |
| ) |
| |
| alias( |
| name = "GenClass_deploy.jar", |
| actual = "@remote_java_tools//:GenClass", |
| ) |
| |
| alias( |
| name = "turbine_direct", |
| actual = "@remote_java_tools//:TurbineDirect", |
| ) |
| |
| alias( |
| name = "turbine_direct_binary_deploy.jar", |
| actual = "@remote_java_tools//:TurbineDirect", |
| ) |
| |
| alias( |
| name = "javabuilder", |
| actual = "@remote_java_tools//:JavaBuilder", |
| ) |
| |
| alias( |
| name = "JavaBuilder_deploy.jar", |
| actual = "@remote_java_tools//:JavaBuilder", |
| ) |
| |
| alias( |
| name = "vanillajavabuilder", |
| actual = "@remote_java_tools//:VanillaJavaBuilder", |
| ) |
| |
| alias( |
| name = "JacocoCoverageRunner", |
| actual = "@remote_java_tools//:jacoco_coverage_runner", |
| ) |
| |
| alias( |
| name = "JacocoCoverage", |
| actual = "@remote_java_tools//:jacoco_coverage_runner", |
| ) |
| |
| java_import( |
| name = "TestRunner", |
| jars = ["@remote_java_tools//:Runner"], |
| ) |
| |
| alias( |
| name = "TestRunner_deploy.jar", |
| actual = "@remote_java_tools//:Runner", |
| ) |
| |
| alias( |
| name = "proguard", |
| actual = "@remote_java_tools//:proguard", |
| ) |
| |
| alias( |
| name = "jre", |
| actual = "@local_jdk//:jre", |
| ) |
| |
| alias( |
| name = "jdk", |
| actual = "@local_jdk//:jdk", |
| ) |
| |
| alias( |
| name = "host_jdk", |
| actual = ":remote_jdk11", |
| ) |
| |
| filegroup( |
| name = "bzl_srcs", |
| srcs = glob(["*.bzl"]) + ["@rules_java//toolchains:bzl_srcs"], |
| visibility = ["//tools:__pkg__"], |
| ) |
| |
| # TODO(cushon): Delete this alias in the fullness of time. |
| alias( |
| name = "proguard_whitelister", |
| actual = ":proguard_allowlister", |
| ) |
| |
| py_binary( |
| name = "proguard_allowlister", |
| srcs = [ |
| "proguard_allowlister.py", |
| ], |
| ) |
| |
| py_test( |
| name = "proguard_allowlister_test", |
| srcs = ["proguard_allowlister_test.py"], |
| data = ["proguard_allowlister_test_input.pgcfg"], |
| deps = [ |
| ":proguard_allowlister", |
| ], |
| ) |
| |
| #### Aliases to rules_java to keep backward-compatibility (begin) #### |
| |
| TARGET_NAMES = [ |
| "java_runtime_alias", |
| "current_host_java_runtime", |
| "current_java_runtime", |
| "current_java_toolchain", |
| "jni", |
| "jni_header", |
| "jni_md_header-darwin", |
| "jni_md_header-freebsd", |
| "jni_md_header-linux", |
| "jni_md_header-openbsd", |
| "jni_md_header-windows", |
| "platformclasspath", |
| "remote_jdk11", |
| "remotejdk_17", |
| "remote_toolchain", |
| "ijar", |
| "singlejar", |
| "toolchain", |
| ] + [ |
| "toolchain_java%d" % version |
| for version in (8, 9, 10, 11) |
| ] + [ |
| "toolchain_java%d_definition" % version |
| for version in (8, 9, 10, 11) |
| ] + [ |
| "toolchain_jdk_%d" % version |
| for version in (14, 15, 16, 17, 21) |
| ] + [ |
| "toolchain_jdk_%d_definition" % version |
| for version in (14, 15, 16, 17, 21) |
| ] |
| |
| [ |
| alias( |
| name = name, |
| actual = "@rules_java//toolchains:" + name, |
| ) |
| for name in TARGET_NAMES |
| ] |
| |
| #### Aliases to rules_java to keep backward-compatibility (end) #### |
| |
| # TODO(b/295221112): replace this with Starlark label_flag (or an alias resolving to either java_launcher or host_java_launcher flag) |
| launcher_flag_alias( |
| name = "launcher_flag_alias", |
| visibility = ["//visibility:public"], |
| ) |