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  )