Skip to content

Commit 048a591

Browse files
committed
Fix build errors with multiple Lua libraries
This commit fixes two items: 1. Previously `configure` would search for Lua in known paths, but this could cause the Makefile to use inconsistent header and library paths. For example, if luajit were installed in `/usr/local/include` but lua 5.1 were installed in `/usr/lib/liblua-5.1.so`, the build would attempt to use the luajit headers but link against the lua 5.1 library. To fix this, we switch the order of the search: * First attempt to find an installed LUA library with `pkg-config`. * If we cannot find a library that way, fall back to the known-path scan. This is actually what is already documented in `LUA_POSSIBLE_PATHS`. 2. Add luajit back into `LUA_POSSIBLE_LIB_NAMES`. This was added in 0ac23a4 but quietly reverted in fe98ce4. The changes in the first item also ensure the `CFLAGS` are set properly for luajit. This should fix the issues raised in #1909.
1 parent 5519f6c commit 048a591

File tree

1 file changed

+35
-35
lines changed

1 file changed

+35
-35
lines changed

build/lua.m4

+35-35
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ AC_DEFUN([CHECK_LUA],
66
[dnl
77
88
# Possible names for the lua library/package (pkg-config)
9-
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"
9+
LUA_POSSIBLE_LIB_NAMES="lua54 lua5.4 lua-5.4 lua53 lua5.3 lua-5.3 lua52 lua5.2 lua-5.2 luajit luajit-5.1 lua51 lua5.1 lua-5.1 lua"
1010
1111
# Possible extensions for the library
1212
LUA_POSSIBLE_EXTENSIONS="so la sl dll dylib"
@@ -40,41 +40,41 @@ else
4040
else
4141
LUA_MANDATORY=no
4242
fi
43-
for x in ${LUA_POSSIBLE_PATHS}; do
44-
CHECK_FOR_LUA_AT(${x})
45-
if test -n "${LUA_CFLAGS}"; then
46-
break
47-
fi
48-
done
43+
# Trying to figure out the version using pkg-config...
44+
if test -n "${PKG_CONFIG}"; then
45+
LUA_PKG_NAME=""
46+
for x in ${LUA_POSSIBLE_LIB_NAMES}; do
47+
if ${PKG_CONFIG} --exists ${x}; then
48+
LUA_PKG_NAME="$x"
49+
LUA_PKG_VERSION="`${PKG_CONFIG} ${LUA_PKG_NAME} --modversion`"
50+
break
51+
fi
52+
done
53+
fi
54+
if test -n "${LUA_PKG_NAME}"; then
55+
# Package was found using the pkg-config scripts
56+
LUA_PKG_VERSION="`${PKG_CONFIG} ${LUA_PKG_NAME} --modversion`"
57+
LUA_CFLAGS="`${PKG_CONFIG} ${LUA_PKG_NAME} --cflags`"
58+
LUA_LDADD="`${PKG_CONFIG} ${LUA_PKG_NAME} --libs-only-l`"
59+
LUA_LDFLAGS="`${PKG_CONFIG} ${LUA_PKG_NAME} --libs-only-L --libs-only-other`"
60+
LUA_DISPLAY="${LUA_LDADD}, ${LUA_CFLAGS}"
61+
case $LUA_PKG_VERSION in
62+
(5.4*) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ; lua_5_4=1 ;;
63+
(5.3*) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ; lua_5_3=1 ;;
64+
(5.2*) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ; lua_5_2=1 ;;
65+
(5.1*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
66+
(2.0*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
67+
(2.1*) LUA_CFLAGS="-DWITH_LUA_5_1 -DWITH_LUA_JIT_2_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
68+
esac
69+
AC_MSG_NOTICE([LUA pkg-config version: ${LUA_PKG_VERSION}])
70+
fi
4971
if test -z "${LUA_CFLAGS}"; then
50-
#Trying to figure out the version using pkg-config...
51-
if test -n "${PKG_CONFIG}"; then
52-
LUA_PKG_NAME=""
53-
for x in ${LUA_POSSIBLE_LIB_NAMES}; do
54-
if ${PKG_CONFIG} --exists ${x}; then
55-
LUA_PKG_NAME="$x"
56-
LUA_PKG_VERSION="`${PKG_CONFIG} ${LUA_PKG_NAME} --modversion`"
57-
break
58-
fi
59-
done
60-
fi
61-
if test -n "${LUA_PKG_NAME}"; then
62-
# Package was found using the pkg-config scripts
63-
LUA_PKG_VERSION="`${PKG_CONFIG} ${LUA_PKG_NAME} --modversion`"
64-
LUA_CFLAGS="`${PKG_CONFIG} ${LUA_PKG_NAME} --cflags`"
65-
LUA_LDADD="`${PKG_CONFIG} ${LUA_PKG_NAME} --libs-only-l`"
66-
LUA_LDFLAGS="`${PKG_CONFIG} ${LUA_PKG_NAME} --libs-only-L --libs-only-other`"
67-
LUA_DISPLAY="${LUA_LDADD}, ${LUA_CFLAGS}"
68-
case $LUA_PKG_VERSION in
69-
(5.1*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
70-
(5.2*) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ; lua_5_2=1 ;;
71-
(5.3*) LUA_CFLAGS="-DWITH_LUA_5_3 ${LUA_CFLAGS}" ; lua_5_3=1 ;;
72-
(5.4*) LUA_CFLAGS="-DWITH_LUA_5_4 ${LUA_CFLAGS}" ; lua_5_4=1 ;;
73-
(2.0*) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
74-
(2.1*) LUA_CFLAGS="-DWITH_LUA_5_1 -DWITH_LUA_JIT_2_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
75-
esac
76-
AC_MSG_NOTICE([LUA pkg-config version: ${LUA_PKG_VERSION}])
77-
fi
72+
for x in ${LUA_POSSIBLE_PATHS}; do
73+
CHECK_FOR_LUA_AT(${x})
74+
if test -n "${LUA_CFLAGS}"; then
75+
break
76+
fi
77+
done
7878
fi
7979
fi
8080

0 commit comments

Comments
 (0)