diff options
| author | ruki <[email protected]> | 2025-02-20 22:43:03 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-02-20 22:43:03 +0800 |
| commit | 48065b9580ec329b67a48ce4c7dd79c606ac2aa2 (patch) | |
| tree | 318be1b1affde940f5d09af1a4d4aeb1c8248dc6 | |
| parent | 0a438f8721806ae97b97c592a5dbc036c3f7ae4d (diff) | |
improve static/shared library for kotlin
9 files changed, 50 insertions, 10 deletions
diff --git a/tests/projects/kotlin-native/shared_library/src/foo.kt b/tests/projects/kotlin-native/shared_library/src/foo.kt new file mode 100644 index 000000000..64ed2a016 --- /dev/null +++ b/tests/projects/kotlin-native/shared_library/src/foo.kt @@ -0,0 +1,8 @@ +@file:OptIn(ExperimentalNativeApi::class) + +import kotlin.experimental.ExperimentalNativeApi +import kotlinx.cinterop.* + +@ExperimentalNativeApi +@CName("kotlin_add") +fun add(a: Int, b: Int): Int = a + b diff --git a/tests/projects/kotlin-native/shared_library/src/main.c b/tests/projects/kotlin-native/shared_library/src/main.c new file mode 100644 index 000000000..55e16305d --- /dev/null +++ b/tests/projects/kotlin-native/shared_library/src/main.c @@ -0,0 +1,7 @@ +#include "libfoo_api.h" +#include <stdio.h> + +int main(int argc, char** argv) { + printf("add(1, 2) = %d\n", kotlin_add(1, 2)); + return 0; +} diff --git a/tests/projects/kotlin-native/shared_library/src/main.kt b/tests/projects/kotlin-native/shared_library/src/main.kt deleted file mode 100644 index 543f5ac8f..000000000 --- a/tests/projects/kotlin-native/shared_library/src/main.kt +++ /dev/null @@ -1,3 +0,0 @@ -fun main() { - println("hello xmake!") -} diff --git a/tests/projects/kotlin-native/shared_library/xmake.lua b/tests/projects/kotlin-native/shared_library/xmake.lua index 20c401d76..f1fb7f267 100644 --- a/tests/projects/kotlin-native/shared_library/xmake.lua +++ b/tests/projects/kotlin-native/shared_library/xmake.lua @@ -1,7 +1,12 @@ add_rules("mode.debug", "mode.release") add_requires("kotlin-native") -target("test") +target("foo") set_kind("shared") - add_files("src/*.kt") + add_files("src/foo.kt") set_toolchains("@kotlin-native") +target("test") + set_kind("binary") + add_files("src/main.c") + add_deps("foo") + diff --git a/tests/projects/kotlin-native/static_library/src/foo.kt b/tests/projects/kotlin-native/static_library/src/foo.kt new file mode 100644 index 000000000..64ed2a016 --- /dev/null +++ b/tests/projects/kotlin-native/static_library/src/foo.kt @@ -0,0 +1,8 @@ +@file:OptIn(ExperimentalNativeApi::class) + +import kotlin.experimental.ExperimentalNativeApi +import kotlinx.cinterop.* + +@ExperimentalNativeApi +@CName("kotlin_add") +fun add(a: Int, b: Int): Int = a + b diff --git a/tests/projects/kotlin-native/static_library/src/main.c b/tests/projects/kotlin-native/static_library/src/main.c new file mode 100644 index 000000000..55e16305d --- /dev/null +++ b/tests/projects/kotlin-native/static_library/src/main.c @@ -0,0 +1,7 @@ +#include "libfoo_api.h" +#include <stdio.h> + +int main(int argc, char** argv) { + printf("add(1, 2) = %d\n", kotlin_add(1, 2)); + return 0; +} diff --git a/tests/projects/kotlin-native/static_library/src/main.kt b/tests/projects/kotlin-native/static_library/src/main.kt deleted file mode 100644 index 543f5ac8f..000000000 --- a/tests/projects/kotlin-native/static_library/src/main.kt +++ /dev/null @@ -1,3 +0,0 @@ -fun main() { - println("hello xmake!") -} diff --git a/tests/projects/kotlin-native/static_library/xmake.lua b/tests/projects/kotlin-native/static_library/xmake.lua index 2e827ec78..646cb2e5d 100644 --- a/tests/projects/kotlin-native/static_library/xmake.lua +++ b/tests/projects/kotlin-native/static_library/xmake.lua @@ -1,7 +1,12 @@ add_rules("mode.debug", "mode.release") add_requires("kotlin-native") -target("test") +target("foo") set_kind("static") - add_files("src/*.kt") + add_files("src/foo.kt") set_toolchains("@kotlin-native") +target("test") + set_kind("binary") + add_files("src/main.c") + add_deps("foo") + diff --git a/xmake/rules/kotlin-native/xmake.lua b/xmake/rules/kotlin-native/xmake.lua index 7b359094a..be3c39bac 100644 --- a/xmake/rules/kotlin-native/xmake.lua +++ b/xmake/rules/kotlin-native/xmake.lua @@ -23,9 +23,15 @@ rule("kotlin-native.build") on_load(function (target) if target:is_static() then target:add("arflags", {"-produce", "static"}, {force = true}) + target:add("includedirs", target:targetdir(), {interface = true}) + if target:is_plat("macosx") then + target:add("frameworks", "Foundation", "CoreFoundation", {interface = true}) + end elseif target:is_shared() then target:add("shflags", {"-produce", "dynamic"}, {force = true}) + target:add("includedirs", target:targetdir(), {interface = true}) end + target:set("policy", "build.fence", true) end) on_build("build.target") |
