summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-04-04 00:52:36 +0800
committerruki <[email protected]>2024-04-04 00:52:36 +0800
commit257bbb3fa4a5c2f47f4a9481ea5a6899aac27a2c (patch)
treec2e8e732ab3696cdefe96ce76d7a600ddeed3bf1
parentc04f30ad9010b58554554f925584ec97682a3f18 (diff)
replace foo tests
-rw-r--r--tests/projects/other/native_module/modules/shared/foo/src/foo.c6
-rw-r--r--tests/projects/other/native_module/modules/shared/foo/xmake.lua3
-rw-r--r--tests/projects/other/native_module/modules/shared/zoo/src/zoo.c26
-rw-r--r--tests/projects/other/native_module/modules/shared/zoo/xmake.lua6
-rw-r--r--tests/projects/other/native_module/xmake.lua7
-rw-r--r--xmake/rules/module/xmake.lua3
-rw-r--r--xmake/scripts/module/xmi.h22
-rw-r--r--xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp27
-rw-r--r--xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c7
9 files changed, 33 insertions, 74 deletions
diff --git a/tests/projects/other/native_module/modules/shared/foo/src/foo.c b/tests/projects/other/native_module/modules/shared/foo/src/foo.c
index c8ac1c81c..0555b071f 100644
--- a/tests/projects/other/native_module/modules/shared/foo/src/foo.c
+++ b/tests/projects/other/native_module/modules/shared/foo/src/foo.c
@@ -1,6 +1,4 @@
-#include <stdlib.h>
-#include <lua.h>
-#include <lauxlib.h>
+#include <xmi.h>
static int add(lua_State* lua) {
int a = lua_tointeger(lua, 1);
@@ -16,7 +14,7 @@ static int sub(lua_State* lua) {
return 1;
}
-int luaopen_foo(lua_State* lua) {
+int luaopen(foo, lua_State* lua) {
static const luaL_Reg funcs[] = {
{"add", add},
{"sub", sub},
diff --git a/tests/projects/other/native_module/modules/shared/foo/xmake.lua b/tests/projects/other/native_module/modules/shared/foo/xmake.lua
index ad4590ffa..035573d9f 100644
--- a/tests/projects/other/native_module/modules/shared/foo/xmake.lua
+++ b/tests/projects/other/native_module/modules/shared/foo/xmake.lua
@@ -1,9 +1,6 @@
add_rules("mode.debug", "mode.release")
-add_requires("lua 5.4")
-
target("foo")
add_rules("module.shared")
add_files("src/foo.c")
- add_packages("lua")
diff --git a/tests/projects/other/native_module/modules/shared/zoo/src/zoo.c b/tests/projects/other/native_module/modules/shared/zoo/src/zoo.c
deleted file mode 100644
index b297ee302..000000000
--- a/tests/projects/other/native_module/modules/shared/zoo/src/zoo.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <xmi.h>
-
-static int add(lua_State* lua) {
- int a = lua_tointeger(lua, 1);
- int b = lua_tointeger(lua, 2);
- lua_pushinteger(lua, a + b);
- return 1;
-}
-
-static int sub(lua_State* lua) {
- int a = lua_tointeger(lua, 1);
- int b = lua_tointeger(lua, 2);
- lua_pushinteger(lua, a - b);
- return 1;
-}
-
-int luaopen(zoo, lua_State* lua) {
- static const luaL_Reg funcs[] = {
- {"add", add},
- {"sub", sub},
- {NULL, NULL}
- };
- lua_newtable(lua);
- luaL_setfuncs(lua, funcs, 0);
- return 1;
-}
diff --git a/tests/projects/other/native_module/modules/shared/zoo/xmake.lua b/tests/projects/other/native_module/modules/shared/zoo/xmake.lua
deleted file mode 100644
index a74c73637..000000000
--- a/tests/projects/other/native_module/modules/shared/zoo/xmake.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-add_rules("mode.debug", "mode.release")
-
-target("zoo")
- add_rules("module.shared")
- add_files("src/zoo.c")
-
diff --git a/tests/projects/other/native_module/xmake.lua b/tests/projects/other/native_module/xmake.lua
index 3f895bb12..211e839d3 100644
--- a/tests/projects/other/native_module/xmake.lua
+++ b/tests/projects/other/native_module/xmake.lua
@@ -6,13 +6,10 @@ target("test")
set_kind("binary")
add_files("src/*.cpp")
on_config(function (target)
- import("shared.foo")
- import("shared.zoo", {always_build = true})
- import("binary.bar", {always_build = true})
+ import("shared.foo", {always_build = true})
+ import("binary.bar")
print("foo: 1 + 1 = %d", foo.add(1, 1))
print("foo: 1 - 1 = %d", foo.sub(1, 1))
- print("zoo: 1 + 1 = %d", zoo.add(1, 1))
- print("zoo: 1 - 1 = %d", zoo.sub(1, 1))
print("bar: 1 + 1 = %s", bar.add(1, 1))
print("bar: 1 - 1 = %s", bar.sub(1, 1))
end)
diff --git a/xmake/rules/module/xmake.lua b/xmake/rules/module/xmake.lua
index 2b1b75262..1667c5c2a 100644
--- a/xmake/rules/module/xmake.lua
+++ b/xmake/rules/module/xmake.lua
@@ -29,12 +29,11 @@ rule("module.binary")
rule("module.shared")
add_deps("utils.symbols.export_all")
on_load(function (target)
- assert(not xmake.luajit(), "rule(module.shared) only support for lua54 runtime!")
import("core.project.config")
target:set("kind", "shared")
target:set("basename", "module_" .. target:name())
target:set("targetdir", config.buildir())
target:set("strip", "none")
- target:add("sysincludedirs", path.join(os.programdir(), "scripts", "module"))
+ target:add("includedirs", path.join(os.programdir(), "scripts", "module"))
end)
diff --git a/xmake/scripts/module/xmi.h b/xmake/scripts/module/xmi.h
index 2f828e31d..cfddb3aee 100644
--- a/xmake/scripts/module/xmi.h
+++ b/xmake/scripts/module/xmi.h
@@ -61,10 +61,22 @@
# define lua_Integer xmi_lua_Integer
#endif
+// extern c
+#ifdef __cplusplus
+# define xmi_extern_c_enter extern "C" {
+# define xmi_extern_c_leave }
+#else
+# define xmi_extern_c_enter
+# define xmi_extern_c_leave
+#endif
+
// define lua module entry function
#define luaopen(name, lua) \
__dummy = 1; \
xmi_lua_ops_t* g_lua_ops = NULL; \
+xmi_extern_c_enter \
+int xmiopen_##name(lua); \
+xmi_extern_c_leave \
int xmisetup(xmi_lua_ops_t* ops) { \
g_lua_ops = ops; \
return __dummy; \
@@ -100,18 +112,12 @@ extern xmi_lua_ops_t* g_lua_ops;
/* //////////////////////////////////////////////////////////////////////////////////////
* interfaces
*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+xmi_extern_c_enter
// setup lua interfaces
int xmisetup(xmi_lua_ops_t* ops);
-#ifdef __cplusplus
-}
-#endif
-
+xmi_extern_c_leave
#endif
diff --git a/xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp b/xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp
index 579c6646f..a98baca02 100644
--- a/xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp
+++ b/xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp
@@ -1,8 +1,4 @@
-#include <stdlib.h>
-extern "C" {
-#include <lua.h>
-#include <lauxlib.h>
-}
+#include <xmi.h>
static int add(lua_State* lua) {
int a = lua_tointeger(lua, 1);
@@ -18,15 +14,14 @@ static int sub(lua_State* lua) {
return 1;
}
-extern "C" {
- int luaopen_foo(lua_State* lua) {
- static const luaL_Reg funcs[] = {
- {"add", add},
- {"sub", sub},
- {NULL, NULL}
- };
- lua_newtable(lua);
- luaL_setfuncs(lua, funcs, 0);
- return 1;
- }
+int luaopen(foo, lua_State* lua) {
+ static const luaL_Reg funcs[] = {
+ {"add", add},
+ {"sub", sub},
+ {NULL, NULL}
+ };
+ lua_newtable(lua);
+ luaL_setfuncs(lua, funcs, 0);
+ return 1;
}
+
diff --git a/xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c b/xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c
index c8ac1c81c..a98baca02 100644
--- a/xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c
+++ b/xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c
@@ -1,6 +1,4 @@
-#include <stdlib.h>
-#include <lua.h>
-#include <lauxlib.h>
+#include <xmi.h>
static int add(lua_State* lua) {
int a = lua_tointeger(lua, 1);
@@ -16,7 +14,7 @@ static int sub(lua_State* lua) {
return 1;
}
-int luaopen_foo(lua_State* lua) {
+int luaopen(foo, lua_State* lua) {
static const luaL_Reg funcs[] = {
{"add", add},
{"sub", sub},
@@ -26,3 +24,4 @@ int luaopen_foo(lua_State* lua) {
luaL_setfuncs(lua, funcs, 0);
return 1;
}
+