From f158b5b0c4fb444f0141766820c500bab7a2422a Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 16 Jun 2015 18:16:03 +0300 Subject: [PATCH] Support additional compiler arguments --- .../gradle/internal/AnnotationProcessingManager.kt | 13 +++++++++++++ .../jetbrains/kotlin/gradle/plugin/KaptExtension.kt | 11 +++++++++++ .../jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 5 +---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt index 56aceb39c8e..1dc7643edf2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AnnotationProcessingManager.kt @@ -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()) + val args = kaptExtension.getAdditionalCompilerArgs() + if (args.isEmpty()) return + + javaTask.modifyCompilerArguments { list -> + list.addAll(args) + } + } + private fun generateAnnotationProcessorStubs(javaTask: JavaCompile, processorFqNames: Set, outputDir: File) { val aptAnnotationFile = invokeCoreKaptMethod("generateKotlinAptAnnotation", outputDir) as File project.getLogger().kotlinDebug("kapt: Stub annotation generated: $aptAnnotationFile") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt index dbfa6311730..661270b0995 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt @@ -20,4 +20,15 @@ public open class KaptExtension { public open var generateStubs: Boolean = false + private val additionalCompilerArgs = arrayListOf() + + 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 { + return additionalCompilerArgs.toList() + } + } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index f5d2632d821..d944ecbc828 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -585,7 +585,7 @@ private fun Project.initKapt( subpluginEnvironment: SubpluginEnvironment, taskFactory: (suffix: String) -> AbstractCompile ) { - val kaptExtension = getExtensions().kapt + val kaptExtension = getExtensions().getByType(javaClass()) val kotlinAfterJavaTask: AbstractCompile? if (kaptExtension.generateStubs) { @@ -643,9 +643,6 @@ private fun Project.createKotlinAfterJavaTask( return kotlinTaskAfterJava } -private val ExtensionContainer.kapt: KaptExtension - get() = getByType(javaClass()) - //copied from BasePlugin.getLocalVersion private fun loadAndroidPluginVersion(): String? { try {