[Gradle] Add test checking crossCompilationSupported
^KT-77258
diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CrossCompilationWithCinteropTests.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CrossCompilationWithCinteropTests.kt
index 14e0ce7..9514d8b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CrossCompilationWithCinteropTests.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/CrossCompilationWithCinteropTests.kt
@@ -11,7 +11,11 @@
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_ENABLE_KLIBS_CROSSCOMPILATION
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
+import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
+import org.jetbrains.kotlin.gradle.plugin.tcs
+import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.konan.target.HostManager
@@ -26,9 +30,9 @@
fun `cross compilation with cinterops`() {
val project = buildProjectWithMPP {
kotlin {
- macosX64()
- linuxX64()
- mingwX64()
+ listOf(macosX64(), linuxX64(), mingwX64()).forEach { target ->
+ target.binaries.executable(listOf(NativeBuildType.DEBUG))
+ }
addDummyCinterop { it.konanTarget == KonanTarget.MACOS_X64 }
addDummyCinterop { it.konanTarget == KonanTarget.LINUX_X64 }
@@ -36,13 +40,13 @@
}
}.evaluate()
- val compileKotlinMacosX64 = project.tasks.findByName("compileKotlinMacosX64") as? KotlinNativeCompile
- val compileKotlinMingwX64 = project.tasks.findByName("compileKotlinMingwX64") as? KotlinNativeCompile
- val compileKotlinLinuxX64 = project.tasks.findByName("compileKotlinLinuxX64") as? KotlinNativeCompile
+ val compileKotlinMacosX64 = project.tasks.findByName("compileKotlinMacosX64") as KotlinNativeCompile?
+ val compileKotlinMingwX64 = project.tasks.findByName("compileKotlinMingwX64") as KotlinNativeCompile?
+ val compileKotlinLinuxX64 = project.tasks.findByName("compileKotlinLinuxX64") as KotlinNativeCompile?
- val cinteropDummyMacosX64 = project.tasks.findByName("cinteropDummyMacosX64")
- val cinteropDummyLinuxX64 = project.tasks.findByName("cinteropDummyLinuxX64")
- val cinteropDummyMingwX64 = project.tasks.findByName("cinteropDummyMingwX64")
+ val cinteropDummyMacosX64 = project.tasks.findByName("cinteropDummyMacosX64") as CInteropProcess?
+ val cinteropDummyLinuxX64 = project.tasks.findByName("cinteropDummyLinuxX64") as CInteropProcess?
+ val cinteropDummyMingwX64 = project.tasks.findByName("cinteropDummyMingwX64") as CInteropProcess?
assertNotNull(compileKotlinMingwX64, "compileKotlinMingwX64 task should be present")
assertNotNull(compileKotlinLinuxX64, "compileKotlinLinuxX64 task should be present")
@@ -52,11 +56,26 @@
assertNotNull(cinteropDummyLinuxX64, "cinteropDummyLinuxX64 task should be present")
assertNotNull(cinteropDummyMacosX64, "cinteropDummyMacosX64 task should be present")
+ val linuxX64Compilation = compileKotlinLinuxX64.compilation.tcs.compilation as KotlinNativeCompilation
+ val mingwX64Compilation = compileKotlinMingwX64.compilation.tcs.compilation as KotlinNativeCompilation
+ val macosX64Compilation = compileKotlinMacosX64.compilation.tcs.compilation as KotlinNativeCompilation
+
+ assert(linuxX64Compilation.crossCompilationSupported.get()) {
+ "LinuxX64 compilation should support cross-compilation"
+ }
+
+ assert(mingwX64Compilation.crossCompilationSupported.get()) {
+ "MingwX64 compilation should support cross-compilation"
+ }
+
if (HostManager.hostIsMac) {
project.assertNoDiagnostics(KotlinToolingDiagnostics.CrossCompilationWithCinterops)
assert(cinteropDummyMacosX64.enabled) {
"cinteropDummyMacosX64 task should be enabled on macOS"
}
+ assert(macosX64Compilation.crossCompilationSupported.get()) {
+ "MacosX64 compilation should support cross-compilation on macOS"
+ }
assertEquals(
true,
compileKotlinMacosX64.onlyIf.isSatisfiedBy(compileKotlinMacosX64),
@@ -67,6 +86,9 @@
assert(!cinteropDummyMacosX64.enabled) {
"cinteropDummyMacosX64 task should be disabled on non-macOS"
}
+ assert(!macosX64Compilation.crossCompilationSupported.get()) {
+ "MacosX64 compilation should not support cross-compilation on non-macOS"
+ }
assertEquals(
false,
compileKotlinMacosX64.onlyIf.isSatisfiedBy(compileKotlinMacosX64),