diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt index 33ec49ccfe0..8991ba665d2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPro import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.* import org.jetbrains.kotlin.gradle.plugin.ide.dependencyTransformers.IdePlatformStdlibCommonDependencyFilter -import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget +import org.jetbrains.kotlin.gradle.targets.native.internal.commonizerTarget internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMultiplatformImport { return IdeMultiplatformImportImpl(extension).apply { @@ -95,7 +95,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti registerDependencyResolver( resolver = IdeCommonizedCinteropDependencyResolver, - constraint = { sourceSet -> getCommonizerTarget(sourceSet) is SharedCommonizerTarget }, + constraint = { sourceSet -> sourceSet.commonizerTarget.getOrThrow() is SharedCommonizerTarget }, phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution, level = IdeMultiplatformImport.DependencyResolutionLevel.Default, ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt index f047415acc1..8ecc927921d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt @@ -15,8 +15,8 @@ import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropMetadataDependencyTransformationTask import org.jetbrains.kotlin.gradle.targets.native.internal.cinteropMetadataDependencyTransformationForIdeTaskName +import org.jetbrains.kotlin.gradle.targets.native.internal.commonizerTarget import org.jetbrains.kotlin.gradle.targets.native.internal.createCInteropMetadataDependencyClasspathForIde -import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget import org.jetbrains.kotlin.gradle.tasks.locateTask internal object IdeCInteropMetadataDependencyClasspathResolver : IdeDependencyResolver, IdeDependencyResolver.WithBuildDependencies { @@ -33,7 +33,7 @@ internal object IdeCInteropMetadataDependencyClasspathResolver : IdeDependencyRe override fun dependencies(project: Project): Iterable { return project.multiplatformExtension.sourceSets .filterIsInstance() - .filter { getCommonizerTarget(it) is SharedCommonizerTarget } + .filter { it.commonizerTarget.getOrThrow() is SharedCommonizerTarget} .mapNotNull { project.locateDependencyTask(it) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt index 2b4c4c742c8..bc877e26111 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt @@ -12,9 +12,8 @@ import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.idea.tcs.extras.isCommonized import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver -import org.jetbrains.kotlin.gradle.plugin.sources.project import org.jetbrains.kotlin.gradle.targets.native.internal.commonizeNativeDistributionTask -import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget +import org.jetbrains.kotlin.gradle.targets.native.internal.commonizerTarget import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION internal object IdeCommonizedNativePlatformDependencyResolver : @@ -22,7 +21,7 @@ internal object IdeCommonizedNativePlatformDependencyResolver : override fun resolve(sourceSet: KotlinSourceSet): Set { val project = sourceSet.project - val commonizerTarget = getCommonizerTarget(sourceSet) as? SharedCommonizerTarget ?: return emptySet() + val commonizerTarget = sourceSet.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return emptySet() val commonizerTask = project.commonizeNativeDistributionTask?.get() ?: return emptySet() val outputDirectory = resolveCommonizedDirectory(commonizerTask.rootOutputDirectory, commonizerTarget) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeNativePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeNativePlatformDependencyResolver.kt index 452f966c47e..bce235f6349 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeNativePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeNativePlatformDependencyResolver.kt @@ -13,14 +13,13 @@ import org.jetbrains.kotlin.compilerRunner.konanHome import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver -import org.jetbrains.kotlin.gradle.plugin.sources.project -import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget +import org.jetbrains.kotlin.gradle.targets.native.internal.commonizerTarget import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION internal object IdeNativePlatformDependencyResolver : IdeDependencyResolver { override fun resolve(sourceSet: KotlinSourceSet): Set { val project = sourceSet.project - val commonizerTarget = getCommonizerTarget(sourceSet) as? LeafCommonizerTarget ?: return emptySet() + val commonizerTarget = sourceSet.commonizerTarget.getOrThrow() as? LeafCommonizerTarget ?: return emptySet() val konanTarget = commonizerTarget.konanTargetOrNull ?: return emptySet() return sourceSet.project.konanDistribution.platformLibsDir.resolve(konanTarget.name) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 5068fc8a3df..eb5fbe8f636 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -272,7 +272,7 @@ class KotlinMetadataTargetConfigurator : } } - private fun createMetadataCompilation( + private suspend fun createMetadataCompilation( target: KotlinMetadataTarget, sourceSet: KotlinSourceSet, allMetadataJar: TaskProvider, @@ -331,7 +331,7 @@ class KotlinMetadataTargetConfigurator : } } - private fun configureMetadataDependenciesForCompilation(compilation: KotlinCompilation<*>) { + private suspend fun configureMetadataDependenciesForCompilation(compilation: KotlinCompilation<*>) { val project = compilation.target.project val sourceSet = compilation.defaultSourceSet @@ -348,7 +348,7 @@ class KotlinMetadataTargetConfigurator : // Transformed Multiplatform Libraries based on source set visibility compilation.compileDependencyFiles += project.files(transformationTask.map { it.allTransformedLibraries }) - if (sourceSet is DefaultKotlinSourceSet && getCommonizerTarget(sourceSet) is SharedCommonizerTarget) { + if (sourceSet is DefaultKotlinSourceSet && sourceSet.sharedCommonizerTarget.await() is SharedCommonizerTarget) { compilation.compileDependencyFiles += project.createCInteropMetadataDependencyClasspath(sourceSet) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt index 73f2459b1e1..e684c7d9802 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt @@ -9,9 +9,10 @@ import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull +import org.jetbrains.kotlin.gradle.plugin.launch import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.whenEvaluated +import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.utils.filesProvider import java.io.File @@ -59,11 +60,10 @@ internal fun Project.cinteropCommonizerDependencies(sourceSet: DefaultKotlinSour } } -private fun Project.setupCInteropTransformCompositeMetadataDependenciesForIde(sourceSet: DefaultKotlinSourceSet) { - whenEvaluated { - if (getCommonizerTarget(sourceSet) !is SharedCommonizerTarget) return@whenEvaluated - addIntransitiveMetadataDependencyIfPossible( - sourceSet, createCInteropMetadataDependencyClasspathForIde(sourceSet) - ) - } +private fun Project.setupCInteropTransformCompositeMetadataDependenciesForIde(sourceSet: DefaultKotlinSourceSet) = launch { + if (sourceSet.internal.commonizerTarget.await() !is SharedCommonizerTarget) return@launch + addIntransitiveMetadataDependencyIfPossible( + sourceSet, createCInteropMetadataDependencyClasspathForIde(sourceSet) + ) } + diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt index 3f4d8bcfe1d..da95b4b1be4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependent.kt @@ -74,14 +74,14 @@ internal fun CInteropCommonizerDependent.Factory.from( internal fun CInteropCommonizerDependent.Factory.from(compilation: KotlinSharedNativeCompilation): CInteropCommonizerDependent? { return from( - getCommonizerTarget(compilation) as? SharedCommonizerTarget ?: return null, + compilation.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return null, compilation.getImplicitlyDependingNativeCompilations() ) } internal fun CInteropCommonizerDependent.Factory.from(sourceSet: KotlinSourceSet): CInteropCommonizerDependent? { return from( - target = getCommonizerTarget(sourceSet) as? SharedCommonizerTarget ?: return null, + target = sourceSet.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return null, compilations = sourceSet.internal.compilations .filterIsInstance().toSet() ) @@ -89,7 +89,7 @@ internal fun CInteropCommonizerDependent.Factory.from(sourceSet: KotlinSourceSet internal fun CInteropCommonizerDependent.Factory.fromAssociateCompilations(sourceSet: KotlinSourceSet): CInteropCommonizerDependent? { return from( - target = getCommonizerTarget(sourceSet) as? SharedCommonizerTarget ?: return null, + target = sourceSet.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return null, compilations = sourceSet.internal.compilations .filterIsInstance() .flatMap { compilation -> compilation.associateWithClosure } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt index daefc25bb11..fd5e07d4118 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerTask.kt @@ -126,7 +126,7 @@ internal open class CInteropCommonizerTask private val groupedCommonizerDependencies: Map> by lazy { val multiplatformExtension = project.multiplatformExtensionOrNull ?: return@lazy emptyMap() - val sourceSetsByTarget = multiplatformExtension.sourceSets.groupBy { sourceSet -> getCommonizerTarget(sourceSet) } + val sourceSetsByTarget = multiplatformExtension.sourceSets.groupBy { sourceSet -> sourceSet.commonizerTarget.getOrThrow() } val sourceSetsByGroup = multiplatformExtension.sourceSets.groupBy { sourceSet -> CInteropCommonizerDependent.from(sourceSet)?.let { findInteropsGroup(it) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyClasspath.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyClasspath.kt index e114c56a2cd..b8620a54364 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyClasspath.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyClasspath.kt @@ -74,7 +74,7 @@ private fun Project.createCInteropMetadataDependencyClasspathFromAssociatedCompi forIde: Boolean ): FileCollection { return filesProvider files@{ - val commonizerTarget = getSharedCommonizerTarget(sourceSet) ?: return@files emptySet() + val commonizerTarget = sourceSet.sharedCommonizerTarget.getOrThrow() ?: return@files emptySet() /* We will find the 'most suitable' / 'closest matching' source set @@ -83,7 +83,7 @@ private fun Project.createCInteropMetadataDependencyClasspathFromAssociatedCompi */ val (associatedSourceSet, _) = sourceSet.getAdditionalVisibleSourceSets() .filterIsInstance() - .mapNotNull { otherSourceSet -> otherSourceSet to (getSharedCommonizerTarget(otherSourceSet) ?: return@mapNotNull null) } + .mapNotNull { otherSourceSet -> otherSourceSet to (otherSourceSet.sharedCommonizerTarget.getOrThrow() ?: return@mapNotNull null) } .filter { (_, otherCommonizerTarget) -> otherCommonizerTarget.targets.containsAll(commonizerTarget.targets) } .minByOrNull { (_, otherCommonizerTarget) -> otherCommonizerTarget.targets.size } ?: return@files emptySet() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt index 744710c5fb1..c24d2d06e17 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt @@ -105,7 +105,7 @@ private fun CInteropMetadataDependencyTransformationTask.configureTaskOrder() { } private fun CInteropMetadataDependencyTransformationTask.onlyIfSourceSetIsSharedNative() { - val isSharedCommonizerTarget = getCommonizerTarget(sourceSet) is SharedCommonizerTarget + val isSharedCommonizerTarget = sourceSet.internal.commonizerTarget.getOrThrow() is SharedCommonizerTarget onlyIf { isSharedCommonizerTarget } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfCompilation.kt deleted file mode 100644 index cd1a9b6b570..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfCompilation.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.gradle.targets.native.internal - -import org.jetbrains.kotlin.commonizer.CommonizerTarget -import org.jetbrains.kotlin.commonizer.LeafCommonizerTarget -import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation - -internal fun getCommonizerTarget(compilation: KotlinCompilation<*>): CommonizerTarget? { - if (compilation is KotlinNativeCompilation) { - return LeafCommonizerTarget(compilation.konanTarget) - } - - if (compilation is KotlinSharedNativeCompilation) { - return getCommonizerTarget(compilation.defaultSourceSet) ?: CommonizerTarget(compilation.konanTargets) - } - - return null -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfSourceSet.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfSourceSet.kt deleted file mode 100644 index 8625eabed9f..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/GetCommonizerTargetOfSourceSet.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.gradle.targets.native.internal - -import org.jetbrains.kotlin.commonizer.CommonizerTarget -import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget -import org.jetbrains.kotlin.commonizer.allLeaves -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation -import org.jetbrains.kotlin.gradle.plugin.sources.internal - -internal fun getCommonizerTarget(sourceSet: KotlinSourceSet): CommonizerTarget? { - val allCompilationLeafTargets = sourceSet.internal.compilations - .filter { compilation -> compilation !is KotlinMetadataCompilation } - .map { compilation -> getCommonizerTarget(compilation) ?: return null } - .allLeaves() - - return when { - allCompilationLeafTargets.isEmpty() -> null - allCompilationLeafTargets.size == 1 -> allCompilationLeafTargets.single() - else -> SharedCommonizerTarget(allCompilationLeafTargets) - } -} - -internal fun getSharedCommonizerTarget(sourceSet: KotlinSourceSet): SharedCommonizerTarget? { - return getCommonizerTarget(sourceSet) as? SharedCommonizerTarget -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt index 59c6dc90099..fc1c7523e87 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.ide.ideaImportDependsOn import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.getVisibleSourceSetsFromAssociateCompilations +import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.targets.metadata.getMetadataCompilationForSourceSet import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.targets.native.internal.MissingNativeStdlibWarning.showMissingNativeStdlibWarning @@ -35,25 +36,29 @@ internal fun Project.setupKotlinNativePlatformDependencies() { checkNotNull(commonizeNativeDistributionTask) { "Missing commonizeNativeDistributionTask" } } - kotlin.sourceSets.forEach { sourceSet -> - val target = getCommonizerTarget(sourceSet) ?: return@forEach - addDependencies(sourceSet, getNativeDistributionDependencies(target)) - addDependencies( - sourceSet, project.filesProvider { setOf(konanDistribution.stdlib) }, - /* + kotlin.sourceSets.all { sourceSet -> + launch { + val target = sourceSet.internal.commonizerTarget.await() ?: return@launch + addDependencies(sourceSet, getNativeDistributionDependencies(target)) + 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 - ) + isCompilationDependency = false + ) + } } - if (isPlatformIntegerCommonizationEnabled) { - kotlin.nativeRootSourceSets.forEach { sourceSet -> - dependencies.add( - sourceSet.implementationConfigurationName, - "$KOTLIN_MODULE_GROUP:$PLATFORM_INTEGERS_SUPPORT_LIBRARY:${getKotlinPluginVersion()}" - ) + launch { + if (isPlatformIntegerCommonizationEnabled) { + kotlin.nativeRootSourceSets().forEach { sourceSet -> + dependencies.add( + sourceSet.implementationConfigurationName, + "$KOTLIN_MODULE_GROUP:$PLATFORM_INTEGERS_SUPPORT_LIBRARY:${getKotlinPluginVersion()}" + ) + } } } } @@ -65,16 +70,15 @@ internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget) } } -internal val KotlinMultiplatformExtension.nativeRootSourceSets: Collection - get() { - val nativeSourceSets = sourceSets.filter { sourceSet -> getCommonizerTarget(sourceSet) != null } - return nativeSourceSets.filter { sourceSet -> - val allVisibleSourceSets = sourceSet.dependsOn + getVisibleSourceSetsFromAssociateCompilations(sourceSet) - allVisibleSourceSets.none { dependency -> - dependency in nativeSourceSets - } +internal suspend fun KotlinMultiplatformExtension.nativeRootSourceSets(): Collection { + val nativeSourceSets = sourceSets.filter { sourceSet -> sourceSet.internal.commonizerTarget.await() != null } + return nativeSourceSets.filter { sourceSet -> + val allVisibleSourceSets = sourceSet.dependsOn + getVisibleSourceSetsFromAssociateCompilations(sourceSet) + allVisibleSourceSets.none { dependency -> + dependency in nativeSourceSets } } +} private fun Project.getOriginalPlatformLibrariesFor(target: LeafCommonizerTarget): FileCollection = project.filesProvider { konanDistribution.platformLibsDir.resolve(target.konanTarget.name).listLibraryFiles().toSet() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt index 049a74697d0..eeffd35083b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt @@ -116,7 +116,7 @@ private fun Project.collectAllSharedCommonizerTargetsFromBuild(): Set { return (project.multiplatformExtensionOrNull ?: return emptySet()).sourceSets - .mapNotNull { sourceSet -> getCommonizerTarget(sourceSet) } + .mapNotNull { sourceSet -> sourceSet.commonizerTarget.getOrThrow() } .filterIsInstance() .toSet() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/commonizerTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/commonizerTarget.kt new file mode 100644 index 00000000000..c70dfc8e13c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/commonizerTarget.kt @@ -0,0 +1,65 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.targets.native.internal + +import org.jetbrains.kotlin.commonizer.CommonizerTarget +import org.jetbrains.kotlin.commonizer.LeafCommonizerTarget +import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget +import org.jetbrains.kotlin.commonizer.allLeaves +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation +import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import org.jetbrains.kotlin.gradle.plugin.await +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataCompilation +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation +import org.jetbrains.kotlin.gradle.plugin.sources.internal +import org.jetbrains.kotlin.gradle.utils.Future +import org.jetbrains.kotlin.gradle.utils.lazyFuture +import org.jetbrains.kotlin.tooling.core.UnsafeApi + +internal val KotlinSourceSet.commonizerTarget: Future by lazyFuture { + await(KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges) + @OptIn(UnsafeApi::class) + inferCommonizerTarget(this) +} + +internal val KotlinSourceSet.sharedCommonizerTarget: Future by lazyFuture { + commonizerTarget.await() as? SharedCommonizerTarget +} + +internal val KotlinCompilation<*>.commonizerTarget: Future by lazyFuture { + await(KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges) + @OptIn(UnsafeApi::class) + inferCommonizerTarget(this) +} + +@UnsafeApi("Use sourceSet.commonizerTarget instead") +internal fun inferCommonizerTarget(sourceSet: KotlinSourceSet): CommonizerTarget? { + val allCompilationLeafTargets = sourceSet.internal.compilations + .filter { compilation -> compilation !is KotlinMetadataCompilation } + .map { compilation -> inferCommonizerTarget(compilation) ?: return null } + .allLeaves() + + return when { + allCompilationLeafTargets.isEmpty() -> null + allCompilationLeafTargets.size == 1 -> allCompilationLeafTargets.single() + else -> SharedCommonizerTarget(allCompilationLeafTargets) + } +} + +@UnsafeApi("Use compilation.commonizerTarget instead") +internal fun inferCommonizerTarget(compilation: KotlinCompilation<*>): CommonizerTarget? { + if (compilation is KotlinNativeCompilation) { + return LeafCommonizerTarget(compilation.konanTarget) + } + + if (compilation is KotlinSharedNativeCompilation) { + return inferCommonizerTarget(compilation.defaultSourceSet) ?: CommonizerTarget(compilation.konanTargets) + } + + return null +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeNativePlatformDependencyResolverTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeNativePlatformDependencyResolverTest.kt index 184e830c400..f5c509e5408 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeNativePlatformDependencyResolverTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeNativePlatformDependencyResolverTest.kt @@ -27,6 +27,7 @@ class IdeNativePlatformDependencyResolverTest { val kotlin = project.multiplatformExtension kotlin.targetHierarchy.default() kotlin.linuxX64() + project.evaluate() val commonMain = kotlin.sourceSets.getByName("commonMain") val commonTest = kotlin.sourceSets.getByName("commonTest") @@ -51,6 +52,7 @@ class IdeNativePlatformDependencyResolverTest { val kotlin = project.multiplatformExtension kotlin.targetHierarchy.default() kotlin.macosArm64() + project.evaluate() val commonMain = kotlin.sourceSets.getByName("commonMain") val commonTest = kotlin.sourceSets.getByName("commonTest") @@ -74,6 +76,7 @@ class IdeNativePlatformDependencyResolverTest { val kotlin = project.multiplatformExtension kotlin.jvm() kotlin.linuxX64() + project.evaluate() val commonMain = kotlin.sourceSets.getByName("commonMain") val commonTest = kotlin.sourceSets.getByName("commonTest") diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt index 7c96bd84138..44448b41336 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CInteropMetadataDependencyTransformationTaskTest.kt @@ -67,13 +67,18 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT linuxX64Test.dependsOn(nativeTest) linuxArm64Test.dependsOn(nativeTest) + project.evaluate() val nativeTestTransformationTask = project.locateOrRegisterCInteropMetadataDependencyTransformationTask(nativeTest) assertNotNull(nativeTestTransformationTask, "Expected transformation task registered for 'nativeTest'") assertEquals( - listOf(commonMain, commonTest, nativeMain).map { sourceSet -> - project.locateOrRegisterCInteropMetadataDependencyTransformationTask(sourceSet as DefaultKotlinSourceSet)?.get() - ?: fail("Expected transformation task registered for '${sourceSet.name}'") + listOf(commonMain, commonTest, nativeMain).flatMap { sourceSet -> + listOf( + project.locateOrRegisterCInteropMetadataDependencyTransformationTask(sourceSet as DefaultKotlinSourceSet)?.get() + ?: fail("Expected transformation task registered for '${sourceSet.name}'"), + project.locateOrRegisterCInteropMetadataDependencyTransformationTaskForIde(sourceSet)?.get() + ?: fail("Expected transformation task registered for '${sourceSet.name}'(forIde)") + ) }.toSet(), nativeTestTransformationTask.get().mustRunAfter.getDependencies(null).toSet() ) @@ -96,6 +101,8 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT linuxArm64Main.dependsOn(linuxMain) linuxX64Main.dependsOn(linuxMain) + project.evaluate() + listOf( "commonMain", "jvmMain", "linuxArm64Main", "linuxX64Main" ).map { sourceSetName -> kotlin.sourceSets.getByName(sourceSetName) }.forEach { sourceSet -> @@ -128,7 +135,7 @@ class CInteropMetadataDependencyTransformationTaskTest : MultiplatformExtensionT linuxX64() linuxArm64() } - } + }.also { it.evaluate() } fun Project.transformationTaskOutputs(): Set { val kotlin = multiplatformExtension diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt index 5c0748c4c88..f74e570944f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/SourceSetCommonizerTargetTest.kt @@ -8,23 +8,23 @@ package org.jetbrains.kotlin.gradle.unitTests -import org.gradle.api.Project import org.gradle.api.internal.project.ProjectInternal import org.gradle.api.plugins.ExtraPropertiesExtension -import org.gradle.testfixtures.ProjectBuilder import org.jetbrains.kotlin.commonizer.CommonizerTarget import org.jetbrains.kotlin.commonizer.LeafCommonizerTarget import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension -import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget +import org.jetbrains.kotlin.gradle.targets.native.internal.inferCommonizerTarget import org.jetbrains.kotlin.gradle.util.addBuildEventsListenerRegistryMock import org.jetbrains.kotlin.gradle.util.buildProject import org.jetbrains.kotlin.konan.target.KonanTarget.* +import org.jetbrains.kotlin.tooling.core.UnsafeApi import kotlin.test.BeforeTest import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertNull +@OptIn(UnsafeApi::class) class SourceSetCommonizerTargetTest { private lateinit var project: ProjectInternal @@ -37,7 +37,6 @@ class SourceSetCommonizerTargetTest { project.extensions.getByType(ExtraPropertiesExtension::class.java).set("kotlin.mpp.enableCompatibilityMetadataVariant", "false") project.plugins.apply("kotlin-multiplatform") kotlin = project.extensions.getByName("kotlin") as KotlinMultiplatformExtension - } @Test @@ -52,14 +51,14 @@ class SourceSetCommonizerTargetTest { val linuxTest = kotlin.sourceSets.getByName("linuxTest") val macosTest = kotlin.sourceSets.getByName("macosTest") - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxMain)) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxTest)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosMain)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosTest)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxMain)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxTest)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosMain)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosTest)) project.evaluate() - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(commonMain)) - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(commonTest)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(commonMain)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(commonTest)) } @Test @@ -80,16 +79,16 @@ class SourceSetCommonizerTargetTest { macosMain.dependsOn(nativeMain) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxMain)) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxTest)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosMain)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosTest)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxMain)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxTest)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosMain)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosTest)) - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(nativeMain)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(nativeMain)) project.evaluate() - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(commonMain)) - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(commonTest)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(commonMain)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(commonTest)) } @Test @@ -109,16 +108,16 @@ class SourceSetCommonizerTargetTest { linuxAMain.dependsOn(nativeMain) linuxBMain.dependsOn(nativeMain) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(linuxAMain)) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(linuxATest)) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(linuxBMain)) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(linuxBTest)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxAMain)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxATest)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxBMain)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxBTest)) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(nativeMain)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(nativeMain)) project.evaluate() - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(commonMain)) - assertEquals(LeafCommonizerTarget(LINUX_X64), getCommonizerTarget(commonTest)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(commonMain)) + assertEquals(LeafCommonizerTarget(LINUX_X64), inferCommonizerTarget(commonTest)) } @Test @@ -148,31 +147,31 @@ class SourceSetCommonizerTargetTest { iosX64Main.dependsOn(iosMain) iosArm64Main.dependsOn(iosMain) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxMain)) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxTest)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosMain)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosTest)) - assertEquals(CommonizerTarget(IOS_X64), getCommonizerTarget(iosX64Test)) - assertEquals(CommonizerTarget(IOS_X64), getCommonizerTarget(iosX64Test)) - assertEquals(CommonizerTarget(IOS_ARM64), getCommonizerTarget(iosArm64Main)) - assertEquals(CommonizerTarget(IOS_ARM64), getCommonizerTarget(iosArm64Test)) - assertEquals(CommonizerTarget(IOS_X64, IOS_ARM64), getCommonizerTarget(iosMain)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxMain)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxTest)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosMain)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosTest)) + assertEquals(CommonizerTarget(IOS_X64), inferCommonizerTarget(iosX64Test)) + assertEquals(CommonizerTarget(IOS_X64), inferCommonizerTarget(iosX64Test)) + assertEquals(CommonizerTarget(IOS_ARM64), inferCommonizerTarget(iosArm64Main)) + assertEquals(CommonizerTarget(IOS_ARM64), inferCommonizerTarget(iosArm64Test)) + assertEquals(CommonizerTarget(IOS_X64, IOS_ARM64), inferCommonizerTarget(iosMain)) assertEquals( CommonizerTarget(IOS_X64, IOS_ARM64, MACOS_X64, LINUX_X64), - getCommonizerTarget(nativeMain) + inferCommonizerTarget(nativeMain) ) project.evaluate() assertEquals( CommonizerTarget(IOS_X64, IOS_ARM64, MACOS_X64, LINUX_X64), - getCommonizerTarget(commonMain) + inferCommonizerTarget(commonMain) ) assertEquals( CommonizerTarget(IOS_ARM64, IOS_X64, LINUX_X64, MACOS_X64), - getCommonizerTarget(commonTest) + inferCommonizerTarget(commonTest) ) } @@ -196,18 +195,18 @@ class SourceSetCommonizerTargetTest { linuxMain.dependsOn(nativeMain) macosMain.dependsOn(nativeMain) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxMain)) - assertEquals(CommonizerTarget(LINUX_X64), getCommonizerTarget(linuxTest)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosMain)) - assertEquals(CommonizerTarget(MACOS_X64), getCommonizerTarget(macosTest)) - assertNull(getCommonizerTarget(jvmMain), "Expected jvmMain to have no commonizer target") - assertNull(getCommonizerTarget(jvmTest), "Expected jvmTest to have no commonizer target") + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxMain)) + assertEquals(CommonizerTarget(LINUX_X64), inferCommonizerTarget(linuxTest)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosMain)) + assertEquals(CommonizerTarget(MACOS_X64), inferCommonizerTarget(macosTest)) + assertNull(inferCommonizerTarget(jvmMain), "Expected jvmMain to have no commonizer target") + assertNull(inferCommonizerTarget(jvmTest), "Expected jvmTest to have no commonizer target") - assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), getCommonizerTarget(nativeMain)) + assertEquals(CommonizerTarget(LINUX_X64, MACOS_X64), inferCommonizerTarget(nativeMain)) project.evaluate() - assertNull(getCommonizerTarget(commonMain), "Expected commonMain to have no commonizer target") - assertNull(getCommonizerTarget(commonTest), "Expected commonTest to have no commonizer target") + assertNull(inferCommonizerTarget(commonMain), "Expected commonMain to have no commonizer target") + assertNull(inferCommonizerTarget(commonTest), "Expected commonTest to have no commonizer target") } @Test @@ -223,7 +222,7 @@ class SourceSetCommonizerTargetTest { assertEquals( SharedCommonizerTarget(setOf(linux1.konanTarget, linux2.konanTarget)), - getCommonizerTarget(nativeMain) + inferCommonizerTarget(nativeMain) ) } @@ -240,7 +239,7 @@ class SourceSetCommonizerTargetTest { linux2Main.dependsOn(nativeMain) orphan.dependsOn(nativeMain) - assertEquals(CommonizerTarget(linux1.konanTarget, linux2.konanTarget), getCommonizerTarget(nativeMain)) + assertEquals(CommonizerTarget(linux1.konanTarget, linux2.konanTarget), inferCommonizerTarget(nativeMain)) } @Test @@ -252,6 +251,6 @@ class SourceSetCommonizerTargetTest { orphan1.dependsOn(nativeMain) orphan2.dependsOn(nativeMain) - assertEquals(null, getCommonizerTarget(nativeMain)) + assertEquals(null, inferCommonizerTarget(nativeMain)) } }