From c0edbcce58b03b89c70f1eb39cb44c74c4c7453a Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 21 Oct 2004 15:34:38 +0000 Subject: nginx-0.1.2-RELEASE import *) Feature: the --user=USER, --group=GROUP, and --with-ld-opt=OPTIONS options in configure. *) Feature: the server_name directive supports *.domain.tld. *) Bugfix: the portability improvements. *) Bugfix: if configuration file was set in command line, the reconfiguration was impossible; the bug had appeared in 0.1.1. *) Bugfix: proxy module may get caught in an endless loop when sendfile is not used. *) Bugfix: with sendfile the response was not recoded according to the charset module directives; the bug had appeared in 0.1.1. *) Bugfix: very seldom bug in the kqueue processing. *) Bugfix: the gzip module compressed the proxied responses that was already compressed. --- auto/cc/bcc | 48 ++++++ auto/cc/conf | 119 +++++++++++++++ auto/cc/gcc | 109 +++++++++++++ auto/cc/icc | 69 +++++++++ auto/cc/msvc | 81 ++++++++++ auto/cc/name | 51 +++++++ auto/cc/owc | 82 ++++++++++ auto/configure | 14 +- auto/endianess | 2 +- auto/feature | 63 ++++++-- auto/fmt/fmt | 66 +++++--- auto/fmt/ptrfmt | 62 +++++--- auto/headers | 6 +- auto/inc | 35 ----- auto/include | 66 ++++++++ auto/init | 42 +++-- auto/install | 2 +- auto/lib/md5/conf | 51 ++++--- auto/lib/md5/make | 4 +- auto/lib/openssl/conf | 19 ++- auto/lib/pcre/conf | 57 +++---- auto/lib/pcre/make | 6 +- auto/lib/test | 22 ++- auto/lib/zlib/conf | 25 +-- auto/lib/zlib/make | 4 +- auto/make | 416 ++++++++++++++++++++------------------------------ auto/options | 71 ++++++--- auto/os/conf | 69 +++++++-- auto/os/freebsd | 28 +++- auto/os/linux | 80 ++++++---- auto/os/solaris | 65 +++----- auto/os/win32 | 29 ++++ auto/sources | 6 +- auto/stubs | 8 + auto/types/sizeof | 34 ++++- auto/types/typedef | 50 +++--- auto/types/uintptr_t | 2 +- auto/unix | 137 ++++++++++------- 38 files changed, 1423 insertions(+), 677 deletions(-) create mode 100644 auto/cc/bcc create mode 100644 auto/cc/conf create mode 100644 auto/cc/gcc create mode 100644 auto/cc/icc create mode 100644 auto/cc/msvc create mode 100644 auto/cc/name create mode 100644 auto/cc/owc delete mode 100644 auto/inc create mode 100644 auto/include create mode 100644 auto/os/win32 create mode 100644 auto/stubs (limited to 'auto') diff --git a/auto/cc/bcc b/auto/cc/bcc new file mode 100644 index 000000000..5765c4713 --- /dev/null +++ b/auto/cc/bcc @@ -0,0 +1,48 @@ + +# Copyright (C) Igor Sysoev + + +# Borland C++ 5.5 + +# optimizations + +# maximize speed +CFLAGS="$CFLAGS -O2" + +case $CPU in + pentium) + # optimize for Pentium and Athlon + CPU_OPT="-5" + ;; + + pentiumpro) + # optimize for Pentium Pro, Pentium II and Pentium III + CPU_OPT="-6" + ;; +esac + +CFLAGS="$CFLAGS $CPU_OPT" + +# multithreaded +CFLAGS="$CFLAGS -tWM" + +# stop on warning +CFLAGS="$CFLAGS -w!" + +# disable logo +CFLAGS="$CFLAGS -q" + +# precompiled headers +CORE_DEPS="$CORE_DEPS $OBJS/ngx_config.csm" +NGX_PCH="$OBJS/ngx_config.csm" +NGX_BUILD_PCH="-H=$OBJS/ngx_config.csm" +NGX_USE_PCH="-Hu -H=$OBJS/ngx_config.csm" + +LINK="\$(CC)" + +ngx_include_opt="-I" +ngx_objout="-o" +ngx_binout="-e" +ngx_objext="obj" +ngx_binext=".exe" +ngx_dirsep='\\' diff --git a/auto/cc/conf b/auto/cc/conf new file mode 100644 index 000000000..77eeda79e --- /dev/null +++ b/auto/cc/conf @@ -0,0 +1,119 @@ + +# Copyright (C) Igor Sysoev + + +ngx_include_opt="-I " +ngx_compile_opt="-c" +ngx_objout="-o " +ngx_binout="-o " +ngx_objext="o" +ngx_binext= + +ngx_regex_dirsep="\/" +ngx_dirsep='/' + +ngx_regex_cont=' \\\ + ' +ngx_cont=' \ + ' +ngx_tab=' \ + ' +ngx_spacer= + +. auto/cc/name + +if test -n "$CFLAGS"; then + + CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT" + + case $NGX_CC_NAME in + + ccc) + # Compaq C V6.5-207 + + ngx_include_opt="-I" + ;; + + esac + +else + + case $NGX_CC_NAME in + gcc) + # gcc 2.7.2.3, 2.8.1, 2.95.4, + # 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4 + + . auto/cc/gcc + ;; + + icc) + # Intel C++ compiler 7.1, 8.0 + + . auto/cc/icc + ;; + +# ccc) +# # Compaq C V6.5-207 +# +# . auto/cc/ccc +# ;; + +# acc) +# # aCC: HP ANSI C++ B3910B A.03.55.02 +# +# . auto/cc/acc +# ;; + + msvc) + # MSVC 6.0 SP2 + + . auto/cc/msvc + ;; + + owc) + # Open Watcom C 1.0, 1.2 + + . auto/cc/owc + ;; + + bcc) + # Borland C++ 5.5 + + . auto/cc/bcc + ;; + + esac + + CC_TEST_FLAGS=$NGX_CC_OPT + +fi + +CFLAGS="$CFLAGS $NGX_CC_OPT" + + +if [ "$PLATFORM" != win32 ]; then + + ngx_feature="gcc variadic macros" + ngx_feature_name=HAVE_GCC_VARIADIC_MACROS + ngx_feature_run=yes + ngx_feature_incs="#include +#define var(dummy, args...) sprintf(args)" + ngx_feature_libs= + ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" + . auto/feature + + + ngx_feature="C99 variadic macros" + ngx_feature_name=HAVE_C99_VARIADIC_MACROS + ngx_feature_run=yes + ngx_feature_incs="#include +#define var(dummy, ...) sprintf(__VA_ARGS__)" + ngx_feature_libs= + ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" + . auto/feature + +fi diff --git a/auto/cc/gcc b/auto/cc/gcc new file mode 100644 index 000000000..61f048b7b --- /dev/null +++ b/auto/cc/gcc @@ -0,0 +1,109 @@ + +# Copyright (C) Igor Sysoev + + +# gcc 2.7.2.3, 2.8.1, 2.95.4, +# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4 + + +# Solaris 7's /usr/ccs/bin/as does not support "-pipe" + +CC_TEST_FLAGS="-pipe" + +ngx_feature="gcc -pipe switch" +ngx_feature_name= +ngx_feature_run=no +ngx_feature_incs= +ngx_feature_libs= +ngx_feature_test= +. auto/feature + +CC_TEST_FLAGS= + +if [ $ngx_found = yes ]; then + PIPE="-pipe" +fi + + +# optimizations + +#CFLAGS="$CFLAGS -O2 -fomit-frame-pointer" + +case $CPU in + pentium) + # optimize for Pentium and Athlon + CPU_OPT="-march=pentium" + ;; + + pentiumpro) + # optimize for Pentium Pro, Pentium II and Pentium III + CPU_OPT="-march=pentiumpro" + ;; + + pentium4) + # optimize for Pentium 4, gcc 3.x + CPU_OPT="-march=pentium4" + ;; + + sparc64) + # build 64-bit UltraSparc binary + CPU_OPT="-m64" + CORE_LINK="$CORE_LINK -m64" + CC_AUX_FLAGS="$CC_AUX_FLAGS -m64" + ;; + +esac + + +# STUB for batch builds +if [ $CC = gcc27 ]; then CPU_OPT=; fi + + +CFLAGS="$CFLAGS $PIPE $CPU_OPT" + +if [ ".$PCRE_OPT" = "." ]; then + PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" +else + PCRE_OPT="$PCRE_OPT $PIPE" +fi + +if [ ".$MD5_OPT" = "." ]; then + MD5_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" +else + MD5_OPT="$MD5_OPT $PIPE" +fi + +if [ ".$ZLIB_OPT" = "." ]; then + ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" +else + ZLIB_OPT="$ZLIB_OPT $PIPE" +fi + + +# warnings + +CFLAGS="$CFLAGS -O -W" +CFLAGS="$CFLAGS -Wall -Wpointer-arith" +#CFLAGS="$CFLAGS -Wconversion" +#CFLAGS="$CFLAGS -Winline" + +# we have a lot of the unused function arguments +CFLAGS="$CFLAGS -Wno-unused" + +# stop on warning +CFLAGS="$CFLAGS -Werror" + +# debug +CFLAGS="$CFLAGS -g" + +# DragonFly's gcc3 generates DWARF +#CFLAGS="$CFLAGS -g -gstabs" + +if [ ".$CPP" = "." ]; then + CPP="$CC -E" +fi + +LINK="\$(CC)" + + +CC_STRONG="-Wall -Werror" diff --git a/auto/cc/icc b/auto/cc/icc new file mode 100644 index 000000000..94d5cddc5 --- /dev/null +++ b/auto/cc/icc @@ -0,0 +1,69 @@ + +# Copyright (C) Igor Sysoev + + +# Intel C++ compiler 7.1, 8.0 + +# optimizations + +CFLAGS="$CFLAGS -O" +# inline functions declared with __inline +#CFLAGS="$CFLAGS -Ob1" +# inline any function, at the compiler's discretion +CFLAGS="$CFLAGS -Ob2" + +# single-file IP optimizations +#IPO="-ip" +# multi-file IP optimizations +IPO="-ipo -ipo_obj" +CFLAGS="$CFLAGS $IPO" +CORE_LINK="$CORE_LINK $IPO" +CORE_LINK="$CORE_LINK -opt_report_file=$OBJS/opt_report_file" + +case $CPU in + pentium) + # optimize for Pentium and Athlon + CPU_OPT="-march=pentium" + ;; + + pentiumpro) + # optimize for Pentium Pro, Pentium II and Pentium III + CPU_OPT="-mcpu=pentiumpro -march=pentiumpro" + ;; + + pentium4) + # optimize for Pentium 4, default + CPU_OPT="-march=pentium4" + ;; +esac + +CFLAGS="$CFLAGS $CPU_OPT" + +if [ ".$PCRE_OPT" = "." ]; then + PCRE_OPT="-O $IPO $CPU_OPT" +fi + +if [ ".$MD5_OPT" = "." ]; then + MD5_OPT="-O $IPO $CPU_OPT" +fi + +if [ ".$ZLIB_OPT" = "." ]; then + ZLIB_OPT="-O $IPO $CPU_OPT" +fi + + +# warnings + +CFLAGS="$CFLAGS -w1" +#CFLAGS="$CFLAGS -w2" + +# stop on warning +CFLAGS="$CFLAGS -Werror" + +# debug +CFLAGS="$CFLAGS -g" + +LINK="\$(CC)" + + +CC_STRONG="-w1 -Werror" diff --git a/auto/cc/msvc b/auto/cc/msvc new file mode 100644 index 000000000..d47d4b2a0 --- /dev/null +++ b/auto/cc/msvc @@ -0,0 +1,81 @@ + +# Copyright (C) Igor Sysoev + + +# MSVC 6.0 SP2 + +# optimizations + +# maximize speed +CFLAGS="$CFLAGS -O2" +# enable global optimization +CFLAGS="$CFLAGS -Og" +# enable intrinsic functions +CFLAGS="$CFLAGS -Oi" +# inline expansion +CFLAGS="$CFLAGS -Ob1" +# enable frame pointer omission +CFLAGS="$CFLAGS -Oy" +# disable stack checking calls +CFLAGS="$CFLAGS -Gs" + +case $CPU in + pentium) + # optimize for Pentium and Athlon + CPU_OPT="-G5" + ;; + + pentiumpro) + # optimize for Pentium Pro, Pentium II and Pentium III + CPU_OPT="-G6" + ;; + + pentium4) + # optimize for Pentium 4 + #CPU_OPT="-G7" + ;; +esac + +CFLAGS="$CFLAGS $CPU_OPT" + + +# warnings + +#CFLAGS="$CFLAGS -W3" +CFLAGS="$CFLAGS -W4" + +# stop on warning +CFLAGS="$CFLAGS -WX" + +# link with libcmt.lib, multithreaded +#LIBC="-MT" +# link with msvcrt.dll +LIBC="-MD" + +CFLAGS="$CFLAGS $LIBC" + +# disable logo +CFLAGS="$CFLAGS -nologo" + +LINK="\$(CC)" + +# link flags +CORE_LINK="$CORE_LINK -link -verbose:lib" + +# debug +CFLAGS="$CFLAGS -Yd" +CORE_LINK="$CORE_LINK -debug -debugtype:coff" + +# precompiled headers +CORE_DEPS="$CORE_DEPS $OBJS/ngx_config.pch" +NGX_PCH="$OBJS/ngx_config.pch" +NGX_BUILD_PCH="-Ycngx_config.h -Fp$OBJS/ngx_config.pch" +NGX_USE_PCH="-Yungx_config.h -Fp$OBJS/ngx_config.pch" + +ngx_objout="-Fo" +ngx_binout="-Fe" +ngx_objext="obj" +ngx_binext=".exe" + +#ngx_regex_dirsep='\\' +#ngx_dirsep="\\" diff --git a/auto/cc/name b/auto/cc/name new file mode 100644 index 000000000..b9744799c --- /dev/null +++ b/auto/cc/name @@ -0,0 +1,51 @@ + +# Copyright (C) Igor Sysoev + + +echo $ngx_n "checking for C compiler ...$ngx_c" + + +if [ $CC = cl ]; then + NGX_CC_NAME=msvc + echo " using Microsoft Visual C compiler" + +else +if [ $CC = wcl386 ]; then + NGX_CC_NAME=owc + echo " using Open Watcom C compiler" + +else +if [ $CC = bcc32 ]; then + NGX_CC_NAME=bcc + echo " using Borland C++ compiler" + +else +if `$CC -v 2>&1 | grep '^gcc version' 2>&1 >/dev/null`; then + NGX_CC_NAME=gcc + echo " using GNU C compiler" + +else +if `$CC -V 2>&1 | grep '^Intel(R) C++ Compiler' 2>&1 >/dev/null`; then + NGX_CC_NAME=icc + echo " using Intel C++ compiler" + +else +if `$CC -V 2>&1 | grep '^Compaq C' 2>&1 >/dev/null`; then + NGX_CC_NAME=ccc + echo " using Compaq C compiler" + +else +if `$CC -V 2>&1 | grep '^aCC: ' 2>&1 >/dev/null`; then + NGX_CC_NAME=acc + echo " using HP aC++ compiler" + +else + echo " unknown" + +fi # acc +fi # ccc +fi # icc +fi # gcc +fi # bcc +fi # owc +fi # msvc diff --git a/auto/cc/owc b/auto/cc/owc new file mode 100644 index 000000000..0c8194dbb --- /dev/null +++ b/auto/cc/owc @@ -0,0 +1,82 @@ + +# Copyright (C) Igor Sysoev + + +# Open Watcom C 1.0, 1.2 + +# optimizations + +# maximize speed +CFLAGS="$CFLAGS -ot" +# reorder instructions for best pipeline usage +CFLAGS="$CFLAGS -op" +# inline intrinsic functions +CFLAGS="$CFLAGS -oi" +# inline expansion +CFLAGS="$CFLAGS -oe" +# disable stack checking calls +CFLAGS="$CFLAGS -s" + +case $CPU in + pentium) + # optimize for Pentium and Athlon + # register-based arguments passing conventions + CPU_OPT="-5r" + # stack-based arguments passing conventions + #CPU_OPT="-5s" + ;; + + pentiumpro) + # optimize for Pentium Pro, Pentium II and Pentium III + # register-based arguments passing conventions + CPU_OPT="-6r" + # stack-based arguments passing conventions + #CPU_OPT="-6s" + ;; +esac + +CFLAGS="$CFLAGS $CPU_OPT" + + +# warnings + +#CFLAGS="$CFLAGS -w3" +CFLAGS="$CFLAGS -wx" + +# stop on warning +CFLAGS="$CFLAGS -we" + +# built target is NT +CFLAGS="$CFLAGS -bt=nt" + +# multithreaded +CFLAGS="$CFLAGS -bm" + +# debug +CFLAGS="$CFLAGS -d2" + +# quiet +CFLAGS="$CFLAGS -zq" + +# Open Watcom C 1.2 +#have=HAVE_C99_VARIADIC_MACROS . auto/have + +# precompiled headers +CORE_DEPS="$CORE_DEPS $OBJS/ngx_config.pch" +NGX_PCH="$OBJS/ngx_config.pch" +NGX_BUILD_PCH="-fhq=$OBJS/ngx_config.pch" +NGX_USE_PCH="-fh=$OBJS/ngx_config.pch" + +LINK="\$(CC)" + +# link flags +CORE_LINK="$CORE_LINK -l=nt" + +ngx_include_opt="-i=" +ngx_objout="-fo" +ngx_binout="-fe=" +ngx_objext="obj" +ngx_binext=".exe" + +ngx_regex_dirsep='\\' +ngx_dirsep="\\" diff --git a/auto/configure b/auto/configure index 6a81555d1..eb2fed051 100755 --- a/auto/configure +++ b/auto/configure @@ -8,24 +8,22 @@ . auto/sources test -d $OBJS || mkdir $OBJS + +echo > $NGX_AUTO_HEADERS_H echo > $NGX_AUTO_CONFIG_H if [ $DEBUG = YES ]; then have=NGX_DEBUG . auto/have fi -have=NGX_USE_HTTP_FILE_CACHE_UNIQ . auto/have -have=NGX_SUPPRESS_WARN . auto/have - if [ "$PLATFORM" != win32 ]; then . auto/headers fi +. auto/cc/conf . auto/os/conf . auto/modules - -. auto/cc . auto/lib/conf if [ "$PLATFORM" != win32 ]; then @@ -40,7 +38,8 @@ if [ "$PLATFORM" != win32 ]; then . auto/unix fi -have=NGX_SMP . auto/have +# STUB +. auto/stubs have=NGX_PREFIX value="\"$PREFIX/\"" . auto/define have=NGX_SBIN_PATH value="\"$SBIN_PATH\"" . auto/define @@ -51,4 +50,7 @@ if [ ".$ERROR_LOG_PATH" != "." ]; then fi have=NGX_HTTP_LOG_PATH value="\"$HTTP_LOG_PATH\"" . auto/define +have=NGX_USER value="\"$NGX_USER\"" . auto/define +have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define + . auto/summary diff --git a/auto/endianess b/auto/endianess index 4df7d01f1..640b46592 100644 --- a/auto/endianess +++ b/auto/endianess @@ -2,7 +2,7 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for system endianess ..." $ngx_c +echo $ngx_n "checking for system endianess ...$ngx_c" echo >> $NGX_ERR echo "checking for system endianess" >> $NGX_ERR diff --git a/auto/feature b/auto/feature index bd5b08158..78676ef09 100644 --- a/auto/feature +++ b/auto/feature @@ -2,19 +2,28 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_feature ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_feature" >> $NGX_ERR +echo $ngx_n "checking for $ngx_feature ...$ngx_c" + +cat << END >> $NGX_AUTOCONF_ERR + +---------------------------------------- +checking for $ngx_feature + +END ngx_found=no -feature=`echo $ngx_feature_name | tr '[a-z]' '[A-Z]'` +if test -n "$ngx_feature_name"; then + ngx_have_feature=`echo NGX_$ngx_feature_name | tr '[a-z]' '[A-Z]'` + # STUB + ngx_have_feature0=`echo HAVE_$ngx_feature_name | tr '[a-z]' '[A-Z]'` +fi cat << END > $NGX_AUTOTEST.c #include -$NGX_UNISTD_H -$ngx_feature_inc +$NGX_INCLUDE_UNISTD_H +$ngx_feature_incs int main() { $ngx_feature_test; @@ -23,34 +32,56 @@ int main() { END -test="$CC_WARN $CC_TEST_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c \ - $ngx_feature_libs" -eval "$test >> $NGX_ERR 2>&1" + +ngx_test="$CC $CC_TEST_FLAGS $CC_WARN $CC_AUX_FLAGS \ + -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" +eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" + if [ -x $NGX_AUTOTEST ]; then if [ $ngx_feature_run = yes ]; then + if $NGX_AUTOTEST 2>&1 > /dev/null; then echo " found" - have=HAVE_$feature . auto/have ngx_found=yes + + if test -n "$ngx_feature_name"; then + have=$ngx_have_feature . auto/have + fi + + #STUB + if test -n "$ngx_feature_name"; then + have=$ngx_have_feature0 . auto/have + fi + else echo " found but is not working" fi else echo " found" - have=HAVE_$feature . auto/have ngx_found=yes + + if test -n "$ngx_feature_name"; then + have=$ngx_have_feature . auto/have + fi + + #STUB + if test -n "$ngx_feature_name"; then + have=$ngx_have_feature0 . auto/have + fi + fi else echo " not found" - echo "---------" >> $NGX_ERR - cat $NGX_AUTOTEST.c >> $NGX_ERR - echo "---------" >> $NGX_ERR - echo $test >> $NGX_ERR - echo "---------" >> $NGX_ERR + + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR fi rm $NGX_AUTOTEST* diff --git a/auto/fmt/fmt b/auto/fmt/fmt index 980641ffa..a316d9b17 100644 --- a/auto/fmt/fmt +++ b/auto/fmt/fmt @@ -2,14 +2,21 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_type printf() format ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_type printf() format" >> $NGX_ERR +echo $ngx_n "checking for $ngx_type printf() format ...$ngx_c" -ngx_fmt=no -comma= +cat << END >> $NGX_AUTOCONF_ERR -for fmt in $ngx_formats +---------------------------------------- +checking for $ngx_type printf() format + +END + + +ngx_format=no +ngx_comma= + + +for ngx_fmt in $ngx_formats do cat << END > $NGX_AUTOTEST.c @@ -18,52 +25,63 @@ do #include #include #include -$NGX_INTTYPES_H -$NGX_AUTO_CONFIG +$NGX_INCLUDE_INTTYPES_H +$NGX_INCLUDE_AUTO_CONFIG_H int main() { - printf("$fmt", ($ngx_type) $ngx_max_value); + printf("$ngx_fmt", ($ngx_type) $ngx_max_value); return 0; } END - eval "$CC_WARN $CC_TEST_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c \ - >> $NGX_ERR 2>&1" + ngx_test="$CC $CC_TEST_FLAGS $CC_WARN $CC_AUX_FLAGS \ + -o $NGX_AUTOTEST $NGX_AUTOTEST.c" + eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" - max_value=`echo $ngx_max_value | sed -e "s/L*\$//"` + ngx_max_val=`echo $ngx_max_value | sed -e "s/L*\$//"` if [ -x $NGX_AUTOTEST ]; then - if [ "`$NGX_AUTOTEST`" = $max_value ]; then + + if [ "`$NGX_AUTOTEST`" = $ngx_max_val ]; then + if [ $ngx_fmt_collect = yes ]; then - echo $ngx_n "$comma \"${fmt}\" is appropriate" $ngx_c + echo $ngx_n "$ngx_comma \"${ngx_fmt}\" is appropriate$ngx_c" else - echo $ngx_n "$comma \"${fmt}\" used" $ngx_c + echo $ngx_n "$ngx_comma \"${ngx_fmt}\" used$ngx_c" fi - ngx_fmt=$fmt + + ngx_format=$ngx_fmt fi fi - rm $NGX_AUTOTEST* + rm -f $NGX_AUTOTEST - if [ $ngx_fmt != no ]; then + if [ $ngx_format != no ]; then if [ $ngx_fmt_collect = yes ]; then - eval "ngx_${ngx_size}_fmt=\"\${ngx_${ngx_size}_fmt} \$ngx_fmt\"" - comma="," + eval "ngx_${ngx_size}_fmt=\"\${ngx_${ngx_size}_fmt} \$ngx_format\"" + ngx_comma="," continue else break fi fi - echo $ngx_n "$comma \"${fmt}\" is not appropriate" $ngx_c - comma="," + echo $ngx_n "$ngx_comma \"${ngx_fmt}\" is not appropriate$ngx_c" + ngx_comma="," + + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR done echo -if [ $ngx_fmt = no ]; then +if [ $ngx_format = no ]; then echo "$0: error: printf() $ngx_type format not found" + exit 1 fi @@ -72,7 +90,7 @@ if [ $ngx_fmt_collect = no ]; then cat << END >> $NGX_AUTO_CONFIG_H #ifndef $ngx_fmt_name -#define $ngx_fmt_name "$ngx_fmt" +#define $ngx_fmt_name "$ngx_format" #endif END diff --git a/auto/fmt/ptrfmt b/auto/fmt/ptrfmt index 163ca59e2..32ba8a44f 100644 --- a/auto/fmt/ptrfmt +++ b/auto/fmt/ptrfmt @@ -2,71 +2,85 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_type printf() format ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_type printf() format" >> $NGX_ERR +echo $ngx_n "checking for $ngx_type printf() format ...$ngx_c" -ngx_fmt=no -comma= -fmtX= +cat << END >> $NGX_AUTOCONF_ERR -for fmt in $ngx_formats +---------------------------------------- +checking for $ngx_type printf() format + +END + + +ngx_format=no +ngx_comma= +ngx_fmt_x= + +for ngx_fmt in $ngx_formats do cat << END > $NGX_AUTOTEST.c int main() { - printf("$fmt", ($ngx_type) $ngx_max_value); + printf("$ngx_fmt", ($ngx_type) $ngx_max_value); return 0; } END - eval "$CC_WARN $CC_TEST_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c \ - >> $NGX_ERR 2>&1" + ngx_test="$CC $CC_TEST_FLAGS $CC_WARN $CC_AUX_FLAGS \ + -o $NGX_AUTOTEST $NGX_AUTOTEST.c" + eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" - max_value=`echo $ngx_max_value | sed -e "s/L*\$//"` + ngx_max_val=`echo $ngx_max_value | sed -e "s/L*\$//"` if [ -x $NGX_AUTOTEST ]; then - if [ "`$NGX_AUTOTEST`" = $max_value ]; then - ngx_fmt=$fmt + if [ "`$NGX_AUTOTEST`" = $ngx_max_val ]; then + ngx_format=$ngx_fmt fi fi - rm $NGX_AUTOTEST* + rm $NGX_AUTOTEST - if [ $ngx_fmt != no ]; then + if [ $ngx_format != no ]; then break fi - fmtX=`echo $fmt | sed -e "s/d/X/"` + ngx_fmt_x=`echo $ngx_fmt | sed -e "s/d/X/"` + + echo $ngx_n "$ngx_comma \"${ngx_fmt_x}\" is not appropriate$ngx_c" + ngx_comma="," - echo $ngx_n "$comma \"${fmtX}\" is not appropriate" $ngx_c - comma="," + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR done -if [ $ngx_fmt = no ]; then +if [ $ngx_format = no ]; then echo "$0: error: printf() $ngx_type format not found" + exit 1 fi if [ $ngx_ptr_size = 4 ]; then - fmtX="%0`expr 2 \* $ngx_ptr_size`" + ngx_fmt_x="%0`expr 2 \* $ngx_ptr_size`" else - fmtX="%" + ngx_fmt_x="%" fi -ngx_fmt=`echo $ngx_fmt | sed -e "s/d/X/" -e "s/^%/$fmtX/"` +ngx_format=`echo $ngx_format | sed -e "s/d/X/" -e "s/^%/$ngx_fmt_x/"` -echo "$comma \"${ngx_fmt}\" used" +echo "$ngx_comma \"${ngx_format}\" used" cat << END >> $NGX_AUTO_CONFIG_H #ifndef $ngx_fmt_name -#define $ngx_fmt_name "$ngx_fmt" +#define $ngx_fmt_name "$ngx_format" #endif END diff --git a/auto/headers b/auto/headers index 2bfa685c9..29eec60ab 100644 --- a/auto/headers +++ b/auto/headers @@ -2,5 +2,7 @@ # Copyright (C) Igor Sysoev -ngx_inc="unistd.h"; . auto/inc -ngx_inc="inttypes.h"; . auto/inc +ngx_include="unistd.h"; . auto/include +ngx_include="inttypes.h"; . auto/include +ngx_include="limits.h"; . auto/include +ngx_include="sys/filio.h"; . auto/include diff --git a/auto/inc b/auto/inc deleted file mode 100644 index 867102223..000000000 --- a/auto/inc +++ /dev/null @@ -1,35 +0,0 @@ - -# Copyright (C) Igor Sysoev - - -echo $ngx_n "checking for $ngx_inc ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_inc" >> $NGX_ERR - -ngx_found=no - -inc=`echo $ngx_inc | sed -e 's/\./_/' | sed -e 's/\//_/' | tr '[a-z]' '[A-Z]'` - -cat << END > $NGX_AUTOTEST.c - -#include <$ngx_inc> - -int main() { - return 0; -} - -END - -eval "${CC} -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1" - -if [ -x $NGX_AUTOTEST ]; then - echo " found" - have=HAVE_$inc . auto/have - eval "NGX_$inc='#include <$ngx_inc>'" - ngx_found=yes - -else - echo " not found" -fi - -rm $NGX_AUTOTEST* diff --git a/auto/include b/auto/include new file mode 100644 index 000000000..b36916947 --- /dev/null +++ b/auto/include @@ -0,0 +1,66 @@ + +# Copyright (C) Igor Sysoev + + +echo $ngx_n "checking for $ngx_include ...$ngx_c" + +cat << END >> $NGX_AUTOCONF_ERR + +---------------------------------------- +checking for $ngx_include + +END + + +ngx_found=no + +cat << END > $NGX_AUTOTEST.c + +#include <$ngx_include> + +int main() { + return 0; +} + +END + + +ngx_test="$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c" + +eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" + +if [ -x $NGX_AUTOTEST ]; then + + ngx_found=yes + + echo " found" + + ngx_name=`echo $ngx_include | sed -e 's/\./_/' -e 's/\//_/' \ + | tr '[a-z]' '[A-Z]'` + + + cat << END >> $NGX_AUTO_HEADERS_H + +#ifndef NGX_HAVE_$ngx_name +#define NGX_HAVE_$ngx_name 1 +#endif + +END + + + eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'" + + #STUB + eval "NGX_$ngx_name='#include <$ngx_include>'" + +else + echo " not found" + + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR +fi + +rm $NGX_AUTOTEST* diff --git a/auto/init b/auto/init index bc4d8bbec..080cc28c1 100644 --- a/auto/init +++ b/auto/init @@ -2,31 +2,33 @@ # Copyright (C) Igor Sysoev -MAKEFILE=$OBJS/Makefile +NGX_MAKEFILE=$NGX_OBJS/Makefile +NGX_MODULES_C=$NGX_OBJS/ngx_modules.c -NGX_AUTO_CONFIG_H=$OBJS/ngx_auto_config.h -NGX_MODULES_C=$OBJS/ngx_modules.c +NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h +NGX_AUTO_CONFIG_H=$NGX_OBJS/ngx_auto_config.h -NGX_AUTOTEST=$OBJS/autotest -NGX_ERR=$OBJS/autoconf.err +NGX_AUTOTEST=$NGX_OBJS/autotest +NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err -CC_WARN=$CC +# STUBs +OBJS=$NGX_OBJS +NGX_ERR=$OBJS/autoconf.err +MAKEFILE=$OBJS/Makefile -PCH=NO -USEPCH= -OBJEXT= -BINEXT= -DIRSEP='\/' -MAKE_SL=NO +NGX_PCH= +NGX_USE_PCH= -# checking echo's "-n" option and "\c" capabilties +# check the echo's "-n" option and "\c" capability if echo "test\c" | grep c >/dev/null; then + if echo -n test | grep n >/dev/null; then ngx_n= ngx_c= + else ngx_n=-n ngx_c= @@ -38,19 +40,18 @@ else fi +# create Makefile -if test ! -f Makefile; then - - cat << END > Makefile +cat << END > Makefile build: - \$(MAKE) -f $OBJS/Makefile + \$(MAKE) -f $NGX_MAKEFILE install: - \$(MAKE) -f $OBJS/Makefile install + \$(MAKE) -f $NGX_MAKEFILE install clean: - rm -rf Makefile $OBJS + rm -rf Makefile $NGX_OBJS upgrade: $SBIN_PATH -t @@ -58,7 +59,4 @@ upgrade: sleep 1 test -f $PID_PATH.newbin kill -WINCH \`cat $PID_PATH\` - END - -fi diff --git a/auto/install b/auto/install index 57e3019cb..0da9b6dd4 100644 --- a/auto/install +++ b/auto/install @@ -8,7 +8,7 @@ install: test -d `dirname $SBIN_PATH` || mkdir -p `dirname $SBIN_PATH` test ! -f $SBIN_PATH || mv $SBIN_PATH $SBIN_PATH.old - cp nginx $SBIN_PATH + cp $OBJS/nginx $SBIN_PATH test -d `dirname $CONF_PATH` || mkdir -p `dirname $CONF_PATH` diff --git a/auto/lib/md5/conf b/auto/lib/md5/conf index 748bea450..623986f0f 100644 --- a/auto/lib/md5/conf +++ b/auto/lib/md5/conf @@ -15,14 +15,14 @@ if [ $MD5 != NONE ]; then CORE_INCS="$CORE_INCS $MD5" - case "$CC" in + case "$NGX_CC_NAME" in - cl | wcl386 | bcc32) + msvc | owc | bcc) LINK_DEPS="$LINK_DEPS $MD5/md5.lib" CORE_LIBS="$CORE_LIBS $MD5/md5.lib" ;; - *icc) + icc) LINK_DEPS="$LINK_DEPS $MD5/libmd5.a" # to allow -ipo optimization we link with the *.o but not library @@ -45,20 +45,19 @@ else if [ $PLATFORM != win32 ]; then MD5=NO - ngx_lib_cflags= # Solaris 8/9 - ngx_lib_inc="#include -#include " - ngx_lib="rsaref md5 library" - ngx_lib_test="MD5_CTX md5; MD5Init(&md5)" - ngx_libs=-lmd5 - . auto/lib/test - + ngx_feature="rsaref md5 library" + ngx_feature_name="rsaref_md5" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lmd5" + ngx_feature_test="MD5_CTX md5; MD5Init(&md5)" + . auto/feature if [ $ngx_found = yes ]; then - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" MD5=YES MD5_LIB=md5 ngx_found=no @@ -66,15 +65,18 @@ else else # FreeBSD - ngx_lib="rsaref md library" - ngx_lib_test="MD5_CTX md5; MD5Init(&md5)" - ngx_libs=-lmd - . auto/lib/test + ngx_feature="rsaref md library" + ngx_feature_name="rsaref_md5" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lmd" + ngx_feature_test="MD5_CTX md5; MD5Init(&md5)" + . auto/feature fi if [ $ngx_found = yes ]; then - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" MD5=YES MD5_LIB=md ngx_found=no @@ -84,19 +86,20 @@ else # OpenSSL crypto library - ngx_lib_inc="#include " - ngx_lib="OpenSSL md5 crypto library" - ngx_lib_test="MD5_CTX md5; MD5_Init(&md5)" - ngx_libs=-lcrypto - . auto/lib/test + ngx_feature="OpenSSL md5 crypto library" + ngx_feature_name="OpenSSL_md5" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lcrypto" + ngx_feature_test="MD5_CTX md5; MD5_Init(&md5)" + . auto/feature fi fi if [ $ngx_found = yes ]; then - have=HAVE_OPENSSL_MD5 . auto/have have=HAVE_OPENSSL_MD5_H . auto/have - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" MD5=YES MD5_LIB=crypto fi diff --git a/auto/lib/md5/make b/auto/lib/md5/make index f718e6c2c..6e2834e6d 100644 --- a/auto/lib/md5/make +++ b/auto/lib/md5/make @@ -25,7 +25,7 @@ esac case $PLATFORM in win32) - line=`echo $MD5/md5.lib: | sed -e "s/\//$DIRSEP/g"` + line=`echo $MD5/md5.lib: | sed -e "s/\//$ngx_regex_dirsep/g"` echo "$line" >> $MAKEFILE ;; @@ -42,7 +42,7 @@ done=NO case $PLATFORM in win32) - md5=`echo $MD5 | sed -e "s/\//$DIRSEP/g"` + md5=`echo $MD5 | sed -e "s/\//$ngx_regex_dirsep/g"` cp auto/lib/md5/$makefile $MD5 echo " cd $md5" >> $MAKEFILE diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf index 37c084f00..8ef4f3af9 100644 --- a/auto/lib/openssl/conf +++ b/auto/lib/openssl/conf @@ -19,23 +19,22 @@ if [ $OPENSSL != NONE ]; then else if [ $PLATFORM != win32 ]; then - OPENSSL=NO - ngx_lib_cflags= - - ngx_lib_inc="#include " - ngx_lib="OpenSSL library" - ngx_lib_test="SSL_library_init()" - ngx_libs="-lssl -lcrypto" - . auto/lib/test + OPENSSL=NO + ngx_feature="OpenSSL library" + ngx_feature_name="OpenSSL" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lssl -lcrypto" + ngx_feature_test="SSL_library_init()" + . auto/feature if [ $ngx_found = yes ]; then have=NGX_OPENSSL . auto/have CORE_DEPS="$CORE_DEPS $OPENSSL_DEPS" CORE_SRCS="$CORE_SRCS $OPENSSL_SRCS" - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" OPENSSL=YES - ngx_found=no fi fi diff --git a/auto/lib/pcre/conf b/auto/lib/pcre/conf index 16feffa6b..cd516e1e7 100644 --- a/auto/lib/pcre/conf +++ b/auto/lib/pcre/conf @@ -7,18 +7,18 @@ if [ $PCRE != NONE ]; then CORE_DEPS="$CORE_DEPS $REGEX_DEPS" CORE_SRCS="$CORE_SRCS $REGEX_SRCS" - case "$CC" in + case "$NGX_CC_NAME" in - cl | wcl386 | bcc32) - have=HAVE_PCRE . auto/have + msvc | owc | bcc) + have=NGX_PCRE . auto/have have=PCRE_STATIC . auto/have CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib" CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib" ;; - *icc) - have=HAVE_PCRE . auto/have + icc) + have=NGX_PCRE . auto/have CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a" @@ -31,7 +31,7 @@ if [ $PCRE != NONE ]; then ;; *) - have=HAVE_PCRE . auto/have + have=NGX_PCRE . auto/have CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a" CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a" @@ -43,44 +43,25 @@ if [ $PCRE != NONE ]; then else if [ $PLATFORM != win32 ]; then - PCRE=NO - ngx_lib_cflags= - - # Linux - - ngx_lib_inc="#include " - ngx_lib="PCRE library" - ngx_lib_test="pcre *re; re = pcre_compile(NULL, 0, NULL, 0, NULL)" - ngx_libs="-lpcre" - . auto/lib/test - + PCRE=NO + + # FreeBSD PCRE port requires --with-cc-opt="-I /usr/local/include" + # --with-ld-opt="-L /usr/local/lib" + + ngx_feature="PCRE library" + ngx_feature_name="PCRE" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lpcre" + ngx_feature_test="pcre *re; re = pcre_compile(NULL, 0, NULL, 0, NULL)" + . auto/feature if [ $ngx_found = yes ]; then - have=HAVE_PCRE . auto/have CORE_DEPS="$CORE_DEPS $REGEX_DEPS" CORE_SRCS="$CORE_SRCS $REGEX_SRCS" - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" PCRE=YES ngx_found=no - - else - # FreeBSD PCRE port. - - ngx_lib="PCRE library in /usr/local/" - ngx_lib_cflags="-I /usr/local/include" - ngx_libs="-L /usr/local/lib -lpcre" - . auto/lib/test - fi - - - if [ $ngx_found = yes ]; then - have=HAVE_PCRE . auto/have - CORE_DEPS="$CORE_DEPS $REGEX_DEPS" - CORE_INCS="$CORE_INCS /usr/local/include" - CORE_SRCS="$CORE_SRCS $REGEX_SRCS" - CORE_LIBS="$CORE_LIBS $ngx_libs" - PCRE=YES fi fi - fi diff --git a/auto/lib/pcre/make b/auto/lib/pcre/make index fa7bf27d0..714994df5 100644 --- a/auto/lib/pcre/make +++ b/auto/lib/pcre/make @@ -29,8 +29,8 @@ case $PLATFORM in cp auto/lib/pcre/patch.config.in $PCRE cp auto/lib/pcre/$makefile $PCRE - pcre=`echo $PCRE | sed -e "s/\//$DIRSEP/g"` - line=`echo $PCRE/pcre.h: | sed -e "s/\//$DIRSEP/g"` + pcre=`echo $PCRE | sed -e "s/\//$ngx_regex_dirsep/g"` + line=`echo $PCRE/pcre.h: | sed -e "s/\//$ngx_regex_dirsep/g"` echo "$line" >> $MAKEFILE echo " cd $pcre" >> $MAKEFILE @@ -39,7 +39,7 @@ case $PLATFORM in echo >> $MAKEFILE line="$PCRE/pcre.lib: $PCRE/pcre.h" - line=`echo $line | sed -e "s/\//$DIRSEP/g"` + line=`echo $line | sed -e "s/\//$ngx_regex_dirsep/g"` echo "$line" >> $MAKEFILE echo " cd $pcre" >> $MAKEFILE diff --git a/auto/lib/test b/auto/lib/test index 7dfaafef1..6821b51da 100644 --- a/auto/lib/test +++ b/auto/lib/test @@ -2,14 +2,26 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_lib ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_lib library" >> $NGX_ERR +echo $ngx_n "checking for $ngx_lib ...$ngx_c" + +cat << END >> $NGX_AUTOCONF_ERR + +---------------------------------------- +checking for $ngx_lib + +END ngx_found=no -echo "$ngx_lib_inc" > $NGX_AUTOTEST.c -echo "int main() { $ngx_lib_test; return 0; }" >> $NGX_AUTOTEST.c +cat << END > $NGX_AUTOTEST.c + +$ngx_lib_incs + +int main() { + $ngx_lib_test; + return 0; +} + eval "$CC $cc_test_flags $ngx_lib_cflags \ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $ngx_libs \ diff --git a/auto/lib/zlib/conf b/auto/lib/zlib/conf index a01eebe71..f833d6165 100644 --- a/auto/lib/zlib/conf +++ b/auto/lib/zlib/conf @@ -5,14 +5,14 @@ if [ $ZLIB != NONE ]; then CORE_INCS="$CORE_INCS $ZLIB" - case "$CC" in + case "$NGX_CC_NAME" in - cl | wcl386 | bcc32) + msvc | owc | bcc) LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib" CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib" ;; - *icc) + icc) LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" # to allow -ipo optimization we link with the *.o but not library @@ -38,22 +38,23 @@ if [ $ZLIB != NONE ]; then else if [ $PLATFORM != win32 ]; then + ZLIB=NO # FreeBSD, Solaris, Linux - ngx_lib_cflags= - ngx_lib_inc="#include " - ngx_lib="zlib library" - ngx_lib_test="z_stream z; deflate(&z, Z_NO_FLUSH)" - ngx_libs=-lz - . auto/lib/test + ngx_feature="zlib library" + ngx_feature_name="zlib" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs="-lz" + ngx_feature_test="z_stream z; deflate(&z, Z_NO_FLUSH)" + . auto/feature if [ $ngx_found = yes ]; then - CORE_LIBS="$CORE_LIBS $ngx_libs" + CORE_LIBS="$CORE_LIBS $ngx_feature_libs" ZLIB=YES - else - ZLIB=NO + ngx_found=no fi fi diff --git a/auto/lib/zlib/make b/auto/lib/zlib/make index 0ced9a25c..582276248 100644 --- a/auto/lib/zlib/make +++ b/auto/lib/zlib/make @@ -26,7 +26,7 @@ esac case $PLATFORM in win32) - line=`echo $ZLIB/zlib.lib: | sed -e "s/\//$DIRSEP/g"` + line=`echo $ZLIB/zlib.lib: | sed -e "s/\//$ngx_regex_dirsep/g"` echo "$line" >> $MAKEFILE ;; @@ -43,7 +43,7 @@ done=NO case $PLATFORM in win32) - zlib=`echo $ZLIB | sed -e "s/\//$DIRSEP/g"` + zlib=`echo $ZLIB | sed -e "s/\//$ngx_regex_dirsep/g"` cp auto/lib/zlib/$makefile $ZLIB echo " cd $zlib" >> $MAKEFILE diff --git a/auto/make b/auto/make index fee8a6f24..8744d1f5f 100644 --- a/auto/make +++ b/auto/make @@ -8,353 +8,271 @@ mkdir -p $OBJS/src/core $OBJS/src/event $OBJS/src/event/modules \ $OBJS/src/imap -echo "CC = $CC" > $MAKEFILE -echo "CPP = $CPP" >> $MAKEFILE -echo "LINK = $LINK" >> $MAKEFILE -if [ "$CC" = wcl386 ]; then - echo MAKE = wmake >> $MAKEFILE -fi -echo "CFLAGS = $CFLAGS" >> $MAKEFILE -echo >> $MAKEFILE +ngx_objs_dir=$NGX_OBJS$ngx_regex_dirsep +ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` -if [ $MAKE_SL = YES ]; then - echo >> $MAKEFILE -fi +cat << END >> $NGX_MAKEFILE -all_inc="$CORE_INCS $OBJS $HTTP_INCS $IMAP_INCS" -all_inc=`echo " $all_inc" | sed -e "s/ \([^ ]\)/ $INCOPT\1/g"` -all_inc=`echo $all_inc | sed -e "s/\//$DIRSEP/g"` +CC = $CC +CFLAGS = $CFLAGS +CPP = $CPP +LINK = $LINK -echo "ALL_INCS = $all_inc" >> $MAKEFILE -echo >> $MAKEFILE - -all_srcs="$CORE_SRCS" +END +if [ "$CC" = wcl386 ]; then + echo MAKE = wmake >> $NGX_MAKEFILE -# CORE_DEPS + ngx_regex_cont=' ' + ngx_cont=' ' + ngx_tab=' ' -if [ $MAKE_SL = YES ]; then - echo $ngx_n "CORE_DEPS =" $ngx_c >> $MAKEFILE -else - echo "CORE_DEPS = \\" >> $MAKEFILE fi -for dep in $CORE_DEPS -do - dep=`echo $dep | sed -e "s/\//$DIRSEP/g"` - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $dep" $ngx_c >> $MAKEFILE - else - echo " $dep \\" >> $MAKEFILE - fi -done -echo >> $MAKEFILE +# ALL_INCS, required by OpenWatcom C precompiled headers +ngx_incs=`echo $CORE_INCS $OBJS $HTTP_INCS $IMAP_INCS\ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` -# CORE_INCS +cat << END >> $NGX_MAKEFILE -if [ $MAKE_SL = YES ]; then - echo >> $MAKEFILE -fi +ALL_INCS = $ngx_include_opt$ngx_incs -inc="$CORE_INCS $OBJS" -inc=`echo " $inc" | sed -e "s/ \([^ ]\)/ $INCOPT\1/g" -e "s/\//$DIRSEP/g"` +END -echo "CORE_INCS = $inc" >> $MAKEFILE -echo >> $MAKEFILE +ngx_all_srcs="$CORE_SRCS" -if [ $HTTP = YES ]; then - all_srcs="$all_srcs $HTTP_SRCS" +# the core dependences and include pathes - # HTTP_DEPS +ngx_deps=`echo $CORE_DEPS $NGX_PCH \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` - if [ $MAKE_SL = YES ]; then - echo $ngx_n "HTTP_DEPS =" $ngx_c >> $MAKEFILE - else - echo "HTTP_DEPS = \\" >> $MAKEFILE - fi +ngx_incs=`echo $CORE_INCS $OBJS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` - for dep in $HTTP_DEPS - do - dep=`echo $dep | sed -e "s/\//$DIRSEP/g"` +cat << END >> $NGX_MAKEFILE - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $dep" $ngx_c >> $MAKEFILE - else - echo " $dep \\" >> $MAKEFILE - fi - done - echo >> $MAKEFILE +CORE_DEPS = $ngx_deps - # HTTP_INCS +CORE_INCS = $ngx_include_opt$ngx_incs - if [ $MAKE_SL = YES ]; then - echo >> $MAKEFILE - fi +END - inc="$HTTP_INCS $OBJS" - inc=`echo " $inc" | sed -e "s/ \([^ ]\)/ $INCOPT\1/g" -e "s/\//$DIRSEP/g"` - echo "HTTP_INCS = $inc" >> $MAKEFILE - echo >> $MAKEFILE +# the http dependences and include pathes -fi +if [ $HTTP = YES ]; then + ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS" -if [ $IMAP = YES ]; then + ngx_deps=`echo $HTTP_DEPS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` - all_srcs="$all_srcs $IMAP_SRCS" + ngx_incs=`echo $HTTP_INCS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` - # IMAP_DEPS + cat << END >> $NGX_MAKEFILE - if [ $MAKE_SL = YES ]; then - echo $ngx_n "IMAP_DEPS =" $ngx_c >> $MAKEFILE - else - echo "IMAP_DEPS = \\" >> $MAKEFILE - fi +HTTP_DEPS = $ngx_deps - for dep in $IMAP_DEPS - do - dep=`echo $dep | sed -e "s/\//$DIRSEP/g"` - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $dep" $ngx_c >> $MAKEFILE - else - echo " $dep \\" >> $MAKEFILE - fi - done - echo >> $MAKEFILE +HTTP_INCS = $ngx_include_opt$ngx_incs +END - # IMAP_INCS +fi - if [ $MAKE_SL = YES ]; then - echo >> $MAKEFILE - fi - inc="$IMAP_INCS $OBJS" - inc=`echo " $inc" | sed -e "s/ \([^ ]\)/ $INCOPT\1/g" -e "s/\//$DIRSEP/g"` +# the imap dependences and include pathes - echo "IMAP_INCS = $inc" >> $MAKEFILE - echo >> $MAKEFILE +if [ $IMAP = YES ]; then -fi + ngx_all_srcs="$ngx_all_srcs $IMAP_SRCS" + ngx_deps=`echo $IMAP_DEPS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` -# nginx + ngx_incs=`echo $IMAP_INCS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` -if [ $MAKE_SL = YES ]; then - echo $ngx_n "nginx$BINEXT: " $ngx_c >> $MAKEFILE -else - echo "nginx$BINEXT: \\" >> $MAKEFILE -fi + cat << END >> $NGX_MAKEFILE +IMAP_DEPS = $ngx_deps -# nginx deps -for src in $all_srcs -do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"` - obj=`echo $OBJS/$obj | sed -e "s/\//$DIRSEP/g"` +IMAP_INCS = $ngx_include_opt$ngx_incs - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $obj" $ngx_c >> $MAKEFILE - else - echo " $obj \\" >> $MAKEFILE - fi -done +END -for src in $NGX_MODULES_C $LINK_DEPS -do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"` - obj=`echo $obj | sed -e "s/\//$DIRSEP/g"` +fi - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $obj" $ngx_c >> $MAKEFILE - else - echo " $obj \\" >> $MAKEFILE - fi -done -echo >> $MAKEFILE +# nginx -# nginx build +ngx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"` +ngx_modules_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"` -if [ $MAKE_SL = YES ]; then - echo $ngx_n " \$(LINK) ${BINOUT}nginx" $ngx_c >> $MAKEFILE -else - echo " \$(LINK) ${BINOUT}nginx \\" >> $MAKEFILE -fi +ngx_all_objs=`echo $ngx_all_srcs \ + | sed -e "s/\([^ ]*\.\)cpp/$NGX_OBJS\/\1$ngx_objext/g" \ + -e "s/\([^ ]*\.\)cc/$NGX_OBJS\/\1$ngx_objext/g" \ + -e "s/\([^ ]*\.\)c/$NGX_OBJS\/\1$ngx_objext/g" \ + -e "s/\([^ ]*\.\)S/$NGX_OBJS\/\1$ngx_objext/g"` +ngx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` -# nginx build sources +ngx_deps=`echo $ngx_all_objs $ngx_modules_obj $LINK_DEPS \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` -for src in $all_srcs -do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"` - obj=`echo $OBJS/$obj | sed -e "s/\//$DIRSEP/g"` +ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \ + | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ + -e "s/\//$ngx_regex_dirsep/g"` - if [ $MAKE_SL = YES ]; then - echo $ngx_n " $obj" $ngx_c >> $MAKEFILE - else - echo " $obj \\" >> $MAKEFILE - fi -done +ngx_libs=${CORE_LIBS:+`echo $NGX_LD_OPT $CORE_LIBS \ + | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`} +ngx_link=${CORE_LINK:+`echo $CORE_LINK \ + | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`} -# nginx build ngx_modules.c and libs +cat << END >> $NGX_MAKEFILE -obj=`echo $NGX_MODULES_C | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\//$DIRSEP/g"` -src=`echo $NGX_MODULES_C | sed -e "s/\//$DIRSEP/g"` -libs=`echo $CORE_LIBS | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\//$DIRSEP/g"` -link=`echo $CORE_LINK | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\//$DIRSEP/g"` +$NGX_OBJS${ngx_dirsep}nginx${ngx_binext}: $ngx_deps$ngx_spacer + \$(LINK) ${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_cont$ngx_objs$ngx_libs$ngx_link -if [ $MAKE_SL = YES ]; then - echo " $obj $libs $CORE_LINK" >> $MAKEFILE - echo >> $MAKEFILE -else - echo " $obj \\" >> $MAKEFILE - echo " $libs \\" >> $MAKEFILE - echo " $link" >> $MAKEFILE - echo >> $MAKEFILE -fi +END # ngx_modules.c -deps="\$(CORE_DEPS)" - -if [ $PCH != NO ]; then - args="\$(CFLAGS) $USEPCH \$(ALL_INCS)" +if test -n "$NGX_PCH"; then + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" else - args="\$(CFLAGS) $USEPCH \$(CORE_INCS)" + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)" fi -if [ $MAKE_SL = YES ]; then - echo "$obj: $NGX_MODULES_C $deps" >> $MAKEFILE - echo $ngx_n " \$(CC) $COMPOPT $args" $ngx_c >> $MAKEFILE - echo " $OBJOUT$obj $src" >> $MAKEFILE - echo >> $MAKEFILE -else - echo "$obj: \\" >> $MAKEFILE - echo " $NGX_MODULES_C $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args \\" >> $MAKEFILE - echo " $OBJOUT$obj \\" >> $MAKEFILE - echo " $src" >> $MAKEFILE - echo >> $MAKEFILE -fi +cat << END >> $NGX_MAKEFILE + +$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c + $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c +END -# core sources -for src in $CORE_SRCS +# the core sources + +for ngx_src in $CORE_SRCS do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"` - obj=`echo $OBJS/$obj | sed -e "s/\//$DIRSEP/g"` - src=`echo $src | sed -e "s/\//$DIRSEP/g"` - - if [ $MAKE_SL = YES ]; then - echo "$obj: $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args $OBJOUT$obj $src" >> $MAKEFILE - echo >> $MAKEFILE - else - echo "$obj: \\" >> $MAKEFILE - echo " $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args \\" >> $MAKEFILE - echo " $OBJOUT$obj \\" >> $MAKEFILE - echo " $src" >> $MAKEFILE - echo >> $MAKEFILE - fi + + ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` + ngx_obj=`echo $ngx_src \ + | sed -e "s/^\(.*\.\)cpp$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)cc$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)c$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)S$/$ngx_objs_dir\1$ngx_objext/g"` + + cat << END >> $NGX_MAKEFILE + +$ngx_obj: \$(CORE_DEPS)$ngx_cont$ngx_src + $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src + +END + done -# http sources +# the http sources if [ $HTTP = YES ]; then - deps="\$(CORE_DEPS) \$(HTTP_DEPS)" - - if [ $PCH != NO ]; then - args="\$(CFLAGS) $USEPCH \$(ALL_INCS)" + if test -n "$NGX_PCH"; then + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" else - args="\$(CFLAGS) $USEPCH \$(CORE_INCS) \$(HTTP_INCS)" + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)" fi - for src in $HTTP_SRCS + for ngx_src in $HTTP_SRCS do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"` - obj=`echo $OBJS/$obj | sed -e "s/\//$DIRSEP/g"` - src=`echo $src | sed -e "s/\//$DIRSEP/g"` - - if [ $MAKE_SL = YES ]; then - echo "$obj: $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args $OBJOUT$obj $src" >> $MAKEFILE - echo >> $MAKEFILE - else - echo "$obj: \\" >> $MAKEFILE - echo " $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args \\" >> $MAKEFILE - echo " $OBJOUT$obj \\" >> $MAKEFILE - echo " $src" >> $MAKEFILE - echo >> $MAKEFILE - fi - done + + ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` + ngx_obj=`echo $ngx_src \ + | sed -e "s/^\(.*\.\)cpp$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)cc$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)c$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)S$/$ngx_objs_dir\1$ngx_objext/g"` + + cat << END >> $NGX_MAKEFILE + +$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src + $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src + +END + + done fi -# imap sources +# the imap sources if [ $IMAP = YES ]; then - deps="\$(CORE_DEPS) \$(IMAP_DEPS)" - - if [ $PCH != NO ]; then - args="\$(CFLAGS) $USEPCH \$(ALL_INCS)" + if test -n "$NGX_PCH"; then + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" else - args="\$(CFLAGS) $USEPCH \$(CORE_INCS) \$(IMAP_INCS)" + ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(IMAP_INCS)" fi - for src in $IMAP_SRCS + for ngx_src in $IMAP_SRCS do - obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"` - obj=`echo $OBJS/$obj | sed -e "s/\//$DIRSEP/g"` - src=`echo $src | sed -e "s/\//$DIRSEP/g"` - - if [ $MAKE_SL = YES ]; then - echo "$obj: $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args $OBJOUT$obj $src" >> $MAKEFILE - echo >> $MAKEFILE - else - echo "$obj: \\" >> $MAKEFILE - echo " $src $deps" >> $MAKEFILE - echo " \$(CC) $COMPOPT $args \\" >> $MAKEFILE - echo " $OBJOUT$obj \\" >> $MAKEFILE - echo " $src" >> $MAKEFILE - echo >> $MAKEFILE - fi - done + + ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` + ngx_obj=`echo $ngx_src \ + | sed -e "s/^\(.*\.\)cpp$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)cc$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)c$/$ngx_objs_dir\1$ngx_objext/g" \ + -e "s/^\(.*\.\)S$/$ngx_objs_dir\1$ngx_objext/g"` + + cat << END >> $NGX_MAKEFILE + +$ngx_obj: \$(CORE_DEPS) \$(IMAP_DEPS)$ngx_cont$ngx_src + $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src + +END + + done fi -# precompiled headers +# the precompiled headers + +if test -n "$NGX_PCH"; then + echo "#include " > $OBJS/ngx_pch.c + + ngx_pch="src/core/ngx_config.h $OS_CONFIG $OBJS/ngx_auto_config.h" + ngx_pch=`echo "$NGX_PCH: $ngx_pch" | sed -e "s/\//$ngx_regex_dirsep/g"` + + ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)" + ngx_src="$ngx_src $ngx_objout$OBJS/ngx_pch.obj $OBJS/ngx_pch.c" + ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` + + cat << END >> $NGX_MAKEFILE -if [ $PCH != NO ]; then - echo "#include " > $OBJS/pch.c +$ngx_pch + $ngx_src - pch="$PCH: src/core/ngx_config.h $OS_CONFIG $OBJS/ngx_auto_config.h" - pch=`echo $pch | sed -e "s/\//$DIRSEP/g"` - src="\$(CC) \$(CFLAGS) $BUILDPCH $COMPOPT \$(ALL_INCS)" - src="$src $OBJOUT$OBJS/pch.obj $OBJS/pch.c" - src=`echo $src | sed -e "s/\//$DIRSEP/g"` +END - echo "$pch" >> $MAKEFILE - echo " $src" >> $MAKEFILE - echo >> $MAKEFILE fi diff --git a/auto/options b/auto/options index 259c049ad..75e93766e 100644 --- a/auto/options +++ b/auto/options @@ -1,21 +1,25 @@ # Copyright (C) Igor Sysoev + help=no PREFIX= SBIN_PATH= CONF_PATH= -HTTP_LOG_PATH= ERROR_LOG_PATH= PID_PATH= +NGX_USER= +NGX_GROUP= +HTTP_LOG_PATH= -CC=gcc +CC=${CC:-gcc} CPP= -OBJS=objs +NGX_OBJS=objs DEBUG=NO -CC_OPT= +NGX_CC_OPT= +NGX_LD_OPT= CPU=NO TEST_BUILD_DEVPOLL=NO @@ -77,10 +81,12 @@ do --conf-path=*) CONF_PATH="$value" ;; --error-log-path=*) ERROR_LOG_PATH="$value" ;; --pid-path=*) PID_PATH="$value" ;; + --user=*) NGX_USER="$value" ;; + --group=*) NGX_GROUP="$value" ;; --crossbuild=*) PLATFORM="$value" ;; - --builddir=*) OBJS="$value" ;; + --builddir=*) NGX_OBJS="$value" ;; --with-rtsig_module) EVENT_RTSIG=YES ;; --with-select_module) EVENT_SELECT=YES ;; @@ -109,7 +115,8 @@ do --with-cc=*) CC="$value" ;; --with-cpp=*) CPP="$value" ;; - --with-cc-opt=*) CC_OPT="$value" ;; + --with-cc-opt=*) NGX_CC_OPT="$value" ;; + --with-ld-opt=*) NGX_LD_OPT="$value" ;; --with-cpu-opt=*) CPU="$value" ;; --with-debug) DEBUG=YES ;; @@ -140,24 +147,35 @@ done if [ $help = yes ]; then - echo - echo " --help this message" - echo - echo " --without-select_module disable select_module" - echo " --without-poll_module disable poll_module" +cat << END + + --help this message + + --user=USER set non-privilege user + for the worker processes + --group=GROUP set non-privilege group + for the worker processes + + --with-select_module enable select module + --without-select_module disable select module + --with-poll_module enable poll module + --without-poll_module disable poll module + + --without-http_charset_module disable ngx_http_charset_module + --without-http_rewrite_module disable ngx_http_rewrite_module + --without-http_gzip_module disable ngx_http_gzip_module + --without-http_proxy_module disable ngx_http_proxy_module - echo " --without-http_rewrite_module disable http_rewrite_module" - echo " --without-http_gzip_module disable http_gzip_module" - echo " --without-http_proxy_module disable http_proxy_module" + --with-cc-opt=OPTIONS additional options for compiler + --with-ld-opt=OPTIONS additional options for linker - echo " --with-cc=NAME name of or path to C compiler" - echo + --with-pcre=DIR path to PCRE library + --with-md5=DIR path to md5 library + --with-zlib=DIR path to zlib library + --with-openssl=DIR path to OpenSSL library - echo " --with-pcre=DIR path to PCRE library" - echo " --with-md5=DIR path to md5 library" - echo " --with-zlib=DIR path to zlib library" - echo +END exit 1 fi @@ -181,11 +199,22 @@ if [ ".$PLATFORM" = ".win32" -a $EVENT_POLL = YES ]; then fi -if [ ".$PREFIX" = "." ]; then +if test -z "$PREFIX"; then PREFIX=/usr/local/nginx fi +if test -z "$NGX_GROUP"; then + NGX_GROUP=NGX_USER +fi + + +if test -z "$NGX_USER"; then + NGX_USER=nobody + NGX_GROUP=nobody +fi + + case ".$SBIN_PATH" in ./*) ;; diff --git a/auto/os/conf b/auto/os/conf index abffbe3d8..5154f2bba 100644 --- a/auto/os/conf +++ b/auto/os/conf @@ -31,21 +31,7 @@ case $PLATFORM in ;; win32) - CORE_INCS="$WIN32_INCS" - CORE_DEPS="$WIN32_DEPS" - CORE_SRCS="$WIN32_SRCS $IOCP_SRCS" - OS_CONFIG="$WIN32_CONFIG" - EVENT_MODULES="$EVENT_MODULES $IOCP_MODULE" - EVENT_FOUND=YES - - if [ $EVENT_SELECT = NO ]; then - CORE_SRCS="$CORE_SRCS $SELECT_SRCS" - EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE" - fi - - have=HAVE_AIO . auto/have - have=HAVE_IOCP . auto/have - CORE_LIBS="$CORE_LIBS ws2_32.lib" + . auto/os/win32 ;; *) @@ -55,3 +41,56 @@ case $PLATFORM in ;; esac + + +if [ $PLATFORM != win32 ]; then + + ngx_feature="/dev/poll" + ngx_feature_name="devpoll" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs= + ngx_feature_test="int n, dp; struct dvpoll dvp; + dp = 0; + dvp.dp_fds = NULL; + dvp.dp_nfds = 0; + dvp.dp_timeout = 0; + n = ioctl(dp, DP_POLL, &dvp)" + . auto/feature + + if [ $ngx_found = yes ]; then + have=HAVE_DEVPOLL . auto/have + CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS" + EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE" + EVENT_FOUND=YES + fi + + + if test -z "$NGX_KQUEUE_CHECKED"; then + ngx_feature="kqueue" + ngx_feature_name="kqueue" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs= + ngx_feature_test="int kq; kq = kqueue()" + . auto/feature + + if [ $ngx_found = yes ]; then + + have=HAVE_KQUEUE . auto/have + have=HAVE_CLEAR_EVENT . auto/have + EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" + CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" + EVENT_FOUND=YES + + ngx_feature="kqueue's NOTE_LOWAT" + ngx_feature_name="HAVE_LOWAT_EVENT" + ngx_feature_run=no + ngx_feature_incs="#include " + ngx_feature_libs= + ngx_feature_test="struct kevent kev; + kev.fflags = NOTE_LOWAT;" + . auto/feature + fi + fi +fi diff --git a/auto/os/freebsd b/auto/os/freebsd index 90cb49702..f08ef97b0 100644 --- a/auto/os/freebsd +++ b/auto/os/freebsd @@ -2,19 +2,33 @@ # Copyright (C) Igor Sysoev +cat << END >> $NGX_AUTO_HEADERS_H + +#ifndef NGX_FREEBSD +#define NGX_FREEBSD 1 +#endif + +END + + CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS" CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS" -PIPE="-pipe" +ngx_spacer=' +' -# __FreeBSD_version is the best way to determine whether -# some capability exists and is safe to use +# __FreeBSD_version and sysctl kern.osreldate are the best ways +# to determine whether some capability exists and is safe to use. +# __FreeBSD_version is used for the testing of the build enviroment. +# sysctl kern.osreldate is used for the testing of the kernel capabilities. version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \ | sed -e 's/^.* \(.*\)$/\1/'` +osreldate=`/sbin/sysctl -n kern.osreldate` + # setproctitle() in libutil @@ -28,7 +42,7 @@ fi # sendfile -if [ $version -gt 300007 ]; then +if [ $osreldate -gt 300007 ]; then echo " + using sendfile()" have=HAVE_SENDFILE . auto/have @@ -38,8 +52,8 @@ fi # kqueue -if [ \( $version -lt 500000 -a $version -ge 410000 \) \ - -o $version -ge 500011 ] +if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \ + -o $osreldate -ge 500011 ] then echo " + using kqueue" @@ -50,6 +64,8 @@ then EVENT_FOUND=YES fi +NGX_KQUEUE_CHECKED=YES + # kqueue's NOTE_LAWAT diff --git a/auto/os/linux b/auto/os/linux index 8576ea680..e68a0d27d 100644 --- a/auto/os/linux +++ b/auto/os/linux @@ -2,15 +2,23 @@ # Copyright (C) Igor Sysoev +cat << END >> $NGX_AUTO_HEADERS_H + +#ifndef NGX_LINUX +#define NGX_LINUX 1 +#endif + +END + CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $LINUX_DEPS" CORE_SRCS="$UNIX_SRCS $LINUX_SRCS" EVENT_MODULES="$EVENT_MODULES" -PIPE="-pipe" - +ngx_spacer=' +' -CC_TEST_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" +CC_AUX_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" # Linux kernel version @@ -31,14 +39,18 @@ fi # epoll, EPOLLET version -ngx_func="epoll"; -ngx_func_inc="#include " -ngx_func_test="int efd = 0, fd = 1, n; - struct epoll_event ee; - ee.events = EPOLLIN|EPOLLOUT|EPOLLET; - ee.data.ptr = NULL; - n = epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" -. auto/func +ngx_feature="epoll" +ngx_feature_name="epoll" +ngx_feature_run=yes +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="int efd = 0, fd = 1, n; + struct epoll_event ee; + ee.events = EPOLLIN|EPOLLOUT|EPOLLET; + ee.data.ptr = NULL; + efd = epoll_create(100); + if (efd == -1) return 1;" +. auto/feature if [ $ngx_found = yes ]; then have=HAVE_EPOLL . auto/have @@ -51,13 +63,16 @@ fi # sendfile() -CC_TEST_FLAGS="-D_GNU_SOURCE" -ngx_func="sendfile()"; -ngx_func_inc="#include " -ngx_func_test="int s = 0, fd = 1; - ssize_t n; off_t off = 0; - n = sendfile(s, fd, &off, 1)" -. auto/func +CC_AUX_FLAGS="-D_GNU_SOURCE" +ngx_feature="sendfile()" +ngx_feature_name="sendfile" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="int s = 0, fd = 1; + ssize_t n; off_t off = 0; + n = sendfile(s, fd, &off, 1)" +. auto/feature if [ $ngx_found = yes ]; then CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS" @@ -66,17 +81,26 @@ fi # sendfile64() -CC_TEST_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" -ngx_func="sendfile64()"; . auto/func +CC_AUX_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" +ngx_feature="sendfile64()" +ngx_feature_name="HAVE_SENDFILE64" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="int s = 0, fd = 1; + ssize_t n; off_t off = 0; + n = sendfile(s, fd, &off, 1)" +. auto/feature -# prctl(PR_SET_DUMPABLE) +ngx_include="sys/prctl.h"; . auto/include -ngx_func="prctl()"; -ngx_func_inc="#include " -ngx_func_test="prctl(PR_SET_DUMPABLE, 1, 0, 0, 0)" -. auto/func +# prctl(PR_SET_DUMPABLE) -if [ $ngx_found = yes ]; then - have=HAVE_PR_SET_DUMPABLE . auto/have -fi +ngx_feature="prctl(PR_SET_DUMPABLE)" +ngx_feature_name="HAVE_PR_SET_DUMPABLE" +ngx_feature_run=yes +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" +. auto/feature diff --git a/auto/os/solaris b/auto/os/solaris index 29497ff5f..62708cd10 100644 --- a/auto/os/solaris +++ b/auto/os/solaris @@ -2,6 +2,14 @@ # Copyright (C) Igor Sysoev +cat << END >> $NGX_AUTO_HEADERS_H + +#ifndef NGX_SOLARIS +#define NGX_SOLARIS 1 +#endif + +END + CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS" CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS " @@ -9,40 +17,17 @@ EVENT_MODULES="$EVENT_MODULES" CORE_LIBS="$CORE_LIBS -lsocket -lnsl -lrt" -# the Solaris's make support -MAKE_SL=YES +# Solaris's make does not support a blank line between target and rules +ngx_spacer= - -CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64" - -case $PLATFORM in - - SunOS:5.[89]:* | SunOS:5.10:*) - PIPE="-pipe" - ;; - - *) - # Solaris 7's /usr/ccs/bin/as does not support "-pipe" - ;; - -esac +CC_AUX_FLAGS="-D_FILE_OFFSET_BITS=64 -lrt" case $PLATFORM in *:sun4u) + # "-mcpu=v9" enables the "casa" assembler instruction CFLAGS="$CFLAGS -mcpu=v9" - - if [ ".$CPU" = ".sparc64" ]; then - CFLAGS="$CFLAGS -m64" - CPU_OPT="-m64" - CORE_LINK="$CORE_LINK -m64" - - CC_TEST_FLAGS="$CC_TEST_FLAGS -mcpu=v9 -m64" - fi - ;; - - *) ;; esac @@ -57,23 +42,15 @@ if [ $ZLIB_ASM != NO ]; then fi -ngx_inc="sys/devpoll.h"; . auto/inc - -if [ $ngx_found = yes ]; then - have=HAVE_DEVPOLL . auto/have - CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS" - EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE" - EVENT_FOUND=YES -fi - - -ngx_func="sendfilev()"; -ngx_func_inc="#include " -ngx_func_libs="-lsendfile" -ngx_func_test="int fd = 1; sendfilevec_t vec[1]; - size_t sent; ssize_t n; - n = sendfilev(fd, vec, 1, &sent)" -. auto/func +ngx_feature="sendfilev()" +ngx_feature_name="sendfile" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs="-lsendfile" +ngx_feature_test="int fd = 1; sendfilevec_t vec[1]; + size_t sent; ssize_t n; + n = sendfilev(fd, vec, 1, &sent)" +. auto/feature if [ $ngx_found = yes ]; then diff --git a/auto/os/win32 b/auto/os/win32 new file mode 100644 index 000000000..9e83e67fe --- /dev/null +++ b/auto/os/win32 @@ -0,0 +1,29 @@ + +# Copyright (C) Igor Sysoev + + +cat << END >> $NGX_AUTO_HEADERS_H + +#ifndef NGX_WIN32 +#define NGX_WIN32 1 +#endif + +END + + +CORE_INCS="$WIN32_INCS" +CORE_DEPS="$WIN32_DEPS" +CORE_SRCS="$WIN32_SRCS $IOCP_SRCS" +OS_CONFIG="$WIN32_CONFIG" +CORE_LIBS="$CORE_LIBS ws2_32.lib" + +EVENT_MODULES="$EVENT_MODULES $IOCP_MODULE" +EVENT_FOUND=YES + +if [ $EVENT_SELECT = NO ]; then + CORE_SRCS="$CORE_SRCS $SELECT_SRCS" + EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE" +fi + +have=HAVE_AIO . auto/have +have=HAVE_IOCP . auto/have diff --git a/auto/sources b/auto/sources index 6e21a4134..1622dcd9c 100644 --- a/auto/sources +++ b/auto/sources @@ -303,6 +303,6 @@ IMAP_DEPS="src/imap/ngx_imap.h" IMAP_MODULE=ngx_imap_module IMAP_SRCS="src/imap/ngx_imap.c \ - src/imap/ngx_imap_handler.c \ - src/imap/ngx_imap_parse.c \ - src/imap/ngx_imap_proxy.c" + src/imap/ngx_imap_handler.c \ + src/imap/ngx_imap_parse.c \ + src/imap/ngx_imap_proxy.c" diff --git a/auto/stubs b/auto/stubs new file mode 100644 index 000000000..af37c5420 --- /dev/null +++ b/auto/stubs @@ -0,0 +1,8 @@ + +# Copyright (C) Igor Sysoev + + +have=NGX_USE_HTTP_FILE_CACHE_UNIQ . auto/have +have=NGX_SUPPRESS_WARN . auto/have + +have=NGX_SMP . auto/have diff --git a/auto/types/sizeof b/auto/types/sizeof index ac22e759d..a7094e429 100644 --- a/auto/types/sizeof +++ b/auto/types/sizeof @@ -2,9 +2,14 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_type size ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_type size" >> $NGX_ERR +echo $ngx_n "checking for $ngx_type size ...$ngx_c" + +cat << END >> $NGX_AUTOCONF_ERR + +---------------------------------------- +checking for $ngx_type size + +END ngx_size= @@ -12,11 +17,11 @@ cat << END > $NGX_AUTOTEST.c #include #include -$NGX_UNISTD_H +$NGX_INCLUDE_UNISTD_H #include #include -$NGX_INTTYPES_H -$NGX_AUTO_CONFIG +$NGX_INCLUDE_INTTYPES_H +$NGX_INCLUDE_AUTO_CONFIG_H int main() { printf("%d", sizeof($ngx_type)); @@ -25,14 +30,19 @@ int main() { END -eval "$CC $CC_TEST_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1" + +ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c" +eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" + if [ -x $NGX_AUTOTEST ]; then ngx_size=`$NGX_AUTOTEST` echo " $ngx_size bytes" fi -rm $NGX_AUTOTEST* + +rm -f $NGX_AUTOTEST + case $ngx_size in 4) @@ -58,5 +68,13 @@ case $ngx_size in *) echo echo "$0: error: can not detect $ngx_type size" + + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + exit 1 esac + diff --git a/auto/types/typedef b/auto/types/typedef index 9762f4812..4b8964396 100644 --- a/auto/types/typedef +++ b/auto/types/typedef @@ -2,13 +2,18 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for $ngx_type ..." $ngx_c -echo >> $NGX_ERR -echo "checking for $ngx_type" >> $NGX_ERR +echo $ngx_n "checking for $ngx_type ...$ngx_c" -found=no +cat << END >> $NGX_AUTOCONF_ERR -for type in $ngx_type $ngx_types +---------------------------------------- +checking for $ngx_type + +END + +ngx_found=no + +for ngx_try in $ngx_type $ngx_types do cat << END > $NGX_AUTOTEST.c @@ -19,42 +24,51 @@ do #include #include #include -$NGX_INTTYPES_H +$NGX_INCLUDE_INTTYPES_H int main() { - $type i = 0; + $ngx_try i = 0; return 0; } END - eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1" + ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS -o $NGX_AUTOTEST $NGX_AUTOTEST.c" + eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" if [ -x $NGX_AUTOTEST ]; then - if [ $type = $ngx_type ]; then + if [ $ngx_try = $ngx_type ]; then echo " found" - found=yes + ngx_found=yes else - echo ", $type used" - found=$type + echo ", $ngx_try used" + ngx_found=$ngx_try fi fi - rm $NGX_AUTOTEST* + rm -f $NGX_AUTOTEST + + if [ $ngx_found = no ]; then + echo $ngx_n " $ngx_try not found$ngx_c" + + echo "----------" >> $NGX_AUTOCONF_ERR + cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR + echo $ngx_test >> $NGX_AUTOCONF_ERR + echo "----------" >> $NGX_AUTOCONF_ERR - if [ $found = no ]; then - echo $ngx_n " $type not found" $ngx_c else break fi done -if [ $found = no ]; then +if [ $ngx_found = no ]; then echo echo "$0: error: can not define $ngx_type" + exit 1 fi -if [ $found != yes ]; then - echo "typedef $found $ngx_type;" >> $NGX_AUTO_CONFIG_H +if [ $ngx_found != yes ]; then + echo "typedef $ngx_found $ngx_type;" >> $NGX_AUTO_CONFIG_H fi diff --git a/auto/types/uintptr_t b/auto/types/uintptr_t index a1bb78a89..e7d8d5ca0 100644 --- a/auto/types/uintptr_t +++ b/auto/types/uintptr_t @@ -2,7 +2,7 @@ # Copyright (C) Igor Sysoev -echo $ngx_n "checking for uintptr_t ... " $ngx_c +echo $ngx_n "checking for uintptr_t ...$ngx_c" echo >> $NGX_ERR echo "checking for uintptr_t" >> $NGX_ERR diff --git a/auto/unix b/auto/unix index 4ba7d605f..ec0e3952d 100755 --- a/auto/unix +++ b/auto/unix @@ -2,7 +2,7 @@ # Copyright (C) Igor Sysoev -CC_WARN=$CC +CC_WARN= ngx_fmt_collect=yes # C types @@ -23,7 +23,7 @@ eval ngx_formats=\${ngx_${ngx_ptr_size}_fmt}; . auto/fmt/ptrfmt # POSIX types -NGX_AUTO_CONFIG="#include \"../$NGX_AUTO_CONFIG_H\"" +NGX_INCLUDE_AUTO_CONFIG_H="#include \"../$NGX_AUTO_CONFIG_H\"" ngx_type="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef @@ -72,75 +72,98 @@ eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt # syscalls, libc calls and some features -ngx_feature_libs= -ngx_func_libs= - - -ngx_func="pread()" -ngx_func_inc= -ngx_func_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0)" -. auto/func +ngx_feature="pread()" +ngx_feature_name="pread" +ngx_feature_run=no +ngx_feature_incs= +ngx_feature_libs= +ngx_feature_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0)" +. auto/feature -ngx_func="pwrite()" -ngx_func_inc= -ngx_func_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0)" -. auto/func +ngx_feature="pwrite()" +ngx_feature_name="pwrite" +ngx_feature_run=no +ngx_feature_incs= +ngx_feature_libs= +ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0)" +. auto/feature -#ngx_func="strsignal()" -#ngx_func_inc="#include " -#ngx_func_test="char *s = strsignal(1)" -#. auto/func +ngx_feature="strerror_r()" +ngx_feature_name="strerror_r" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="char buf[20]; int n; n = strerror_r(1, buf, 20)" +. auto/feature -ngx_func="strerror_r()" -ngx_func_inc="#include " -ngx_func_test="char buf[20]; int n; n = strerror_r(1, buf, 20)" -. auto/func +ngx_feature="gnu_strerror_r()" +ngx_feature_name="gnu_strerror_r" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="char buf[20], *str; str = strerror_r(1, buf, 20)" +. auto/feature -ngx_func="gnu_strerror_r()" -ngx_func_inc="#include " -ngx_func_test="char buf[20], *str; str = strerror_r(1, buf, 20)" -. auto/func +ngx_feature="localtime_r()" +ngx_feature_name="localtime_r" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="struct tm t; time_t c=0; localtime_r(&c, &t)" +. auto/feature -ngx_func="localtime_r()" -ngx_func_inc="#include " -ngx_func_test="struct tm t; time_t c=0; localtime_r(&c, &t)" -. auto/func +ngx_feature="posix_memalign()" +ngx_feature_name="posix_memalign" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="void *p; int n; n = posix_memalign(&p, 4096, 4096)" +. auto/feature -ngx_func="posix_memalign()" -ngx_func_inc="#include " -ngx_func_test="void *p; int n; n = posix_memalign(&p, 4096, 4096)" -. auto/func +ngx_feature="memalign()" +ngx_feature_name="memalign" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="void *p; p = memalign(4096, 4096)" +. auto/feature -ngx_func="memalign()" -ngx_func_inc="#include " -ngx_func_test="void *p; p = memalign(4096, 4096)" -. auto/func +ngx_feature="sched_yield()" +ngx_feature_name="HAVE_SCHED_YIELD" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= +ngx_feature_test="sched_yield()" +. auto/feature ngx_feature="mmap(MAP_ANON|MAP_SHARED)" ngx_feature_name="MAP_ANON" -ngx_feature_inc="#include " +ngx_feature_run=yes +ngx_feature_incs="#include " +ngx_feature_libs= ngx_feature_test="void *p; p = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, -1, 0); if (p == MAP_FAILED) return 1;" -ngx_feature_run=yes . auto/feature ngx_feature='mmap("/dev/zero", MAP_SHARED)' ngx_feature_name="MAP_DEVZERO" -ngx_feature_inc="#include +ngx_feature_run=yes +ngx_feature_incs="#include #include #include " +ngx_feature_libs= ngx_feature_test='void *p; int fd; fd = open("/dev/zero", O_RDWR); p = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); @@ -150,8 +173,10 @@ ngx_feature_test='void *p; int fd; ngx_feature="System V shared memory" ngx_feature_name="SYSVSHM" -ngx_feature_inc="#include +ngx_feature_run=yes +ngx_feature_incs="#include #include " +ngx_feature_libs= ngx_feature_test="int id; id = shmget(IPC_PRIVATE, 4096, (SHM_R|SHM_W|IPC_CREAT)); if (id == -1) return 1; @@ -159,41 +184,39 @@ ngx_feature_test="int id; . auto/feature - ngx_feature="struct sockaddr_in.sin_len" ngx_feature_name="sin_len" -ngx_feature_inc="#include +ngx_feature_run=no +ngx_feature_incs="#include #include " +ngx_feature_libs= ngx_feature_test="struct sockaddr_in sa; sa.sin_len = 5" -ngx_feature_run=no . auto/feature ngx_feature="struct msghdr.msg_control" ngx_feature_name="msghdr_msg_control" -ngx_feature_inc="#include " +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= ngx_feature_test="struct msghdr msg; msg.msg_control = NULL" . auto/feature -case $PLATFORM in - Linux:*) - ngx_feature_inc="#include " - ;; - - *) - ngx_feature_inc="#include " - ;; -esac - ngx_feature="ioctl(FIONBIO)" ngx_feature_name="FIONBIO" +ngx_feature_run=no +ngx_feature_incs="#include +$NGX_INCLUDE_SYS_FILIO_H" +ngx_feature_libs= ngx_feature_test="int i; i = FIONBIO" . auto/feature ngx_feature="struct tm.tm_gmtoff" ngx_feature_name="gmtoff" -ngx_feature_inc="#include " +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_libs= ngx_feature_test="struct tm tm; tm.tm_gmtoff = 0" . auto/feature -- cgit v1.2.3