summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/configure70
-rw-r--r--src/l_cmd.c10
-rw-r--r--src/l_log.c9
-rw-r--r--src/l_sig_handler.c9
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;
}