summaryrefslogtreecommitdiff
path: root/tests/projects
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2025-10-23 23:40:11 +0200
committerArthur LAURENT <[email protected]>2025-10-23 23:40:11 +0200
commitc1b73a9a9dc3eba4dc96efc9cab7314b5eca9b9b (patch)
tree4421086bfb6caeb01376de837185a1a4658da600 /tests/projects
parent3a9b7a4db2c851415be0282a36e60deecd7f53f1 (diff)
feat(swift) implement swift => c++/obj interop
Diffstat (limited to 'tests/projects')
-rw-r--r--tests/projects/swift/cxx_interop/lib/fibonacci/fibonacci.swift7
-rw-r--r--tests/projects/swift/cxx_interop/src/fibonacci.cpp7
-rw-r--r--tests/projects/swift/cxx_interop/xmake.lua8
-rw-r--r--tests/projects/swift/cxx_interop_lib/lib/fibonacci/fibonacci.swift7
-rw-r--r--tests/projects/swift/cxx_interop_lib/src/fibonacci.cpp7
-rw-r--r--tests/projects/swift/cxx_interop_lib/xmake.lua12
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")