Add kotlin runtime modulemap for swift export as part of kotlin-native dist #KT-65673 fixed
Co-authored-by: Alexander Shabalin <alexander.shabalin@ashabalin.me> Merge-request: KT-MR-14493 Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
+5
@@ -7,10 +7,12 @@ package org.jetbrains.kotlin.konan.test.blackbox
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||
import org.jetbrains.kotlin.konan.target.AppleConfigurables
|
||||
import org.jetbrains.kotlin.konan.target.Distribution
|
||||
import org.jetbrains.kotlin.konan.target.withOSVersion
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.compilation.invokeSwiftC
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.settings.configurables
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.util.createModuleMap
|
||||
import org.jetbrains.kotlin.utils.KotlinNativePaths
|
||||
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assumptions
|
||||
@@ -55,10 +57,13 @@ abstract class SwiftTypeCheckBaseTest : AbstractNativeSimpleTest() {
|
||||
val swiftTarget = configs.targetTriple.withOSVersion(configs.osVersionMin).toString()
|
||||
|
||||
val bridgeModuleFile = createModuleMap(buildDir, cHeader)
|
||||
val kotlinRuntimeModuleMapFile = Distribution(KotlinNativePaths.homePath.absolutePath)
|
||||
.kotlinRuntimeForSwiftModuleMap
|
||||
|
||||
val args = listOf(
|
||||
"-typecheck", swiftFile.absolutePath,
|
||||
"-Xcc", "-fmodule-map-file=${bridgeModuleFile.absolutePath}",
|
||||
"-Xcc", "-fmodule-map-file=${kotlinRuntimeModuleMapFile}",
|
||||
"-sdk", configs.absoluteTargetSysRoot, "-target", swiftTarget
|
||||
)
|
||||
|
||||
|
||||
+7
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.konan.target.Distribution
|
||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.sir.SirModule
|
||||
import org.jetbrains.kotlin.sir.builder.SirImportBuilder
|
||||
import org.jetbrains.kotlin.sir.builder.buildImport
|
||||
import org.jetbrains.kotlin.sir.builder.buildModule
|
||||
import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput
|
||||
@@ -68,6 +69,9 @@ internal fun buildSwiftModule(
|
||||
declarations += buildImport {
|
||||
moduleName = bridgeModuleName
|
||||
}
|
||||
declarations += buildImport {
|
||||
moduleName = KOTLIN_RUNTIME_MODULE_NAME
|
||||
}
|
||||
ktFiles.forEach { file ->
|
||||
declarations += buildSirDeclarationList(file)
|
||||
}
|
||||
@@ -75,4 +79,6 @@ internal fun buildSwiftModule(
|
||||
declarations.forEach { it.parent = this }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private const val KOTLIN_RUNTIME_MODULE_NAME: String = "KotlinRuntime"
|
||||
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
import KotlinBridges
|
||||
import KotlinRuntime
|
||||
|
||||
/**
|
||||
* Function foo description
|
||||
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
import KotlinBridges
|
||||
import KotlinRuntime
|
||||
|
||||
public enum namespace1 {
|
||||
public enum local_functions {
|
||||
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
import KotlinBridges
|
||||
import KotlinRuntime
|
||||
|
||||
public func meaningOfLife() -> Swift.Int32 {
|
||||
return __root___meaningOfLife()
|
||||
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
import KotlinBridges
|
||||
import KotlinRuntime
|
||||
|
||||
public enum namespace {
|
||||
public enum main {
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.konan.properties.Properties
|
||||
import org.jetbrains.kotlin.konan.properties.keepOnlyDefaultProfiles
|
||||
import org.jetbrains.kotlin.konan.properties.loadProperties
|
||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||
import java.nio.file.Path
|
||||
|
||||
class Distribution private constructor(private val serialized: Serialized) : java.io.Serializable {
|
||||
constructor(
|
||||
@@ -88,6 +89,9 @@ class Distribution private constructor(private val serialized: Serialized) : jav
|
||||
val stdlib = "$klib/common/stdlib"
|
||||
val stdlibDefaultComponent = "$stdlib/default"
|
||||
|
||||
val kotlinRuntimeForSwiftHome = "$konanHome/konan/swift_export/kotlin_runtime"
|
||||
val kotlinRuntimeForSwiftModuleMap = "$kotlinRuntimeForSwiftHome/module.modulemap"
|
||||
|
||||
fun defaultNatives(target: KonanTarget) = "$konanHome/konan/targets/${target.visibleName}/native"
|
||||
|
||||
fun runtime(target: KonanTarget) = runtimeFileOverride ?: "${defaultNatives(target)}/runtime.bc"
|
||||
|
||||
Reference in New Issue
Block a user