summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-04-03 23:42:56 +0800
committerruki <[email protected]>2024-04-03 23:42:56 +0800
commitd08d95ac8fc9e1f316ff180aaedd61e21c384e24 (patch)
treeebcfb72223ceb58280f51cbc327f22d62b2ce749
parent817353b79fc9145c18992facd920ec8f9497000b (diff)
improve xmi.h
-rw-r--r--tests/projects/other/native_module/modules/shared/foo/src/foo.c13
-rw-r--r--tests/projects/other/native_module/modules/shared/zoo/src/zoo.c32
-rw-r--r--tests/projects/other/native_module/xmake.lua2
-rw-r--r--xmake/rules/module/xmake.lua1
-rw-r--r--xmake/scripts/module/xmi.h45
-rw-r--r--xmake/templates/c++/module.shared/project/modules/shared/foo/src/foo.cpp13
-rw-r--r--xmake/templates/c/module.shared/project/modules/shared/foo/src/foo.c13
7 files changed, 91 insertions, 28 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 3024f9380..c8ac1c81c 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
@@ -16,14 +16,13 @@ static int sub(lua_State* lua) {
return 1;
}
-static const luaL_Reg g_funcs[] = {
- {"add", add},
- {"sub", sub},
- {NULL, NULL}
-};
-
int luaopen_foo(lua_State* lua) {
+ static const luaL_Reg funcs[] = {
+ {"add", add},
+ {"sub", sub},
+ {NULL, NULL}
+ };
lua_newtable(lua);
- luaL_setfuncs(lua, g_funcs, 0);
+ luaL_setfuncs(lua, funcs, 0);
return 1;
}
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
index b9bf90ec5..a93fb0dab 100644
--- a/tests/projects/other/native_module/modules/shared/zoo/src/zoo.c
+++ b/tests/projects/other/native_module/modules/shared/zoo/src/zoo.c
@@ -1,12 +1,32 @@
-#include <stdlib.h>
+#include <xmi.h>
-int add(int a, int b) {
- return a + b;
+static int add(lua_State* lua) {
+#if 0
+ int a = lua_tointeger(lua, 1);
+ int b = lua_tointeger(lua, 2);
+ lua_pushinteger(lua, a + b);
+#endif
+ return 1;
}
-int sub(int a, int b) {
- return a + b;
+static int sub(lua_State* lua) {
+#if 0
+ int a = lua_tointeger(lua, 1);
+ int b = lua_tointeger(lua, 2);
+ lua_pushinteger(lua, a - b);
+#endif
+ return 1;
}
-void module_zoo() {
+int xmi_luaopen_foo(lua_State* lua) {
+ static const luaL_Reg funcs[] = {
+ {"add", add},
+ {"sub", sub},
+ {NULL, NULL}
+ };
+#if 0
+ lua_newtable(lua);
+ luaL_setfuncs(lua, funcs, 0);
+#endif
+ return 1;
}
diff --git a/tests/projects/other/native_module/xmake.lua b/tests/projects/other/native_module/xmake.lua
index 3148fc0f2..3f895bb12 100644
--- a/tests/projects/other/native_module/xmake.lua
+++ b/tests/projects/other/native_module/xmake.lua
@@ -7,7 +7,7 @@ target("test")
add_files("src/*.cpp")
on_config(function (target)
import("shared.foo")
- import("shared.zoo")
+ import("shared.zoo", {always_build = true})
import("binary.bar", {always_build = true})
print("foo: 1 + 1 = %d", foo.add(1, 1))
print("foo: 1 - 1 = %d", foo.sub(1, 1))
diff --git a/xmake/rules/module/xmake.lua b/xmake/rules/module/xmake.lua
index f70c71d7e..2b1b75262 100644
--- a/xmake/rules/module/xmake.lua
+++ b/xmake/rules/module/xmake.lua
@@ -35,5 +35,6 @@ rule("module.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"))
end)
diff --git a/xmake/scripts/module/xmi.h b/xmake/scripts/module/xmi.h
new file mode 100644
index 000000000..598d23ef3
--- /dev/null
+++ b/xmake/scripts/module/xmi.h
@@ -0,0 +1,45 @@
+/*!A cross-platform build utility based on Lua
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Copyright (C) 2015-present, TBOOX Open Source Group.
+ *
+ * @author ruki
+ * @file xmi.h
+ *
+ */
+#ifndef XMI_H
+#define XMI_H
+
+/* //////////////////////////////////////////////////////////////////////////////////////
+ * includes
+ */
+#include <stdlib.h>
+
+/* //////////////////////////////////////////////////////////////////////////////////////
+ * types
+ */
+
+struct lua_State_;
+typedef struct luaL_Reg_ {
+ char const* name;
+ int (*func)(struct lua_State_* lua);
+}luaL_Reg;
+
+typedef struct lua_State_ {
+ void* ctx;
+}lua_State;
+
+#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 b6eb451ba..579c6646f 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
@@ -18,16 +18,15 @@ static int sub(lua_State* lua) {
return 1;
}
-static const luaL_Reg g_funcs[] = {
- {"add", add},
- {"sub", sub},
- {NULL, NULL}
-};
-
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, g_funcs, 0);
+ 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 3024f9380..c8ac1c81c 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
@@ -16,14 +16,13 @@ static int sub(lua_State* lua) {
return 1;
}
-static const luaL_Reg g_funcs[] = {
- {"add", add},
- {"sub", sub},
- {NULL, NULL}
-};
-
int luaopen_foo(lua_State* lua) {
+ static const luaL_Reg funcs[] = {
+ {"add", add},
+ {"sub", sub},
+ {NULL, NULL}
+ };
lua_newtable(lua);
- luaL_setfuncs(lua, g_funcs, 0);
+ luaL_setfuncs(lua, funcs, 0);
return 1;
}