diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2003-11-25 20:44:56 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2003-11-25 20:44:56 +0000 |
| commit | a8fa0a6a37b6e90324e0dcbf4733324199623841 (patch) | |
| tree | 1a7edec9aa04946afc22299bf587823488fb492f /auto | |
| parent | d9d0ca12688034d481e2f1f5cf13a098338ec31d (diff) | |
| download | nginx-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/cc | 109 | ||||
| -rwxr-xr-x | auto/configure | 60 | ||||
| -rw-r--r-- | auto/fmt/fmt | 34 | ||||
| -rw-r--r-- | auto/fmt/longlong | 45 | ||||
| -rw-r--r-- | auto/func | 21 | ||||
| -rw-r--r-- | auto/init | 9 | ||||
| -rw-r--r-- | auto/lib/lib | 48 | ||||
| -rw-r--r-- | auto/lib/make | 26 | ||||
| -rw-r--r-- | auto/lib/md5/makefile.msvc | 4 | ||||
| -rw-r--r-- | auto/lib/pcre/makefile.msvc | 18 | ||||
| -rw-r--r-- | auto/lib/zlib/patch.zlib | 19 | ||||
| -rw-r--r-- | auto/make | 146 | ||||
| -rw-r--r-- | auto/options | 68 | ||||
| -rw-r--r-- | auto/os/conf | 47 | ||||
| -rw-r--r-- | auto/os/freebsd | 40 | ||||
| -rw-r--r-- | auto/sources | 194 | ||||
| -rw-r--r-- | auto/types/longlong | 31 | ||||
| -rw-r--r-- | auto/types/sizeof | 24 | ||||
| -rw-r--r-- | auto/types/socklen_t | 28 | ||||
| -rw-r--r-- | auto/types/time_t | 30 | ||||
| -rw-r--r-- | auto/types/typedef | 72 | ||||
| -rw-r--r-- | auto/types/uint64_t | 50 | ||||
| -rw-r--r-- | auto/types/uintptr_t | 53 | ||||
| -rwxr-xr-x | auto/unix | 70 |
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 |
