IDE: Add native extensions to KotlinCompilation

This commit is contained in:
Ilya Matveev
2019-09-27 13:35:46 +07:00
parent 95cbb4e8b4
commit 3da3e1cae9
4 changed files with 16 additions and 6 deletions
@@ -471,7 +471,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
val substitutedDependencies: List<ExternalDependency> val substitutedDependencies: List<ExternalDependency>
) { ) {
val konanTarget: String? val konanTarget: String?
get() = compilation.konanTarget get() = compilation.nativeExtensions.konanTarget
val dependencyNames: Map<String, ExternalDependency> by lazy { val dependencyNames: Map<String, ExternalDependency> by lazy {
substitutedDependencies.associateBy { it.name.removeSuffixIfPresent(" [$konanTarget]") } substitutedDependencies.associateBy { it.name.removeSuffixIfPresent(" [$konanTarget]") }
@@ -91,6 +91,10 @@ interface KotlinCompilationArguments : Serializable {
val currentArguments: Array<String> val currentArguments: Array<String>
} }
interface KotlinNativeCompilationExtensions : Serializable {
val konanTarget: String?
}
interface KotlinCompilation : KotlinModule { interface KotlinCompilation : KotlinModule {
val sourceSets: Collection<KotlinSourceSet> val sourceSets: Collection<KotlinSourceSet>
val output: KotlinCompilationOutput val output: KotlinCompilationOutput
@@ -99,8 +103,7 @@ interface KotlinCompilation : KotlinModule {
val disambiguationClassifier: String? val disambiguationClassifier: String?
val platform: KotlinPlatform val platform: KotlinPlatform
val kotlinTaskProperties: KotlinTaskProperties val kotlinTaskProperties: KotlinTaskProperties
val nativeExtensions: KotlinNativeCompilationExtensions
val konanTarget: String?
companion object { companion object {
const val MAIN_COMPILATION_NAME = "main" const val MAIN_COMPILATION_NAME = "main"
@@ -432,6 +432,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
it.invoke(konanTarget) as? String it.invoke(konanTarget) as? String
} }
} }
val nativeExtensions = KotlinNativeCompilationExtensionsImpl(konanTarget)
return KotlinCompilationImpl( return KotlinCompilationImpl(
gradleCompilation.name, gradleCompilation.name,
@@ -441,7 +442,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
arguments, arguments,
dependencyClasspath.toTypedArray(), dependencyClasspath.toTypedArray(),
kotlinTaskProperties, kotlinTaskProperties,
konanTarget nativeExtensions
) )
} }
@@ -82,6 +82,12 @@ data class KotlinCompilationArgumentsImpl(
) )
} }
data class KotlinNativeCompilationExtensionsImpl(
override val konanTarget: String? = null
) : KotlinNativeCompilationExtensions {
constructor(extensions: KotlinNativeCompilationExtensions) : this(extensions.konanTarget)
}
data class KotlinCompilationImpl( data class KotlinCompilationImpl(
override val name: String, override val name: String,
override val sourceSets: Collection<KotlinSourceSet>, override val sourceSets: Collection<KotlinSourceSet>,
@@ -90,7 +96,7 @@ data class KotlinCompilationImpl(
override val arguments: KotlinCompilationArguments, override val arguments: KotlinCompilationArguments,
override val dependencyClasspath: Array<String>, override val dependencyClasspath: Array<String>,
override val kotlinTaskProperties: KotlinTaskProperties, override val kotlinTaskProperties: KotlinTaskProperties,
override val konanTarget: String? = null override val nativeExtensions: KotlinNativeCompilationExtensions
) : KotlinCompilation { ) : KotlinCompilation {
// create deep copy // create deep copy
@@ -106,7 +112,7 @@ data class KotlinCompilationImpl(
KotlinCompilationArgumentsImpl(kotlinCompilation.arguments), KotlinCompilationArgumentsImpl(kotlinCompilation.arguments),
kotlinCompilation.dependencyClasspath, kotlinCompilation.dependencyClasspath,
KotlinTaskPropertiesImpl(kotlinCompilation.kotlinTaskProperties), KotlinTaskPropertiesImpl(kotlinCompilation.kotlinTaskProperties),
kotlinCompilation.konanTarget KotlinNativeCompilationExtensionsImpl(kotlinCompilation.nativeExtensions)
) { ) {
disambiguationClassifier = kotlinCompilation.disambiguationClassifier disambiguationClassifier = kotlinCompilation.disambiguationClassifier
platform = kotlinCompilation.platform platform = kotlinCompilation.platform