[Gradle] Don't resolve Apple-specific Cinterops on Linux & Windows

Resolving such dependencies was lenient, however it produced
a lot of annoying error messages in the IDE. Because "file not found".

KGP already warns user if they are declared Apple-specific targets
on non-macos machine.

^KT-66514 Verification Pending
This commit is contained in:
Anton Lakotka
2024-03-12 08:52:49 +01:00
committed by Space Team
parent e2336e1752
commit a56dc7d73a
3 changed files with 15 additions and 2 deletions
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
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.mpp.enabledOnCurrentHost
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.internal
import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
@@ -76,6 +77,9 @@ internal fun Project.getPlatformCinteropDependenciesOrEmpty(
/* Participating in multiple compilations? -> can't propagate -> should be commonized */
val compilation = compilations.singleOrNull() as? KotlinNativeCompilation ?: return@files emptySet<File>()
/* Apple-specific cinterops can't be produced on non-MacOs machines, so just return an empty dependencies collection */
if (!compilation.target.konanTarget.enabledOnCurrentHost) return@files emptySet<File>()
(compilation.associatedCompilations + compilation)
.filterIsInstance<KotlinNativeCompilation>()
.filter(compilationFilter)