From 14f216764d5954a34068e26e52aee662dd0c1f2c Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 8 Aug 2023 09:44:31 +0200 Subject: [PATCH] [Gradle] Use CommonizerTargetAttribute to disambiguate... ...commonized cinterop configurations. ^KT-59596 Verification Pending --- .../native/internal/CInteropConfigurations.kt | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropConfigurations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropConfigurations.kt index c638fd1f57c..2c71ecbbe4e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropConfigurations.kt @@ -83,13 +83,6 @@ internal fun Project.locateOrCreateCInteropDependencyConfiguration( } } -private fun Configuration.applyAttributesForCommonizerTarget(commonizerTarget: SharedCommonizerTarget) { - attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.native) - // TODO: [KotlinNativeTarget.konanTargetAttribute] is a public attribute. It should be better to introduce dedicated private attribute - // TODO: for commonized target - attributes.attribute(KotlinNativeTarget.konanTargetAttribute, commonizerTarget.dashedIdentityString()) -} - internal suspend fun Project.locateOrCreateCommonizedCInteropDependencyConfiguration( sourceSet: KotlinSourceSet, ): Configuration? { @@ -174,6 +167,11 @@ private fun commonizedCInteropApiElementsConfigurationName(commonizerTarget: Sha return commonizerTarget.dashedIdentityString() + "CInteropApiElements" } +private fun Configuration.applyAttributesForCommonizerTarget(commonizerTarget: SharedCommonizerTarget) { + attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.native) + CommonizerTargetAttribute.apply(attributes, commonizerTarget) +} + internal object CInteropKlibLibraryElements { const val CINTEROP_KLIB = "cinterop-klib" @@ -196,3 +194,12 @@ private class CInteropLibraryElementsCompatibilityRule : AttributeCompatibilityR } } +private object CommonizerTargetAttribute { + private val attribute = Attribute.of("org.jetbrains.kotlin.native.commonizerTarget", String::class.java) + + private val SharedCommonizerTarget.attributeValue get() = dashedIdentityString() + + fun apply(attributeContainer: AttributeContainer, sharedCommonizerTarget: SharedCommonizerTarget) { + attributeContainer.attribute(attribute, sharedCommonizerTarget.attributeValue) + } +}