[MPP] Fix linking
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
index d65d1d2..6e17ab7 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
@@ -46,7 +46,6 @@
import org.jetbrains.kotlin.konan.target.KonanTarget.*
import org.jetbrains.kotlin.konan.target.presetName
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
-import java.nio.file.Path
import java.nio.file.Paths
class KotlinMultiplatformPlugin : Plugin<Project> {
@@ -272,7 +271,7 @@
)
it.compilerOptions.freeCompilerArgs.addAll(
project.provider {
- val swiftLibraries = when (appleTarget.konanTarget) {
+ val sdkName = when (appleTarget.konanTarget) {
is MACOS_X64, MACOS_ARM64 -> "macosx" // ??? catalyst ???
is IOS_X64, IOS_SIMULATOR_ARM64 -> "iphonesimulator"
is IOS_ARM64 -> "iphoneos"
@@ -283,8 +282,10 @@
else -> error("???")
}
// Get from dependencies pif instead?
- val swiftLibrariesPath = Paths.get(runCommand(listOf("xcode-select", "-p")).dropLast(1)).resolve("Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/${swiftLibraries}")
- listOf("-linker-option", "-L$swiftLibrariesPath")
+ val swiftLibrariesPath = Paths.get(runCommand(listOf("xcode-select", "-p")).dropLast(1)).resolve("Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/${sdkName}")
+ val swiftLibrariesInSdkPath = Paths.get(runCommand(listOf("xcrun", "--sdk", sdkName, "--show-sdk-path")).dropLast(1)).resolve("usr/lib/swift")
+
+ listOf("-linker-option", "-L$swiftLibrariesPath", "-linker-option", "-L$swiftLibrariesInSdkPath")
}
)
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/PackageSwiftGenerateTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/PackageSwiftGenerateTask.kt
index 89ae4b9..4098252 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/PackageSwiftGenerateTask.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/PackageSwiftGenerateTask.kt
@@ -255,7 +255,7 @@
try {
konanTargetNames.forEach { konanTargetName ->
runCommand(
- listOf(
+ command = listOf(
"/Users/Timofey.Solonin/.konan/kotlin-native-prebuilt-macos-aarch64-1.9.20-Beta-224/bin/cinterop",
"-def", defFilePath.path,
"-target", konanTargetName,
@@ -263,7 +263,7 @@
val argsFromDependency = mutableListOf(
"-compiler-option", "-I${buildDir.resolve("debug/$it.build")}"
)
- val expectedDependencyLibPath = spmInteropDir.resolve("$it.klib")
+ val expectedDependencyLibPath = spmInteropDir.resolve("${it}_$konanTargetName.klib")
if (expectedDependencyLibPath.exists()) {
argsFromDependency.addAll(listOf("-library", expectedDependencyLibPath.path))
}
@@ -277,7 +277,8 @@
"-compiler-option", "-fmodules",
"-Xmodule-name", target,
"-o", spmInteropDir.resolve("${target}_$konanTargetName.klib").path
- )
+ ),
+ logger = logger
)
}
} catch (e: Throwable) {