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