11ngx_lua_opt_I=
22ngx_lua_opt_L=
3+ luajit_ld_opt=
4+
5+ ngx_feature_name=
6+ ngx_feature_run=no
7+ ngx_feature_incs=
8+ ngx_feature_test=
39
410if [ -n "$LUAJIT_INC" -o -n "$LUAJIT_LIB" ]; then
511 # explicitly set LuaJIT paths
@@ -30,6 +36,7 @@ if [ -n "$LUAJIT_INC" -o -n "$LUAJIT_LIB" ]; then
3036 ngx_feature_path="$LUAJIT_INC"
3137 ngx_lua_opt_I="-I$LUAJIT_INC"
3238 ngx_lua_opt_L="-L$LUAJIT_LIB"
39+ luajit_ld_opt="-lm -ldl"
3340
3441 # ensure that -I$LUAJIT_INC and -L$LUAJIT_LIB come first
3542 SAVED_CC_TEST_FLAGS="$CC_TEST_FLAGS"
@@ -38,9 +45,9 @@ if [ -n "$LUAJIT_INC" -o -n "$LUAJIT_LIB" ]; then
3845 NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
3946
4047 if [ $NGX_RPATH = YES ]; then
41- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 -lm -ldl "
48+ ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt "
4249 else
43- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 -lm -ldl "
50+ ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt "
4451 fi
4552
4653 . auto/feature
@@ -55,6 +62,7 @@ if [ -n "$LUAJIT_INC" -o -n "$LUAJIT_LIB" ]; then
5562 ngx_feature_path="$LUAJIT_INC"
5663 ngx_lua_opt_I="-I$LUAJIT_INC"
5764 ngx_lua_opt_L="-L$LUAJIT_LIB"
65+ luajit_ld_opt="-lm"
5866
5967 # ensure that -I$LUAJIT_INC and -L$LUAJIT_LIB come first
6068 SAVED_CC_TEST_FLAGS="$CC_TEST_FLAGS"
@@ -63,9 +71,9 @@ if [ -n "$LUAJIT_INC" -o -n "$LUAJIT_LIB" ]; then
6371 NGX_TEST_LD_OPT="$ngx_lua_opt_L $NGX_TEST_LD_OPT"
6472
6573 if [ $NGX_RPATH = YES ]; then
66- ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 -lm "
74+ ngx_feature_libs="-R$LUAJIT_LIB $ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt "
6775 else
68- ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 -lm "
76+ ngx_feature_libs="$ngx_lua_opt_L -lluajit-5.1 $luajit_ld_opt "
6977 fi
7078
7179 . auto/feature
8896 case "$NGX_MACHINE" in
8997 amd64 | x86_64 | i386)
9098 echo "adding extra linking options needed by LuaJIT on $NGX_MACHINE"
99+ luajit_ld_opt="$luajit_ld_opt -pagezero_size 10000 -image_base 100000000"
91100 ngx_feature_libs="$ngx_feature_libs -pagezero_size 10000 -image_base 100000000"
92101 ;;
93102
105114 # FreeBSD with luajit-2.0 from ports collection
106115 ngx_feature="LuaJIT library in /usr/local/"
107116 ngx_feature_path="/usr/local/include/luajit-2.0"
117+ luajit_ld_opt="-lm"
118+ LUAJIT_LIB="/usr/local/lib"
108119 if [ $NGX_RPATH = YES ]; then
109120 ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lluajit-5.1 -lm"
110121 else
117128 # Gentoo with LuaJIT-2.0, try with -ldl
118129 ngx_feature="LuaJIT library in /usr/"
119130 ngx_feature_path="/usr/include/luajit-2.0"
131+ luajit_ld_opt="-lm -ldl"
132+ LUAJIT_LIB="/usr/lib"
120133 if [ $NGX_RPATH = YES ]; then
121134 ngx_feature_libs="-R/usr/lib -L/usr/lib -lm -lluajit-5.1 -ldl"
122135 else
129142 # Gentoo with LuaJIT 2.0
130143 ngx_feature="LuaJIT library in /usr/"
131144 ngx_feature_path="/usr/include/luajit-2.0"
145+ luajit_ld_opt="-lm"
146+ LUAJIT_LIB="/usr/lib"
132147 if [ $NGX_RPATH = YES ]; then
133148 ngx_feature_libs="-R/usr/lib -L/usr/lib -lm -lluajit-5.1"
134149 else
159174# ----------------------------------------
160175
161176ngx_feature="LuaJIT 2.x"
162- ngx_feature_name=
163177ngx_feature_run=no
164178ngx_feature_incs="#include <luajit.h>"
165- ngx_feature_path=
166179ngx_feature_test='#if !defined(LUAJIT_VERSION_NUM) || (LUAJIT_VERSION_NUM < 20000)
167180 # error unsupported LuaJIT version
168181 #endif'
169- SAVED_CC_TEST_FLAGS="$CC_TEST_FLAGS"
170- CC_TEST_FLAGS="$ngx_lua_opt_I $CC_TEST_FLAGS"
171182
172183. auto/feature
173184
@@ -178,22 +189,17 @@ END
178189 exit 1
179190fi
180191
181- CC_TEST_FLAGS="$SAVED_CC_TEST_FLAGS"
182-
183192# ----------------------------------------
184193
185194ngx_feature="LuaJIT has FFI"
186- ngx_feature_name=
195+ ngx_feature_libs="$LUAJIT_LIB/libluajit-5.1.a $luajit_ld_opt"
187196ngx_feature_run=yes
188197ngx_feature_incs="#include <lualib.h>
189198 #include <lauxlib.h>
190199 #include <assert.h>"
191- ngx_feature_path=
192- ngx_feature_test='lua_State *L = luaL_newstate();
200+ ngx_feature_test="lua_State *L = luaL_newstate();
193201 assert(L != NULL);
194- luaopen_ffi(L);'
195- SAVED_CC_TEST_FLAGS="$CC_TEST_FLAGS"
196- CC_TEST_FLAGS="$ngx_lua_opt_I $CC_TEST_FLAGS"
202+ luaopen_ffi(L);"
197203
198204. auto/feature
199205
204210 exit 1
205211fi
206212
207- CC_TEST_FLAGS="$SAVED_CC_TEST_FLAGS"
208-
209213# ----------------------------------------
210214
211215ngx_addon_name=ngx_http_lua_module
468472
469473# ----------------------------------------
470474
471- if [ $PCRE != NO -a $PCRE != YES ]; then
472- # force pcre_version symbol to be undefined when PCRE is statically linked
473- ngx_feature="force undefined symbols (--undefined)"
474- ngx_feature_libs="-Wl,--undefined=printf"
475- ngx_feature_name=
476- ngx_feature_run=no
477- ngx_feature_incs="#include <stdio.h>"
478- ngx_feature_path=
479- ngx_feature_test='printf("hello");'
475+ if [ $USE_PCRE = YES -o $PCRE != NONE ] && [ $PCRE != NO -a $PCRE != YES ]; then
476+ # force pcre_version symbol to be required when PCRE is statically linked
477+ case "$NGX_PLATFORM" in
478+ Darwin:*)
479+ ngx_feature="require defined symbols (-u)"
480+ ngx_feature_name=
481+ ngx_feature_path=
482+ ngx_feature_libs="-Wl,-u,_strerror"
483+ ngx_feature_run=no
484+ ngx_feature_incs="#include <stdio.h>"
485+ ngx_feature_test='printf("hello");'
480486
481- . auto/feature
487+ . auto/feature
482488
483- if [ $ngx_found = yes ]; then
484- CORE_LIBS="$CORE_LIBS -Wl,--undefined=pcre_version"
485- fi
489+ if [ $ngx_found = yes ]; then
490+ CORE_LIBS="-Wl,-u,_pcre_version $CORE_LIBS"
491+ fi
492+ ;;
486493
487- # for LLVM ld (Darwin )
488- ngx_feature="force undefined symbols (-all_load -U )"
489- ngx_feature_libs="-all_load -U printf"
490- ngx_feature_name =
491- ngx_feature_run=no
492- ngx_feature_incs="#include <stdio.h>"
493- ngx_feature_path=
494- ngx_feature_test='printf("hello");'
494+ * )
495+ ngx_feature="require defined symbols (--require-defined )"
496+ ngx_feature_name=
497+ ngx_feature_path =
498+ ngx_feature_libs="-Wl,--require-defined=strerror"
499+ ngx_feature_run=no
500+ ngx_feature_incs="#include <stdio.h>"
501+ ngx_feature_test='printf("hello");'
495502
496- . auto/feature
503+ . auto/feature
497504
498- if [ $ngx_found = yes ]; then
499- CORE_LIBS="$CORE_LIBS -all_load -U pcre_version"
500- fi
505+ if [ $ngx_found = yes ]; then
506+ CORE_LIBS="-Wl,--require-defined=pcre_version $CORE_LIBS"
507+ fi
508+ ;;
509+ esac
501510fi
502511
503512# ----------------------------------------
0 commit comments