@@ -6,13 +6,13 @@ AC_DEFUN([CHECK_LUA],
6
6
[ dnl
7
7
8
8
# Possible names for the lua library/package (pkg-config)
9
- LUA_POSSIBLE_LIB_NAMES="lua"
9
+ LUA_POSSIBLE_LIB_NAMES="lua lua53 lua5.3 lua52 lua5.2 "
10
10
11
11
# Possible extensions for the library
12
12
LUA_POSSIBLE_EXTENSIONS="so so0 la sl dll dylib so.0.0.0"
13
13
14
14
# Possible paths (if pkg-config was not found, proceed with the file lookup)
15
- LUA_POSSIBLE_PATHS="/usr/lib /usr/local/lib /usr/local/lua /usr/local/liblua /usr/local /opt /usr /usr/lib64 /opt/local"
15
+ LUA_POSSIBLE_PATHS="/usr/lib /usr/local/lib /usr/local/lib64 /usr/local/ lua /usr/local/liblua /usr/local /opt /usr /usr/lib64 /opt/local"
16
16
17
17
# Variables to be set by this very own script.
18
18
LUA_CFLAGS=""
46
46
break
47
47
fi
48
48
done
49
+ 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
+ esac
72
+ AC_MSG_NOTICE ( [ LUA pkg-config version: ${LUA_PKG_VERSION}] )
73
+ fi
74
+ fi
49
75
fi
50
76
51
77
@@ -58,13 +84,17 @@ if test -z "${LUA_CFLAGS}"; then
58
84
LUA_FOUND=2
59
85
fi
60
86
else
61
- AC_MSG_ERROR ( [ LUA was explicitly referenced but it was not found] )
62
- LUA_FOUND=-1
87
+ AC_MSG_ERROR ( [ LUA was explicitly referenced but it was not found] )
88
+ LUA_FOUND=-1
63
89
fi
64
90
else
91
+ if test "${lua_5_1}" = 1 && test "x${LUA_MANDATORY}" == "xyes" ; then
92
+ AC_MSG_ERROR ( [ LUA was explicitly referenced but LUA v5.1 was found and it is not currently supported on libModSecurity. LUA_VERSION: ${LUA_VERSION}] )
93
+ LUA_FOUND=-1
94
+ fi
65
95
if test -z "${LUA_MANDATORY}" || test "x${LUA_MANDATORY}" == "xno"; then
66
96
LUA_FOUND=1
67
- AC_MSG_NOTICE ( [ using LUA v${LUA_VERSION }] )
97
+ AC_MSG_NOTICE ( [ using LUA ${LUA_LDADD }] )
68
98
LUA_CFLAGS="-DWITH_LUA ${LUA_CFLAGS}"
69
99
LUA_DISPLAY="${LUA_LDADD} ${LUA_LDFLAGS}, ${LUA_CFLAGS}"
70
100
AC_SUBST ( LUA_LDFLAGS )
73
103
AC_SUBST ( LUA_DISPLAY )
74
104
else
75
105
LUA_FOUND=1
76
- AC_MSG_NOTICE ( [ using LUA v${LUA_VERSION }] )
106
+ AC_MSG_NOTICE ( [ using LUA ${LUA_LDADD }] )
77
107
LUA_CFLAGS="-DWITH_LUA ${LUA_CFLAGS}"
78
108
LUA_DISPLAY="${LUA_LDADD} ${LUA_LDFLAGS}, ${LUA_CFLAGS}"
79
109
AC_SUBST ( LUA_LDFLAGS )
83
113
fi
84
114
fi
85
115
116
+ if test "${lua_5_1}" = 1 ; then
117
+ AC_MSG_NOTICE ( [ LUA 5.1 was found and it is not currently supported on libModSecurity. LUA_VERSION: ${LUA_VERSION}. LUA build disabled.] )
118
+ LUA_FOUND=2
119
+ fi
86
120
87
121
AC_SUBST ( LUA_FOUND )
88
122
@@ -132,9 +166,15 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [
132
166
if test -e "${path}/include/lua.h"; then
133
167
lua_inc_path="${path}/include"
134
168
elif test -e "${path}/lua.h"; then
135
- lua_inc_path="${path}"
169
+ lua_inc_path="${path}"
136
170
elif test -e "${path}/include/lua/lua.h"; then
137
- lua_inc_path="${path}/include"
171
+ lua_inc_path="${path}/include/lua"
172
+ elif test -e "${path}/include/lua5.3/lua.h"; then
173
+ lua_inc_path="${path}/include/lua5.3"
174
+ LUA_VERSION=503
175
+ elif test -e "${path}/include/lua5.2/lua.h"; then
176
+ lua_inc_path="${path}/include/lua5.2"
177
+ LUA_VERSION=502
138
178
fi
139
179
140
180
if test -n "${lua_lib_path}"; then
@@ -144,14 +184,52 @@ AC_DEFUN([CHECK_FOR_LUA_AT], [
144
184
if test -n "${lua_inc_path}"; then
145
185
AC_MSG_NOTICE ( [ LUA headers found at: ${lua_inc_path}] )
146
186
fi
147
-
148
187
if test -n "${lua_lib_path}" -a -n "${lua_inc_path}"; then
149
- # TODO: Compile a piece of code to check the version.
150
- LUA_CFLAGS="-I${lua_inc_path}"
151
- LUA_LDADD="-l${lua_lib_name}"
152
- LUA_LDFLAGS="-L${lua_lib_path}"
153
- LUA_DISPLAY="${lua_lib_file}, ${lua_inc_path}"
188
+ LUA_CFLAGS="-I${lua_inc_path}"
189
+ LUA_LDADD="-l${lua_lib_name}"
190
+ LUA_LDFLAGS="-L${lua_lib_path}"
191
+ LUA_DISPLAY="${lua_lib_file}, ${lua_inc_path}"
192
+
193
+ # Double checking version from lua.h...
194
+ AC_TRY_COMPILE ( [ #include <lua.h>> ] ,
195
+ [ #if (LUA_VERSION_NUM < 502)
196
+ return 0;
197
+ #else
198
+ #error Lua 5.1 not detected
199
+ #endif ] ,
200
+ [ LUA_VERSION=501 ] , [ lua_5_1=0 ]
201
+ )
202
+
203
+ AC_TRY_COMPILE ( [ #include <lua.h> ] ,
204
+ [ #if (LUA_VERSION_NUM == 502)
205
+ return 0;
206
+ #else
207
+ #error Lua 5.2 not detected
208
+ #endif ] ,
209
+ [ LUA_VERSION=502 ] , [ lua_5_2=0 ]
210
+ )
211
+
212
+ if test -z "${LUA_VERSION}" ; then
213
+ # As a last resort, try to find LUA version from $lua_inc_path
214
+ while read -r line
215
+ do
216
+ case "$line" in
217
+ (\#define\ LUA_VERSION_NUM*501*) LUA_VERSION=501 ;;
218
+ (\#define\ LUA_VERSION_NUM*502*) LUA_VERSION=501 ;;
219
+ (\#define\ LUA_VERSION_NUM*503*) LUA_VERSION=503
220
+ esac
221
+ done <"${lua_inc_path}/lua.h"
222
+ AC_MSG_NOTICE ( [ LUA_VERSION is ${LUA_VERSION} found at: ${lua_inc_path}] )
223
+ else
224
+ AC_MSG_NOTICE ( [ LUA version from includes: ${LUA_VERSION}] )
225
+ fi
226
+
227
+ case $LUA_VERSION in
228
+ (501) LUA_CFLAGS="-DWITH_LUA_5_1 ${LUA_CFLAGS}" ; lua_5_1=1 ;;
229
+ (502) LUA_CFLAGS="-DWITH_LUA_5_2 ${LUA_CFLAGS}" ; lua_5_2=1 ;;
230
+ esac
154
231
fi
232
+
155
233
] ) # AC_DEFUN [CHECK_FOR_LUA_AT]
156
234
157
235
0 commit comments