[Gradle] Add user-specific attributes to host-specific metadata elements

KT-55751 Verification Pending
KT-56450 Verification Pending
This commit is contained in:
Anton Lakotka
2023-02-28 20:18:02 +01:00
committed by Space Team
parent 427ef8fc47
commit 92cc13961f
3 changed files with 12 additions and 5 deletions
@@ -244,6 +244,14 @@ internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) {
.mapNotNull { configurationName -> target.project.configurations.findByName(configurationName) }
.forEach { configuration -> copyAttributes(compilationAttributes, configuration.attributes) }
}
// Copy to host-specific metadata elements configurations
if (target is KotlinNativeTarget) {
val hostSpecificMetadataElements = project.configurations.findByName(target.hostSpecificMetadataElementsConfigurationName)
if (hostSpecificMetadataElements != null) {
copyAttributes(from = target.attributes, to = hostSpecificMetadataElements.attributes)
}
}
}
}
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.artifactTypeAttribute
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.registerEmbedAndSignAppleFrameworkTask
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled
import org.jetbrains.kotlin.gradle.targets.native.*
@@ -213,10 +214,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
configuration.extendsFrom(*apiElements.extendsFrom.toTypedArray())
fun <T> copyAttribute(from: AttributeContainer, to: AttributeContainer, attribute: Attribute<T>) {
to.attribute(attribute, from.getAttribute(attribute)!!)
}
with(apiElements.attributes) { keySet().forEach { copyAttribute(this, configuration.attributes, it) } }
copyAttributes(from = apiElements.attributes, to = configuration.attributes)
configuration.attributes.attribute(USAGE_ATTRIBUTE, objects.named(Usage::class.java, KotlinUsages.KOTLIN_METADATA))
}
}
@@ -573,7 +573,8 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
binaries.framework("main", listOf(NativeBuildType.DEBUG))
}
linuxX64()
linuxX64("linuxA") { attributes { attribute(distinguishingAttribute, "linuxA") } }
linuxX64("linuxB") { attributes { attribute(distinguishingAttribute, "linuxB") } }
targets.filterIsInstance<KotlinNativeTarget>().forEach {
it.binaries {