Undelete toolchain_utils.bzl.

This partially reverts https://github.com/bazelbuild/bazel/commit/1cc4d89f3c1f0047151fe4472352737c58c3b4ed.
There are downstream projects which depend on toolchain_utils.bzl.

Closes #12802.

PiperOrigin-RevId: 351132017
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index 4e4098d..de37f89 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -24,6 +24,7 @@
         "proguard_whitelister_test.py",
         "proguard_whitelister_test_input.pgcfg",
         "remote_java_repository.bzl",
+        "toolchain_utils.bzl",
     ],
 )
 
diff --git a/tools/jdk/toolchain_utils.bzl b/tools/jdk/toolchain_utils.bzl
new file mode 100644
index 0000000..fd7482a
--- /dev/null
+++ b/tools/jdk/toolchain_utils.bzl
@@ -0,0 +1,58 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+Finds the Java toolchain.
+
+Returns the toolchain if enabled, and falls back to a toolchain constructed from
+legacy toolchain selection.
+"""
+
+def find_java_toolchain(ctx, target):
+    """
+    Finds the Java toolchain.
+
+    If the Java toolchain is in use, returns it.  Otherwise, returns a Java
+    toolchain derived from legacy toolchain selection.
+
+    Args:
+      ctx: The rule context for which to find a toolchain.
+      target: A java_toolchain target (for legacy toolchain resolution).
+
+    Returns:
+      A JavaToolchainInfo.
+    """
+
+    _ignore = [ctx]
+
+    return target[java_common.JavaToolchainInfo]
+
+def find_java_runtime_toolchain(ctx, target):
+    """
+    Finds the Java runtime.
+
+    If the Java toolchain is in use, returns it.  Otherwise, returns a Java
+    runtime derived from legacy toolchain selection.
+
+    Args:
+      ctx: The rule context for which to find a toolchain.
+      target: A java_runtime target (for legacy toolchain resolution).
+
+    Returns:
+      A JavaRuntimeInfo.
+    """
+
+    _ignore = [ctx]
+
+    return target[java_common.JavaRuntimeInfo]