xref: /aosp_15_r20/external/bazelbuild-rules_java/toolchains/BUILD (revision abe8e1b943c923005d847f1e3cf6637de4ed1a1f)
1*abe8e1b9SSadaf Ebrahimiload("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2*abe8e1b9SSadaf Ebrahimiload("@rules_cc//cc:defs.bzl", "cc_library")
3*abe8e1b9SSadaf Ebrahimiload(
4*abe8e1b9SSadaf Ebrahimi    ":default_java_toolchain.bzl",
5*abe8e1b9SSadaf Ebrahimi    "DEFAULT_TOOLCHAIN_CONFIGURATION",
6*abe8e1b9SSadaf Ebrahimi    "PREBUILT_TOOLCHAIN_CONFIGURATION",
7*abe8e1b9SSadaf Ebrahimi    "bootclasspath",
8*abe8e1b9SSadaf Ebrahimi    "default_java_toolchain",
9*abe8e1b9SSadaf Ebrahimi    "java_runtime_files",
10*abe8e1b9SSadaf Ebrahimi)
11*abe8e1b9SSadaf Ebrahimiload(
12*abe8e1b9SSadaf Ebrahimi    ":java_toolchain_alias.bzl",
13*abe8e1b9SSadaf Ebrahimi    "java_host_runtime_alias",
14*abe8e1b9SSadaf Ebrahimi    "java_runtime_alias",
15*abe8e1b9SSadaf Ebrahimi    "java_runtime_version_alias",
16*abe8e1b9SSadaf Ebrahimi    "java_toolchain_alias",
17*abe8e1b9SSadaf Ebrahimi)
18*abe8e1b9SSadaf Ebrahimi
19*abe8e1b9SSadaf Ebrahimipackage(default_visibility = ["//visibility:public"])
20*abe8e1b9SSadaf Ebrahimi
21*abe8e1b9SSadaf Ebrahimilicenses(["notice"])
22*abe8e1b9SSadaf Ebrahimi
23*abe8e1b9SSadaf Ebrahimifilegroup(
24*abe8e1b9SSadaf Ebrahimi    name = "srcs",
25*abe8e1b9SSadaf Ebrahimi    srcs = glob(["**"]),
26*abe8e1b9SSadaf Ebrahimi)
27*abe8e1b9SSadaf Ebrahimi
28*abe8e1b9SSadaf Ebrahimifilegroup(
29*abe8e1b9SSadaf Ebrahimi    name = "bzl_srcs",
30*abe8e1b9SSadaf Ebrahimi    srcs = glob(["*.bzl"]),
31*abe8e1b9SSadaf Ebrahimi)
32*abe8e1b9SSadaf Ebrahimi
33*abe8e1b9SSadaf Ebrahimi# A single binary distribution of a JDK (e.g., OpenJDK 17 for Windows arm64) provides three
34*abe8e1b9SSadaf Ebrahimi# different types of toolchains from the perspective of Bazel:
35*abe8e1b9SSadaf Ebrahimi
36*abe8e1b9SSadaf Ebrahimi# The compilation toolchain, which provides the Java runtime used to execute the Java compiler, as
37*abe8e1b9SSadaf Ebrahimi# well as various helper tools and settings.
38*abe8e1b9SSadaf Ebrahimi#
39*abe8e1b9SSadaf Ebrahimi# Toolchains of this type typically have constraints on the execution platform so that their Java
40*abe8e1b9SSadaf Ebrahimi# runtime can run the compiler, but not on the target platform as Java compilation outputs are
41*abe8e1b9SSadaf Ebrahimi# platform independent.
42*abe8e1b9SSadaf Ebrahimi#
43*abe8e1b9SSadaf Ebrahimi# Obtain the associated JavaToolchainInfo via:
44*abe8e1b9SSadaf Ebrahimi#   ctx.toolchains["@bazel_tools//tools/jdk:toolchain_type"].java
45*abe8e1b9SSadaf Ebrahimi# TODO: migrate away from using @bazel_tools//tools/jdk:toolchain_type ?
46*abe8e1b9SSadaf Ebrahimi# toolchain_type(name = "toolchain_type")
47*abe8e1b9SSadaf Ebrahimi
48*abe8e1b9SSadaf Ebrahimi# The Java runtime that executable Java compilation outputs (e.g., java_binary with
49*abe8e1b9SSadaf Ebrahimi# create_executable = True) will run on.
50*abe8e1b9SSadaf Ebrahimi#
51*abe8e1b9SSadaf Ebrahimi# Toolchains of this type typically have constraints on the target platform so that the runtime's
52*abe8e1b9SSadaf Ebrahimi# native 'java' binary can be run there, but not on the execution platform as building an executable
53*abe8e1b9SSadaf Ebrahimi# Java target only requires copying or symlinking the runtime, which can be done on any platform.
54*abe8e1b9SSadaf Ebrahimi#
55*abe8e1b9SSadaf Ebrahimi# Obtain the associated JavaRuntimeInfo via:
56*abe8e1b9SSadaf Ebrahimi#   ctx.toolchains["@bazel_tools//tools/jdk:runtime_toolchain_type"].java_runtime
57*abe8e1b9SSadaf Ebrahimi# TODO: migrate away from using @bazel_tools//tools/jdk:runtime_toolchain_type ?
58*abe8e1b9SSadaf Ebrahimi# toolchain_type(name = "runtime_toolchain_type")
59*abe8e1b9SSadaf Ebrahimi
60*abe8e1b9SSadaf Ebrahimi# The Java runtime to extract the bootclasspath from that is then used to compile Java sources.
61*abe8e1b9SSadaf Ebrahimi#
62*abe8e1b9SSadaf Ebrahimi# As the bootclasspath is platform independent, toolchains of this type may have no constraints.
63*abe8e1b9SSadaf Ebrahimi# Purely as an optimization to prevent unnecessary fetches of remote runtimes for other
64*abe8e1b9SSadaf Ebrahimi# architectures, toolchains of this type may have constraints on the execution platform that match
65*abe8e1b9SSadaf Ebrahimi# those on the corresponding compilation toolchain.
66*abe8e1b9SSadaf Ebrahimi#
67*abe8e1b9SSadaf Ebrahimi# Toolchains of this type are only consumed internally by the bootclasspath rule and should not be
68*abe8e1b9SSadaf Ebrahimi# accessed from Starlark.
69*abe8e1b9SSadaf Ebrahimi# TODO: migrate away from using @bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type ?
70*abe8e1b9SSadaf Ebrahimi# toolchain_type(name = "bootstrap_runtime_toolchain_type")
71*abe8e1b9SSadaf Ebrahimi
72*abe8e1b9SSadaf Ebrahimi# Points to toolchain[":runtime_toolchain_type"] (was :legacy_current_java_runtime)
73*abe8e1b9SSadaf Ebrahimijava_runtime_alias(name = "current_java_runtime")
74*abe8e1b9SSadaf Ebrahimi
75*abe8e1b9SSadaf Ebrahimi# Host configuration of ":current_java_runtime"
76*abe8e1b9SSadaf Ebrahimijava_host_runtime_alias(name = "current_host_java_runtime")
77*abe8e1b9SSadaf Ebrahimi
78*abe8e1b9SSadaf Ebrahimi# Points to toolchain[":toolchain_type"] (was :legacy_current_java_toolchain)
79*abe8e1b9SSadaf Ebrahimijava_toolchain_alias(name = "current_java_toolchain")
80*abe8e1b9SSadaf Ebrahimi
81*abe8e1b9SSadaf Ebrahimi# These individual jni_* targets are exposed for legacy reasons.
82*abe8e1b9SSadaf Ebrahimi# Most users should depend on :jni.
83*abe8e1b9SSadaf Ebrahimi
84*abe8e1b9SSadaf Ebrahimijava_runtime_files(
85*abe8e1b9SSadaf Ebrahimi    name = "jni_header",
86*abe8e1b9SSadaf Ebrahimi    srcs = ["include/jni.h"],
87*abe8e1b9SSadaf Ebrahimi)
88*abe8e1b9SSadaf Ebrahimi
89*abe8e1b9SSadaf Ebrahimijava_runtime_files(
90*abe8e1b9SSadaf Ebrahimi    name = "jni_md_header-darwin",
91*abe8e1b9SSadaf Ebrahimi    srcs = ["include/darwin/jni_md.h"],
92*abe8e1b9SSadaf Ebrahimi)
93*abe8e1b9SSadaf Ebrahimi
94*abe8e1b9SSadaf Ebrahimijava_runtime_files(
95*abe8e1b9SSadaf Ebrahimi    name = "jni_md_header-linux",
96*abe8e1b9SSadaf Ebrahimi    srcs = ["include/linux/jni_md.h"],
97*abe8e1b9SSadaf Ebrahimi)
98*abe8e1b9SSadaf Ebrahimi
99*abe8e1b9SSadaf Ebrahimijava_runtime_files(
100*abe8e1b9SSadaf Ebrahimi    name = "jni_md_header-windows",
101*abe8e1b9SSadaf Ebrahimi    srcs = ["include/win32/jni_md.h"],
102*abe8e1b9SSadaf Ebrahimi)
103*abe8e1b9SSadaf Ebrahimi
104*abe8e1b9SSadaf Ebrahimijava_runtime_files(
105*abe8e1b9SSadaf Ebrahimi    name = "jni_md_header-freebsd",
106*abe8e1b9SSadaf Ebrahimi    srcs = ["include/freebsd/jni_md.h"],
107*abe8e1b9SSadaf Ebrahimi)
108*abe8e1b9SSadaf Ebrahimi
109*abe8e1b9SSadaf Ebrahimijava_runtime_files(
110*abe8e1b9SSadaf Ebrahimi    name = "jni_md_header-openbsd",
111*abe8e1b9SSadaf Ebrahimi    srcs = ["include/openbsd/jni_md.h"],
112*abe8e1b9SSadaf Ebrahimi)
113*abe8e1b9SSadaf Ebrahimi
114*abe8e1b9SSadaf Ebrahimi# The Java native interface. Depend on this package if you #include <jni.h>.
115*abe8e1b9SSadaf Ebrahimi#
116*abe8e1b9SSadaf Ebrahimi# See test_jni in third_party/bazel/src/test/shell/bazel/bazel_java_test.sh for
117*abe8e1b9SSadaf Ebrahimi# an example of using Bazel to build a Java program that calls a C function.
118*abe8e1b9SSadaf Ebrahimi#
119*abe8e1b9SSadaf Ebrahimi# TODO(ilist): use //src:condition:linux when released in Bazel
120*abe8e1b9SSadaf Ebrahimicc_library(
121*abe8e1b9SSadaf Ebrahimi    name = "jni",
122*abe8e1b9SSadaf Ebrahimi    hdrs = [":jni_header"] + select({
123*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin": [":jni_md_header-darwin"],
124*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:freebsd": [":jni_md_header-freebsd"],
125*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_aarch64": [":jni_md_header-linux"],
126*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_mips64": [":jni_md_header-linux"],
127*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_ppc64le": [":jni_md_header-linux"],
128*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_riscv64": [":jni_md_header-linux"],
129*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_s390x": [":jni_md_header-linux"],
130*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": [":jni_md_header-linux"],
131*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:openbsd": [":jni_md_header-openbsd"],
132*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": [":jni_md_header-windows"],
133*abe8e1b9SSadaf Ebrahimi        "//conditions:default": [],
134*abe8e1b9SSadaf Ebrahimi    }),
135*abe8e1b9SSadaf Ebrahimi    includes = ["include"] + select({
136*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin": ["include/darwin"],
137*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:freebsd": ["include/freebsd"],
138*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_aarch64": ["include/linux"],
139*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_mips64": [":include/linux"],
140*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_ppc64le": ["include/linux"],
141*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_riscv64": [":include/linux"],
142*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_s390x": ["include/linux"],
143*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ["include/linux"],
144*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:openbsd": ["include/openbsd"],
145*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ["include/win32"],
146*abe8e1b9SSadaf Ebrahimi        "//conditions:default": [],
147*abe8e1b9SSadaf Ebrahimi    }),
148*abe8e1b9SSadaf Ebrahimi    tags = ["nobuilder"],
149*abe8e1b9SSadaf Ebrahimi)
150*abe8e1b9SSadaf Ebrahimi
151*abe8e1b9SSadaf Ebrahimi[
152*abe8e1b9SSadaf Ebrahimi    (
153*abe8e1b9SSadaf Ebrahimi        alias(
154*abe8e1b9SSadaf Ebrahimi            name = "ijar_prebuilt_binary_%s" % OS,
155*abe8e1b9SSadaf Ebrahimi            actual = "@remote_java_tools_%s//:ijar_prebuilt_binary" % OS,
156*abe8e1b9SSadaf Ebrahimi            visibility = ["//visibility:private"],
157*abe8e1b9SSadaf Ebrahimi        ),
158*abe8e1b9SSadaf Ebrahimi        alias(
159*abe8e1b9SSadaf Ebrahimi            name = "prebuilt_singlejar_%s" % OS,
160*abe8e1b9SSadaf Ebrahimi            actual = "@remote_java_tools_%s//:prebuilt_singlejar" % OS,
161*abe8e1b9SSadaf Ebrahimi            visibility = ["//visibility:private"],
162*abe8e1b9SSadaf Ebrahimi        ),
163*abe8e1b9SSadaf Ebrahimi        alias(
164*abe8e1b9SSadaf Ebrahimi            name = "turbine_direct_graal_%s" % OS,
165*abe8e1b9SSadaf Ebrahimi            actual = "@remote_java_tools_%s//:turbine_direct_graal" % OS,
166*abe8e1b9SSadaf Ebrahimi        ),
167*abe8e1b9SSadaf Ebrahimi    )
168*abe8e1b9SSadaf Ebrahimi    for OS in [
169*abe8e1b9SSadaf Ebrahimi        "linux",
170*abe8e1b9SSadaf Ebrahimi        "darwin_x86_64",
171*abe8e1b9SSadaf Ebrahimi        "darwin_arm64",
172*abe8e1b9SSadaf Ebrahimi        "windows",
173*abe8e1b9SSadaf Ebrahimi    ]
174*abe8e1b9SSadaf Ebrahimi]
175*abe8e1b9SSadaf Ebrahimi
176*abe8e1b9SSadaf Ebrahimialias(
177*abe8e1b9SSadaf Ebrahimi    name = "ijar",
178*abe8e1b9SSadaf Ebrahimi    actual = ":ijar_prebuilt_binary_or_cc_binary",
179*abe8e1b9SSadaf Ebrahimi)
180*abe8e1b9SSadaf Ebrahimi
181*abe8e1b9SSadaf Ebrahimialias(
182*abe8e1b9SSadaf Ebrahimi    name = "ijar_prebuilt_binary_or_cc_binary",
183*abe8e1b9SSadaf Ebrahimi    actual = select({
184*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
185*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
186*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
187*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
188*abe8e1b9SSadaf Ebrahimi        "//conditions:default": "@remote_java_tools//:ijar_cc_binary",
189*abe8e1b9SSadaf Ebrahimi    }),
190*abe8e1b9SSadaf Ebrahimi)
191*abe8e1b9SSadaf Ebrahimi
192*abe8e1b9SSadaf Ebrahimialias(
193*abe8e1b9SSadaf Ebrahimi    name = "ijar_prebuilt_binary",
194*abe8e1b9SSadaf Ebrahimi    actual = select({
195*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
196*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
197*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
198*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
199*abe8e1b9SSadaf Ebrahimi    }),
200*abe8e1b9SSadaf Ebrahimi)
201*abe8e1b9SSadaf Ebrahimi
202*abe8e1b9SSadaf Ebrahimialias(
203*abe8e1b9SSadaf Ebrahimi    name = "singlejar",
204*abe8e1b9SSadaf Ebrahimi    actual = ":singlejar_prebuilt_or_cc_binary",
205*abe8e1b9SSadaf Ebrahimi)
206*abe8e1b9SSadaf Ebrahimi
207*abe8e1b9SSadaf Ebrahimialias(
208*abe8e1b9SSadaf Ebrahimi    name = "singlejar_prebuilt_or_cc_binary",
209*abe8e1b9SSadaf Ebrahimi    actual = select({
210*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
211*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
212*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
213*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
214*abe8e1b9SSadaf Ebrahimi        "//conditions:default": "@remote_java_tools//:singlejar_cc_bin",
215*abe8e1b9SSadaf Ebrahimi    }),
216*abe8e1b9SSadaf Ebrahimi)
217*abe8e1b9SSadaf Ebrahimi
218*abe8e1b9SSadaf Ebrahimialias(
219*abe8e1b9SSadaf Ebrahimi    name = "prebuilt_singlejar",
220*abe8e1b9SSadaf Ebrahimi    actual = select({
221*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
222*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
223*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
224*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
225*abe8e1b9SSadaf Ebrahimi    }),
226*abe8e1b9SSadaf Ebrahimi)
227*abe8e1b9SSadaf Ebrahimi
228*abe8e1b9SSadaf Ebrahimialias(
229*abe8e1b9SSadaf Ebrahimi    name = "turbine_direct",
230*abe8e1b9SSadaf Ebrahimi    actual = ":turbine_direct_graal_or_java",
231*abe8e1b9SSadaf Ebrahimi)
232*abe8e1b9SSadaf Ebrahimi
233*abe8e1b9SSadaf Ebrahimialias(
234*abe8e1b9SSadaf Ebrahimi    name = "turbine_direct_graal_or_java",
235*abe8e1b9SSadaf Ebrahimi    actual = select({
236*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":turbine_direct_graal_darwin_arm64",
237*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":turbine_direct_graal_darwin_x86_64",
238*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":turbine_direct_graal_linux",
239*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":turbine_direct_graal_windows",
240*abe8e1b9SSadaf Ebrahimi        "//conditions:default": "@remote_java_tools//:TurbineDirect",
241*abe8e1b9SSadaf Ebrahimi    }),
242*abe8e1b9SSadaf Ebrahimi)
243*abe8e1b9SSadaf Ebrahimi
244*abe8e1b9SSadaf Ebrahimialias(
245*abe8e1b9SSadaf Ebrahimi    name = "turbine_direct_graal",
246*abe8e1b9SSadaf Ebrahimi    actual = select({
247*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_arm64": ":turbine_direct_graal_darwin_arm64",
248*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:darwin_x86_64": ":turbine_direct_graal_darwin_x86_64",
249*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:linux_x86_64": ":turbine_direct_graal_linux",
250*abe8e1b9SSadaf Ebrahimi        "@bazel_tools//src/conditions:windows": ":turbine_direct_graal_windows",
251*abe8e1b9SSadaf Ebrahimi    }),
252*abe8e1b9SSadaf Ebrahimi)
253*abe8e1b9SSadaf Ebrahimi
254*abe8e1b9SSadaf Ebrahimibootclasspath(
255*abe8e1b9SSadaf Ebrahimi    name = "platformclasspath",
256*abe8e1b9SSadaf Ebrahimi    src = "DumpPlatformClassPath.java",
257*abe8e1b9SSadaf Ebrahimi    java_runtime_alias = ":current_java_runtime",
258*abe8e1b9SSadaf Ebrahimi)
259*abe8e1b9SSadaf Ebrahimi
260*abe8e1b9SSadaf Ebrahimidefault_java_toolchain(
261*abe8e1b9SSadaf Ebrahimi    name = "toolchain",
262*abe8e1b9SSadaf Ebrahimi    configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
263*abe8e1b9SSadaf Ebrahimi    toolchain_definition = False,
264*abe8e1b9SSadaf Ebrahimi)
265*abe8e1b9SSadaf Ebrahimi
266*abe8e1b9SSadaf Ebrahimialias(
267*abe8e1b9SSadaf Ebrahimi    name = "remote_toolchain",
268*abe8e1b9SSadaf Ebrahimi    actual = ":toolchain",
269*abe8e1b9SSadaf Ebrahimi)
270*abe8e1b9SSadaf Ebrahimi
271*abe8e1b9SSadaf EbrahimiRELEASES = (8, 9, 10, 11, 17, 21)
272*abe8e1b9SSadaf Ebrahimi
273*abe8e1b9SSadaf Ebrahimi[
274*abe8e1b9SSadaf Ebrahimi    default_java_toolchain(
275*abe8e1b9SSadaf Ebrahimi        name = ("toolchain_java%d" if release <= 11 else "toolchain_jdk_%d") % release,
276*abe8e1b9SSadaf Ebrahimi        configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
277*abe8e1b9SSadaf Ebrahimi        source_version = "%s" % release,
278*abe8e1b9SSadaf Ebrahimi        target_version = "%s" % release,
279*abe8e1b9SSadaf Ebrahimi    )
280*abe8e1b9SSadaf Ebrahimi    for release in RELEASES
281*abe8e1b9SSadaf Ebrahimi]
282*abe8e1b9SSadaf Ebrahimi
283*abe8e1b9SSadaf Ebrahimidefault_java_toolchain(
284*abe8e1b9SSadaf Ebrahimi    name = "prebuilt_toolchain",
285*abe8e1b9SSadaf Ebrahimi    configuration = PREBUILT_TOOLCHAIN_CONFIGURATION,
286*abe8e1b9SSadaf Ebrahimi    toolchain_definition = False,
287*abe8e1b9SSadaf Ebrahimi)
288*abe8e1b9SSadaf Ebrahimi
289*abe8e1b9SSadaf Ebrahimi# A JDK 11 for use as a --host_javabase.
290*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
291*abe8e1b9SSadaf Ebrahimi    name = "remote_jdk11",
292*abe8e1b9SSadaf Ebrahimi    runtime_version = "remotejdk_11",
293*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
294*abe8e1b9SSadaf Ebrahimi)
295*abe8e1b9SSadaf Ebrahimi
296*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
297*abe8e1b9SSadaf Ebrahimi    name = "remotejdk_15",
298*abe8e1b9SSadaf Ebrahimi    runtime_version = "remotejdk_15",
299*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
300*abe8e1b9SSadaf Ebrahimi)
301*abe8e1b9SSadaf Ebrahimi
302*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
303*abe8e1b9SSadaf Ebrahimi    name = "remotejdk_16",
304*abe8e1b9SSadaf Ebrahimi    runtime_version = "remotejdk_16",
305*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
306*abe8e1b9SSadaf Ebrahimi)
307*abe8e1b9SSadaf Ebrahimi
308*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
309*abe8e1b9SSadaf Ebrahimi    name = "remotejdk_17",
310*abe8e1b9SSadaf Ebrahimi    runtime_version = "remotejdk_17",
311*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
312*abe8e1b9SSadaf Ebrahimi)
313*abe8e1b9SSadaf Ebrahimi
314*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
315*abe8e1b9SSadaf Ebrahimi    name = "remotejdk_21",
316*abe8e1b9SSadaf Ebrahimi    runtime_version = "remotejdk_21",
317*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
318*abe8e1b9SSadaf Ebrahimi)
319*abe8e1b9SSadaf Ebrahimi
320*abe8e1b9SSadaf Ebrahimijava_runtime_version_alias(
321*abe8e1b9SSadaf Ebrahimi    name = "jdk_8",
322*abe8e1b9SSadaf Ebrahimi    runtime_version = "8",
323*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
324*abe8e1b9SSadaf Ebrahimi)
325*abe8e1b9SSadaf Ebrahimi
326*abe8e1b9SSadaf Ebrahimibzl_library(
327*abe8e1b9SSadaf Ebrahimi    name = "toolchain_utils",
328*abe8e1b9SSadaf Ebrahimi    srcs = ["toolchain_utils.bzl"],
329*abe8e1b9SSadaf Ebrahimi    visibility = ["//visibility:public"],
330*abe8e1b9SSadaf Ebrahimi    deps = ["//java/common"],
331*abe8e1b9SSadaf Ebrahimi)
332