summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorTitanSnow <[email protected]>2017-05-08 15:55:37 +0800
committerTitanSnow <[email protected]>2017-05-08 15:55:37 +0800
commit52c8ee6e3a5782f49e19bb1b4b9c8fa79661c0e0 (patch)
tree4940da5ecbd1756ea058417fc501ac30c159aa83 /core/src
parentc1bccef85b8a73b8a324373764006086ce82b58c (diff)
add more versioninfo
Diffstat (limited to 'core/src')
-rw-r--r--core/src/xmake/os/versioninfo.c167
1 files changed, 161 insertions, 6 deletions
diff --git a/core/src/xmake/os/versioninfo.c b/core/src/xmake/os/versioninfo.c
index 9cb80ddae..f9e3fe890 100644
--- a/core/src/xmake/os/versioninfo.c
+++ b/core/src/xmake/os/versioninfo.c
@@ -38,6 +38,16 @@
* implementation
*/
+static void xm_os_insert_set(lua_State* lua, const char** p)
+{
+ for (; *p; ++p)
+ {
+ lua_pushstring(lua, *p);
+ lua_pushboolean(lua, tb_true);
+ lua_settable(lua, -3);
+ }
+}
+
// get versioninfo
tb_int_t xm_os_versioninfo(lua_State* lua)
{
@@ -53,15 +63,160 @@ tb_int_t xm_os_versioninfo(lua_State* lua)
lua_newtable(lua);
lua_pushstring(lua, "features");
- // array for features
+ // table for features
lua_newtable(lua);
// insert
- for (const char** p = features_table; *p; ++p)
- {
- lua_pushstring(lua, *p);
- lua_rawseti(lua, -2, p - features_table + 1);
- }
+ xm_os_insert_set(lua, features_table);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // table for version
+ lua_pushstring(lua, "version");
+ lua_newtable(lua);
+ // major
+ lua_pushstring(lua, "major");
+ lua_pushinteger(lua, XM_VERSION_MAJOR);
+ lua_settable(lua, -3);
+ // minor
+ lua_pushstring(lua, "minor");
+ lua_pushinteger(lua, XM_VERSION_MINOR);
+ lua_settable(lua, -3);
+ // alter
+ lua_pushstring(lua, "alter");
+ lua_pushinteger(lua, XM_VERSION_ALTER);
+ lua_settable(lua, -3);
+ // build
+ lua_pushstring(lua, "build");
+ lua_pushnumber(lua, XM_VERSION_BUILD);
+ lua_settable(lua, -3);
+ // build string
+ lua_pushstring(lua, "build_string");
+ lua_pushstring(lua, XM_VERSION_BUILD_STRING);
+ lua_settable(lua, -3);
+ // version string
+ lua_pushstring(lua, "version_string");
+ lua_pushstring(lua, XM_VERSION_STRING);
+ lua_settable(lua, -3);
+ // short version string
+ lua_pushstring(lua, "short_version_string");
+ lua_pushstring(lua, XM_VERSION_SHORT_STRING);
+ lua_settable(lua, -3);
+
+ // table for tbox version
+ lua_pushstring(lua, "tbox");
+ lua_newtable(lua);
+ // major
+ lua_pushstring(lua, "major");
+ lua_pushinteger(lua, TB_VERSION_MAJOR);
+ lua_settable(lua, -3);
+ // minor
+ lua_pushstring(lua, "minor");
+ lua_pushinteger(lua, TB_VERSION_MINOR);
+ lua_settable(lua, -3);
+ // alter
+ lua_pushstring(lua, "alter");
+ lua_pushinteger(lua, TB_VERSION_ALTER);
+ lua_settable(lua, -3);
+ // build
+ lua_pushstring(lua, "build");
+ lua_pushnumber(lua, TB_VERSION_BUILD);
+ lua_settable(lua, -3);
+ // build string
+ lua_pushstring(lua, "build_string");
+ lua_pushstring(lua, TB_VERSION_BUILD_STRING);
+ lua_settable(lua, -3);
+ // version string
+ lua_pushstring(lua, "version_string");
+ lua_pushstring(lua, TB_VERSION_STRING);
+ lua_settable(lua, -3);
+ // short version string
+ lua_pushstring(lua, "short_version_string");
+ lua_pushstring(lua, TB_VERSION_SHORT_STRING);
+ lua_settable(lua, -3);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // table for lua version
+ lua_pushstring(lua, "lua");
+ lua_newtable(lua);
+
+ // version
+ lua_pushstring(lua, "version");
+ lua_pushstring(lua, LUA_RELEASE);
+ lua_settable(lua, -3);
+
+ // version num
+ lua_pushstring(lua, "version_num");
+ lua_pushinteger(lua, LUA_VERSION_NUM);
+ lua_settable(lua, -3);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // table for luajit version
+ lua_pushstring(lua, "luajit");
+ lua_newtable(lua);
+
+ // version
+ lua_pushstring(lua, "version");
+ lua_pushstring(lua, LUAJIT_VERSION);
+ lua_settable(lua, -3);
+
+ // version num
+ lua_pushstring(lua, "version_num");
+ lua_pushinteger(lua, LUAJIT_VERSION_NUM);
+ lua_settable(lua, -3);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // mode table
+ const char* mode_table[] = {
+# ifdef __xm_small__
+ "small",
+# endif
+# ifdef __xm_debug__
+ "debug",
+# endif
+ tb_null
+ };
+
+ // table for mode
+ lua_pushstring(lua, "modes");
+ lua_newtable(lua);
+
+ // insert
+ xm_os_insert_set(lua, mode_table);
+
+ // set back to table
+ lua_settable(lua, -3);
+
+ // packages table
+ const char* packages_table[] = {
+# ifdef XM_CONFIG_PACKAGE_HAVE_TBOX
+ "tbox",
+# endif
+# ifdef XM_CONFIG_PACKAGE_HAVE_LUAJIT
+ "luajit",
+# endif
+# ifdef XM_CONFIG_PACKAGE_HAVE_BASE
+ "base",
+# endif
+ tb_null
+ };
+
+ // table for packages
+ lua_pushstring(lua, "packages");
+ lua_newtable(lua);
+
+ // insert
+ xm_os_insert_set(lua, packages_table);
// set back to table
lua_settable(lua, -3);