blob: 41b56c30798f1d3b9e8ff0852f07a973e72ef964 [file] [log] [blame]
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"],
)