aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE1
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index ebac337780..0995d5fa6a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -265,7 +265,16 @@ public class BazelRuleClassProvider {
try {
builder.addWorkspaceFilePrefix(
- ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE"));
+ ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE")
+ // Hackily select the java_toolchain based on the host JDK version. JDK 8 and
+ // 9 host_javabases require different toolchains, e.g. to use --patch-module
+ // instead of -Xbootclasspath/p:.
+ .replace(
+ "%java_toolchain%",
+ isJdk8OrEarlier()
+ ? "@bazel_tools//tools/jdk:toolchain_jdk8"
+ : "@bazel_tools//tools/jdk:toolchain_jdk9"));
+
} catch (IOException e) {
throw new IllegalStateException(e);
}
@@ -277,6 +286,10 @@ public class BazelRuleClassProvider {
}
};
+ private static boolean isJdk8OrEarlier() {
+ return Double.parseDouble(System.getProperty("java.class.version")) <= 52.0;
+ }
+
public static final RuleSet PROTO_RULES =
new RuleSet() {
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE
index b080717b43..49f1b5d85a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE
@@ -1,2 +1,3 @@
local_repository(name = "bazel_tools", path = __embedded_dir__ + "/embedded_tools")
bind(name = "cc_toolchain", actual = "@bazel_tools//tools/cpp:default-toolchain")
+bind(name = "java_toolchain", actual = "%java_toolchain%")