Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/auto
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-10-21 19:34:38 +0400
committerIgor Sysoev <igor@sysoev.ru>2004-10-21 19:34:38 +0400
commitc0edbcce58b03b89c70f1eb39cb44c74c4c7453a (patch)
tree1ce72a5b51d724a0c054e079c2b1507ca85a145d /auto
parentac64333a44f39d5a658832517a106961f32f6aae (diff)
nginx-0.1.2-RELEASE importrelease-0.1.2
*) 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.
Diffstat (limited to 'auto')
-rw-r--r--auto/cc/bcc48
-rw-r--r--auto/cc/conf119
-rw-r--r--auto/cc/gcc109
-rw-r--r--auto/cc/icc69
-rw-r--r--auto/cc/msvc81
-rw-r--r--auto/cc/name51
-rw-r--r--auto/cc/owc82
-rwxr-xr-xauto/configure14
-rw-r--r--auto/endianess2
-rw-r--r--auto/feature63
-rw-r--r--auto/fmt/fmt66
-rw-r--r--auto/fmt/ptrfmt62
-rw-r--r--auto/headers6
-rw-r--r--auto/inc35
-rw-r--r--auto/include66
-rw-r--r--auto/init42
-rw-r--r--auto/install2
-rw-r--r--auto/lib/md5/conf51
-rw-r--r--auto/lib/md5/make4
-rw-r--r--auto/lib/openssl/conf19
-rw-r--r--auto/lib/pcre/conf57
-rw-r--r--auto/lib/pcre/make6
-rw-r--r--auto/lib/test22
-rw-r--r--auto/lib/zlib/conf25
-rw-r--r--auto/lib/zlib/make4
-rw-r--r--auto/make416
-rw-r--r--auto/options71
-rw-r--r--auto/os/conf69
-rw-r--r--auto/os/freebsd28
-rw-r--r--auto/os/linux80
-rw-r--r--auto/os/solaris65
-rw-r--r--auto/os/win3229
-rw-r--r--auto/sources6
-rw-r--r--auto/stubs8
-rw-r--r--auto/types/sizeof34
-rw-r--r--auto/types/typedef50
-rw-r--r--auto/types/uintptr_t2
-rwxr-xr-xauto/unix137
38 files changed, 1423 insertions, 677 deletions
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 <stdio.h>
+#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 <stdio.h>
+#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 <sys/types.h>
-$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 <sys/time.h>
#include <stdio.h>
#include <sys/resource.h>
-$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 <sys/types.h>
-#include <md5.h>"
- 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 <md5.h>"
+ 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 <md5.h>"
+ 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 <openssl/md5.h>"
- 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 <openssl/md5.h>"
+ 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 <openssl/ssl.h>"
- 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 <openssl/ssl.h>"
+ 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 <pcre.h>"
- 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 <pcre.h>"
+ 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 <zlib.h>"
- 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 <zlib.h>"
+ 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 <ngx_config.h>" > $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 <ngx_config.h>" > $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 <sys/devpoll.h>"
+ 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 <sys/event.h>"
+ 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 <sys/event.h>"
+ 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 <sys/epoll.h>"
-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 <sys/epoll.h>"
+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 <sys/sendfile.h>"
-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 <sys/sendfile.h>"
+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 <sys/sendfile.h>"
+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 <sys/prctl.h>"
-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 <sys/prctl.h>"
+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 <sys/sendfile.h>"
-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 <sys/sendfile.h>"
+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 <sys/types.h>
#include <sys/time.h>
-$NGX_UNISTD_H
+$NGX_INCLUDE_UNISTD_H
#include <signal.h>
#include <sys/resource.h>
-$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 <sys/time.h>
#include <sys/resource.h>
#include <netinet/in.h>
-$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 <string.h>"
-#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 <string.h>"
+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 <string.h>"
-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 <string.h>"
+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 <string.h>"
-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 <time.h>"
+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 <time.h>"
-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 <stdlib.h>"
+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 <stdlib.h>"
-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 <stdlib.h>"
+ngx_feature_libs=
+ngx_feature_test="void *p; p = memalign(4096, 4096)"
+. auto/feature
-ngx_func="memalign()"
-ngx_func_inc="#include <stdlib.h>"
-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 <sched.h>"
+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 <sys/mman.h>"
+ngx_feature_run=yes
+ngx_feature_incs="#include <sys/mman.h>"
+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 <sys/mman.h>
+ngx_feature_run=yes
+ngx_feature_incs="#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>"
+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 <sys/ipc.h>
+ngx_feature_run=yes
+ngx_feature_incs="#include <sys/ipc.h>
#include <sys/shm.h>"
+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 <sys/socket.h>
+ngx_feature_run=no
+ngx_feature_incs="#include <sys/socket.h>
#include <netinet/in.h>"
+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 <sys/socket.h>"
+ngx_feature_run=no
+ngx_feature_incs="#include <sys/socket.h>"
+ngx_feature_libs=
ngx_feature_test="struct msghdr msg; msg.msg_control = NULL"
. auto/feature
-case $PLATFORM in
- Linux:*)
- ngx_feature_inc="#include <sys/ioctl.h>"
- ;;
-
- *)
- ngx_feature_inc="#include <sys/filio.h>"
- ;;
-esac
-
ngx_feature="ioctl(FIONBIO)"
ngx_feature_name="FIONBIO"
+ngx_feature_run=no
+ngx_feature_incs="#include <sys/ioctl.h>
+$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 <time.h>"
+ngx_feature_run=no
+ngx_feature_incs="#include <time.h>"
+ngx_feature_libs=
ngx_feature_test="struct tm tm; tm.tm_gmtoff = 0"
. auto/feature