[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, KotlinNativeTarget.konanBuildTypeAttribute,
binary.buildType.name 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.Named
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.Dependency 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.provider.Provider
import org.gradle.api.tasks.AbstractExecTask import org.gradle.api.tasks.AbstractExecTask
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
@@ -229,7 +232,11 @@ class Framework(
baseName: String, baseName: String,
buildType: NativeBuildType, buildType: NativeBuildType,
compilation: KotlinNativeCompilation 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 override val outputKind: NativeOutputKind
get() = NativeOutputKind.FRAMEWORK get() = NativeOutputKind.FRAMEWORK