[Gradle, K/N] Add user-defined variant attributes to framework artifact

This commit is contained in:
Alexander Likhachev
2020-12-30 13:44:40 +03:00
parent cbdcd8f2bc
commit d844296629
2 changed files with 18 additions and 1 deletions
@@ -165,6 +165,16 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
KotlinNativeTarget.konanBuildTypeAttribute,
binary.buildType.name
)
// capture type parameter T
fun <T> copyAttribute(key: Attribute<T>, 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)
}
}
}
}
@@ -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