Rework Gradle subplugins application in Kotlin/Native

This commit is contained in:
Sergey Igushkin
2020-06-06 00:25:20 +03:00
parent 06a3376368
commit e8a303650c
@@ -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<T : KotlinNativeTarget>(
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<T : KotlinNativeTarget>(
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<T : KotlinNativeTarget>(
}
createRegularKlibArtifact(compilation, compileTaskProvider)
}
addCompilerPlugins(compilation)
return compileTaskProvider