diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt index 5f8cdbf72a5..5babe451bba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/registerKotlinPluginExtensions.kt @@ -30,10 +30,7 @@ import org.jetbrains.kotlin.gradle.targets.native.ConfigureFrameworkExportSideEf import org.jetbrains.kotlin.gradle.targets.native.CreateFatFrameworksSetupAction import org.jetbrains.kotlin.gradle.targets.native.KotlinNativeConfigureBinariesSideEffect import org.jetbrains.kotlin.gradle.targets.native.SetupEmbedAndSignAppleFrameworkTaskSideEffect -import org.jetbrains.kotlin.gradle.targets.native.internal.AddKotlinPlatformIntegersSupportLibrary -import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizedCInteropApiElementsConfigurationsSetupAction -import org.jetbrains.kotlin.gradle.targets.native.internal.SetupCInteropApiElementsConfigurationSideEffect -import org.jetbrains.kotlin.gradle.targets.native.internal.SetupKotlinNativePlatformDependenciesAndStdlib +import org.jetbrains.kotlin.gradle.targets.native.internal.* import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.KotlinArtifactsExtensionSetupAction import org.jetbrains.kotlin.gradle.tooling.RegisterBuildKotlinToolingMetadataTask @@ -49,6 +46,7 @@ internal fun Project.registerKotlinPluginExtensions() { register(project, UserDefinedAttributesSetupAction) register(project, CustomizeKotlinDependenciesSetupAction) register(project, AddKotlinPlatformIntegersSupportLibrary) + register(project, SetupKotlinNativePlatformDependenciesForLegacyImport) if (isJvm || isMultiplatform) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/SetupKotlinNativePlatformDependenciesAndStdlib.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/SetupKotlinNativePlatformDependenciesAndStdlib.kt index c6926edc25e..911063ccce6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/SetupKotlinNativePlatformDependenciesAndStdlib.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/SetupKotlinNativePlatformDependenciesAndStdlib.kt @@ -8,9 +8,12 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.commonizer.* +import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull +import org.jetbrains.kotlin.gradle.plugin.KotlinProjectSetupCoroutine import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationSideEffectCoroutine import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet +import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.gradle.utils.konanDistribution import java.io.File @@ -26,14 +29,24 @@ internal val SetupKotlinNativePlatformDependenciesAndStdlib = val stdlib = project.files(project.konanDistribution.stdlib) compilation.compileDependencyFiles += stdlib - - val defaultSourceSet = compilation.defaultSourceSet - if (defaultSourceSet is DefaultKotlinSourceSet) { - defaultSourceSet.addDependencyForLegacyImport(nativeDistributionDependencies) - defaultSourceSet.addDependencyForLegacyImport(stdlib) - } } +internal val SetupKotlinNativePlatformDependenciesForLegacyImport = KotlinProjectSetupCoroutine { + val multiplatform = multiplatformExtensionOrNull ?: return@KotlinProjectSetupCoroutine + val sourceSets = multiplatform + .awaitSourceSets() + .filter { it.isNativeSourceSet.await() } + .filterIsInstance() + + val stdlib = project.files(project.konanDistribution.stdlib) + sourceSets.forEach { sourceSet -> + val commonizerTarget = sourceSet.commonizerTarget.await() ?: return@forEach + val nativeDistributionDependencies = getNativeDistributionDependencies(commonizerTarget) + sourceSet.addDependencyForLegacyImport(nativeDistributionDependencies) + sourceSet.addDependencyForLegacyImport(stdlib) + } +} + internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection { return when (target) { is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target)