diff options
author | Christian Pointner <equinox@helsinki.at> | 2015-07-26 18:00:40 (GMT) |
---|---|---|
committer | Christian Pointner <equinox@helsinki.at> | 2015-07-26 18:00:40 (GMT) |
commit | 84d7a21071fa177657674596885c870c614d600b (patch) | |
tree | 5b5eab74f6af6209a8b3f059f37dae768da945f9 | |
parent | 4e1b5c83907da256858c127fcca36777591a11d3 (diff) |
make it work with lua 5.2
-rwxr-xr-x | src/configure | 70 | ||||
-rw-r--r-- | src/l_cmd.c | 10 | ||||
-rw-r--r-- | src/l_log.c | 9 | ||||
-rw-r--r-- | src/l_sig_handler.c | 9 |
4 files changed, 75 insertions, 23 deletions
diff --git a/src/configure b/src/configure index cc8e728..6b8bdf6 100755 --- a/src/configure +++ b/src/configure @@ -26,11 +26,15 @@ USE_CLANG=0 LUA_LDFLAGS='-lm' LUA_DIR='' +LUA='' +LUA_VER='' + print_usage() { echo "configure --help print this" echo " --target=<TARGET> build target i.e. Linux (default: autodetect)" echo " --with-lua=<DIR> use this lua tree instead of system default" + echo " --lua-version=nnn set fixed Lua version for automatic detection (501 -> 5.1, 502 -> 5.2)" echo " --use-clang use clang/llvm as compiler/linker" } @@ -46,6 +50,9 @@ do --with-lua=*) LUA_DIR=${arg#--with-lua=} ;; + --lua-version=*) + LUA_VER=${arg#--lua-version=} + ;; --help) print_usage exit 0 @@ -87,14 +94,32 @@ esac test_lua_version() { - LUA_VERSION=`cat $1 | grep "#define LUA_VERSION[ ]" | cut -f2- | tr -d '"' | sed -e 's/Lua \([0-9][0-9.]*\)/\1/'` + LUA_VERSION_MAJ=`cat $1 | grep "#define LUA_VERSION_MAJOR[ ]" | cut -f2- | tr -d '"'` + LUA_VERSION_MIN=`cat $1 | grep "#define LUA_VERSION_MINOR[ ]" | cut -f2- | tr -d '"'` + LUA_VERSION_REL=`cat $1 | grep "#define LUA_VERSION_RELEASE[ ]" | cut -f2- | tr -d '"'` + + LUA_VERSION="$LUA_VERSION_MAJ.$LUA_VERSION_MIN" + LUA_RELEASE="$LUA_VERSION_MAJ.$LUA_VERSION_MIN.$LUA_VERSION_REL" + + if [ -z "$LUA_VERSION_MAJ" ]; then + LUA_VERSION=`cat $1 | grep "#define LUA_VERSION[ ]" | cut -f2- | tr -d '"' | sed -e 's/Lua \([0-9][0-9.]*\)/\1/'` + LUA_RELEASE=`cat $1 | grep "#define LUA_RELEASE[ ]" | cut -f2- | tr -d '"' | sed -e 's/Lua //'` + fi + LUA_VERSION_NUM=`cat $1 | grep "#define LUA_VERSION_NUM" | awk '{ print $3 }'` - LUA_RELEASE=`cat $1 | grep "#define LUA_RELEASE[ ]" | cut -f2-` - if [ $LUA_VERSION_NUM -ge 501 ]; then - return 1; + if [ -n "$LUA_VER" ]; then + if [ "$LUA_VER" -eq $LUA_VERSION_NUM ]; then + return 1 + else + return 0 + fi else - return 0; + if [ $LUA_VERSION_NUM -ge 501 ]; then + return 1 + else + return 0 + fi fi } @@ -104,50 +129,55 @@ if [ -z "$LUA_DIR" ]; then test_lua_version $prefix/include/lua.h if [ $? -eq 1 ]; then echo "using Lua $LUA_VERSION ($LUA_RELEASE) found at $prefix/include" - CFLAGS="$CFLAGS -I$prefix/include" - LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua" - LUA_DIR=found + CFLAGS="$CFLAGS -I'$prefix/include'" + LUA_LDFLAGS="$LUA_LDFLAGS -L'$prefix/lib' -llua" + LUA=$prefix/lua + LUAC=$prefix/luac break fi else - for dir in `ls -d $prefix/include/lua* 2> /dev/null`; do + for dir in `ls -r -d $prefix/include/lua* 2> /dev/null`; do if [ -e $dir/lua.h ]; then test_lua_version $dir/lua.h if [ $? -eq 1 ]; then echo "using Lua $LUA_VERSION ($LUA_RELEASE) found at $dir" CFLAGS="$CFLAGS -I$dir" if [ -x "$prefix/bin/lua$LUA_VERSION" ]; then - LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua$LUA_VERSION" - LUA_DIR=found + LUA_LDFLAGS="$LUA_LDFLAGS -L'$prefix/lib' -llua$LUA_VERSION" + LUA=$prefix/bin/lua$LUA_VERSION + LUAC=$prefix/bin/luac$LUA_VERSION elif [ -x "$prefix/bin/lua-$LUA_VERSION" ]; then - LUA_LDFLAGS="$LUA_LDFLAGS -L$prefix/lib -llua-$LUA_VERSION" - LUA_DIR=found + LUA_LDFLAGS="$LUA_LDFLAGS -L'$prefix/lib' -llua-$LUA_VERSION" + LUA=$prefix/bin/lua-$LUA_VERSION + LUAC=$prefix/bin/luac-$LUA_VERSION else - echo "ERROR: found lua.h at $dir/lua.h but no matching lua library" + echo "ERROR: found lua.h at $dir/lua.h but no matching lua and luac" return 1 fi break fi fi done - if [ -n "$LUA_DIR" ]; then + if [ -n "$LUAC" ]; then break fi fi done - if [ -z "$LUA_DIR" ]; then + if [ -z "$LUAC" ]; then echo "ERROR: no suitable lua found .. please install lua 5.1 or higher or use --with-lua" return 1 fi else - CFLAGS="$CFLAGS -I$LUA_DIR/include" - LUA_LDFLAGS="$LUA_LDFLAGS $LUA_DIR/lib/liblua.a" + CFLAGS="$CFLAGS -I'$LUA_DIR/include'" + LUA_LDFLAGS="$LUA_LDFLAGS '$LUA_DIR/lib/liblua.a'" + LUA=$LUA_DIR/bin/lua + LUAC=$LUA_DIR/bin/luac fi -cat >> include.mk <<EOF +cat > include.mk <<EOF # this file was created automatically # do not edit this file directly # use ./configure instead @@ -156,6 +186,8 @@ TARGET := $TARGET CC := $COMPILER CFLAGS := $CFLAGS LDFLAGS := $LDFLAGS +LUA := $LUA +LUAC := $LUAC LUA_LDFLAGS := $LUA_LDFLAGS EOF diff --git a/src/l_cmd.c b/src/l_cmd.c index ffefd2b..374535e 100644 --- a/src/l_cmd.c +++ b/src/l_cmd.c @@ -137,16 +137,22 @@ static int l_cmd_send_string(lua_State* L) return 1; } -static const struct luaL_reg cmd_funcs [] = { +static const struct luaL_Reg cmd_funcs [] = { { "init", l_cmd_init }, { "recv_data", l_cmd_recv_data }, { "send_string", l_cmd_send_string }, { NULL, NULL } }; - LUALIB_API int luaopen_cmd(lua_State *L) { +#if LUA_VERSION_NUM > 501 + lua_newtable(L); + luaL_setfuncs(L, cmd_funcs, 0); + lua_pushvalue(L, -1); + lua_setglobal(L, LUA_CMDLIBNAME); +#else luaL_register(L, LUA_CMDLIBNAME, cmd_funcs); +#endif return 1; } diff --git a/src/l_log.c b/src/l_log.c index 8da64bb..a405909 100644 --- a/src/l_log.c +++ b/src/l_log.c @@ -79,7 +79,7 @@ static int l_log_printf(lua_State *L) return 0; } -static const struct luaL_reg log_funcs [] = { +static const struct luaL_Reg log_funcs [] = { { "init", l_log_init }, { "close", l_log_close }, { "add_target", l_log_add_target }, @@ -90,7 +90,14 @@ static const struct luaL_reg log_funcs [] = { LUALIB_API int luaopen_log(lua_State *L) { +#if LUA_VERSION_NUM > 501 + lua_newtable(L); + luaL_setfuncs(L, log_funcs, 0); + lua_pushvalue(L, -1); + lua_setglobal(L, LUA_LOGLIBNAME); +#else luaL_register(L, LUA_LOGLIBNAME, log_funcs); +#endif lua_pushliteral(L, "ERROR"); lua_pushinteger(L, ERROR); lua_settable(L, -3); diff --git a/src/l_sig_handler.c b/src/l_sig_handler.c index 82902ca..f0616b8 100644 --- a/src/l_sig_handler.c +++ b/src/l_sig_handler.c @@ -74,7 +74,7 @@ static int l_signal_handle(lua_State *L) return 1; } -static const struct luaL_reg signal_funcs [] = { +static const struct luaL_Reg signal_funcs [] = { { "init", l_signal_init }, { "stop", l_signal_stop }, { "handle", l_signal_handle }, @@ -84,6 +84,13 @@ static const struct luaL_reg signal_funcs [] = { LUALIB_API int luaopen_signal(lua_State *L) { +#if LUA_VERSION_NUM > 501 + lua_newtable(L); + luaL_setfuncs(L, signal_funcs, 0); + lua_pushvalue(L, -1); + lua_setglobal(L, LUA_SIGNALLIBNAME); +#else luaL_register(L, LUA_SIGNALLIBNAME, signal_funcs); +#endif return 1; } |