From e8a303650ced5752457fdca92ecb160c977d97eb Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Sat, 6 Jun 2020 00:25:20 +0300 Subject: [PATCH] Rework Gradle subplugins application in Kotlin/Native --- .../native/KotlinNativeTargetConfigurator.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt index b9fe45e9b65..deec23371bd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotlinNativeTargetConfigurator.kt @@ -17,6 +17,7 @@ import org.gradle.api.plugins.BasePlugin import org.gradle.api.provider.Provider import org.gradle.api.tasks.Copy import org.gradle.api.tasks.Exec +import org.gradle.api.tasks.TaskProvider import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME @@ -47,11 +48,18 @@ open class KotlinNativeTargetConfigurator( return buildDir.resolve("classes/kotlin/$targetSubDirectory${compilation.name}") } - private fun AbstractKotlinNativeCompile<*>.addCompilerPlugins() { - SubpluginEnvironment - .loadSubplugins(project, kotlinPluginVersion) - .addSubpluginOptions(project, this, compilerPluginOptions) - compilerPluginClasspath = project.configurations.getByName(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME) + private fun addCompilerPlugins(compilation: AbstractKotlinNativeCompilation) { + val project = compilation.target.project + + project.whenEvaluated { + SubpluginEnvironment + .loadSubplugins(project, kotlinPluginVersion) + .addSubpluginOptions(project, compilation) + + compilation.compileKotlinTaskProvider.configure { + it.compilerPluginClasspath = project.configurations.getByName(NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME) + } + } } // region Artifact creation. @@ -121,7 +129,6 @@ open class KotlinNativeTargetConfigurator( it.destinationDir = binary.outputDirectory } - addCompilerPlugins() if (binary !is TestExecutable) { tasks.named(binary.compilation.target.artifactsTaskName).configure { it.dependsOn(result) } @@ -177,6 +184,7 @@ open class KotlinNativeTargetConfigurator( } createRegularKlibArtifact(compilation, compileTaskProvider) } + addCompilerPlugins(compilation) return compileTaskProvider