Support additional compiler arguments

This commit is contained in:
Yan Zhulanow
2015-06-16 18:16:03 +03:00
parent 3ea4306eb9
commit f158b5b0c4
3 changed files with 25 additions and 4 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.gradle.internal
import org.gradle.api.plugins.ExtraPropertiesExtension
import org.gradle.api.tasks.compile.AbstractCompile
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.plugin.KaptExtension
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
import java.io.File
import java.io.IOException
@@ -67,6 +68,8 @@ public class AnnotationProcessingManager(
javaTask.appendClasspath(stubOutputDir)
addGeneratedSourcesOutputToCompilerArgs(javaTask, aptOutputDir)
appendAdditionalComplerArgs()
}
fun afterJavaCompile() {
@@ -93,6 +96,16 @@ public class AnnotationProcessingManager(
javaTask.source(javaAptSourceDir)
}
private fun appendAdditionalComplerArgs() {
val kaptExtension = project.getExtensions().getByType(javaClass<KaptExtension>())
val args = kaptExtension.getAdditionalCompilerArgs()
if (args.isEmpty()) return
javaTask.modifyCompilerArguments { list ->
list.addAll(args)
}
}
private fun generateAnnotationProcessorStubs(javaTask: JavaCompile, processorFqNames: Set<String>, outputDir: File) {
val aptAnnotationFile = invokeCoreKaptMethod("generateKotlinAptAnnotation", outputDir) as File
project.getLogger().kotlinDebug("kapt: Stub annotation generated: $aptAnnotationFile")
@@ -20,4 +20,15 @@ public open class KaptExtension {
public open var generateStubs: Boolean = false
private val additionalCompilerArgs = arrayListOf<String>()
public open fun arg(name: String, vararg values: String) {
val valuesString = if (values.isNotEmpty()) values.joinToString(" ", prefix = "=") else ""
additionalCompilerArgs.add("-A$name$valuesString")
}
public open fun getAdditionalCompilerArgs(): List<String> {
return additionalCompilerArgs.toList()
}
}
@@ -585,7 +585,7 @@ private fun Project.initKapt(
subpluginEnvironment: SubpluginEnvironment,
taskFactory: (suffix: String) -> AbstractCompile
) {
val kaptExtension = getExtensions().kapt
val kaptExtension = getExtensions().getByType(javaClass<KaptExtension>())
val kotlinAfterJavaTask: AbstractCompile?
if (kaptExtension.generateStubs) {
@@ -643,9 +643,6 @@ private fun Project.createKotlinAfterJavaTask(
return kotlinTaskAfterJava
}
private val ExtensionContainer.kapt: KaptExtension
get() = getByType(javaClass<KaptExtension>())
//copied from BasePlugin.getLocalVersion
private fun loadAndroidPluginVersion(): String? {
try {