diff options
| author | Arthur LAURENT <[email protected]> | 2025-10-23 23:40:11 +0200 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2025-10-23 23:40:11 +0200 |
| commit | c1b73a9a9dc3eba4dc96efc9cab7314b5eca9b9b (patch) | |
| tree | 4421086bfb6caeb01376de837185a1a4658da600 /tests/projects | |
| parent | 3a9b7a4db2c851415be0282a36e60deecd7f53f1 (diff) | |
feat(swift) implement swift => c++/obj interop
Diffstat (limited to 'tests/projects')
6 files changed, 48 insertions, 0 deletions
diff --git a/tests/projects/swift/cxx_interop/lib/fibonacci/fibonacci.swift b/tests/projects/swift/cxx_interop/lib/fibonacci/fibonacci.swift new file mode 100644 index 000000000..24149f613 --- /dev/null +++ b/tests/projects/swift/cxx_interop/lib/fibonacci/fibonacci.swift @@ -0,0 +1,7 @@ +public func fibonacciSwift(_ x: CInt) -> CInt { + print("x [swift]: \(x)") + if x <= 1 { + return 1 + } + return fibonacciSwift(x - 1) + fibonacciSwift(x - 2) +} diff --git a/tests/projects/swift/cxx_interop/src/fibonacci.cpp b/tests/projects/swift/cxx_interop/src/fibonacci.cpp new file mode 100644 index 000000000..af50b1171 --- /dev/null +++ b/tests/projects/swift/cxx_interop/src/fibonacci.cpp @@ -0,0 +1,7 @@ +#include <fibonacci-Swift.h> +#include <iostream> + +int main(int argc, char ** argv) { + std::cout << SwiftFibonacci::fibonacciSwift(5) << std::endl; + return 0; +} diff --git a/tests/projects/swift/cxx_interop/xmake.lua b/tests/projects/swift/cxx_interop/xmake.lua new file mode 100644 index 000000000..cd5ef0469 --- /dev/null +++ b/tests/projects/swift/cxx_interop/xmake.lua @@ -0,0 +1,8 @@ +target("cxx_interop") + set_kind("binary") + set_languages("cxx20") + add_files("lib/**.swift", {public = true}) + add_files("src/**.cpp") + set_values("swift.modulename", "SwiftFibonacci") + set_values("swift.interop", "cxx") + set_values("swift.interop.headername", "fibonacci-Swift.h") diff --git a/tests/projects/swift/cxx_interop_lib/lib/fibonacci/fibonacci.swift b/tests/projects/swift/cxx_interop_lib/lib/fibonacci/fibonacci.swift new file mode 100644 index 000000000..24149f613 --- /dev/null +++ b/tests/projects/swift/cxx_interop_lib/lib/fibonacci/fibonacci.swift @@ -0,0 +1,7 @@ +public func fibonacciSwift(_ x: CInt) -> CInt { + print("x [swift]: \(x)") + if x <= 1 { + return 1 + } + return fibonacciSwift(x - 1) + fibonacciSwift(x - 2) +} diff --git a/tests/projects/swift/cxx_interop_lib/src/fibonacci.cpp b/tests/projects/swift/cxx_interop_lib/src/fibonacci.cpp new file mode 100644 index 000000000..af50b1171 --- /dev/null +++ b/tests/projects/swift/cxx_interop_lib/src/fibonacci.cpp @@ -0,0 +1,7 @@ +#include <fibonacci-Swift.h> +#include <iostream> + +int main(int argc, char ** argv) { + std::cout << SwiftFibonacci::fibonacciSwift(5) << std::endl; + return 0; +} diff --git a/tests/projects/swift/cxx_interop_lib/xmake.lua b/tests/projects/swift/cxx_interop_lib/xmake.lua new file mode 100644 index 000000000..f1de85d13 --- /dev/null +++ b/tests/projects/swift/cxx_interop_lib/xmake.lua @@ -0,0 +1,12 @@ +target("fibonacci") + set_kind("$(kind)") + set_languages("cxx20") + add_files("lib/**.swift", {public = true}) + set_values("swift.modulename", "SwiftFibonacci") + set_values("swift.interop", "cxx") + +target("cxx_interop_lib") + set_kind("binary") + set_languages("cxx20") + add_files("src/**.cpp") + add_deps("fibonacci") |
