kythe.io@v0.0.68-0.20240422202219-7225dbc01741/buildenv/java/BUILD (about) 1 load("@bazel_skylib//lib:selects.bzl", "selects") 2 load("@rules_java//toolchains:default_java_toolchain.bzl", "default_java_toolchain") 3 4 package(default_visibility = ["//visibility:public"]) 5 6 # We need to have consistent JDK dependencies, which Bazel often doesn't provide out-of-the-box. 7 # In particular, when a target requires a particular JDK version it generally depends on 8 # internal class peculiar to that JDK, thus all of `source_version`, `target_version`, 9 # and (critically) `java_runtime` must match. Some of the upstream toolchains use a `java_runtime` 10 # which differs from the source and target version. 11 [ 12 default_java_toolchain( 13 name = "toolchain_jdk_{version}".format(version = version), 14 configuration = dict(), 15 java_runtime = select({ 16 ":platform_macos": "@remotejdk{version}_macos//:jdk".format(version = version), 17 ":platform_linux": "@remotejdk{version}_linux//:jdk".format(version = version), 18 }), 19 source_version = version, 20 target_version = version, 21 ) 22 for version in ("11", "17", "19", "20", "21") 23 ] 24 25 config_setting( 26 name = "runtime_version_default", 27 values = { 28 "java_runtime_version": "", 29 }, 30 ) 31 32 [ 33 selects.config_setting_group( 34 name = "runtime_version_{version}".format(version = v), 35 match_any = [ 36 ( 37 config_setting( 38 name = "runtime_version_{version}_{value}".format( 39 value = value, 40 version = v, 41 ), 42 values = { 43 "java_runtime_version": value, 44 }, 45 visibility = ["//visibility:private"], 46 ), 47 ":runtime_version_{version}_{value}".format( 48 value = value, 49 version = v, 50 ), 51 )[1] 52 for value in values 53 ], 54 ) 55 for v, values in { 56 "11": [ 57 "remotejdk_11", 58 "11", 59 "rbe_jdk", 60 ], 61 "17": [ 62 "remotejdk_17", 63 "17", 64 ], 65 "19": [ 66 "remotejdk_19", 67 "19", 68 ], 69 "20": [ 70 "remotejdk_20", 71 "20", 72 ], 73 "21": [ 74 "remotejdk_21", 75 "21", 76 ], 77 }.items() 78 ] 79 80 config_setting( 81 name = "language_version_default", 82 values = { 83 "java_language_version": "", 84 }, 85 ) 86 87 [ 88 config_setting( 89 name = "language_version_{}".format(v), 90 values = {"java_language_version": v}, 91 ) 92 for v in ( 93 "11", 94 "17", 95 "19", 96 "20", 97 "21", 98 ) 99 ] 100 101 config_setting( 102 name = "platform_macos", 103 constraint_values = [ 104 "@platforms//os:macos", 105 ], 106 ) 107 108 config_setting( 109 name = "platform_linux", 110 constraint_values = [ 111 "@platforms//os:linux", 112 ], 113 )