From 9731c203bde0dd1aa9e2d2a0ec9acc8582614865 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 17 Feb 2019 02:13:32 +0000 Subject: [PATCH] Gradle: Improve cross-compilation support JDK 9+ have a --release flag that correctly configures the bootClasspath. For JDK 8 we now enforce manual configuration. --- build.gradle | 31 ++++++++++++++++++++++++++++++- gradle.properties | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 9f7b1e7f45..cd78dc3589 100644 --- a/build.gradle +++ b/build.gradle @@ -32,6 +32,14 @@ String getBuildExtra() { buildExtra } +String compat(String src) { + if (src.contains('.')) { + src.substring(src.lastIndexOf('.') + 1) + } else { + src + } +} + def releaseVersion = getReleaseVersion() def buildVersion = getBuildVersion() def buildExtra = getBuildExtra() @@ -63,11 +71,32 @@ configure(javaProjects) { } sourceCompatibility = 1.7 - // Set i2pBootClasspath=/path/to/rt.jar:/path/to/jce.jar in ~/.gradle/gradle.properties if needed + targetCompatibility = 1.7 + + def i2pBootClasspath + // Set java7BootClasspath=/path/to/rt.jar:/path/to/jce.jar in ~/.gradle/gradle.properties if needed + if (java7BootClasspath) { + i2pBootClasspath = java7BootClasspath + } else { + def java7Home = System.getenv("JAVA7_HOME") + if (java7Home) { + i2pBootClasspath = "${java7Home}/jre/lib/jce.jar:${java7Home}/jre/lib/rt.jar" + } + } + if (i2pBootClasspath) { tasks.withType(AbstractCompile, { AbstractCompile ac -> ac.options.bootstrapClasspath = files(i2pBootClasspath) }) + } else { + if (JavaVersion.current().java8Compatible && !JavaVersion.current().java9Compatible) { + throw new GradleException("Set java7BootClasspath property or JAVA7_HOME environment variable to enable cross-compilation, or run Gradle with JDK 9+") + } + tasks.withType(JavaCompile) { + def version = compat(sourceCompatibility) + logger.info("Configuring $name to use --release $version") + options.compilerArgs.addAll(['--release', version]) + } } } diff --git a/gradle.properties b/gradle.properties index 63fe06e83e..de9bef3372 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ # Override these in ~/.gradle/gradle.properties if necessary -i2pBootClasspath= +java7BootClasspath=