summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorruki <[email protected]>2021-10-21 22:57:16 +0800
committerruki <[email protected]>2021-10-21 22:57:16 +0800
commitf0d5c879cadf8809566aa7e607c55252f6e471d5 (patch)
tree4b3726b5780631655be48cc75c4de7c9a3fef62a /tests
parentc03c36da556816137e18916dcca4517a8a10c6b7 (diff)
support static and shared library for nim
Diffstat (limited to 'tests')
-rw-r--r--tests/projects/nim/shared_library/src/foo.nim5
-rw-r--r--tests/projects/nim/shared_library/src/main.nim4
-rw-r--r--tests/projects/nim/shared_library/xmake.lua12
-rw-r--r--tests/projects/nim/static_library/src/bar.nim5
-rw-r--r--tests/projects/nim/static_library/src/foo.nim8
-rw-r--r--tests/projects/nim/static_library/src/main.nim5
-rw-r--r--tests/projects/nim/static_library/xmake.lua12
7 files changed, 51 insertions, 0 deletions
diff --git a/tests/projects/nim/shared_library/src/foo.nim b/tests/projects/nim/shared_library/src/foo.nim
new file mode 100644
index 000000000..4a3e920ff
--- /dev/null
+++ b/tests/projects/nim/shared_library/src/foo.nim
@@ -0,0 +1,5 @@
+proc fibonacci(n: int): int {.cdecl, exportc, dynlib.} =
+ if n < 2:
+ result = n
+ else:
+ result = fibonacci(n - 1) + (n - 2).fibonacci
diff --git a/tests/projects/nim/shared_library/src/main.nim b/tests/projects/nim/shared_library/src/main.nim
new file mode 100644
index 000000000..c473c5401
--- /dev/null
+++ b/tests/projects/nim/shared_library/src/main.nim
@@ -0,0 +1,4 @@
+proc fibonacci(n: int): int {.cdecl, importc}
+
+echo fibonacci(2)
+
diff --git a/tests/projects/nim/shared_library/xmake.lua b/tests/projects/nim/shared_library/xmake.lua
new file mode 100644
index 000000000..b560961d6
--- /dev/null
+++ b/tests/projects/nim/shared_library/xmake.lua
@@ -0,0 +1,12 @@
+add_rules("mode.debug", "mode.release")
+
+target("foo")
+ set_kind("shared")
+ add_files("src/foo.nim")
+
+target("test")
+ set_kind("binary")
+ add_deps("foo")
+ add_files("src/main.nim")
+
+
diff --git a/tests/projects/nim/static_library/src/bar.nim b/tests/projects/nim/static_library/src/bar.nim
new file mode 100644
index 000000000..911a3cc85
--- /dev/null
+++ b/tests/projects/nim/static_library/src/bar.nim
@@ -0,0 +1,5 @@
+proc bar(n: int): int {.cdecl, exportc} =
+ if n < 2:
+ result = n
+ else:
+ result = bar(n - 1) + (n - 2).bar
diff --git a/tests/projects/nim/static_library/src/foo.nim b/tests/projects/nim/static_library/src/foo.nim
new file mode 100644
index 000000000..ba0fcad5b
--- /dev/null
+++ b/tests/projects/nim/static_library/src/foo.nim
@@ -0,0 +1,8 @@
+import bar
+
+proc foo(n: int): int {.cdecl, exportc} =
+ if n < 2:
+ result = n
+ else:
+ result = foo(n - 1) + (n - 2).foo
+
diff --git a/tests/projects/nim/static_library/src/main.nim b/tests/projects/nim/static_library/src/main.nim
new file mode 100644
index 000000000..a91ba0614
--- /dev/null
+++ b/tests/projects/nim/static_library/src/main.nim
@@ -0,0 +1,5 @@
+proc foo(n: int): int {.cdecl, importc}
+proc bar(n: int): int {.cdecl, importc}
+
+echo foo(2)
+echo bar(2)
diff --git a/tests/projects/nim/static_library/xmake.lua b/tests/projects/nim/static_library/xmake.lua
new file mode 100644
index 000000000..7ef38314a
--- /dev/null
+++ b/tests/projects/nim/static_library/xmake.lua
@@ -0,0 +1,12 @@
+add_rules("mode.debug", "mode.release")
+
+target("foo")
+ set_kind("static")
+ add_files("src/foo.nim")
+
+target("test")
+ set_kind("binary")
+ add_deps("foo")
+ add_files("src/main.nim")
+
+