aboutsummaryrefslogtreecommitdiff
path: root/toolchains/BUILD
diff options
context:
space:
mode:
Diffstat (limited to 'toolchains/BUILD')
-rw-r--r--toolchains/BUILD317
1 files changed, 317 insertions, 0 deletions
diff --git a/toolchains/BUILD b/toolchains/BUILD
new file mode 100644
index 0000000..b8cb35d
--- /dev/null
+++ b/toolchains/BUILD
@@ -0,0 +1,317 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load(
+ ":default_java_toolchain.bzl",
+ "DEFAULT_TOOLCHAIN_CONFIGURATION",
+ "PREBUILT_TOOLCHAIN_CONFIGURATION",
+ "bootclasspath",
+ "default_java_toolchain",
+ "java_runtime_files",
+)
+load(
+ ":java_toolchain_alias.bzl",
+ "java_host_runtime_alias",
+ "java_runtime_alias",
+ "java_runtime_version_alias",
+ "java_toolchain_alias",
+)
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"])
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+filegroup(
+ name = "bzl_srcs",
+ srcs = glob(["*.bzl"]),
+)
+
+# Used to distinguish toolchains used for Java development, ie the JavaToolchainProvider.
+# TODO: migrate away from using @bazel_tools//tools/jdk:toolchain_type ?
+# toolchain_type(name = "toolchain_type")
+
+# Used to distinguish toolchains used for Java execution, ie the JavaRuntimeInfo.
+# TODO: migrate away from using @bazel_tools//tools/jdk:runtime_toolchain_type ?
+# toolchain_type(name = "runtime_toolchain_type")
+
+# Points to toolchain[":runtime_toolchain_type"] (was :legacy_current_java_runtime)
+java_runtime_alias(name = "current_java_runtime")
+
+# Host configuration of ":current_java_runtime"
+java_host_runtime_alias(name = "current_host_java_runtime")
+
+# Points to toolchain[":toolchain_type"] (was :legacy_current_java_toolchain)
+java_toolchain_alias(name = "current_java_toolchain")
+
+# These individual jni_* targets are exposed for legacy reasons.
+# Most users should depend on :jni.
+
+java_runtime_files(
+ name = "jni_header",
+ srcs = ["include/jni.h"],
+)
+
+java_runtime_files(
+ name = "jni_md_header-darwin",
+ srcs = ["include/darwin/jni_md.h"],
+)
+
+java_runtime_files(
+ name = "jni_md_header-linux",
+ srcs = ["include/linux/jni_md.h"],
+)
+
+java_runtime_files(
+ name = "jni_md_header-windows",
+ srcs = ["include/win32/jni_md.h"],
+)
+
+java_runtime_files(
+ name = "jni_md_header-freebsd",
+ srcs = ["include/freebsd/jni_md.h"],
+)
+
+java_runtime_files(
+ name = "jni_md_header-openbsd",
+ srcs = ["include/openbsd/jni_md.h"],
+)
+
+# The Java native interface. Depend on this package if you #include <jni.h>.
+#
+# See test_jni in third_party/bazel/src/test/shell/bazel/bazel_java_test.sh for
+# an example of using Bazel to build a Java program that calls a C function.
+#
+# TODO(ilist): use //src:condition:linux when released in Bazel
+cc_library(
+ name = "jni",
+ hdrs = [":jni_header"] + select({
+ "@bazel_tools//src/conditions:darwin": [":jni_md_header-darwin"],
+ "@bazel_tools//src/conditions:freebsd": [":jni_md_header-freebsd"],
+ "@bazel_tools//src/conditions:linux_aarch64": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:linux_mips64": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:linux_ppc64le": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:linux_riscv64": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:linux_s390x": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:linux_x86_64": [":jni_md_header-linux"],
+ "@bazel_tools//src/conditions:openbsd": [":jni_md_header-openbsd"],
+ "@bazel_tools//src/conditions:windows": [":jni_md_header-windows"],
+ "//conditions:default": [],
+ }),
+ includes = ["include"] + select({
+ "@bazel_tools//src/conditions:darwin": ["include/darwin"],
+ "@bazel_tools//src/conditions:freebsd": ["include/freebsd"],
+ "@bazel_tools//src/conditions:linux_aarch64": ["include/linux"],
+ "@bazel_tools//src/conditions:linux_mips64": [":include/linux"],
+ "@bazel_tools//src/conditions:linux_ppc64le": ["include/linux"],
+ "@bazel_tools//src/conditions:linux_riscv64": [":include/linux"],
+ "@bazel_tools//src/conditions:linux_s390x": ["include/linux"],
+ "@bazel_tools//src/conditions:linux_x86_64": ["include/linux"],
+ "@bazel_tools//src/conditions:openbsd": ["include/openbsd"],
+ "@bazel_tools//src/conditions:windows": ["include/win32"],
+ "//conditions:default": [],
+ }),
+ tags = ["nobuilder"],
+)
+
+[
+ (
+ alias(
+ name = "ijar_prebuilt_binary_%s" % OS,
+ actual = "@remote_java_tools_%s//:ijar_prebuilt_binary" % OS,
+ visibility = ["//visibility:private"],
+ ),
+ alias(
+ name = "prebuilt_singlejar_%s" % OS,
+ actual = "@remote_java_tools_%s//:prebuilt_singlejar" % OS,
+ visibility = ["//visibility:private"],
+ ),
+ )
+ for OS in [
+ "linux",
+ "darwin_x86_64",
+ "darwin_arm64",
+ "windows",
+ ]
+]
+
+# On Windows, executables end in ".exe", but the label we reach it through
+# must be platform-independent. Thus, we create a little filegroup that
+# contains the appropriate platform-dependent file.
+alias(
+ name = "ijar",
+ actual = ":ijar_prebuilt_binary_or_cc_binary",
+)
+
+alias(
+ name = "ijar_prebuilt_binary_or_cc_binary",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
+ "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
+ "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
+ "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
+ "//conditions:default": "@remote_java_tools//:ijar_cc_binary",
+ }),
+)
+
+alias(
+ name = "ijar_prebuilt_binary",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
+ "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
+ "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
+ "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
+ }),
+)
+
+# On Windows, Java implementation of singlejar is used. We create a little
+# filegroup that contains the appropriate platform-dependent file.
+# Once https://github.com/bazelbuild/bazel/issues/2241 is fixed (that is,
+# the native singlejar is used on windows), this file group can be reused since
+# on Windows, executables end in ".exe", but the label we reach it through
+# must be platform-independent.
+alias(
+ name = "singlejar",
+ actual = ":singlejar_prebuilt_or_cc_binary",
+)
+
+alias(
+ name = "singlejar_prebuilt_or_cc_binary",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
+ "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
+ "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
+ "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
+ "//conditions:default": "@remote_java_tools//:singlejar_cc_bin",
+ }),
+)
+
+alias(
+ name = "prebuilt_singlejar",
+ actual = select({
+ "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
+ "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
+ "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
+ "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
+ }),
+)
+
+bootclasspath(
+ name = "platformclasspath",
+ src = "DumpPlatformClassPath.java",
+ host_javabase = ":current_java_runtime",
+ target_javabase = ":current_java_runtime",
+)
+
+default_java_toolchain(
+ name = "toolchain",
+ configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
+ toolchain_definition = False,
+)
+
+alias(
+ name = "remote_toolchain",
+ actual = ":toolchain",
+)
+
+RELEASES = (8, 9, 10, 11)
+
+[
+ default_java_toolchain(
+ name = "toolchain_java%d" % release,
+ configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
+ source_version = "%s" % release,
+ target_version = "%s" % release,
+ )
+ for release in RELEASES
+]
+
+# A toolchain that targets java 14.
+default_java_toolchain(
+ name = "toolchain_jdk_14",
+ configuration = dict(),
+ java_runtime = "//toolchains:remotejdk_14",
+ source_version = "14",
+ target_version = "14",
+)
+
+# A toolchain that targets java 15.
+default_java_toolchain(
+ name = "toolchain_jdk_15",
+ configuration = dict(),
+ java_runtime = "//toolchains:remotejdk_15",
+ source_version = "15",
+ target_version = "15",
+)
+
+# A toolchain that targets java 16.
+default_java_toolchain(
+ name = "toolchain_jdk_16",
+ configuration = dict(),
+ java_runtime = "//toolchains:remotejdk_16",
+ source_version = "16",
+ target_version = "16",
+)
+
+# A toolchain that targets java 17.
+default_java_toolchain(
+ name = "toolchain_jdk_17",
+ configuration = dict(),
+ java_runtime = "//toolchains:remotejdk_17",
+ source_version = "17",
+ target_version = "17",
+)
+
+# A toolchain that targets java 20.
+default_java_toolchain(
+ name = "toolchain_jdk_20",
+ configuration = dict(),
+ java_runtime = "//toolchains:remotejdk_20",
+ source_version = "20",
+ target_version = "20",
+)
+
+default_java_toolchain(
+ name = "prebuilt_toolchain",
+ configuration = PREBUILT_TOOLCHAIN_CONFIGURATION,
+ toolchain_definition = False,
+)
+
+# A JDK 11 for use as a --host_javabase.
+java_runtime_version_alias(
+ name = "remote_jdk11",
+ runtime_version = "remotejdk_11",
+ visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
+ name = "remotejdk_15",
+ runtime_version = "remotejdk_15",
+ visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
+ name = "remotejdk_16",
+ runtime_version = "remotejdk_16",
+ visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
+ name = "remotejdk_17",
+ runtime_version = "remotejdk_17",
+ visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
+ name = "remotejdk_20",
+ runtime_version = "remotejdk_20",
+ visibility = ["//visibility:public"],
+)
+
+java_runtime_version_alias(
+ name = "jdk_8",
+ runtime_version = "8",
+ visibility = ["//visibility:public"],
+)