diff --git a/build/lua.m4 b/build/lua.m4 index b30b5bd5..3bb002fc 100644 --- a/build/lua.m4 +++ b/build/lua.m4 @@ -6,7 +6,7 @@ AC_DEFUN([CHECK_LUA], [dnl # Possible names for the lua library/package (pkg-config) -LUA_POSSIBLE_LIB_NAMES="lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 lua" +LUA_POSSIBLE_LIB_NAMES="lua54 lua5.4 lua-5.4 lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 lua-5.1 lua" # Possible extensions for the library LUA_POSSIBLE_EXTENSIONS="so so0 la sl dll dylib so.0.0.0" @@ -162,6 +162,9 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [ lua_inc_path="${path}" elif test -e "${path}/include/lua/lua.h"; then lua_inc_path="${path}/include/lua" + elif test -e "${path}/include/lua5.4/lua.h"; then + lua_inc_path="${path}/include/lua5.4" + LUA_VERSION=504 elif test -e "${path}/include/lua5.3/lua.h"; then lua_inc_path="${path}/include/lua5.3" LUA_VERSION=503 @@ -207,6 +210,14 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [ #endif ], [ LUA_VERSION=502 ], [ lua_5_2=0 ] ) + AC_TRY_COMPILE([ #include ], + [ #if (LUA_VERSION_NUM == 502) + return 0; + #else + #error Lua 5.4 not detected + #endif ], + [ LUA_VERSION=504 ], [ lua_5_4=0 ] + ) if test -z "${LUA_VERSION}" ; then # As a last resort, try to find LUA version from $lua_inc_path @@ -215,7 +226,8 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [ case "$line" in (\#define\ LUA_VERSION_NUM*501*) LUA_VERSION=501 ;; (\#define\ LUA_VERSION_NUM*502*) LUA_VERSION=501 ;; - (\#define\ LUA_VERSION_NUM*503*) LUA_VERSION=503 + (\#define\ LUA_VERSION_NUM*503*) LUA_VERSION=503 ;; + (\#define\ LUA_VERSION_NUM*504*) LUA_VERSION=503 esac done <"${lua_inc_path}/lua.h" AC_MSG_NOTICE([LUA_VERSION is ${LUA_VERSION} found at: ${lua_inc_path}]) @@ -226,6 +238,7 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [ case $LUA_VERSION in (501) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;; (502) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ; lua_5_2=1 ;; + (504) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ; lua_5_2=1 ;; esac fi diff --git a/src/engine/lua.cc b/src/engine/lua.cc index f9c1f0a9..e940f5cb 100644 --- a/src/engine/lua.cc +++ b/src/engine/lua.cc @@ -155,7 +155,8 @@ int Lua::run(Transaction *t, const std::string &str) { case LUA_ERRMEM: e.assign("Memory error. "); break; -#ifndef WITH_LUA_5_1 +#if defined(WITH_LUA_5_1) and !defined(WITH_LUA_5_4) + case LUA_ERRGCMM: e.assign("Garbage Collector error. "); break;