aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cushon <cushon@google.com>2017-12-19 16:18:49 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-19 17:27:06 -0800
commit5c16ab2378befcd8000bf4f95da596ada04ae8c6 (patch)
tree899a040cee599a446fd9c9b20a0030f5ba4a82b2 /src
parent96ce526e4f45d05bde6961461c2bc7d7fc74f26d (diff)
Add java_toolchain definitions that work with JDK 8 and 9 host_javabases
And inject the correct toolchain for the current host_javabase into tools.WORKSPACE. PiperOrigin-RevId: 179618337
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%")