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:
@@ -19,6 +19,12 @@ object CppUsage {
|
|||||||
@JvmField
|
@JvmField
|
||||||
val COMPILATION_DATABASE = "llvm-compilation-database"
|
val COMPILATION_DATABASE = "llvm-compilation-database"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Directory with public headers of a component.
|
||||||
|
*/
|
||||||
|
@JvmField
|
||||||
|
val API = Usage.C_PLUS_PLUS_API
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val USAGE_ATTRIBUTE: Attribute<Usage> = Usage.USAGE_ATTRIBUTE
|
val USAGE_ATTRIBUTE: Attribute<Usage> = Usage.USAGE_ATTRIBUTE
|
||||||
}
|
}
|
||||||
@@ -148,6 +148,14 @@ configurations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
objcExportApi {
|
||||||
|
canBeConsumed = false
|
||||||
|
canBeResolved = true
|
||||||
|
attributes {
|
||||||
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, CppUsage.API))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
embeddableJar {
|
embeddableJar {
|
||||||
canBeConsumed = false
|
canBeConsumed = false
|
||||||
canBeResolved = true
|
canBeResolved = true
|
||||||
@@ -175,6 +183,7 @@ dependencies {
|
|||||||
compilationDatabase project(":kotlin-native:common")
|
compilationDatabase project(":kotlin-native:common")
|
||||||
compilationDatabase project(":kotlin-native:runtime")
|
compilationDatabase project(":kotlin-native:runtime")
|
||||||
runtimeBitcode project(":kotlin-native:runtime")
|
runtimeBitcode project(":kotlin-native:runtime")
|
||||||
|
objcExportApi project(":kotlin-native:runtime")
|
||||||
embeddableJar project(path: ':kotlin-native:prepare:kotlin-native-compiler-embeddable', configuration: 'runtimeElements')
|
embeddableJar project(path: ':kotlin-native:prepare:kotlin-native-compiler-embeddable', configuration: 'runtimeElements')
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,6 +322,10 @@ tasks.register("distCompiler", Copy) {
|
|||||||
exclude('**/*.properties')
|
exclude('**/*.properties')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
from(configurations.objcExportApi) {
|
||||||
|
into('konan/swift_export/kotlin_runtime')
|
||||||
|
}
|
||||||
|
|
||||||
from(project.file('konan')) {
|
from(project.file('konan')) {
|
||||||
into('konan')
|
into('konan')
|
||||||
include('**/*.properties')
|
include('**/*.properties')
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ val targetList: List<String> by project
|
|||||||
bitcode {
|
bitcode {
|
||||||
allTargets {
|
allTargets {
|
||||||
module("main") {
|
module("main") {
|
||||||
headersDirs.from("src/externalCallsChecker/common/cpp")
|
headersDirs.from("src/externalCallsChecker/common/cpp", "src/objcExport/cpp")
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
// TODO: Split out out `base` module and merge it together with `main` into `runtime.bc`
|
// TODO: Split out out `base` module and merge it together with `main` into `runtime.bc`
|
||||||
@@ -61,6 +61,12 @@ bitcode {
|
|||||||
testSupportModules.addAll("mm", "noop_externalCallsChecker", "common_alloc", "legacy_alloc", "std_alloc", "common_gc", "noop_gc", "common_gcScheduler", "manual_gcScheduler", "objc")
|
testSupportModules.addAll("mm", "noop_externalCallsChecker", "common_alloc", "legacy_alloc", "std_alloc", "common_gc", "noop_gc", "common_gcScheduler", "manual_gcScheduler", "objc")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Headers from here get reused by Swift Export, so this module should not depend on anything in the runtime
|
||||||
|
module("objcExport") {
|
||||||
|
// There must not be any implementation files, only headers.
|
||||||
|
sourceSets {}
|
||||||
|
}
|
||||||
|
|
||||||
module("mimalloc") {
|
module("mimalloc") {
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
@@ -140,21 +146,21 @@ bitcode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module("compiler_interface") {
|
module("compiler_interface") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module("launcher") {
|
module("launcher") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module("debug") {
|
module("debug") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -162,7 +168,7 @@ bitcode {
|
|||||||
|
|
||||||
module("common_alloc") {
|
module("common_alloc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/alloc/common"))
|
srcRoot.set(layout.projectDirectory.dir("src/alloc/common"))
|
||||||
headersDirs.from(files("src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -176,7 +182,7 @@ bitcode {
|
|||||||
|
|
||||||
module("std_alloc") {
|
module("std_alloc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/alloc/std"))
|
srcRoot.set(layout.projectDirectory.dir("src/alloc/std"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/alloc/legacy/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/alloc/legacy/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -184,7 +190,7 @@ bitcode {
|
|||||||
|
|
||||||
module("custom_alloc") {
|
module("custom_alloc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/alloc/custom"))
|
srcRoot.set(layout.projectDirectory.dir("src/alloc/custom"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -202,7 +208,7 @@ bitcode {
|
|||||||
|
|
||||||
module("mimalloc_alloc") {
|
module("mimalloc_alloc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/alloc/mimalloc"))
|
srcRoot.set(layout.projectDirectory.dir("src/alloc/mimalloc"))
|
||||||
headersDirs.from(files("src/mimalloc/c/include", "src/alloc/common/cpp", "src/alloc/legacy/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/mimalloc/c/include", "src/alloc/common/cpp", "src/alloc/legacy/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -212,7 +218,7 @@ bitcode {
|
|||||||
|
|
||||||
module("legacy_alloc") {
|
module("legacy_alloc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/alloc/legacy"))
|
srcRoot.set(layout.projectDirectory.dir("src/alloc/legacy"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -232,7 +238,7 @@ bitcode {
|
|||||||
|
|
||||||
module("exceptionsSupport") {
|
module("exceptionsSupport") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/exceptions_support"))
|
srcRoot.set(layout.projectDirectory.dir("src/exceptions_support"))
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -240,7 +246,7 @@ bitcode {
|
|||||||
|
|
||||||
module("source_info_core_symbolication") {
|
module("source_info_core_symbolication") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/source_info/core_symbolication"))
|
srcRoot.set(layout.projectDirectory.dir("src/source_info/core_symbolication"))
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -250,7 +256,7 @@ bitcode {
|
|||||||
|
|
||||||
module("source_info_libbacktrace") {
|
module("source_info_libbacktrace") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/source_info/libbacktrace"))
|
srcRoot.set(layout.projectDirectory.dir("src/source_info/libbacktrace"))
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp", "src/libbacktrace/c/include"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/libbacktrace/c/include"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -259,14 +265,14 @@ bitcode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module("objc") {
|
module("objc") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module("test_support") {
|
module("test_support") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
testFixtures {
|
testFixtures {
|
||||||
inputFiles.include("**/*.cpp", "**/*.mm")
|
inputFiles.include("**/*.cpp", "**/*.mm")
|
||||||
@@ -275,7 +281,7 @@ bitcode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module("mm") {
|
module("mm") {
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
testFixtures {}
|
testFixtures {}
|
||||||
@@ -290,7 +296,7 @@ bitcode {
|
|||||||
|
|
||||||
module("common_gc") {
|
module("common_gc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/common"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/common"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -304,7 +310,7 @@ bitcode {
|
|||||||
|
|
||||||
module("noop_gc") {
|
module("noop_gc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/noop"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/noop"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -312,7 +318,7 @@ bitcode {
|
|||||||
|
|
||||||
module("noop_gc_custom") {
|
module("noop_gc_custom") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/noop"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/noop"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -322,7 +328,7 @@ bitcode {
|
|||||||
|
|
||||||
module("same_thread_ms_gc") {
|
module("same_thread_ms_gc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/stms"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/stms"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -336,7 +342,7 @@ bitcode {
|
|||||||
|
|
||||||
module("same_thread_ms_gc_custom") {
|
module("same_thread_ms_gc_custom") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/stms"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/stms"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -352,7 +358,7 @@ bitcode {
|
|||||||
|
|
||||||
module("pmcs_gc") {
|
module("pmcs_gc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/pmcs"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/pmcs"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -366,7 +372,7 @@ bitcode {
|
|||||||
|
|
||||||
module("pmcs_gc_custom") {
|
module("pmcs_gc_custom") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/pmcs"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/pmcs"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -382,7 +388,7 @@ bitcode {
|
|||||||
|
|
||||||
module("concurrent_ms_gc") {
|
module("concurrent_ms_gc") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/cms"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/cms"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/legacy/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -396,7 +402,7 @@ bitcode {
|
|||||||
|
|
||||||
module("concurrent_ms_gc_custom") {
|
module("concurrent_ms_gc_custom") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gc/cms"))
|
srcRoot.set(layout.projectDirectory.dir("src/gc/cms"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp", "src/alloc/custom/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -412,7 +418,7 @@ bitcode {
|
|||||||
|
|
||||||
module("common_gcScheduler") {
|
module("common_gcScheduler") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/common"))
|
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/common"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -426,7 +432,7 @@ bitcode {
|
|||||||
|
|
||||||
module("manual_gcScheduler") {
|
module("manual_gcScheduler") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/manual"))
|
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/manual"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -434,7 +440,7 @@ bitcode {
|
|||||||
|
|
||||||
module("adaptive_gcScheduler") {
|
module("adaptive_gcScheduler") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/adaptive"))
|
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/adaptive"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -448,7 +454,7 @@ bitcode {
|
|||||||
|
|
||||||
module("aggressive_gcScheduler") {
|
module("aggressive_gcScheduler") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/aggressive"))
|
srcRoot.set(layout.projectDirectory.dir("src/gcScheduler/aggressive"))
|
||||||
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
test {}
|
test {}
|
||||||
@@ -462,7 +468,7 @@ bitcode {
|
|||||||
|
|
||||||
module("impl_externalCallsChecker") {
|
module("impl_externalCallsChecker") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/externalCallsChecker/impl"))
|
srcRoot.set(layout.projectDirectory.dir("src/externalCallsChecker/impl"))
|
||||||
headersDirs.from("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/main/cpp")
|
headersDirs.from("src/alloc/common/cpp", "src/gcScheduler/common/cpp", "src/gc/common/cpp", "src/mm/cpp", "src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp")
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
@@ -470,14 +476,14 @@ bitcode {
|
|||||||
|
|
||||||
module("noop_externalCallsChecker") {
|
module("noop_externalCallsChecker") {
|
||||||
srcRoot.set(layout.projectDirectory.dir("src/externalCallsChecker/noop"))
|
srcRoot.set(layout.projectDirectory.dir("src/externalCallsChecker/noop"))
|
||||||
headersDirs.from("src/externalCallsChecker/common/cpp", "src/main/cpp")
|
headersDirs.from("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp")
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module("xctest_launcher") {
|
module("xctest_launcher") {
|
||||||
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/main/cpp"))
|
headersDirs.from(files("src/externalCallsChecker/common/cpp", "src/objcExport/cpp", "src/main/cpp"))
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {}
|
main {}
|
||||||
@@ -487,6 +493,21 @@ bitcode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val objcExportApi by configurations.creating {
|
||||||
|
isCanBeConsumed = true
|
||||||
|
isCanBeResolved = false
|
||||||
|
attributes {
|
||||||
|
attribute(CppUsage.USAGE_ATTRIBUTE, objects.named(CppUsage.API))
|
||||||
|
attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
artifacts {
|
||||||
|
// This should be a "public headers" directory and this configuration with artifacts should be defined by
|
||||||
|
// CompileToBitcodePlugin itself.
|
||||||
|
add(objcExportApi.name, layout.projectDirectory.dir("src/objcExport/cpp"))
|
||||||
|
}
|
||||||
|
|
||||||
val runtimeBitcode by configurations.creating {
|
val runtimeBitcode by configurations.creating {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = true
|
isCanBeResolved = true
|
||||||
|
|||||||
@@ -10,14 +10,11 @@
|
|||||||
|
|
||||||
#import <objc/runtime.h>
|
#import <objc/runtime.h>
|
||||||
|
|
||||||
|
#import "KotlinBase.h"
|
||||||
#import "Types.h"
|
#import "Types.h"
|
||||||
#import "Memory.h"
|
#import "Memory.h"
|
||||||
#import "ObjCExport.h"
|
#import "ObjCExport.h"
|
||||||
|
|
||||||
@interface KotlinBase : NSObject <NSCopying>
|
|
||||||
+(instancetype)createRetainedWrapper:(ObjHeader*)obj;
|
|
||||||
@end
|
|
||||||
|
|
||||||
extern "C" void Kotlin_ObjCExport_initializeClass(Class clazz);
|
extern "C" void Kotlin_ObjCExport_initializeClass(Class clazz);
|
||||||
extern "C" const TypeInfo* Kotlin_ObjCExport_getAssociatedTypeInfo(Class clazz);
|
extern "C" const TypeInfo* Kotlin_ObjCExport_getAssociatedTypeInfo(Class clazz);
|
||||||
extern "C" OBJ_GETTER(Kotlin_ObjCExport_convertUnmappedObjCObject, id obj);
|
extern "C" OBJ_GETTER(Kotlin_ObjCExport_convertUnmappedObjCObject, id obj);
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
struct ObjHeader;
|
||||||
|
|
||||||
|
@interface KotlinBase : NSObject <NSCopying>
|
||||||
|
+ (instancetype)createRetainedWrapper:(struct ObjHeader *)obj;
|
||||||
|
@end
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
module KotlinRuntime {
|
||||||
|
header "KotlinBase.h"
|
||||||
|
export *
|
||||||
|
}
|
||||||
+5
@@ -7,10 +7,12 @@ package org.jetbrains.kotlin.konan.test.blackbox
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||||
import org.jetbrains.kotlin.konan.target.AppleConfigurables
|
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.target.withOSVersion
|
||||||
import org.jetbrains.kotlin.konan.test.blackbox.support.compilation.invokeSwiftC
|
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.settings.configurables
|
||||||
import org.jetbrains.kotlin.konan.test.blackbox.support.util.createModuleMap
|
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.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Assumptions
|
import org.junit.jupiter.api.Assumptions
|
||||||
@@ -55,10 +57,13 @@ abstract class SwiftTypeCheckBaseTest : AbstractNativeSimpleTest() {
|
|||||||
val swiftTarget = configs.targetTriple.withOSVersion(configs.osVersionMin).toString()
|
val swiftTarget = configs.targetTriple.withOSVersion(configs.osVersionMin).toString()
|
||||||
|
|
||||||
val bridgeModuleFile = createModuleMap(buildDir, cHeader)
|
val bridgeModuleFile = createModuleMap(buildDir, cHeader)
|
||||||
|
val kotlinRuntimeModuleMapFile = Distribution(KotlinNativePaths.homePath.absolutePath)
|
||||||
|
.kotlinRuntimeForSwiftModuleMap
|
||||||
|
|
||||||
val args = listOf(
|
val args = listOf(
|
||||||
"-typecheck", swiftFile.absolutePath,
|
"-typecheck", swiftFile.absolutePath,
|
||||||
"-Xcc", "-fmodule-map-file=${bridgeModuleFile.absolutePath}",
|
"-Xcc", "-fmodule-map-file=${bridgeModuleFile.absolutePath}",
|
||||||
|
"-Xcc", "-fmodule-map-file=${kotlinRuntimeModuleMapFile}",
|
||||||
"-sdk", configs.absoluteTargetSysRoot, "-target", swiftTarget
|
"-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.platform.konan.NativePlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.sir.SirModule
|
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.buildImport
|
||||||
import org.jetbrains.kotlin.sir.builder.buildModule
|
import org.jetbrains.kotlin.sir.builder.buildModule
|
||||||
import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput
|
import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput
|
||||||
@@ -68,6 +69,9 @@ internal fun buildSwiftModule(
|
|||||||
declarations += buildImport {
|
declarations += buildImport {
|
||||||
moduleName = bridgeModuleName
|
moduleName = bridgeModuleName
|
||||||
}
|
}
|
||||||
|
declarations += buildImport {
|
||||||
|
moduleName = KOTLIN_RUNTIME_MODULE_NAME
|
||||||
|
}
|
||||||
ktFiles.forEach { file ->
|
ktFiles.forEach { file ->
|
||||||
declarations += buildSirDeclarationList(file)
|
declarations += buildSirDeclarationList(file)
|
||||||
}
|
}
|
||||||
@@ -75,4 +79,6 @@ internal fun buildSwiftModule(
|
|||||||
declarations.forEach { it.parent = this }
|
declarations.forEach { it.parent = this }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const val KOTLIN_RUNTIME_MODULE_NAME: String = "KotlinRuntime"
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
import KotlinBridges
|
import KotlinBridges
|
||||||
|
import KotlinRuntime
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function foo description
|
* Function foo description
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
import KotlinBridges
|
import KotlinBridges
|
||||||
|
import KotlinRuntime
|
||||||
|
|
||||||
public enum namespace1 {
|
public enum namespace1 {
|
||||||
public enum local_functions {
|
public enum local_functions {
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
import KotlinBridges
|
import KotlinBridges
|
||||||
|
import KotlinRuntime
|
||||||
|
|
||||||
public func meaningOfLife() -> Swift.Int32 {
|
public func meaningOfLife() -> Swift.Int32 {
|
||||||
return __root___meaningOfLife()
|
return __root___meaningOfLife()
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
import KotlinBridges
|
import KotlinBridges
|
||||||
|
import KotlinRuntime
|
||||||
|
|
||||||
public enum namespace {
|
public enum namespace {
|
||||||
public enum main {
|
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.keepOnlyDefaultProfiles
|
||||||
import org.jetbrains.kotlin.konan.properties.loadProperties
|
import org.jetbrains.kotlin.konan.properties.loadProperties
|
||||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
class Distribution private constructor(private val serialized: Serialized) : java.io.Serializable {
|
class Distribution private constructor(private val serialized: Serialized) : java.io.Serializable {
|
||||||
constructor(
|
constructor(
|
||||||
@@ -88,6 +89,9 @@ class Distribution private constructor(private val serialized: Serialized) : jav
|
|||||||
val stdlib = "$klib/common/stdlib"
|
val stdlib = "$klib/common/stdlib"
|
||||||
val stdlibDefaultComponent = "$stdlib/default"
|
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 defaultNatives(target: KonanTarget) = "$konanHome/konan/targets/${target.visibleName}/native"
|
||||||
|
|
||||||
fun runtime(target: KonanTarget) = runtimeFileOverride ?: "${defaultNatives(target)}/runtime.bc"
|
fun runtime(target: KonanTarget) = runtimeFileOverride ?: "${defaultNatives(target)}/runtime.bc"
|
||||||
|
|||||||
Reference in New Issue
Block a user