Compile debug-all and debug-none example jars
Bug: b/270105162
Change-Id: If111804825043d3b74007919745ed124625bbcac
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index b1d35ac..14b417a 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -4,10 +4,8 @@
import DependenciesPlugin.Companion.computeRoot
import java.io.File
-import java.lang.Thread.sleep
import java.net.URI
import java.nio.file.Paths
-import java.util.concurrent.ConcurrentHashMap
import org.gradle.api.JavaVersion
import org.gradle.api.Plugin
import org.gradle.api.Project
@@ -113,7 +111,6 @@
* getExamplesJarsTaskName(examplesName) such that it can be referenced from the test runners.
*/
fun Project.buildExampleJars(name : String) : Task {
- val outputFiles : MutableList<File> = mutableListOf()
val jarTasks : MutableList<Task> = mutableListOf()
val testSourceSet = extensions
.getByType(JavaPluginExtension::class.java)
@@ -130,45 +127,53 @@
.files
.forEach { srcDir ->
srcDir.listFiles(File::isDirectory)?.forEach { exampleDir ->
- var generationTask : Task? = null
- if (exampleDir.resolve("TestGenerator.java").isFile) {
- generationTask = tasks.register<JavaExec>(
- "generate-$name-${exampleDir.name}") {
- dependsOn("compileTestJava")
- mainClass.set("${exampleDir.name}.TestGenerator")
- classpath = files(
- classesOutput,
- testSourceSet.compileClasspath)
- args(classesOutput.toString())
- }.get()
+ arrayOf("compileTestJava", "debuginfo-all", "debuginfo-none").forEach { taskName ->
+ if (!project.getTasksByName(taskName, false).isEmpty()) {
+ var generationTask : Task? = null
+ val taskSpecificClassesOutput = getOutputName(classesOutput.toString(), taskName)
+ if (exampleDir.resolve("TestGenerator.java").isFile) {
+ generationTask = tasks.register<JavaExec>(
+ "generate-$name-${exampleDir.name}-$taskName") {
+ dependsOn(taskName)
+ mainClass.set("${exampleDir.name}.TestGenerator")
+ classpath = files(taskSpecificClassesOutput, testSourceSet.compileClasspath)
+ args(taskSpecificClassesOutput)
+ }.get()
+ }
+ jarTasks.add(tasks.register<Jar>("jar-$name-${exampleDir.name}-$taskName") {
+ dependsOn(taskName)
+ if (generationTask != null) {
+ dependsOn(generationTask)
+ }
+ archiveFileName.set("${getOutputName(exampleDir.name, taskName)}.jar")
+ destinationDirectory.set(destinationDir)
+ from(taskSpecificClassesOutput) {
+ include("${exampleDir.name}/**/*.class")
+ exclude("**/TestGenerator*")
+ }
+ // Copy additional resources into the jar.
+ from(exampleDir) {
+ exclude("**/*.java")
+ exclude("**/keep-rules*.txt")
+ into(exampleDir.name)
+ }
+ }.get())
+ }
}
- jarTasks.add(tasks.register<Jar>(
- "jar-$name-${exampleDir.name}") {
- dependsOn("compileTestJava")
- if (generationTask != null) {
- dependsOn(generationTask)
- }
- archiveFileName.set("${exampleDir.name}.jar")
- destinationDirectory.set(destinationDir)
- from(classesOutput) {
- include("${exampleDir.name}/**/*.class")
- exclude("**/TestGenerator*")
- }
- // Copy additional resources into the jar.
- from (exampleDir) {
- exclude("**/*.java")
- exclude("**/keep-rules*.txt")
- into(exampleDir.name)
- }
- }.get())
}
}
return tasks.register(getExampleJarsTaskName(name)) {
dependsOn(jarTasks.toTypedArray())
- outputs.files(outputFiles)
}.get()
}
+fun getOutputName(dest: String, taskName: String) : String {
+ if (taskName.equals("compileTestJava")) {
+ return dest
+ }
+ return "${dest}_${taskName.replace('-', '_')}"
+}
+
fun Project.getExampleJarsTaskName(name: String) : String {
return "build-example-jars-$name"
}
diff --git a/d8_r8/test/build.gradle.kts b/d8_r8/test/build.gradle.kts
index c7837c0..d101246 100644
--- a/d8_r8/test/build.gradle.kts
+++ b/d8_r8/test/build.gradle.kts
@@ -69,4 +69,9 @@
"--map",
"kotlinx.metadata->com.android.tools.r8.jetbrains.kotlinx.metadata"))
}
-}
+
+ withType<Test> {
+ environment.put("USE_NEW_GRADLE_SETUP", "true")
+ dependsOn(gradle.includedBuild("tests_java_8").task(":test"))
+ }
+}
\ No newline at end of file
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index c77fae8..eb0b582 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -117,11 +117,10 @@
.test
.get()
.compileClasspath
- .filter({ "$it".contains("keepanno") ||
- ("$it".contains("third_party")
- && !"$it".contains("errorprone")
- && !"$it".contains("gradle"))
- })
+ .filter({"$it".contains("keepanno") ||
+ ("$it".contains("third_party")
+ && !"$it".contains("errorprone")
+ && !"$it".contains("gradle"))})
}
tasks {
diff --git a/d8_r8/test_modules/tests_java_examples/build.gradle.kts b/d8_r8/test_modules/tests_java_examples/build.gradle.kts
index 1169c9a..95a9105 100644
--- a/d8_r8/test_modules/tests_java_examples/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_examples/build.gradle.kts
@@ -26,21 +26,32 @@
testCompileOnly(Deps.mockito)
}
-// We just need to register the examples jars for it to be referenced by other modules.
-val buildExampleJars = buildExampleJars("examples")
-
val thirdPartyCompileDependenciesTask = ensureThirdPartyDependencies(
"compileDeps",
listOf(Jdk.JDK_11.getThirdPartyDependency()))
tasks {
- withType<JavaCompile> {
- dependsOn(thirdPartyCompileDependenciesTask)
- options.setFork(true)
- options.forkOptions.memoryMaximumSize = "3g"
- options.forkOptions.jvmArgs = listOf(
- "-Xss256m",
- // Set the bootclass path so compilation is consistent with 1.8 target compatibility.
- "-Xbootclasspath/a:third_party/openjdk/openjdk-rt-1.8/rt.jar")
+ compileTestJava {
+ options.compilerArgs = listOf("-g:source,lines")
+ }
+
+ register<JavaCompile>("debuginfo-all") {
+ source = sourceSets.test.get().allSource
+ include("**/*.java")
+ classpath = sourceSets.test.get().compileClasspath
+ destinationDirectory.set(getRoot().resolveAll("build","test","examples","classes_debuginfo_all"))
+ options.compilerArgs = listOf("-g")
+ }
+
+ register<JavaCompile>("debuginfo-none") {
+ source = sourceSets.test.get().allSource
+ include("**/*.java")
+ classpath = sourceSets.test.get().compileClasspath
+ destinationDirectory.set(getRoot().resolveAll("build","test","examples","classes_debuginfo_none"))
+ options.compilerArgs = listOf("-g:none")
}
}
+
+// We just need to register the examples jars for it to be referenced by other modules. This should
+// be placed after all task registrations.
+val buildExampleJars = buildExampleJars("examples")