diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt index 8db33f68afa..fdca7ed267d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt @@ -46,16 +46,10 @@ private fun Project.setupCInteropCommonizerDependenciesForIde(sourceSet: Default val cinteropCommonizerTask = project.copyCommonizeCInteropForIdeTask ?: return addDependency(sourceSet, filesProvider files@{ - val sourceSetCommonizerTarget = getCommonizerTarget(sourceSet) + val directlyDependent = CInteropCommonizerDependent.from(project, sourceSet) + val associateDependent = CInteropCommonizerDependent.fromAssociateCompilations(project, sourceSet) - val additionalVisibleSourceSets = sourceSet.getAdditionalVisibleSourceSets() - .filter { sourceSet -> getCommonizerTarget(sourceSet) == sourceSetCommonizerTarget } - - val cinteropCommonizerDependents = (additionalVisibleSourceSets + sourceSet).toSet() - .mapNotNull { sourceSet -> CInteropCommonizerDependent.from(this, sourceSet) } - .toSet() - - cinteropCommonizerDependents.map { cinteropCommonizerDependent -> + listOfNotNull(directlyDependent, associateDependent).map { cinteropCommonizerDependent -> cinteropCommonizerTask.get().commonizedOutputLibraries(cinteropCommonizerDependent) } }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt index 1ca7482d676..79e6c461dfb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt @@ -92,6 +92,19 @@ internal fun CInteropCommonizerDependent.Factory.from(project: Project, sourceSe ) } +internal fun CInteropCommonizerDependent.Factory.fromAssociateCompilations( + project: Project, sourceSet: KotlinSourceSet +): CInteropCommonizerDependent? { + return from( + target = project.getCommonizerTarget(sourceSet) as? SharedCommonizerTarget ?: return null, + compilations = (compilationsBySourceSets(project)[sourceSet] ?: return null) + .filterIsInstance() + .flatMap { compilation -> compilation.associateWithTransitiveClosure } + .filterIsInstance() + .toSet() + ) +} + private fun KotlinSharedNativeCompilation.findDependingNativeCompilations(): Set { val multiplatformExtension = project.multiplatformExtensionOrNull ?: return emptySet() val allParticipatingSourceSetsOfCompilation = allParticipatingSourceSets() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index 9303a9bdcd7..16240b959b4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -5,11 +5,9 @@ package org.jetbrains.kotlin.gradle.targets.native.internal -import org.gradle.api.file.FileCollection import org.gradle.api.provider.Provider import org.gradle.api.tasks.* import org.jetbrains.kotlin.commonizer.CommonizerDependency -import org.jetbrains.kotlin.commonizer.NonTargetedCommonizerDependency import org.jetbrains.kotlin.commonizer.TargetedCommonizerDependency import org.jetbrains.kotlin.commonizer.allLeaves import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer @@ -142,7 +140,11 @@ internal open class CInteropCommonizerTask : AbstractCInteropCommonizerTask() { .mapNotNull { sourceSet -> CInteropCommonizerDependent.from(project, sourceSet) } .toSet() - return (fromSharedNativeCompilations + fromSourceSets) + val fromSourceSetsAssociateCompilations = multiplatformExtension.sourceSets + .mapNotNull { sourceSet -> CInteropCommonizerDependent.fromAssociateCompilations(project, sourceSet) } + .toSet() + + return (fromSharedNativeCompilations + fromSourceSets + fromSourceSetsAssociateCompilations) } }