xref: /aosp_15_r20/external/bazelbuild-rules_java/toolchains/toolchain_utils.bzl (revision abe8e1b943c923005d847f1e3cf6637de4ed1a1f)
1*abe8e1b9SSadaf Ebrahimi# Copyright 2019 The Bazel Authors. All rights reserved.
2*abe8e1b9SSadaf Ebrahimi#
3*abe8e1b9SSadaf Ebrahimi# Licensed under the Apache License, Version 2.0 (the "License");
4*abe8e1b9SSadaf Ebrahimi# you may not use this file except in compliance with the License.
5*abe8e1b9SSadaf Ebrahimi# You may obtain a copy of the License at
6*abe8e1b9SSadaf Ebrahimi#
7*abe8e1b9SSadaf Ebrahimi#    http://www.apache.org/licenses/LICENSE-2.0
8*abe8e1b9SSadaf Ebrahimi#
9*abe8e1b9SSadaf Ebrahimi# Unless required by applicable law or agreed to in writing, software
10*abe8e1b9SSadaf Ebrahimi# distributed under the License is distributed on an "AS IS" BASIS,
11*abe8e1b9SSadaf Ebrahimi# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*abe8e1b9SSadaf Ebrahimi# See the License for the specific language governing permissions and
13*abe8e1b9SSadaf Ebrahimi# limitations under the License.
14*abe8e1b9SSadaf Ebrahimi
15*abe8e1b9SSadaf Ebrahimi"""
16*abe8e1b9SSadaf EbrahimiFinds the Java toolchain.
17*abe8e1b9SSadaf Ebrahimi
18*abe8e1b9SSadaf EbrahimiReturns the toolchain if enabled, and falls back to a toolchain constructed from
19*abe8e1b9SSadaf Ebrahimilegacy toolchain selection.
20*abe8e1b9SSadaf Ebrahimi"""
21*abe8e1b9SSadaf Ebrahimi
22*abe8e1b9SSadaf Ebrahimiload("//java/common:java_common.bzl", "java_common")
23*abe8e1b9SSadaf Ebrahimi
24*abe8e1b9SSadaf Ebrahimidef find_java_toolchain(ctx, target):
25*abe8e1b9SSadaf Ebrahimi    """
26*abe8e1b9SSadaf Ebrahimi    Finds the Java toolchain.
27*abe8e1b9SSadaf Ebrahimi
28*abe8e1b9SSadaf Ebrahimi    If the Java toolchain is in use, returns it.  Otherwise, returns a Java
29*abe8e1b9SSadaf Ebrahimi    toolchain derived from legacy toolchain selection.
30*abe8e1b9SSadaf Ebrahimi
31*abe8e1b9SSadaf Ebrahimi    Args:
32*abe8e1b9SSadaf Ebrahimi      ctx: The rule context for which to find a toolchain.
33*abe8e1b9SSadaf Ebrahimi      target: A java_toolchain target (for legacy toolchain resolution).
34*abe8e1b9SSadaf Ebrahimi
35*abe8e1b9SSadaf Ebrahimi    Returns:
36*abe8e1b9SSadaf Ebrahimi      A JavaToolchainInfo.
37*abe8e1b9SSadaf Ebrahimi    """
38*abe8e1b9SSadaf Ebrahimi
39*abe8e1b9SSadaf Ebrahimi    _ignore = [ctx]  # buildifier: disable=unused-variable
40*abe8e1b9SSadaf Ebrahimi
41*abe8e1b9SSadaf Ebrahimi    return target[java_common.JavaToolchainInfo]
42*abe8e1b9SSadaf Ebrahimi
43*abe8e1b9SSadaf Ebrahimidef find_java_runtime_toolchain(ctx, target):
44*abe8e1b9SSadaf Ebrahimi    """
45*abe8e1b9SSadaf Ebrahimi    Finds the Java runtime.
46*abe8e1b9SSadaf Ebrahimi
47*abe8e1b9SSadaf Ebrahimi    If the Java toolchain is in use, returns it.  Otherwise, returns a Java
48*abe8e1b9SSadaf Ebrahimi    runtime derived from legacy toolchain selection.
49*abe8e1b9SSadaf Ebrahimi
50*abe8e1b9SSadaf Ebrahimi    Args:
51*abe8e1b9SSadaf Ebrahimi      ctx: The rule context for which to find a toolchain.
52*abe8e1b9SSadaf Ebrahimi      target: A java_runtime target (for legacy toolchain resolution).
53*abe8e1b9SSadaf Ebrahimi
54*abe8e1b9SSadaf Ebrahimi    Returns:
55*abe8e1b9SSadaf Ebrahimi      A JavaRuntimeInfo.
56*abe8e1b9SSadaf Ebrahimi    """
57*abe8e1b9SSadaf Ebrahimi
58*abe8e1b9SSadaf Ebrahimi    _ignore = [ctx]  # buildifier: disable=unused-variable
59*abe8e1b9SSadaf Ebrahimi
60*abe8e1b9SSadaf Ebrahimi    return target[java_common.JavaRuntimeInfo]
61