diff options
| author | ruki <[email protected]> | 2024-04-04 00:52:36 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-04-04 00:52:36 +0800 |
| commit | 257bbb3fa4a5c2f47f4a9481ea5a6899aac27a2c (patch) | |
| tree | c2e8e732ab3696cdefe96ce76d7a600ddeed3bf1 | |
| parent | c04f30ad9010b58554554f925584ec97682a3f18 (diff) | |
replace foo tests
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; } + |
