From d844296629a3ecab103104b4e1753f3ac4f20399 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Wed, 30 Dec 2020 13:44:40 +0300 Subject: [PATCH] [Gradle, K/N] Add user-defined variant attributes to framework artifact --- .../targets/native/KotlinNativeTargetConfigurator.kt | 10 ++++++++++ .../kotlin/gradle/targets/native/NativeBinaries.kt | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) 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 41921def23c..973010503b0 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 @@ -165,6 +165,16 @@ open class KotlinNativeTargetConfigurator( KotlinNativeTarget.konanBuildTypeAttribute, binary.buildType.name ) + // capture type parameter T + fun copyAttribute(key: Attribute, from: AttributeContainer, to: AttributeContainer) { + to.attribute(key, from.getAttribute(key)!!) + } + binary.target.getAttributes().keySet().forEach { + copyAttribute(it, binary.target.getAttributes(), this.attributes) + } + binary.attributes.keySet().forEach { + copyAttribute(it, binary.attributes, this.attributes) + } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt index eda05f6daf8..ce521fc7eab 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeBinaries.kt @@ -11,6 +11,9 @@ import org.gradle.api.Action import org.gradle.api.Named import org.gradle.api.Project import org.gradle.api.artifacts.Dependency +import org.gradle.api.attributes.Attribute +import org.gradle.api.attributes.AttributeContainer +import org.gradle.api.attributes.HasAttributes import org.gradle.api.provider.Provider import org.gradle.api.tasks.AbstractExecTask import org.gradle.api.tasks.TaskProvider @@ -229,7 +232,11 @@ class Framework( baseName: String, buildType: NativeBuildType, compilation: KotlinNativeCompilation -) : AbstractNativeLibrary(name, baseName, buildType, compilation) { +) : AbstractNativeLibrary(name, baseName, buildType, compilation), HasAttributes { + + private val attributeContainer = HierarchyAttributeContainer(parent = null) + + override fun getAttributes() = attributeContainer override val outputKind: NativeOutputKind get() = NativeOutputKind.FRAMEWORK