blob: 904f1077f651f6d6b8013abb70dac1fa3e2568d1 [file] [log] [blame]
load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "BASE_JDK9_JVM_OPTS", "default_java_toolchain")
package(default_visibility = ["//visibility:public"])
java_runtime(
name = "jdk17_runtime",
srcs = select({
"@platforms//os:macos": glob(["mac/**"]),
"@platforms//os:windows": glob(["win/**"]),
"@platforms//os:linux": glob(["linux/**"]),
}),
java_home = select({
"@platforms//os:macos": "mac/Contents/Home",
"@platforms//os:windows": "win",
"@platforms//os:linux": "linux",
}),
)
# use jdk17 toolchain when '--java_runtime_version=jdk17' flag is provided
config_setting(
name = "jdk17_name_setting",
values = {"java_runtime_version": "jdk17"},
visibility = ["//visibility:private"],
)
toolchain(
name = "java_runtime_toolchain",
target_settings = [":jdk17_name_setting"],
toolchain = ":jdk17_runtime",
toolchain_type = "@bazel_tools//tools/jdk:runtime_toolchain_type",
)
# import minimal options from default_java_toolchain.bzl to avoid --patch-module arguments
# custom javac build hasn't been necessary since JDK 13, and it fails with JDK17
# https://github.com/bazelbuild/bazel/issues/14474#issuecomment-1001071398
JDK17_JVM_OPTS = BASE_JDK9_JVM_OPTS + [
"--add-opens=jdk.compiler/com.sun.tools.javac.platform=ALL-UNNAMED", # for buildjar.ReducedClasspathJavaLibraryBuilder
]
# Commands usefull for for debugging java toolchain issues
# bazel build --verbose_failures --subcommands=pretty_print --toolchain_resolution_debug=java /...
# bazel query //prebuilts/studio/jdk/jdk17:java17_compile_toolchain --output=build
default_java_toolchain(
name = "java17_compile_toolchain",
java_runtime = ":jdk17_runtime",
jvm_opts = JDK17_JVM_OPTS,
source_version = "17",
target_version = "17",
)
filegroup(
name = "jdk17_runtime_files",
srcs = ["BUILD"] + select({
"@platforms//os:macos": glob(["mac/**"]),
"@platforms//os:windows": glob(["win/**"]),
"@platforms//os:linux": glob(["linux/**"]),
}),
)
filegroup(
name = "jdk17_runtime_linux_files",
srcs = glob(["linux/**"]),
visibility = ["//visibility:public"],
)