From 299d6fa772c2bb0c9fa792ad4436ed4dffdd5423 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 2 Apr 2018 14:16:53 +0300 Subject: [PATCH] Use default compileJava9Java task to build java9 source set --- build.gradle.kts | 10 +++-- libraries/commonConfiguration.gradle | 54 ++++++++++++-------------- libraries/kotlin.test/jvm/build.gradle | 6 +-- libraries/reflect/api/build.gradle | 3 +- libraries/stdlib/build.gradle | 8 ++-- libraries/stdlib/jdk7/build.gradle | 8 ++-- libraries/stdlib/jdk8/build.gradle | 8 ++-- 7 files changed, 46 insertions(+), 51 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 011e69d9ebc..54c81018e21 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -596,10 +596,12 @@ fun jdkPath(version: String): String = jdkPathIfFound(version) fun Project.configureJvmProject(javaHome: String, javaVersion: String) { tasks.withType { - options.isFork = true - options.forkOptions.javaHome = file(javaHome) - options.compilerArgs.add("-proc:none") - options.encoding = "UTF-8" + if (name != "compileJava9Java") { + options.isFork = true + options.forkOptions.javaHome = file(javaHome) + options.compilerArgs.add("-proc:none") + options.encoding = "UTF-8" + } } tasks.withType { diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index ea6fcef10ac..9e1fae61abd 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -52,6 +52,30 @@ ext.configureJvm6Project = { Project project -> } } +ext.compileJava9Sources = { Project project, String moduleName, Collection moduleOutputs = [project.sourceSets.main.output] -> + // module-info.java should be in java9 source set by convention + SourceDirectorySet java9SourceSet = project.sourceSets.java9.java + project.tasks.getByName("compileJava9Java").configure { JavaCompile it -> + dependsOn(moduleOutputs) + it.sourceCompatibility = 1.9 + it.targetCompatibility = 1.9 + it.destinationDir = file("${java9SourceSet.outputDir}/META-INF/versions/9") + it.options.fork = true + it.options.forkOptions.javaHome = file(JDK_9) + it.options.sourcepath = files(java9SourceSet.srcDirs) + + doFirst { + def moduleFiles = moduleOutputs.collect { it.files }.flatten().join(File.pathSeparator) + + options.compilerArgs = [ + '--module-path', project.configurations.compileClasspath.asPath, + '--patch-module', "$moduleName=$moduleFiles" + ] + classpath = files() + } + } +} + ext.manifestAttributes = { Manifest manifest, Project project, String component = null, boolean multiRelease = false -> project.configure(manifest) { attributes \ @@ -202,33 +226,3 @@ ext.createPreprocessorTask = { Project project, def name, def sourceDir, def tar args = [sourceDir, targetDir, profile] } } - -ext.createCompileJava9Task = { Project project, String name, String moduleName, List extraModuleContent = [] -> - project.tasks.findByName("compileJava9Java").enabled = false - - def task = project.tasks.create(name, Exec) - - def sourceSet = project.sourceSets.java9.java - task.inputs.dir(sourceSet.srcDirs.first()) - task.outputs.dir(sourceSet.outputDir) - - task.dependsOn(project.tasks.findByName("compileKotlin"), project.tasks.findByName("compileJava")) - - def moduleContent = project.sourceSets.main.output.join(File.pathSeparator) - for (collection in extraModuleContent) { - moduleContent += File.pathSeparator + collection.asPath - } - - def output = new File(sourceSet.outputDir, "META-INF/versions/9") - - task.doFirst { - output.delete() - output.mkdirs() - } - - task.commandLine = ["${JDK_9}/bin/javac", - *fileTree(sourceSet.srcDirs.first()).files.toArray(), - "-d", output.path, - "-p", project.configurations.compile.asPath, - "--patch-module", "$moduleName=$moduleContent"] -} diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index 0f80da5e5e0..191b317101a 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -21,11 +21,9 @@ dependencies { archivesBaseName = 'kotlin-test' -createCompileJava9Task(project, "compileJava9", "kotlin.test") - jar { manifestAttributes(manifest, project, 'Test', true) - from compileJava9.outputs + from sourceSets.java9.output } artifacts { @@ -45,3 +43,5 @@ compileKotlin { compileTestKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"] } + +compileJava9Sources(project, 'kotlin.test') diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index aadf1aa861f..ee3dac3c12e 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -22,7 +22,7 @@ dependencies { compileOnly project(':core:util.runtime') } -createCompileJava9Task(project, "compileJava9", "kotlin.reflect", [configurations.compileOnly]) +compileJava9Sources(project, 'kotlin.reflect', [sourceSets.main.output, configurations.compileOnly]) compileKotlin { kotlinOptions { @@ -39,7 +39,6 @@ jar { } task java9Jar(type: Jar) { - dependsOn(compileJava9) classifier = "java9" from sourceSets.java9.output } diff --git a/libraries/stdlib/build.gradle b/libraries/stdlib/build.gradle index 6ac7bbf8c13..abc9c75a57e 100644 --- a/libraries/stdlib/build.gradle +++ b/libraries/stdlib/build.gradle @@ -61,8 +61,6 @@ configurations { builtins } -createCompileJava9Task(project, "compileJava9", "kotlin.stdlib", [sourceSets.builtins.output/* TODO: sourceSets.annotations.output?*/]) - task originalStdlibJar(type: Jar) { baseName = 'original-kotlin-stdlib' from sourceSets.main.output @@ -73,7 +71,7 @@ jar { from("${rootDir}/dist/builtins") from sourceSets.builtins.output from sourceSets.experimental.output - from compileJava9.outputs + from sourceSets.java9.output } task distJar(type: Jar) { @@ -85,7 +83,7 @@ task distJar(type: Jar) { from sourceSets.builtins.output from sourceSets.main.output from sourceSets.experimental.output - from compileJava9.outputs + from sourceSets.java9.output } task builtinsJar(type: Jar) { @@ -168,4 +166,6 @@ compileExperimentalKotlin { } } +compileJava9Sources(project, 'kotlin.stdlib', [sourceSets.builtins.output, sourceSets.main.output]) + kotlin.experimental.coroutines 'enable' diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index 7b5f7e7f8dd..836273a16ab 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -28,16 +28,14 @@ sourceSets { } java9 { java { - srcDirs = ['java9'] + srcDir 'java9' } } } -createCompileJava9Task(project, "compileJava9", "kotlin.stdlib.jdk7") - jar { manifestAttributes(manifest, project, 'Main', true) - from compileJava9.outputs + from sourceSets.java9.output } artifacts { @@ -68,6 +66,8 @@ compileTestKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"] } +compileJava9Sources(project, 'kotlin.stdlib.jdk7') + kotlin.experimental.coroutines 'enable' test { diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index 95dd9a630f7..f044bdbffc9 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -31,16 +31,14 @@ sourceSets { } java9 { java { - srcDirs = ['java9'] + srcDir 'java9' } } } -createCompileJava9Task(project, "compileJava9", "kotlin.stdlib.jdk8") - jar { manifestAttributes(manifest, project, 'Main', true) - from compileJava9.outputs + from sourceSets.java9.output } artifacts { @@ -71,6 +69,8 @@ compileTestKotlin { kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"] } +compileJava9Sources(project, 'kotlin.stdlib.jdk8') + kotlin.experimental.coroutines 'enable' test {