Improve lua framework code

This commit is contained in:
halx99 2020-11-17 23:17:40 +08:00
parent acc064770c
commit a708c2f904
5 changed files with 19 additions and 17 deletions

View File

@ -185,10 +185,6 @@ if(WINDOWS)
target_compile_definitions(${ENGINEX_LUA_LIB} PUBLIC _USRLUASTATIC) target_compile_definitions(${ENGINEX_LUA_LIB} PUBLIC _USRLUASTATIC)
endif() endif()
target_compile_definitions(${ENGINEX_LUA_LIB}
PUBLIC LUA_COMPAT_MODULE
)
set_target_properties(${ENGINEX_LUA_LIB} set_target_properties(${ENGINEX_LUA_LIB}
PROPERTIES PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"

View File

@ -69,8 +69,7 @@ namespace {
size_t sz; size_t sz;
s = lua_tolstring(L, -1, &sz); /* get result */ s = lua_tolstring(L, -1, &sz); /* get result */
if (s == NULL) if (s == NULL)
return luaL_error(L, LUA_QL("tostring") " must return a string to " return luaL_error(L, "'tostring' must return a string to 'print'");
LUA_QL("print"));
if (i>1) out->append("\t"); if (i>1) out->append("\t");
out->append(s, sz); out->append(s, sz);
lua_pop(L, 1); /* pop result */ lua_pop(L, 1); /* pop result */
@ -189,10 +188,16 @@ void LuaStack::addLuaLoader(lua_CFunction func)
{ {
if (!func) return; if (!func) return;
#if LUA_VERSION_NUM >= 504 || (LUA_VERSION_NUM >= 502 && !defined(LUA_COMPAT_LOADERS))
const char* realname = "searchers";
#else
const char* realname = "loaders";
#endif
// stack content after the invoking of the function // stack content after the invoking of the function
// get loader table // get loader table
lua_getglobal(_state, "package"); /* L: package */ lua_getglobal(_state, "package"); /* L: package */
lua_getfield(_state, -1, "loaders"); /* L: package, loaders */ lua_getfield(_state, -1, realname); /* L: package, loaders */
// insert loader into index 2 // insert loader into index 2
lua_pushcfunction(_state, func); /* L: package, loaders, func */ lua_pushcfunction(_state, func); /* L: package, loaders, func */
@ -205,7 +210,7 @@ void LuaStack::addLuaLoader(lua_CFunction func)
lua_rawseti(_state, -2, 2); /* L: package, loaders */ lua_rawseti(_state, -2, 2); /* L: package, loaders */
// set loaders into package // set loaders into package
lua_setfield(_state, -2, "loaders"); /* L: package */ lua_setfield(_state, -2, realname); /* L: package */
lua_pop(_state, 1); lua_pop(_state, 1);
} }

1
external/.gitignore vendored
View File

@ -1,4 +1,3 @@
.vscode .vscode
build build
.DS_Store .DS_Store
/**/luaconf.h

View File

@ -9,9 +9,6 @@ project(${lib_name})
include(../../cmake/CocosExternalConfig.cmake) include(../../cmake/CocosExternalConfig.cmake)
set ( LUA_IDSIZE 128 CACHE STRING "The maximum size for the description of the source." )
configure_file ( ${LUA_SRC_PATH}/luaconf.h.in ${LUA_SRC_PATH}/luaconf.h )
aux_source_directory(${LUA_SRC_PATH} LUA_CORE) aux_source_directory(${LUA_SRC_PATH} LUA_CORE)
list(REMOVE_ITEM LUA_CORE ${LUA_SRC_PATH}/lua.c ${LUA_SRC_PATH}/luac.c) list(REMOVE_ITEM LUA_CORE ${LUA_SRC_PATH}/lua.c ${LUA_SRC_PATH}/luac.c)
@ -28,9 +25,13 @@ elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.3.0")
target_compile_definitions(${target_name} target_compile_definitions(${target_name}
PUBLIC LUA_COMPAT_5_1=1 PUBLIC LUA_COMPAT_5_1=1
PUBLIC LUA_COMPAT_5_2=1 PUBLIC LUA_COMPAT_5_2=1
PUBLIC LUA_COMPAT_MODULE=1
) )
elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.2.0") elseif(${LUA_VERSION} VERSION_GREATER_EQUAL "5.2.0")
target_compile_definitions(${target_name} PUBLIC LUA_COMPAT_ALL=1) target_compile_definitions(${target_name}
PUBLIC LUA_COMPAT_ALL=1
PUBLIC LUA_COMPAT_MODULE=1
)
endif() endif()
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)

View File

@ -749,7 +749,7 @@
@@ of a function in debug information. @@ of a function in debug information.
** CHANGE it if you want a different size. ** CHANGE it if you want a different size.
*/ */
#cmakedefine LUA_IDSIZE @LUA_IDSIZE@ #define LUA_IDSIZE 128
/* /*
@ -784,6 +784,7 @@
/* /*
** Local configuration. You can use this space to add your redefinitions ** Local configuration. You can use this space to add your redefinitions
** without modifying the main part of the file. ** without modifying the main part of the file.
** !!!The follow definiations is engine-x specific, don't overwrite with official lua
*/ */
/* /*
@@ Whether lua bytecode compatible with x86/x64 apps @@ Whether lua bytecode compatible with x86/x64 apps