summaryrefslogtreecommitdiffhomepage
path: root/auto
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-11-25 20:44:56 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-11-25 20:44:56 +0000
commita8fa0a6a37b6e90324e0dcbf4733324199623841 (patch)
tree1a7edec9aa04946afc22299bf587823488fb492f /auto
parentd9d0ca12688034d481e2f1f5cf13a098338ec31d (diff)
downloadnginx-a8fa0a6a37b6e90324e0dcbf4733324199623841.tar.gz
nginx-a8fa0a6a37b6e90324e0dcbf4733324199623841.tar.bz2
nginx-0.0.1-2003-11-25-23:44:56 import
Diffstat (limited to 'auto')
-rw-r--r--auto/cc109
-rwxr-xr-xauto/configure60
-rw-r--r--auto/fmt/fmt34
-rw-r--r--auto/fmt/longlong45
-rw-r--r--auto/func21
-rw-r--r--auto/init9
-rw-r--r--auto/lib/lib48
-rw-r--r--auto/lib/make26
-rw-r--r--auto/lib/md5/makefile.msvc4
-rw-r--r--auto/lib/pcre/makefile.msvc18
-rw-r--r--auto/lib/zlib/patch.zlib19
-rw-r--r--auto/make146
-rw-r--r--auto/options68
-rw-r--r--auto/os/conf47
-rw-r--r--auto/os/freebsd40
-rw-r--r--auto/sources194
-rw-r--r--auto/types/longlong31
-rw-r--r--auto/types/sizeof24
-rw-r--r--auto/types/socklen_t28
-rw-r--r--auto/types/time_t30
-rw-r--r--auto/types/typedef72
-rw-r--r--auto/types/uint64_t50
-rw-r--r--auto/types/uintptr_t53
-rwxr-xr-xauto/unix70
24 files changed, 927 insertions, 319 deletions
diff --git a/auto/cc b/auto/cc
new file mode 100644
index 000000000..06f7413df
--- /dev/null
+++ b/auto/cc
@@ -0,0 +1,109 @@
+
+case $CC in
+
+ *gcc)
+
+ # optimization
+ #CFLAGS="$CFLAGS -O2 -fomit-frame-pointer"
+
+ # 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"
+
+ # ANSI C warnings
+ #CFLAGS="$CFLAGS -pedantic"
+
+ # debug
+ CFLAGS="$CFLAGS -g"
+
+ OBJEXT=o
+ OBJOUT="-o "
+ BINOUT="-o "
+
+ CC_STRONG="$CC -Wall -Werror"
+ ;;
+
+
+ *icc)
+ # Intel C++ compiler 7.1
+
+ # optimization
+ CFLAGS="$CFLAGS -O"
+ # optimize for Pentium Pro, Pentium II and Pentium III
+ #CFLAGS="$CFLAGS -mcpu=pentiumpro"
+ # optimize for Pentium 4, default
+ #CFLAGS="$CFLAGS -mcpu=pentium4"
+
+ # warnings
+ CFLAGS="$CFLAGS -w1"
+
+ # stop on warning
+ CFLAGS="$CFLAGS -Werror"
+
+ OBJEXT=o
+ OBJOUT="-o "
+ BINOUT="-o "
+
+ CC_STRONG="$CC -w1 -Werror"
+ ;;
+
+
+ cl)
+ # MSVC 6.0 SP2
+
+ # optimization
+
+ # 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"
+ # optimize for Pentium Pro
+ CFLAGS="$CFLAGS -G6"
+
+ # warnings
+ CFLAGS="$CFLAGS -W3"
+ #CFLAGS="$CFLAGS -W4"
+
+ # stop on warning
+ CFLAGS="$CFLAGS -WX"
+
+ # multithreaded
+ CFLAGS="$CFLAGS -MT"
+
+ # disable logo
+ CFLAGS="$CFLAGS -nologo"
+
+ # link flags
+ CORE_LINK="$CORE_LINK -link"
+ CORE_LINK="$CORE_LINK -nodefaultlib:msvcrt"
+ CORE_LINK="$CORE_LINK -nodefaultlib:libcpmt"
+ CORE_LINK="$CORE_LINK -verbose:lib"
+
+ # debug
+ CFLAGS="$CFLAGS -Yd"
+ CORE_LINK="$CORE_LINK -debug -debugtype:coff"
+
+ OBJEXT=obj
+ OBJOUT="-Fo"
+ BINOUT="-Fe"
+
+ CC_STRONG="$CC -W3 -WX"
+ ;;
+
+esac
diff --git a/auto/configure b/auto/configure
index 792eee2e6..4966a7ca2 100755
--- a/auto/configure
+++ b/auto/configure
@@ -1,53 +1,17 @@
-CC=cc
-CC_STRONG="$CC -Wall -Werror"
-CPP="$CC -E"
+. auto/options
+. auto/init
+. auto/sources
-NGX_AUTO_CONFIG_H=ngx_auto_config.h
-
-echo > $NGX_AUTO_CONFIG_H
-
-
-CC_WARN=$CC_STRONG
-
-NGX_FMT_NAME=OFF_FMT
-NGX_TYPE="off_t"; . auto/types/sizeof
-NGX_FORMATS="%ld %lld %qd"; . auto/fmt/fmt
-
-NGX_FMT_NAME=TIME_FMT
-NGX_TYPE="time_t"; . auto/types/sizeof
-NGX_FORMATS="%d %ld %lld %qd"; . auto/fmt/fmt
-
-
-CC_WARN=$CC
-
-exit
-
-
-NGX_TYPE="long"; . auto/types/sizeof; NGX_MAX_LONG=$NGX_MAX_SIZE
-NGX_FORMATS="l"; . auto/fmt/fmt
+. auto/os/conf
+. auto/cc
+. auto/lib/lib
+. auto/make
+. auto/lib/make
-NGX_TYPE="long long"; . auto/types/sizeof; NGX_MAX_LONG_LONG=$NGX_MAX_SIZE
-NGX_FORMATS="ll q"; . auto/fmt/fmt
-
-
-CC_WARN=$CC_STRONG
-
-NGX_TYPE="off_t"; . auto/types/sizeof
-NGX_FORMATS="l ll q"; . auto/fmt/fmt
-
-
-CC_WARN=$CC
-
-#NGX_TYPE="__int64_t"; . auto/types/typedef; NGX_TIME_T_FMT=$NGX_FMT
-
-#NGX_TYPE="time_t"; . auto/types/typedef; NGX_TIME_T_FMT=$NGX_FMT
-
-
-#exit
-
-. auto/types/uint64_t
-. auto/types/uintptr_t
+echo > $NGX_AUTO_CONFIG_H
-. auto/types/socklen_t
+if [ "$PLATFORM" != win32 ]; then
+ . auto/unix
+fi
diff --git a/auto/fmt/fmt b/auto/fmt/fmt
index 695dd33b4..bd66b4114 100644
--- a/auto/fmt/fmt
+++ b/auto/fmt/fmt
@@ -1,22 +1,27 @@
-echo "Checking for $NGX_TYPE printf() format"
+echo "checking for $NGX_TYPE printf() format"
NGX_FMT=NO
for FMT in $NGX_FORMATS
do
- echo "#include <unistd.h>" > autotest.c
echo "#include <stdio.h>" >> autotest.c
echo "#include <sys/types.h>" >> autotest.c
echo "int main() {" >> autotest.c
echo "printf(\"${FMT}\", ($NGX_TYPE) $NGX_MAX_SIZE);" >> autotest.c
echo "return 0; }" >> autotest.c
- eval "${CC_WARN} -o autotest autotest.c > /dev/null 2>&1"
+ eval "$CC_WARN $CC_TEST_FLAGS -o autotest autotest.c > /dev/null 2>&1"
+
+ MAX_SIZE=`echo $NGX_MAX_SIZE | sed -e "s/L*\$//"`
if [ -x ./autotest ]; then
- if [ "`./autotest`" = $NGX_MAX_SIZE ]; then
- echo " + \"${FMT}\" used"
+ if [ "`./autotest`" = $MAX_SIZE ]; then
+ if [ $NGX_FMT_COLLECT = YES ]; then
+ echo " + \"${FMT}\" is appropriate"
+ else
+ echo " + \"${FMT}\" used"
+ fi
NGX_FMT=$FMT
fi
fi
@@ -24,7 +29,12 @@ do
rm autotest*
if [ $NGX_FMT != NO ]; then
- break
+ if [ $NGX_FMT_COLLECT = YES ]; then
+ eval "NGX_${NGX_BYTES}_FMT=\"\${NGX_${NGX_BYTES}_FMT} \$NGX_FMT\""
+ continue
+ else
+ break
+ fi
fi
echo " + \"${FMT}\" is not appropriate"
@@ -32,12 +42,14 @@ done
if [ $NGX_FMT = NO ]; then
- echo "printf() $NGX_TYPE format not found"
+ echo "$0: error: printf() $NGX_TYPE format not found"
exit 1
fi
-echo "#ifndef $NGX_FMT_NAME" >> $NGX_AUTO_CONFIG_H
-echo "#define $NGX_FMT_NAME \"$NGX_FMT\"" >> $NGX_AUTO_CONFIG_H
-echo "#endif" >> $NGX_AUTO_CONFIG_H
-echo >> $NGX_AUTO_CONFIG_H
+if [ $NGX_FMT_COLLECT = NO ]; then
+ echo "#ifndef $NGX_FMT_NAME" >> $NGX_AUTO_CONFIG_H
+ echo "#define $NGX_FMT_NAME \"$NGX_FMT\"" >> $NGX_AUTO_CONFIG_H
+ echo "#endif" >> $NGX_AUTO_CONFIG_H
+ echo >> $NGX_AUTO_CONFIG_H
+fi
diff --git a/auto/fmt/longlong b/auto/fmt/longlong
deleted file mode 100644
index 4a5e0844a..000000000
--- a/auto/fmt/longlong
+++ /dev/null
@@ -1,45 +0,0 @@
-
-echo "Checking for printf() long long format"
-
-NGX_LONG_LONG_FMT=NO
-
- echo "int main() {" > autotest.c
- echo "printf(\"%llu\", (unsigned long long) -1);" >> autotest.c
- echo "return 0; }" >> autotest.c
-
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
- if [ -x ./autotest -a "`./autotest`" = $NGX_MAX_LONG_LONG ]; then
- echo " + \"%ll\" used"
- NGX_LONG_LONG_FMT="ll"
- else
- echo " + \"%ll\" is not appropriate"
- fi
-
- rm autotest*
-
-
-if [ $NGX_LONG_LONG_FMT = NO ]; then
-
- echo "int main() {" > autotest.c
- echo "printf(\"%qu\", (unsigned long long) -1);" >> autotest.c
- echo "return 0; }" >> autotest.c
-
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
- if [ -x ./autotest -a "`./autotest`" = $NGX_MAX_LONG_LONG ]; then
- echo " + \"%q\" used"
- NGX_LONG_LONG_FMT="q"
- else
- echo " + \"%q\" is not appropriate"
- fi
-
- rm autotest*
-
-fi
-
-
-if [ $NGX_LONG_LONG_FMT = NO ]; then
- echo "printf() long long format not found"
- exit 1
-fi
diff --git a/auto/func b/auto/func
new file mode 100644
index 000000000..77216f936
--- /dev/null
+++ b/auto/func
@@ -0,0 +1,21 @@
+
+echo "checking for $NGX_FUNC"
+
+echo "$NGX_UNISTD_H" > autotest.c
+echo "$NGX_FUNC_INC" >> autotest.c
+echo "int main() { $NGX_FUNC_TEST; return 0; }" >> autotest.c
+
+eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+if [ -x autotest ]; then
+ echo " + $NGX_FUNC found"
+
+ echo "#ifndef $NGX_HAVE" >> $NGX_AUTO_CONFIG_H
+ echo "#define $NGX_HAVE 1" >> $NGX_AUTO_CONFIG_H
+ echo "#endif" >> $NGX_AUTO_CONFIG_H
+ echo >> $NGX_AUTO_CONFIG_H
+else
+ echo " + $NGX_FUNC not found"
+fi
+
+rm autotest*
diff --git a/auto/init b/auto/init
new file mode 100644
index 000000000..0fd7c5230
--- /dev/null
+++ b/auto/init
@@ -0,0 +1,9 @@
+
+MAKEFILE=$OBJS/Makefile
+
+NGX_AUTO_CONFIG_H=$OBJS/ngx_auto_config.h
+NGX_MODULES_C=$OBJS/ngx_modules.c
+
+
+NGX_UNISTD_H="#include <unistd.h>"
+NGX_INTTYPES_H="#include <inttypes.h>"
diff --git a/auto/lib/lib b/auto/lib/lib
new file mode 100644
index 000000000..848567974
--- /dev/null
+++ b/auto/lib/lib
@@ -0,0 +1,48 @@
+
+if [ $PCRE != NO ]; then
+
+ CORE_INCS="$CORE_INCS -I $PCRE"
+
+ if [ "$PLATFORM" = "win32" ]; then
+ CFLAGS="$CFLAGS -D PCRE_STATIC"
+ CORE_LIBS="$CORE_LIBS pcre.lib"
+ CORE_LINK="$CORE_LINK -libpath:$PCRE"
+ else
+ CORE_DEPS="$CORE_DEPS $PCRE/.libs/libpcre.a"
+ CORE_LIBS="$CORE_LIBS -L $PCRE/.libs -lpcre"
+ fi
+fi
+
+
+if [ $MD5 != NO ]; then
+
+ CFLAGS="$CFLAGS -D HAVE_OPENSSL_MD5"
+ CORE_INCS="$CORE_INCS -I $MD5"
+
+ if [ "$PLATFORM" = "win32" ]; then
+ CORE_LIBS="$CORE_LIBS md5.lib"
+ CORE_LINK="$CORE_LINK -libpath:$MD5"
+ else
+ LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
+ CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
+ fi
+
+elif [ $MD5_LIB != NO ]; then
+ CORE_LIBS="$CORE_LIBS $MD5_LIB"
+fi
+
+
+if [ $ZLIB != NO ]; then
+ CORE_INCS="$CORE_INCS -I $ZLIB"
+
+ if [ "$PLATFORM" = "win32" ]; then
+ CORE_LIBS="$CORE_LIBS zlib.lib"
+ CORE_LINK="$CORE_LINK -libpath:$ZLIB"
+ else
+ LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
+ CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
+ fi
+
+elif [ $ZLIB_LIB != NO ]; then
+ CORE_LIBS="$CORE_LIBS $ZLIB_LIB"
+fi
diff --git a/auto/lib/make b/auto/lib/make
new file mode 100644
index 000000000..6055e3fd1
--- /dev/null
+++ b/auto/lib/make
@@ -0,0 +1,26 @@
+
+if [ "$PLATFORM" != "win32" ]; then
+
+ if [ $PCRE != NO ]; then
+ echo "$PCRE/.libs/libpcre.a:" >> $MAKEFILE
+ echo " cd $PCRE \\" >> $MAKEFILE
+ echo " && ./configure --disable-shared \\" >> $MAKEFILE
+ echo " && \$(MAKE)" >> $MAKEFILE
+ echo >> $MAKEFILE
+ fi
+
+
+ if [ $MD5 != NO ]; then
+ echo "$MD5/libmd5.a:" >> $MAKEFILE
+ echo " cd $MD5 && \$(MAKE) x86-elf" >> $MAKEFILE
+ echo >> $MAKEFILE
+ fi
+
+
+ if [ $ZLIB != NO ]; then
+ echo "$ZLIB/libz.a:" >> $MAKEFILE
+ echo " cd $ZLIB && ./configure && \$(MAKE)" >> $MAKEFILE
+ echo >> $MAKEFILE
+ fi
+
+fi
diff --git a/auto/lib/md5/makefile.msvc b/auto/lib/md5/makefile.msvc
new file mode 100644
index 000000000..f44831c56
--- /dev/null
+++ b/auto/lib/md5/makefile.msvc
@@ -0,0 +1,4 @@
+
+all:
+ cl -nologo -c -MT -O2 -D MD5_ASM -D L_ENDIAN md5_dgst.c md5_one.c
+ link -lib -out:md5.lib md5_dgst.obj md5_one.obj asm/m-win32.obj
diff --git a/auto/lib/pcre/makefile.msvc b/auto/lib/pcre/makefile.msvc
new file mode 100644
index 000000000..e5c2aec29
--- /dev/null
+++ b/auto/lib/pcre/makefile.msvc
@@ -0,0 +1,18 @@
+
+CC = cl
+CFLAGS = -O2 -Ob1 -Oi -Gs -MT
+LINK = link
+
+PCREFLAGS = -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
+
+
+all:
+ $(CC) -Fedftables dftables.c
+
+ dftables > chartables.c
+
+ $(CC) -nologo -c $(CFLAGS) $(PCREFLAGS) \
+ maketables.c get.c study.c pcre.c
+
+ $(LINK) -lib -out:pcre.lib -verbose:lib \
+ maketables.obj get.obj study.obj pcre.obj
diff --git a/auto/lib/zlib/patch.zlib b/auto/lib/zlib/patch.zlib
new file mode 100644
index 000000000..c74101162
--- /dev/null
+++ b/auto/lib/zlib/patch.zlib
@@ -0,0 +1,19 @@
+--- msdos/Makefile.w32 Sat Nov 15 13:01:29 2003
++++ msdos/Makefile.w32 Sat Nov 15 13:02:06 2003
+@@ -10,7 +10,7 @@
+
+ # ------------- Microsoft Visual C++ 4.0 and later -------------
+ MODEL=
+-CFLAGS=-Ox -GA3s -nologo -W3
++CFLAGS=-nologo -O2 -Ob1 -Oi -Gs -MT
+ CC=cl
+ LD=link
+ LDFLAGS=
+@@ -79,7 +79,6 @@
+ $(CC) -c $(CFLAGS) $*.c
+
+ zlib.lib: $(OBJ1) $(OBJ2)
+- if exist zlib.lib del zlib.lib
+ lib /OUT:zlib.lib $(OBJ1) $(OBJ2)
+
+ example.exe: example.obj zlib.lib
diff --git a/auto/make b/auto/make
new file mode 100644
index 000000000..fa1354f34
--- /dev/null
+++ b/auto/make
@@ -0,0 +1,146 @@
+
+mkdir -p $OBJS/src/core $OBJS/src/event $OBJS/src/event/modules \
+ $OBJS/src/os/unix $OBJS/src/os/win32 \
+ $OBJS/src/http $OBJS/src/http/modules $OBJS/src/http/modules/proxy
+
+
+HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES \
+ $HTTP_CHUNKED_FILTER_MODULE \
+ $HTTP_RANGE_FILTER_MODULE \
+ $HTTP_CHARSET_FILTER_MODULE"
+
+HTTP_MODULES="$HTTP_MODULES $HTTP_STATIC_MODULE $HTTP_INDEX_MODULE"
+
+if [ $HTTP_GZIP = YES ]; then
+ HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_GZIP_FILTER_MODULE"
+ HTTP_SRCS="$HTTP_SRCS $HTTP_GZIP_SRCS"
+fi
+
+if [ $HTTP_PROXY = YES ]; then
+ HTTP_MODULES="$HTTP_MODULES $HTTP_PROXY_MODULE"
+ HTTP_INCS="$HTTP_INCS $HTTP_PROXY_INCS"
+ HTTP_DEPS="$HTTP_DEPS $HTTP_PROXY_DEPS"
+ HTTP_SRCS="$HTTP_SRCS $HTTP_PROXY_SRCS"
+fi
+
+modules="$CORE_MODULES $EVENT_MODULES $HTTP_MODULES \
+ $HTTP_FILTER_MODULES $HTTP_NOT_MODIFIED_FILTER_MODULE"
+
+
+echo "#include <ngx_config.h>" > $NGX_MODULES_C
+echo "#include <ngx_core.h>" >> $NGX_MODULES_C
+echo >> $NGX_MODULES_C
+
+for mod in $modules
+do
+ echo "extern ngx_module_t $mod;" >> $NGX_MODULES_C
+done
+
+echo >> $NGX_MODULES_C
+echo 'ngx_module_t *ngx_modules[] = {' >> $NGX_MODULES_C
+
+for mod in $modules
+do
+ echo " &$mod," >> $NGX_MODULES_C
+done
+
+echo " NULL" >> $NGX_MODULES_C
+echo "};" >> $NGX_MODULES_C
+
+
+echo "CC = $CC" > $MAKEFILE
+echo "CFLAGS = $CFLAGS" >> $MAKEFILE
+echo >> $MAKEFILE
+
+echo "CORE_DEPS = \\" >> $MAKEFILE
+for dep in $CORE_DEPS
+do
+ echo " $dep \\" >> $MAKEFILE
+done
+echo >> $MAKEFILE
+
+echo "CORE_INCS = $CORE_INCS -I $OBJS" >> $MAKEFILE
+echo >> $MAKEFILE
+
+echo "HTTP_DEPS = \\" >> $MAKEFILE
+for inc in $HTTP_DEPS
+do
+ echo " $inc \\" >> $MAKEFILE
+done
+echo >> $MAKEFILE
+
+echo "HTTP_INCS = $HTTP_INCS" >> $MAKEFILE
+echo >> $MAKEFILE
+
+
+
+echo "nginx: \\" >> $MAKEFILE
+
+for src in $CORE_SRCS $HTTP_SRCS
+do
+ obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
+ echo " $OBJS/$obj \\" >> $MAKEFILE
+done
+
+for src in $NGX_MODULES_C $LINK_DEPS
+do
+ obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
+ echo " $obj \\" >> $MAKEFILE
+done
+
+echo >> $MAKEFILE
+echo " \$(CC) ${BINOUT}nginx \\" >> $MAKEFILE
+
+for src in $CORE_SRCS $HTTP_SRCS
+do
+ obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
+ echo " $OBJS/$obj \\" >> $MAKEFILE
+done
+
+obj=`echo $NGX_MODULES_C | sed -e "s/\.c\$/.$OBJEXT/"`
+echo " $obj \\" >> $MAKEFILE
+echo " $CORE_LIBS \\" >> $MAKEFILE
+echo " $CORE_LINK" >> $MAKEFILE
+echo >> $MAKEFILE
+
+
+deps="\$(CORE_DEPS)"
+args="\$(CFLAGS) \$(CORE_INCS)"
+
+echo "$obj: \\" >> $MAKEFILE
+echo " $NGX_MODULES_C $deps" >> $MAKEFILE
+echo " \$(CC) -c $args \\" >> $MAKEFILE
+echo " $OBJOUT$obj \\" >> $MAKEFILE
+echo " $NGX_MODULES_C" >> $MAKEFILE
+echo >> $MAKEFILE
+
+
+
+
+for src in $CORE_SRCS
+do
+ obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
+
+ echo "$OBJS/$obj: \\" >> $MAKEFILE
+ echo " $src $deps" >> $MAKEFILE
+ echo " \$(CC) -c $args \\" >> $MAKEFILE
+ echo " $OBJOUT$OBJS/$obj \\" >> $MAKEFILE
+ echo " $src" >> $MAKEFILE
+ echo >> $MAKEFILE
+done
+
+
+deps="\$(CORE_DEPS) \$(HTTP_DEPS)"
+args="\$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
+
+for src in $HTTP_SRCS
+do
+ obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
+
+ echo "$OBJS/$obj: \\" >> $MAKEFILE
+ echo " $src $deps" >> $MAKEFILE
+ echo " \$(CC) -c $args \\" >> $MAKEFILE
+ echo " $OBJOUT$OBJS/$obj \\" >> $MAKEFILE
+ echo " $src" >> $MAKEFILE
+ echo >> $MAKEFILE
+done
diff --git a/auto/options b/auto/options
new file mode 100644
index 000000000..5b8ae4c16
--- /dev/null
+++ b/auto/options
@@ -0,0 +1,68 @@
+
+HELP=NO
+
+CC=gcc
+OBJS=objs
+
+TEST_BUILD_DEVPOLL=NO
+
+HTTP_GZIP=YES
+HTTP_PROXY=YES
+
+PCRE=NO
+
+MD5=NO
+MD5_LIB=NO
+
+ZLIB=NO
+ZLIB_LIB=NO
+
+
+for option
+do
+ case "$option" in
+ -*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) value="" ;;
+ esac
+
+ case "$option" in
+ --help) HELP=YES ;;
+
+ --crossbuild=*) PLATFORM="$value" ;;
+
+ --builddir=*) OBJS="$value" ;;
+
+ --without-http_gzip_module) HTTP_GZIP=NO ;;
+ --without-http_proxy_module) HTTP_PROXY=NO ;;
+
+ --with-cc=*) CC="$value" ;;
+
+ --with-pcre=*) PCRE="$value" ;;
+ --with-md5=*) MD5="$value" ;;
+ --with-zlib=*) ZLIB="$value" ;;
+
+ --test-build-devpoll) TEST_BUILD_DEVPOLL=YES ;;
+
+ *)
+ echo "$0: error: invalid option \"$option\""
+ exit 1
+ ;;
+ esac
+done
+
+
+if [ $HELP = YES ]; then
+ echo " --help this message"
+
+ echo " --without-http_gzip_module disable http_gzip_module"
+ echo " --without-http_proxy_module disable http_proxy_module"
+
+ echo " --with-cc=NAME name of or path to C compiler"
+ echo
+
+ echo " --with-pcre=DIR path to PCRE library"
+ echo " --with-md5=DIR path to md5 library"
+ echo " --with-zlib=DIR path to zlib library"
+
+ exit 1
+fi
diff --git a/auto/os/conf b/auto/os/conf
new file mode 100644
index 000000000..0b2a4357e
--- /dev/null
+++ b/auto/os/conf
@@ -0,0 +1,47 @@
+
+if [ ".$PLATFORM" = "." ]; then
+ echo "checking for OS"
+
+ SYSTEM=`uname -s 2>/dev/null`
+ RELEASE=`uname -r 2>/dev/null`
+ MACHINE=`uname -m 2>/dev/null`
+
+ echo " + $SYSTEM $RELEASE $MACHINE"
+
+ PLATFORM="$SYSTEM:$RELEASE:$MACHINE";
+else
+ echo "building for $PLATFORM"
+fi
+
+case $PLATFORM in
+
+ FreeBSD:*)
+ . auto/os/freebsd
+ ;;
+
+ Solaris:*)
+ CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64"
+ CORE_LIBS="$CORE_LIBS -lsocket -lnsl"
+ ;;
+
+ Linux:*)
+ CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
+ ;;
+
+ win32)
+ CORE_INCS="$WIN32_INCS"
+ CORE_DEPS="$WIN32_DEPS"
+ CORE_SRCS="$WIN32_SRCS $SELECT_SRCS $IOCP_SRCS"
+ EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $IOCP_MODULE"
+
+ CFLAGS="$CFLAGS -D HAVE_AIO=1 -D HAVE_IOCP=1"
+ CORE_LIBS="$CORE_LIBS ws2_32.lib"
+ ;;
+
+esac
+
+
+if [ $TEST_BUILD_DEVPOLL = YES ]; then
+ EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE"
+ EVENT_SRCS="$EVENT_SRCS $DEVPOLL_SRCS"
+fi
diff --git a/auto/os/freebsd b/auto/os/freebsd
new file mode 100644
index 000000000..415fcba5a
--- /dev/null
+++ b/auto/os/freebsd
@@ -0,0 +1,40 @@
+
+
+CORE_INCS="$UNIX_INCS"
+CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
+CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS $SELECT_SRCS $POLL_SRCS"
+EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $POLL_MODULE"
+
+MD5_LIB="-lmd"
+ZLIB_LIB="-lz"
+
+version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \
+ | sed -e 's/^.* \(.*\)$/\1/'`
+
+
+# sendfile
+
+if [ $version -gt 300007 ]; then
+ CFLAGS="$CFLAGS -D HAVE_SENDFILE=1"
+ CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
+fi
+
+
+# kqueue
+
+if [ \( $version -lt 500000 -a $version -ge 410000 \) \
+ -o $version -ge 500011 ]
+then
+ CFLAGS="$CFLAGS -D HAVE_KQUEUE=1"
+ CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
+ EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
+fi
+
+
+# kqueue's NOTE_LAWAT
+
+if [ \( $version -lt 500000 -a $version -ge 430000 \) \
+ -o $version -ge 500018 ]
+then
+ CFLAGS="$CFLAGS -D HAVE_LOWAT_EVENT=1"
+fi
diff --git a/auto/sources b/auto/sources
new file mode 100644
index 000000000..ccaac10b6
--- /dev/null
+++ b/auto/sources
@@ -0,0 +1,194 @@
+
+CORE_MODULES="ngx_core_module ngx_errlog_module"
+
+CORE_INCS="-I src/core"
+
+CORE_DEPS="src/core/nginx.h \
+ src/core/ngx_config.h \
+ src/core/ngx_log.h \
+ src/core/ngx_alloc.h \
+ src/core/ngx_array.h \
+ src/core/ngx_table.h \
+ src/core/ngx_hunk.h \
+ src/core/ngx_string.h \
+ src/core/ngx_parse.h \
+ src/core/ngx_inet.h \
+ src/core/ngx_file.h \
+ src/core/ngx_regex.h \
+ src/core/ngx_times.h \
+ src/core/ngx_connection.h \
+ src/core/ngx_conf_file.h \
+ src/core/ngx_garbage_collector.h"
+
+CORE_SRCS="src/core/nginx.c \
+ src/core/ngx_log.c \
+ src/core/ngx_alloc.c \
+ src/core/ngx_array.c \
+ src/core/ngx_hunk.c \
+ src/core/ngx_output_chain.c \
+ src/core/ngx_string.c \
+ src/core/ngx_parse.c \
+ src/core/ngx_inet.c \
+ src/core/ngx_file.c \
+ src/core/ngx_regex.c \
+ src/core/ngx_times.c \
+ src/core/ngx_conf_file.c \
+ src/core/ngx_garbage_collector.c"
+
+
+EVENT_MODULES="ngx_events_module ngx_event_core_module"
+
+EVENT_INCS="-I src/event -I src/event/modules"
+
+EVENT_DEPS="src/event/ngx_event.h \
+ src/event/ngx_event_timer.h \
+ src/event/ngx_event_connect.h \
+ src/event/ngx_event_pipe.h"
+
+EVENT_SRCS="src/event/ngx_event.c \
+ src/event/ngx_event_timer.c \
+ src/event/ngx_event_close.c \
+ src/event/ngx_event_accept.c \
+ src/event/ngx_event_connect.c \
+ src/event/ngx_event_pipe.c"
+
+
+SELECT_MODULE="ngx_select_module"
+SELECT_SRCS=src/event/modules/ngx_select_module.c
+
+POLL_MODULE="ngx_poll_module"
+POLL_SRCS=src/event/modules/ngx_poll_module.c
+
+KQUEUE_MODULE="ngx_kqueue_module"
+KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
+
+DEVPOLL_MODULE="ngx_devpoll_module"
+DEVPOLL_SRCS=src/event/modules/ngx_devpoll_module.c
+
+IOCP_MODULE="ngx_iocp_module"
+IOCP_SRCS=src/event/modules/ngx_iocp_module.c
+
+AIO_MODULE="ngx_aio_module"
+AIO_SRCS=src/event/modules/ngx_aio_module.c
+
+
+UNIX_INCS="$CORE_INCS $EVENT_INCS -I src/os/unix"
+
+UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
+ src/os/unix/ngx_time.h \
+ src/os/unix/ngx_types.h \
+ src/os/unix/ngx_errno.h \
+ src/os/unix/ngx_files.h \
+ src/os/unix/ngx_process.h \
+ src/os/unix/ngx_socket.h \
+ src/os/unix/ngx_os.h"
+
+UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
+ src/os/unix/ngx_time.c \
+ src/os/unix/ngx_sendv.c \
+ src/os/unix/ngx_files.c \
+ src/os/unix/ngx_socket.c \
+ src/os/unix/ngx_recv.c \
+ src/os/unix/ngx_readv_chain.c \
+ src/os/unix/ngx_writev_chain.c \
+ src/os/unix/ngx_posix_init.c \
+ src/os/unix/ngx_process.c \
+ src/os/unix/ngx_daemon.c"
+
+
+LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
+
+FREEBSD_DEPS=src/os/unix/ngx_freebsd_config.h
+FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
+FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
+
+
+WIN32_INCS="$CORE_INCS $EVENT_INCS -I src/os/win32"
+
+WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
+ src/os/win32/ngx_win32_config.h \
+ src/os/win32/ngx_time.h \
+ src/os/win32/ngx_types.h \
+ src/os/win32/ngx_errno.h \
+ src/os/win32/ngx_files.h \
+ src/os/win32/ngx_process.h \
+ src/os/win32/ngx_socket.h \
+ src/os/win32/ngx_os.h"
+
+WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
+ src/os/win32/ngx_errno.c \
+ src/os/win32/ngx_files.c \
+ src/os/win32/ngx_time.c \
+ src/os/win32/ngx_socket.c \
+ src/os/win32/ngx_wsarecv.c \
+ src/os/win32/ngx_wsarecv_chain.c \
+ src/os/win32/ngx_wsasend_chain.c \
+ src/os/win32/ngx_sendv.c \
+ src/os/win32/ngx_win32_init.c \
+ src/event/ngx_event_acceptex.c"
+
+
+HTTP_MODULES="ngx_http_module \
+ ngx_http_core_module \
+ ngx_http_log_module \
+ ngx_http_cache_module"
+
+HTTP_FILTER_MODULES="ngx_http_write_filter_module \
+ ngx_http_output_filter_module \
+ ngx_http_header_filter_module"
+
+HTTP_CHUNKED_FILTER_MODULE=ngx_http_chunked_filter_module
+HTTP_RANGE_FILTER_MODULE=ngx_http_range_filter_module
+HTTP_CHARSET_FILTER_MODULE=ngx_http_charset_filter_module
+HTTP_NOT_MODIFIED_FILTER_MODULE=ngx_http_not_modified_filter_module
+
+HTTP_STATIC_MODULE=ngx_http_static_module
+HTTP_INDEX_MODULE=ngx_http_index_module
+
+HTTP_INCS="-I src/http -I src/http/modules"
+
+HTTP_DEPS="src/http/ngx_http.h \
+ src/http/ngx_http_request.h \
+ src/http/ngx_http_filter.h \
+ src/http/ngx_http_config.h \
+ src/http/ngx_http_core_module.h \
+ src/http/ngx_http_cache.h \
+ src/http/ngx_http_busy_lock.h \
+ src/http/ngx_http_log_handler.h"
+
+HTTP_SRCS="src/http/ngx_http.c \
+ src/http/ngx_http_core_module.c \
+ src/http/ngx_http_special_response.c \
+ src/http/ngx_http_request.c \
+ src/http/ngx_http_cache.c \
+ src/http/ngx_http_busy_lock.c \
+ src/http/ngx_http_parse.c \
+ src/http/ngx_http_headers.c \
+ src/http/ngx_http_header_filter.c \
+ src/http/ngx_http_write_filter.c \
+ src/http/ngx_http_output_filter.c \
+ src/http/ngx_http_log_handler.c \
+ src/http/ngx_http_request_body.c \
+ src/http/ngx_http_parse_time.c \
+ src/http/modules/ngx_http_static_handler.c \
+ src/http/modules/ngx_http_index_handler.c \
+ src/http/modules/ngx_http_chunked_filter.c \
+ src/http/modules/ngx_http_range_filter.c \
+ src/http/modules/ngx_http_charset_filter.c \
+ src/http/modules/ngx_http_not_modified_filter.c"
+
+
+HTTP_GZIP_FILTER_MODULE=ngx_http_gzip_filter_module
+HTTP_GZIP_SRCS=src/http/modules/ngx_http_gzip_filter.c
+HTTP_GZIP_UNIX_LIBS=-lz
+HTTP_GZIP_WIN_LIBS=zlib.lib
+
+
+HTTP_PROXY_MODULE=ngx_http_proxy_module
+HTTP_PROXY_INCS="-I src/http/modules/proxy"
+HTTP_PROXY_DEPS=src/http/modules/proxy/ngx_http_proxy_handler.h
+HTTP_PROXY_SRCS="src/http/modules/proxy/ngx_http_proxy_handler.c \
+ src/http/modules/proxy/ngx_http_proxy_upstream.c \
+ src/http/modules/proxy/ngx_http_proxy_cache.c \
+ src/http/modules/proxy/ngx_http_proxy_parse.c \
+ src/http/modules/proxy/ngx_http_proxy_header.c"
diff --git a/auto/types/longlong b/auto/types/longlong
deleted file mode 100644
index f843d5ae4..000000000
--- a/auto/types/longlong
+++ /dev/null
@@ -1,31 +0,0 @@
-
-echo "Checking for long long size"
-
-BYTES=
-
-echo "int main() {" > autotest.c
-echo "printf(\"%d\", sizeof(long long));" >> autotest.c
-echo "return 0; }" >> autotest.c
-
-eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
-if [ -x ./autotest ]; then
- BYTES=`./autotest`
- echo " + long long is $BYTES bytes"
-fi
-
-rm autotest*
-
-case $BYTES in
- 4)
- NGX_MAX_LONG_LONG=4294967295
- ;;
-
- 8)
- NGX_MAX_LONG_LONG=18446744073709551615
- ;;
-
- *)
- echo "$0: error: can not detect long long size"
- exit 1
-esac
diff --git a/auto/types/sizeof b/auto/types/sizeof
index bf7ee3c85..8f811136e 100644
--- a/auto/types/sizeof
+++ b/auto/types/sizeof
@@ -1,29 +1,37 @@
-echo "Checking for $NGX_TYPE size"
+echo "checking for $NGX_TYPE size"
-BYTES=
+NGX_BYTES=
echo "#include <sys/types.h>" > autotest.c
echo "int main() {" >> autotest.c
echo "printf(\"%d\", sizeof($NGX_TYPE));" >> autotest.c
echo "return 0; }" >> autotest.c
-eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+eval "$CC $CC_TEST_FLAGS -o autotest autotest.c > /dev/null 2>&1"
if [ -x ./autotest ]; then
- BYTES=`./autotest`
- echo " + $NGX_TYPE is $BYTES bytes"
+ NGX_BYTES=`./autotest`
+ echo " + $NGX_TYPE is $NGX_BYTES bytes"
fi
rm autotest*
-case $BYTES in
+case $NGX_BYTES in
4)
- NGX_MAX_SIZE=2147483647
+ if [ "$NGX_TYPE"="long" ]; then
+ NGX_MAX_SIZE=2147483647L
+ else
+ NGX_MAX_SIZE=2147483647
+ fi
;;
8)
- NGX_MAX_SIZE=9223372036854775807
+ if [ "$NGX_TYPE"="long long" ]; then
+ NGX_MAX_SIZE=9223372036854775807LL
+ else
+ NGX_MAX_SIZE=9223372036854775807L
+ fi
;;
*)
diff --git a/auto/types/socklen_t b/auto/types/socklen_t
deleted file mode 100644
index 84d39fb0c..000000000
--- a/auto/types/socklen_t
+++ /dev/null
@@ -1,28 +0,0 @@
-
-found=0
-
-echo 'Checking for socklen_t'
-
-echo '#include <sys/types.h>' > autotest.c
-echo '#include <sys/socket.h>' >> autotest.c
-echo 'int main() { socklen_t i = 0; return 0; }' >> autotest.c
-
-eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
-if [ -x autotest ]; then
- echo ' + socklen_t found'
- found=1
-else
- echo ' + socklen_t not found'
- echo ' + uint32_t used'
- type='typedef uint32_t socklen_t;'
- found=2
-fi
-
-rm autotest*
-
-
-if [ $found = 2 ]; then
- echo $type >> ngx_auto_config.h
- echo >> ngx_auto_config.h
-fi
diff --git a/auto/types/time_t b/auto/types/time_t
deleted file mode 100644
index ecd80ef18..000000000
--- a/auto/types/time_t
+++ /dev/null
@@ -1,30 +0,0 @@
-
-echo "Checking for printf() time_t format"
-
-echo '#include <sys/types.h>' > autotest.c
-type=`${CPP} autotest.c | awk '/^typedef.*time_t/ {print \$2}'`
-rm autotest.c
-
-case $type in
- long)
- echo ' + long: "%ld" used'
- fmt='"%ld"'
- ;;
-
- int)
- echo ' + int: "%d" used'
- fmt='"%d"'
- ;;
-
- *)
- echo "$0: error: unknown time_t definition: \"$type\""
- exit 1
- ;;
-
-esac
-
-
-echo "#ifndef TIME_FMT" >> ngx_auto_config.h
-echo "#define TIME_FMT $fmt" >> ngx_auto_config.h
-echo "#endif" >> ngx_auto_config.h
-echo >> ngx_auto_config.h
diff --git a/auto/types/typedef b/auto/types/typedef
index 4c7acbd11..a842542df 100644
--- a/auto/types/typedef
+++ b/auto/types/typedef
@@ -1,32 +1,42 @@
-echo "Checking for $NGX_TYPE definition"
-
-echo "#include <sys/types.h>" > autotest.c
-TYPE=`${CPP} autotest.c | \
- awk "/^typedef.*$NGX_TYPE/ { for (i = 1; i< NF; i++) print $i}"`
-#rm autotest.c
-
-echo $TYPE
-
-case $TYPE in
- "long long")
- echo ' + defined as long long'
- NGX_FMT=$NGX_LONG_LONG_FMT
- ;;
-
- long)
- echo ' + defined as long'
- NGX_FMT=$NGX_LONG_FMT
- ;;
-
- int)
- echo ' + defined as int'
- NGX_FMT=$NGX_INT_FMT
- ;;
-
- *)
- echo "$0: error: unknown $NGX_TYPE definition: \"$TYPE\""
- exit 1
- ;;
-
-esac
+echo "checking for $NGX_TYPE"
+
+FOUND=NO
+
+for TYPE in $NGX_TYPE $NGX_TYPES
+do
+ echo "#include <sys/types.h>" > autotest.c
+ echo "#include <sys/socket.h>" >> autotest.c
+ echo "$NGX_INTTYPES_H" >> autotest.c
+ echo "int main() { $TYPE i = 0; return 0; }" >> autotest.c
+
+ eval "$CC -o autotest autotest.c > /dev/null 2>&1"
+
+ if [ -x autotest ]; then
+ if [ $TYPE = $NGX_TYPE ]; then
+ echo " + $NGX_TYPE found"
+ FOUND=YES
+ else
+ echo " + $TYPE used"
+ FOUND=$TYPE
+ fi
+ fi
+
+ rm autotest*
+
+ if [ $FOUND = NO ]; then
+ echo " + $TYPE not found"
+ else
+ break
+ fi
+done
+
+if [ $FOUND = NO ]; then
+ echo "$0: error: can not define $NGX_TYPE"
+ exit 1
+fi
+
+if [ $FOUND != YES ]; then
+ echo "typedef $FOUND $NGX_TYPE;" >> $NGX_AUTO_CONFIG_H
+ echo >> $NGX_AUTO_CONFIG_H
+fi
diff --git a/auto/types/uint64_t b/auto/types/uint64_t
deleted file mode 100644
index 070f9e4a3..000000000
--- a/auto/types/uint64_t
+++ /dev/null
@@ -1,50 +0,0 @@
-
-found=0
-
-echo 'Checking for uint64_t'
-
- echo '#include <sys/types.h>' > autotest.c
- echo 'int main() { uint64_t i = 0; return 0; }' >> autotest.c
-
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
- if [ -x autotest ]; then
- echo ' + uint64_t found'
- found=1
- else
- echo ' + uint64_t not found'
- fi
-
- rm autotest*
-
-
-if [ $found = 0 ]; then
-
- echo '#include <sys/types.h>' > autotest.c
- echo 'int main() { u_int64_t i = 0; return 0; }' >> autotest.c
-
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
- if [ -x autotest ]; then
- echo ' + u_int64_t used'
- type='typedef u_int64_t uint64_t;'
- found=2
- else
- echo ' + u_int64_t not found'
- fi
-
- rm autotest*
-
-fi
-
-
-if [ $found = 0 ]; then
- echo "$0: error: uint64_t not found"
- exit 1
-fi
-
-
-if [ $found = 2 ]; then
- echo $type >> ngx_auto_config.h
- echo >> ngx_auto_config.h
-fi
diff --git a/auto/types/uintptr_t b/auto/types/uintptr_t
index 568c6099d..93a01a8fa 100644
--- a/auto/types/uintptr_t
+++ b/auto/types/uintptr_t
@@ -1,47 +1,26 @@
-found=0
+echo 'checking for uintptr_t'
-echo 'Checking for uintptr_t'
+FOUND=NO
- echo '#include <sys/types.h>' > autotest.c
- echo 'int main() { uintptr_t i = 0; return i; }' >> autotest.c
+echo "#include <sys/types.h>" > autotest.c
+echo "int main() { uintptr_t i = 0; return 0; }" >> autotest.c
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+eval "$CC -o autotest autotest.c > /dev/null 2>&1"
- if [ -x autotest ]; then
- echo ' + uintptr_t found'
- found=1
- else
- echo ' + uintptr_t not found'
- fi
-
- rm autotest*
-
-
-if [ $found = 0 ]; then
- echo 'int main() { printf("%d", 8 * sizeof(void *)); return 0; }' \
- > autotest.c
- eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
-
- if [ -x autotest ]; then
- type="uint`./autotest`_t"
- echo " + $type used"
- type="typedef $type uintptr_t;"
- found=2
- fi
-
- rm autotest*
+if [ -x autotest ]; then
+ echo " + uintptr_t found"
+ FOUND=YES
+else
+ echo " + uintptr_t not found"
fi
-
-if [ $found = 0 ]; then
- echo "$0: error: uintptr_t not found"
- exit 1
-fi
+rm autotest*
-if [ $found = 2 ]; then
- echo $type >> ngx_auto_config.h
- echo >> ngx_auto_config.h
+if [ $FOUND = NO ]; then
+ FOUND="uint`expr 8 \* $NGX_PTR_BYTES`_t"
+ echo " + $FOUND used"
+ echo "typedef $FOUND uintptr_t;" >> $NGX_AUTO_CONFIG_H
+ echo >> $NGX_AUTO_CONFIG_H
fi
-
diff --git a/auto/unix b/auto/unix
new file mode 100755
index 000000000..5b7b4977e
--- /dev/null
+++ b/auto/unix
@@ -0,0 +1,70 @@
+
+CC_WARN=$CC
+NGX_FMT_COLLECT=YES
+
+NGX_TYPE="int"; . auto/types/sizeof;
+NGX_FORMATS="%d"; . auto/fmt/fmt
+
+NGX_TYPE="long"; . auto/types/sizeof;
+NGX_FORMATS="%ld"; . auto/fmt/fmt
+
+NGX_TYPE="long long"; . auto/types/sizeof;
+NGX_FORMATS="%lld %qd"; . auto/fmt/fmt
+
+NGX_TYPE="void *"; . auto/types/sizeof; NGX_PTR_BYTES=$NGX_BYTES
+
+
+CC_WARN=$CC_STRONG
+NGX_FMT_COLLECT=NO
+
+NGX_FMT_NAME=OFF_T_FMT
+NGX_TYPE="off_t"; . auto/types/sizeof
+eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
+
+NGX_FMT_NAME=TIME_T_FMT
+NGX_TYPE="time_t"; . auto/types/sizeof
+eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
+
+NGX_FMT_NAME=SIZE_T_FMT
+NGX_TYPE="size_t"; . auto/types/sizeof
+eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
+
+NGX_FMT_NAME=SIZE_T_X_FMT; . auto/fmt/xfmt
+
+NGX_FMT_NAME=PID_T_FMT
+NGX_TYPE="pid_t"; . auto/types/sizeof
+eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
+
+NGX_FMT_NAME=RLIM_T_FMT
+NGX_TYPE="rlim_t"; . auto/types/sizeof
+eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
+
+
+CC_WARN=$CC
+
+NGX_TYPE="uint64_t"
+NGX_TYPES="u_int64_t"; . auto/types/typedef
+
+NGX_TYPE="socklen_t"
+NGX_TYPES="u_int32_t"; . auto/types/typedef
+
+. auto/types/uintptr_t
+
+
+NGX_FUNC_INC=
+NGX_FUNC_TEST="int fd = 0; char buf[1]; size_t size = 1;
+ ssize_t n; off_t offset = 0;
+ n = pread(fd, buf, size, offset)"
+NGX_HAVE=HAVE_PREAD; NGX_FUNC="pread()"; . auto/func
+
+
+NGX_FUNC_INC=
+NGX_FUNC_TEST="int fd = 1; char buf[1]; size_t size = 1;
+ ssize_t n; off_t offset = 0;
+ n = pwrite(fd, buf, size, offset)"
+NGX_HAVE=HAVE_PWRITE; NGX_FUNC="pwrite()"; . auto/func
+
+
+NGX_FUNC_INC="#include <time.h>"
+NGX_FUNC_TEST="struct tm t; time_t c=0; localtime_r(&c, &t)"
+NGX_HAVE=HAVE_LOCALTIME_R; NGX_FUNC="localtime_r()"; . auto/func