From 1076654bd9e191784b36c4be33b2b09729ad39c4 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Tue, 7 Sep 2021 09:35:07 +0200 Subject: [PATCH] [Gradle] Shared Native compilations: Don't explicitly add stdlib dependency Shared Native Compilations seem to already implicitly add a dependency on the stdlib. Adding it again will result in a 'library included more than once' warning. ^KT-46257 Verification Pending --- .../KotlinNativePlatformDependencies.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt index 0477d2183b5..6323540bfdc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt @@ -33,7 +33,14 @@ internal fun Project.setupKotlinNativePlatformDependencies() { kotlin.sourceSets.forEach { sourceSet -> val target = getCommonizerTarget(sourceSet) ?: return@forEach addDependencies(sourceSet, getNativeDistributionDependencies(target)) - addDependencies(sourceSet, project.filesProvider { setOf(konanDistribution.stdlib) }) + addDependencies( + sourceSet, project.filesProvider { setOf(konanDistribution.stdlib) }, + /* + Shared Native compilations already implicitly add this dependency. + Adding it again will result in a warning + */ + isCompilationDependency = false + ) } } @@ -53,11 +60,16 @@ private fun NativeDistributionCommonizerTask.getCommonizedPlatformLibrariesFor(t return project.filesProvider { targetOutputDirectory.listLibraryFiles() }.builtBy(this) } -private fun Project.addDependencies(sourceSet: KotlinSourceSet, libraries: FileCollection) { - getMetadataCompilationForSourceSet(sourceSet)?.let { compilation -> - compilation.compileDependencyFiles += libraries +private fun Project.addDependencies( + sourceSet: KotlinSourceSet, libraries: FileCollection, isCompilationDependency: Boolean = true, isIdeDependency: Boolean = true +) { + if (isCompilationDependency) { + getMetadataCompilationForSourceSet(sourceSet)?.let { compilation -> + compilation.compileDependencyFiles += libraries + } } - if (sourceSet is DefaultKotlinSourceSet) { + + if (isIdeDependency && sourceSet is DefaultKotlinSourceSet) { val metadataConfigurationName = if (project.isIntransitiveMetadataConfigurationEnabled) sourceSet.intransitiveMetadataConfigurationName else sourceSet.implementationMetadataConfigurationName