diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt index 6e3355a6eae..190bfe671f5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt @@ -14,9 +14,11 @@ import org.gradle.api.tasks.* import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.JarMetadataProvider import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleIdentifiers import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.SourceSetMetadataStorageForIde import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets @@ -27,6 +29,7 @@ import org.jetbrains.kotlin.gradle.utils.filesProvider import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.outputFilesProvider import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION +import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier import java.io.File import java.util.concurrent.Callable import javax.inject.Inject @@ -90,6 +93,19 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru @get:OutputDirectory val outputDirectory: File ) : DefaultTask() { + @Suppress("unused") + class ChooseVisibleSourceSetProjection( + @Input val dependencyModuleIdentifiers: List, + @Nested val projectStructureMetadata: KotlinProjectStructureMetadata, + @Input val visibleSourceSetsProvidingCInterops: Set + ) { + constructor(chooseVisibleSourceSets: ChooseVisibleSourceSets) : this( + dependencyModuleIdentifiers = chooseVisibleSourceSets.dependency.toModuleIdentifiers(), + projectStructureMetadata = chooseVisibleSourceSets.projectStructureMetadata, + visibleSourceSetsProvidingCInterops = chooseVisibleSourceSets.visibleSourceSetsProvidingCInterops + ) + } + @Suppress("unused") @get:InputFiles @get:Classpath @@ -103,6 +119,11 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru .flatMap { it.metadataDependencyResolutions } .filterIsInstance() + @Suppress("unused") + @get:Nested + protected val chooseVisibleSourceSetsProjection + get() = chooseVisibleSourceSets.map(::ChooseVisibleSourceSetProjection).toSet() + @Suppress("unused") @get:Input protected val dependencyProjectStructureMetadata diff --git a/libraries/tools/kotlin-project-model/src/main/kotlin/KotlinModule.kt b/libraries/tools/kotlin-project-model/src/main/kotlin/KotlinModule.kt index 0990291d95e..373d689c9d6 100644 --- a/libraries/tools/kotlin-project-model/src/main/kotlin/KotlinModule.kt +++ b/libraries/tools/kotlin-project-model/src/main/kotlin/KotlinModule.kt @@ -5,8 +5,10 @@ package org.jetbrains.kotlin.project.model +import java.io.Serializable + // TODO sealed with an abstract subclass? this will make exhaustive checks work -open class KotlinModuleIdentifier(open val moduleClassifier: String?) +open class KotlinModuleIdentifier(open val moduleClassifier: String?): Serializable // TODO consider id: Any, to allow IDs with custom equality? data class LocalModuleIdentifier(