From fb004501a6387bb7ba5182b60ec305e9947dc545 Mon Sep 17 00:00:00 2001 From: _yui Date: Tue, 7 Jul 2020 21:44:49 +0300 Subject: [PATCH 1/2] Fix building with Lua with deprecated functions removed --- src/CMakeLists.txt | 5 +++++ src/xmoto/LuaLibBase.cpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a3f328f9..3618360e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -461,6 +461,11 @@ check_prototype_definition(mkdir ) target_compile_definitions(xmoto PUBLIC MS_MKDIR=$) +if(USE_SYSTEM_Lua) + check_symbol_exists(luaL_openlib lauxlib.h HAVE_LUAL_OPENLIB) + target_compile_definitions(xmoto PUBLIC HAVE_LUAL_OPENLIB=$) +endif() + target_compile_definitions(xmoto PUBLIC USE_OPENGL=$) target_compile_definitions(xmoto PUBLIC USE_SDLGFX=$) target_compile_definitions(xmoto PUBLIC USE_GETTEXT=$) diff --git a/src/xmoto/LuaLibBase.cpp b/src/xmoto/LuaLibBase.cpp index fed3c79e..62b690e1 100644 --- a/src/xmoto/LuaLibBase.cpp +++ b/src/xmoto/LuaLibBase.cpp @@ -42,7 +42,13 @@ LuaLibBase::LuaLibBase(const std::string &i_libname, luaL_Reg i_reg[]) { luaL_requiref(m_pL, LUA_TABLIBNAME, luaopen_table, 1); #endif +#if HAVE_LUAL_OPENLIB luaL_openlib(m_pL, i_libname.c_str(), i_reg, 0); +#else + lua_newtable(m_pL); + luaL_register(m_pL, i_libname.c_str(), i_reg); + lua_setglobal(m_pL, i_libname.c_str()); +#endif } LuaLibBase::~LuaLibBase() { From 0a92ee4e8d6ffb88f137b74ba3e9a9b688ac50e6 Mon Sep 17 00:00:00 2001 From: _yui Date: Tue, 7 Jul 2020 23:01:38 +0300 Subject: [PATCH 2/2] Change luaL_register to luaL_setfuncs for lua 5.2 and newer --- src/xmoto/LuaLibBase.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xmoto/LuaLibBase.cpp b/src/xmoto/LuaLibBase.cpp index 62b690e1..911c5698 100644 --- a/src/xmoto/LuaLibBase.cpp +++ b/src/xmoto/LuaLibBase.cpp @@ -44,11 +44,17 @@ LuaLibBase::LuaLibBase(const std::string &i_libname, luaL_Reg i_reg[]) { #if HAVE_LUAL_OPENLIB luaL_openlib(m_pL, i_libname.c_str(), i_reg, 0); -#else +#else // HAVE_LUAL_OPENLIB lua_newtable(m_pL); + +#if LUA_VERSION_NUM >= 502 + luaL_setfuncs(m_pL, i_reg, 0); +#else // LUA_VERSION_NUM >= 502 luaL_register(m_pL, i_libname.c_str(), i_reg); +#endif // LUA_VERSION_NUM >= 502 + lua_setglobal(m_pL, i_libname.c_str()); -#endif +#endif // HAVE_LUAL_OPENLIB } LuaLibBase::~LuaLibBase() {