st52
2 years ago
393 changed files with 208415 additions and 0 deletions
-
7828nginx-1.12.2/nginx-1.12.2/CHANGES
-
7963nginx-1.12.2/nginx-1.12.2/CHANGES.ru
-
26nginx-1.12.2/nginx-1.12.2/LICENSE
-
3nginx-1.12.2/nginx-1.12.2/README
-
14nginx-1.12.2/nginx-1.12.2/auto/cc/acc
-
72nginx-1.12.2/nginx-1.12.2/auto/cc/bcc
-
46nginx-1.12.2/nginx-1.12.2/auto/cc/ccc
-
98nginx-1.12.2/nginx-1.12.2/auto/cc/clang
-
250nginx-1.12.2/nginx-1.12.2/auto/cc/conf
-
179nginx-1.12.2/nginx-1.12.2/auto/cc/gcc
-
117nginx-1.12.2/nginx-1.12.2/auto/cc/icc
-
157nginx-1.12.2/nginx-1.12.2/auto/cc/msvc
-
66nginx-1.12.2/nginx-1.12.2/auto/cc/name
-
104nginx-1.12.2/nginx-1.12.2/auto/cc/owc
-
160nginx-1.12.2/nginx-1.12.2/auto/cc/sunc
-
12nginx-1.12.2/nginx-1.12.2/auto/define
-
50nginx-1.12.2/nginx-1.12.2/auto/endianness
-
123nginx-1.12.2/nginx-1.12.2/auto/feature
-
12nginx-1.12.2/nginx-1.12.2/auto/have
-
12nginx-1.12.2/nginx-1.12.2/auto/have_headers
-
13nginx-1.12.2/nginx-1.12.2/auto/headers
-
58nginx-1.12.2/nginx-1.12.2/auto/include
-
51nginx-1.12.2/nginx-1.12.2/auto/init
-
218nginx-1.12.2/nginx-1.12.2/auto/install
-
54nginx-1.12.2/nginx-1.12.2/auto/lib/conf
-
97nginx-1.12.2/nginx-1.12.2/auto/lib/geoip/conf
-
61nginx-1.12.2/nginx-1.12.2/auto/lib/google-perftools/conf
-
43nginx-1.12.2/nginx-1.12.2/auto/lib/libatomic/conf
-
16nginx-1.12.2/nginx-1.12.2/auto/lib/libatomic/make
-
93nginx-1.12.2/nginx-1.12.2/auto/lib/libgd/conf
-
165nginx-1.12.2/nginx-1.12.2/auto/lib/libxslt/conf
-
24nginx-1.12.2/nginx-1.12.2/auto/lib/make
-
135nginx-1.12.2/nginx-1.12.2/auto/lib/openssl/conf
-
62nginx-1.12.2/nginx-1.12.2/auto/lib/openssl/make
-
18nginx-1.12.2/nginx-1.12.2/auto/lib/openssl/makefile.bcc
-
21nginx-1.12.2/nginx-1.12.2/auto/lib/openssl/makefile.msvc
-
203nginx-1.12.2/nginx-1.12.2/auto/lib/pcre/conf
-
64nginx-1.12.2/nginx-1.12.2/auto/lib/pcre/make
-
27nginx-1.12.2/nginx-1.12.2/auto/lib/pcre/makefile.bcc
-
23nginx-1.12.2/nginx-1.12.2/auto/lib/pcre/makefile.msvc
-
25nginx-1.12.2/nginx-1.12.2/auto/lib/pcre/makefile.owc
-
83nginx-1.12.2/nginx-1.12.2/auto/lib/perl/conf
-
46nginx-1.12.2/nginx-1.12.2/auto/lib/perl/make
-
79nginx-1.12.2/nginx-1.12.2/auto/lib/zlib/conf
-
135nginx-1.12.2/nginx-1.12.2/auto/lib/zlib/make
-
17nginx-1.12.2/nginx-1.12.2/auto/lib/zlib/makefile.bcc
-
17nginx-1.12.2/nginx-1.12.2/auto/lib/zlib/makefile.msvc
-
14nginx-1.12.2/nginx-1.12.2/auto/lib/zlib/makefile.owc
-
672nginx-1.12.2/nginx-1.12.2/auto/make
-
138nginx-1.12.2/nginx-1.12.2/auto/module
-
1365nginx-1.12.2/nginx-1.12.2/auto/modules
-
12nginx-1.12.2/nginx-1.12.2/auto/nohave
-
612nginx-1.12.2/nginx-1.12.2/auto/options
-
116nginx-1.12.2/nginx-1.12.2/auto/os/conf
-
118nginx-1.12.2/nginx-1.12.2/auto/os/darwin
-
107nginx-1.12.2/nginx-1.12.2/auto/os/freebsd
-
190nginx-1.12.2/nginx-1.12.2/auto/os/linux
-
61nginx-1.12.2/nginx-1.12.2/auto/os/solaris
-
42nginx-1.12.2/nginx-1.12.2/auto/os/win32
-
255nginx-1.12.2/nginx-1.12.2/auto/sources
-
8nginx-1.12.2/nginx-1.12.2/auto/stubs
-
82nginx-1.12.2/nginx-1.12.2/auto/summary
-
20nginx-1.12.2/nginx-1.12.2/auto/threads
-
76nginx-1.12.2/nginx-1.12.2/auto/types/sizeof
-
82nginx-1.12.2/nginx-1.12.2/auto/types/typedef
-
50nginx-1.12.2/nginx-1.12.2/auto/types/uintptr_t
-
12nginx-1.12.2/nginx-1.12.2/auto/types/value
-
964nginx-1.12.2/nginx-1.12.2/auto/unix
-
26nginx-1.12.2/nginx-1.12.2/conf/fastcgi.conf
-
25nginx-1.12.2/nginx-1.12.2/conf/fastcgi_params
-
109nginx-1.12.2/nginx-1.12.2/conf/koi-utf
-
103nginx-1.12.2/nginx-1.12.2/conf/koi-win
-
89nginx-1.12.2/nginx-1.12.2/conf/mime.types
-
117nginx-1.12.2/nginx-1.12.2/conf/nginx.conf
-
17nginx-1.12.2/nginx-1.12.2/conf/scgi_params
-
17nginx-1.12.2/nginx-1.12.2/conf/uwsgi_params
-
126nginx-1.12.2/nginx-1.12.2/conf/win-utf
-
116nginx-1.12.2/nginx-1.12.2/configure
-
21nginx-1.12.2/nginx-1.12.2/contrib/README
-
58nginx-1.12.2/nginx-1.12.2/contrib/geo2nginx.pl
-
131nginx-1.12.2/nginx-1.12.2/contrib/unicode2nginx/koi-utf
-
48nginx-1.12.2/nginx-1.12.2/contrib/unicode2nginx/unicode-to-nginx.pl
-
130nginx-1.12.2/nginx-1.12.2/contrib/unicode2nginx/win-utf
-
4nginx-1.12.2/nginx-1.12.2/contrib/vim/ftdetect/nginx.vim
-
1nginx-1.12.2/nginx-1.12.2/contrib/vim/ftplugin/nginx.vim
-
11nginx-1.12.2/nginx-1.12.2/contrib/vim/indent/nginx.vim
-
2144nginx-1.12.2/nginx-1.12.2/contrib/vim/syntax/nginx.vim
-
21nginx-1.12.2/nginx-1.12.2/html/50x.html
-
25nginx-1.12.2/nginx-1.12.2/html/index.html
-
206nginx-1.12.2/nginx-1.12.2/man/nginx.8
-
1583nginx-1.12.2/nginx-1.12.2/src/core/nginx.c
-
26nginx-1.12.2/nginx-1.12.2/src/core/nginx.h
-
141nginx-1.12.2/nginx-1.12.2/src/core/ngx_array.c
-
53nginx-1.12.2/nginx-1.12.2/src/core/ngx_array.h
-
313nginx-1.12.2/nginx-1.12.2/src/core/ngx_buf.c
-
172nginx-1.12.2/nginx-1.12.2/src/core/ngx_buf.h
-
1479nginx-1.12.2/nginx-1.12.2/src/core/ngx_conf_file.c
-
295nginx-1.12.2/nginx-1.12.2/src/core/ngx_conf_file.h
-
145nginx-1.12.2/nginx-1.12.2/src/core/ngx_config.h
-
1408nginx-1.12.2/nginx-1.12.2/src/core/ngx_connection.c
7828
nginx-1.12.2/nginx-1.12.2/CHANGES
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
7963
nginx-1.12.2/nginx-1.12.2/CHANGES.ru
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,26 @@ |
|||
/* |
|||
* Copyright (C) 2002-2017 Igor Sysoev |
|||
* Copyright (C) 2011-2017 Nginx, Inc. |
|||
* All rights reserved. |
|||
* |
|||
* Redistribution and use in source and binary forms, with or without |
|||
* modification, are permitted provided that the following conditions |
|||
* are met: |
|||
* 1. Redistributions of source code must retain the above copyright |
|||
* notice, this list of conditions and the following disclaimer. |
|||
* 2. Redistributions in binary form must reproduce the above copyright |
|||
* notice, this list of conditions and the following disclaimer in the |
|||
* documentation and/or other materials provided with the distribution. |
|||
* |
|||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
|||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
|||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|||
* SUCH DAMAGE. |
|||
*/ |
@ -0,0 +1,3 @@ |
|||
|
|||
Documentation is available at http://nginx.org |
|||
|
@ -0,0 +1,14 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# aCC: HP ANSI C++ B3910B A.03.55.02 |
|||
|
|||
# C89 mode |
|||
|
|||
CFLAGS="$CFLAGS -Ae" |
|||
CC_TEST_FLAGS="-Ae" |
|||
|
|||
PCRE_OPT="$PCRE_OPT -Ae" |
|||
ZLIB_OPT="$ZLIB_OPT -Ae" |
@ -0,0 +1,72 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# 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 |
|||
|
|||
# __stdcall |
|||
#CPU_OPT="$CPU_OPT -ps" |
|||
# __fastcall |
|||
#CPU_OPT="$CPU_OPT -pr" |
|||
|
|||
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 $NGX_OBJS/ngx_config.csm" |
|||
NGX_PCH="$NGX_OBJS/ngx_config.csm" |
|||
NGX_BUILD_PCH="-H=$NGX_OBJS/ngx_config.csm" |
|||
NGX_USE_PCH="-Hu -H=$NGX_OBJS/ngx_config.csm" |
|||
|
|||
|
|||
# Win32 GUI mode application |
|||
#LINK="\$(CC) -laa" |
|||
|
|||
|
|||
# the resource file |
|||
NGX_RES="$NGX_OBJS/nginx.res" |
|||
NGX_RCC="brcc32 -fo$NGX_OBJS/nginx.res \$(CORE_INCS) $NGX_WIN32_RC" |
|||
# the pragma allows to link the resource file using bcc32 and |
|||
# to avoid the direct ilink32 calling and the c0w32.obj's WinMain/main problem |
|||
NGX_PRAGMA="#pragma resource \"$NGX_OBJS/nginx.res\"" |
|||
|
|||
|
|||
ngx_include_opt="-I" |
|||
ngx_objout="-o" |
|||
ngx_binout="-e" |
|||
ngx_objext="obj" |
|||
ngx_binext=".exe" |
|||
|
|||
ngx_long_start='@&&| |
|||
' |
|||
ngx_long_end='|' |
|||
|
|||
ngx_regex_dirsep='\\' |
|||
ngx_dirsep="\\" |
@ -0,0 +1,46 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# Compaq C V6.5-207 |
|||
|
|||
ngx_include_opt="-I" |
|||
|
|||
# warnings |
|||
|
|||
CFLAGS="$CFLAGS -msg_enable level6 -msg_fatal level6" |
|||
|
|||
CFLAGS="$CFLAGS -msg_disable unknownmacro" |
|||
CFLAGS="$CFLAGS -msg_disable unusedincl" |
|||
CFLAGS="$CFLAGS -msg_disable unnecincl" |
|||
CFLAGS="$CFLAGS -msg_disable nestincl" |
|||
CFLAGS="$CFLAGS -msg_disable strctpadding" |
|||
CFLAGS="$CFLAGS -msg_disable ansialiascast" |
|||
CFLAGS="$CFLAGS -msg_disable inlinestoclsmod" |
|||
CFLAGS="$CFLAGS -msg_disable cxxkeyword" |
|||
CFLAGS="$CFLAGS -msg_disable longlongsufx" |
|||
CFLAGS="$CFLAGS -msg_disable valuepres" |
|||
|
|||
# STUB |
|||
CFLAGS="$CFLAGS -msg_disable truncintcast" |
|||
CFLAGS="$CFLAGS -msg_disable trunclongcast" |
|||
|
|||
CFLAGS="$CFLAGS -msg_disable truncintasn" |
|||
CFLAGS="$CFLAGS -msg_disable trunclongint" |
|||
CFLAGS="$CFLAGS -msg_disable intconcastsgn" |
|||
CFLAGS="$CFLAGS -msg_disable intconstsign" |
|||
CFLAGS="$CFLAGS -msg_disable switchlong" |
|||
CFLAGS="$CFLAGS -msg_disable subscrbounds2" |
|||
|
|||
CFLAGS="$CFLAGS -msg_disable hexoctunsign" |
|||
|
|||
CFLAGS="$CFLAGS -msg_disable ignorecallval" |
|||
CFLAGS="$CFLAGS -msg_disable nonstandcast" |
|||
CFLAGS="$CFLAGS -msg_disable embedcomment" |
|||
CFLAGS="$CFLAGS -msg_disable unreachcode" |
|||
CFLAGS="$CFLAGS -msg_disable questcompare2" |
|||
CFLAGS="$CFLAGS -msg_disable unusedtop" |
|||
CFLAGS="$CFLAGS -msg_disable unrefdecl" |
|||
|
|||
CFLAGS="$CFLAGS -msg_disable bitnotint" |
@ -0,0 +1,98 @@ |
|||
|
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# clang |
|||
|
|||
|
|||
NGX_CLANG_VER=`$CC -v 2>&1 | grep '\(clang\|LLVM\) version' 2>&1 \ |
|||
| sed -e 's/^.* version \(.*\)/\1/'` |
|||
|
|||
echo " + clang version: $NGX_CLANG_VER" |
|||
|
|||
have=NGX_COMPILER value="\"clang $NGX_CLANG_VER\"" . auto/define |
|||
|
|||
|
|||
CC_TEST_FLAGS="-pipe" |
|||
|
|||
|
|||
# optimizations |
|||
|
|||
#NGX_CLANG_OPT="-O2" |
|||
#NGX_CLANG_OPT="-Oz" |
|||
NGX_CLANG_OPT="-O" |
|||
|
|||
case $CPU in |
|||
pentium) |
|||
# optimize for Pentium |
|||
CPU_OPT="-march=pentium" |
|||
NGX_CPU_CACHE_LINE=32 |
|||
;; |
|||
|
|||
pentiumpro | pentium3) |
|||
# optimize for Pentium Pro, Pentium II and Pentium III |
|||
CPU_OPT="-march=pentiumpro" |
|||
NGX_CPU_CACHE_LINE=32 |
|||
;; |
|||
|
|||
pentium4) |
|||
# optimize for Pentium 4 |
|||
CPU_OPT="-march=pentium4" |
|||
NGX_CPU_CACHE_LINE=128 |
|||
;; |
|||
|
|||
athlon) |
|||
# optimize for Athlon |
|||
CPU_OPT="-march=athlon" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
opteron) |
|||
# optimize for Opteron |
|||
CPU_OPT="-march=opteron" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
esac |
|||
|
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT" |
|||
|
|||
|
|||
CFLAGS="$CFLAGS -pipe $CPU_OPT" |
|||
|
|||
if [ ".$PCRE_OPT" = "." ]; then |
|||
PCRE_OPT="-O2 -pipe $CPU_OPT" |
|||
else |
|||
PCRE_OPT="$PCRE_OPT -pipe" |
|||
fi |
|||
|
|||
if [ ".$ZLIB_OPT" = "." ]; then |
|||
ZLIB_OPT="-O2 -pipe $CPU_OPT" |
|||
else |
|||
ZLIB_OPT="$ZLIB_OPT -pipe" |
|||
fi |
|||
|
|||
|
|||
# warnings |
|||
|
|||
CFLAGS="$CFLAGS $NGX_CLANG_OPT -Wall -Wextra -Wpointer-arith" |
|||
CFLAGS="$CFLAGS -Wconditional-uninitialized" |
|||
#CFLAGS="$CFLAGS -Wmissing-prototypes" |
|||
|
|||
# we have a lot of unused function arguments |
|||
CFLAGS="$CFLAGS -Wno-unused-parameter" |
|||
|
|||
# deprecated system OpenSSL library on OS X |
|||
if [ "$NGX_SYSTEM" = "Darwin" ]; then |
|||
CFLAGS="$CFLAGS -Wno-deprecated-declarations" |
|||
fi |
|||
|
|||
# stop on warning |
|||
CFLAGS="$CFLAGS -Werror" |
|||
|
|||
# debug |
|||
CFLAGS="$CFLAGS -g" |
|||
|
|||
if [ ".$CPP" = "." ]; then |
|||
CPP="$CC -E" |
|||
fi |
@ -0,0 +1,250 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
LINK="\$(CC)" |
|||
|
|||
MAIN_LINK= |
|||
MODULE_LINK="-shared" |
|||
|
|||
ngx_include_opt="-I " |
|||
ngx_compile_opt="-c" |
|||
ngx_pic_opt="-fPIC" |
|||
ngx_objout="-o " |
|||
ngx_binout="-o " |
|||
ngx_objext="o" |
|||
ngx_binext= |
|||
ngx_modext=".so" |
|||
|
|||
ngx_long_start= |
|||
ngx_long_end= |
|||
|
|||
ngx_regex_dirsep="\/" |
|||
ngx_dirsep='/' |
|||
|
|||
ngx_regex_cont=' \\\ |
|||
' |
|||
ngx_cont=' \ |
|||
' |
|||
ngx_tab=' \ |
|||
' |
|||
ngx_spacer= |
|||
|
|||
ngx_long_regex_cont=$ngx_regex_cont |
|||
ngx_long_cont=$ngx_cont |
|||
|
|||
. 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" |
|||
;; |
|||
|
|||
sunc) |
|||
|
|||
MAIN_LINK= |
|||
MODULE_LINK="-G" |
|||
|
|||
case "$NGX_MACHINE" in |
|||
|
|||
i86pc) |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il" |
|||
;; |
|||
|
|||
sun4u | sun4v) |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
case $CPU in |
|||
|
|||
amd64) |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il" |
|||
;; |
|||
|
|||
esac |
|||
;; |
|||
|
|||
esac |
|||
|
|||
else |
|||
|
|||
case $NGX_CC_NAME in |
|||
gcc) |
|||
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 |
|||
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2 |
|||
# 4.0.0, 4.0.1, 4.1.0 |
|||
|
|||
. auto/cc/gcc |
|||
;; |
|||
|
|||
clang) |
|||
# Clang C compiler |
|||
|
|||
. auto/cc/clang |
|||
;; |
|||
|
|||
icc) |
|||
# Intel C++ compiler 7.1, 8.0, 8.1 |
|||
|
|||
. auto/cc/icc |
|||
;; |
|||
|
|||
sunc) |
|||
# Sun C 5.7 Patch 117837-04 2005/05/11 |
|||
|
|||
. auto/cc/sunc |
|||
;; |
|||
|
|||
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, MSVC++ Toolkit 2003 |
|||
|
|||
. 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="$CC_TEST_FLAGS $NGX_CC_OPT" |
|||
|
|||
fi |
|||
|
|||
CFLAGS="$CFLAGS $NGX_CC_OPT" |
|||
NGX_TEST_LD_OPT="$NGX_LD_OPT" |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
|
|||
if test -n "$NGX_LD_OPT"; then |
|||
ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test= |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\" |
|||
echo |
|||
exit 1 |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="-Wl,-E switch" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs=-Wl,-E |
|||
ngx_feature_test= |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
MAIN_LINK="-Wl,-E" |
|||
fi |
|||
|
|||
|
|||
ngx_feature="gcc builtin atomic operations" |
|||
ngx_feature_name=NGX_HAVE_GCC_ATOMIC |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="long n = 0; |
|||
if (!__sync_bool_compare_and_swap(&n, 0, 1)) |
|||
return 1; |
|||
if (__sync_fetch_and_add(&n, 1) != 1) |
|||
return 1; |
|||
if (n != 2) |
|||
return 1; |
|||
__sync_synchronize();" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ "$NGX_CC_NAME" = "ccc" ]; then |
|||
echo "checking for C99 variadic macros ... disabled" |
|||
else |
|||
ngx_feature="C99 variadic macros" |
|||
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <stdio.h> |
|||
#define var(dummy, ...) sprintf(__VA_ARGS__)" |
|||
ngx_feature_path= |
|||
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 |
|||
|
|||
|
|||
ngx_feature="gcc variadic macros" |
|||
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <stdio.h> |
|||
#define var(dummy, args...) sprintf(args)" |
|||
ngx_feature_path= |
|||
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="gcc builtin 64 bit byteswap" |
|||
ngx_feature_name="NGX_HAVE_GCC_BSWAP64" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="if (__builtin_bswap64(0)) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
# ngx_feature="inline" |
|||
# ngx_feature_name= |
|||
# ngx_feature_run=no |
|||
# ngx_feature_incs="int inline f(void) { return 1 }" |
|||
# ngx_feature_path= |
|||
# ngx_feature_libs= |
|||
# ngx_feature_test= |
|||
# . auto/feature |
|||
# |
|||
# if [ $ngx_found = yes ]; then |
|||
# fi |
|||
|
|||
fi |
@ -0,0 +1,179 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 |
|||
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2 |
|||
# 4.0.0, 4.0.1, 4.1.0 |
|||
|
|||
|
|||
NGX_GCC_VER=`$CC -v 2>&1 | grep 'gcc version' 2>&1 \ |
|||
| sed -e 's/^.* version \(.*\)/\1/'` |
|||
|
|||
echo " + gcc version: $NGX_GCC_VER" |
|||
|
|||
have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define |
|||
|
|||
|
|||
# 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_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test= |
|||
. auto/feature |
|||
|
|||
CC_TEST_FLAGS= |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
PIPE="-pipe" |
|||
fi |
|||
|
|||
|
|||
case "$NGX_MACHINE" in |
|||
|
|||
sun4u | sun4v | sparc | sparc64 ) |
|||
# "-mcpu=v9" enables the "casa" assembler instruction |
|||
CFLAGS="$CFLAGS -mcpu=v9" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
# optimizations |
|||
|
|||
#NGX_GCC_OPT="-O2" |
|||
#NGX_GCC_OPT="-Os" |
|||
NGX_GCC_OPT="-O" |
|||
|
|||
#CFLAGS="$CFLAGS -fomit-frame-pointer" |
|||
|
|||
case $CPU in |
|||
pentium) |
|||
# optimize for Pentium and Athlon |
|||
CPU_OPT="-march=pentium" |
|||
NGX_CPU_CACHE_LINE=32 |
|||
;; |
|||
|
|||
pentiumpro | pentium3) |
|||
# optimize for Pentium Pro, Pentium II and Pentium III |
|||
CPU_OPT="-march=pentiumpro" |
|||
NGX_CPU_CACHE_LINE=32 |
|||
;; |
|||
|
|||
pentium4) |
|||
# optimize for Pentium 4, gcc 3.x |
|||
CPU_OPT="-march=pentium4" |
|||
NGX_CPU_CACHE_LINE=128 |
|||
;; |
|||
|
|||
athlon) |
|||
# optimize for Athlon, gcc 3.x |
|||
CPU_OPT="-march=athlon" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
opteron) |
|||
# optimize for Opteron, gcc 3.x |
|||
CPU_OPT="-march=opteron" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
sparc32) |
|||
# build 32-bit UltraSparc binary |
|||
CPU_OPT="-m32" |
|||
CORE_LINK="$CORE_LINK -m32" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
sparc64) |
|||
# build 64-bit UltraSparc binary |
|||
CPU_OPT="-m64" |
|||
CORE_LINK="$CORE_LINK -m64" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
ppc64) |
|||
# build 64-bit PowerPC binary |
|||
CPU_OPT="-m64" |
|||
CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32" |
|||
CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32" |
|||
CORE_LINK="$CORE_LINK -m64" |
|||
NGX_CPU_CACHE_LINE=128 |
|||
;; |
|||
|
|||
esac |
|||
|
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT" |
|||
|
|||
case "$NGX_GCC_VER" in |
|||
2.7*) |
|||
# batch build |
|||
CPU_OPT= |
|||
;; |
|||
esac |
|||
|
|||
|
|||
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 [ ".$ZLIB_OPT" = "." ]; then |
|||
ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" |
|||
else |
|||
ZLIB_OPT="$ZLIB_OPT $PIPE" |
|||
fi |
|||
|
|||
|
|||
# warnings |
|||
|
|||
# -W requires at least -O |
|||
CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W" |
|||
|
|||
CFLAGS="$CFLAGS -Wall -Wpointer-arith" |
|||
#CFLAGS="$CFLAGS -Wconversion" |
|||
#CFLAGS="$CFLAGS -Winline" |
|||
#CFLAGS="$CFLAGS -Wmissing-prototypes" |
|||
|
|||
case "$NGX_GCC_VER" in |
|||
2.*) |
|||
# we have a lot of the unused function arguments |
|||
CFLAGS="$CFLAGS -Wno-unused" |
|||
;; |
|||
|
|||
*) |
|||
# we have a lot of the unused function arguments |
|||
CFLAGS="$CFLAGS -Wno-unused-parameter" |
|||
# 4.2.1 shows the warning in wrong places |
|||
#CFLAGS="$CFLAGS -Wunreachable-code" |
|||
|
|||
# deprecated system OpenSSL library on OS X |
|||
if [ "$NGX_SYSTEM" = "Darwin" ]; then |
|||
CFLAGS="$CFLAGS -Wno-deprecated-declarations" |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
|
|||
# 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 |
@ -0,0 +1,117 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1 |
|||
|
|||
NGX_ICC_VER=`$CC -V 2>&1 | grep 'Version' 2>&1 \ |
|||
| sed -e 's/^.* Version \([^ ]*\) *Build.*$/\1/'` |
|||
|
|||
echo " + icc version: $NGX_ICC_VER" |
|||
|
|||
have=NGX_COMPILER value="\"Intel C Compiler $NGX_ICC_VER\"" . auto/define |
|||
|
|||
|
|||
# optimizations |
|||
|
|||
CFLAGS="$CFLAGS -O" |
|||
|
|||
CORE_LINK="$CORE_LINK -opt_report_file=$NGX_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 $CPU_OPT" |
|||
fi |
|||
|
|||
if [ ".$ZLIB_OPT" = "." ]; then |
|||
ZLIB_OPT="-O $CPU_OPT" |
|||
fi |
|||
|
|||
|
|||
# warnings |
|||
|
|||
CFLAGS="$CFLAGS -w2" |
|||
|
|||
# disable some warnings |
|||
|
|||
# invalid type conversion: "int" to "char *" |
|||
CFLAGS="$CFLAGS -wd171" |
|||
# argument is incompatible with corresponding format string conversion |
|||
CFLAGS="$CFLAGS -wd181" |
|||
# zero used for undefined preprocessing identifier |
|||
CFLAGS="$CFLAGS -wd193" |
|||
# the format string ends before this argument |
|||
CFLAGS="$CFLAGS -wd268" |
|||
# invalid format string conversion |
|||
CFLAGS="$CFLAGS -wd269" |
|||
# conversion from "long long" to "size_t" may lose significant bits |
|||
CFLAGS="$CFLAGS -wd810" |
|||
# parameter was never referenced |
|||
CFLAGS="$CFLAGS -wd869" |
|||
# attribute "unused" is only allowed in a function definition, warning on pTHX_ |
|||
CFLAGS="$CFLAGS -wd1301" |
|||
|
|||
# STUB |
|||
# enumerated type mixed with another type |
|||
CFLAGS="$CFLAGS -wd188" |
|||
# controlling expression is constant |
|||
CFLAGS="$CFLAGS -wd279" |
|||
# operands are evaluated in unspecified order |
|||
CFLAGS="$CFLAGS -wd981" |
|||
# external definition with no prior declaration |
|||
CFLAGS="$CFLAGS -wd1418" |
|||
# external declaration in primary source file |
|||
CFLAGS="$CFLAGS -wd1419" |
|||
|
|||
case "$NGX_ICC_VER" in |
|||
9.*) |
|||
# "cc" clobber ignored, warnings for Linux's htonl()/htons() |
|||
CFLAGS="$CFLAGS -wd1469" |
|||
# explicit conversion of a 64-bit integral type to a smaller |
|||
# integral type |
|||
CFLAGS="$CFLAGS -wd1683" |
|||
# conversion from pointer to same-sized integral type, |
|||
# warning on offsetof() |
|||
CFLAGS="$CFLAGS -wd1684" |
|||
# floating-point equality and inequality comparisons are unreliable, |
|||
# warning on SvTRUE() |
|||
CFLAGS="$CFLAGS -wd1572" |
|||
;; |
|||
|
|||
8.*) |
|||
# "cc" clobber ignored, warnings for Linux's htonl()/htons() |
|||
CFLAGS="$CFLAGS -wd1469" |
|||
# floating-point equality and inequality comparisons are unreliable, |
|||
# warning on SvTRUE() |
|||
CFLAGS="$CFLAGS -wd1572" |
|||
;; |
|||
|
|||
*) |
|||
;; |
|||
esac |
|||
|
|||
# stop on warning |
|||
CFLAGS="$CFLAGS -Werror" |
|||
|
|||
# debug |
|||
CFLAGS="$CFLAGS -g" |
@ -0,0 +1,157 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# MSVC 6.0 SP2 cl 12.00 |
|||
# MSVC Toolkit 2003 (7.1) cl 13.10 |
|||
# MSVC 2005 Express Edition SP1 (8.0) cl 14.00 |
|||
# MSVC 2008 Express Edition (9.0) cl 15.00 |
|||
# MSVC 2010 (10.0) cl 16.00 |
|||
# MSVC 2015 (14.0) cl 19.00 |
|||
|
|||
|
|||
NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \ |
|||
| sed -e 's/^.* Version \(.*\)/\1/'` |
|||
|
|||
echo " + cl version: $NGX_MSVC_VER" |
|||
|
|||
have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define |
|||
|
|||
|
|||
ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'` |
|||
|
|||
|
|||
# optimizations |
|||
|
|||
# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy |
|||
CFLAGS="$CFLAGS -O2" |
|||
|
|||
# enable global optimization |
|||
#CFLAGS="$CFLAGS -Og" |
|||
# enable intrinsic functions |
|||
#CFLAGS="$CFLAGS -Oi" |
|||
|
|||
# disable inline expansion |
|||
#CFLAGS="$CFLAGS -Ob0" |
|||
# explicit inline expansion |
|||
#CFLAGS="$CFLAGS -Ob1" |
|||
# explicit and implicit inline expansion |
|||
#CFLAGS="$CFLAGS -Ob2" |
|||
|
|||
# enable frame pointer omission |
|||
#CFLAGS="$CFLAGS -Oy" |
|||
# disable stack checking calls |
|||
#CFLAGS="$CFLAGS -Gs" |
|||
|
|||
# pools strings as read/write |
|||
#CFLAGS="$CFLAGS -Gf" |
|||
# pools strings as read-only |
|||
#CFLAGS="$CFLAGS -GF" |
|||
|
|||
|
|||
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, MSVC 7 |
|||
CPU_OPT="-G7" |
|||
;; |
|||
esac |
|||
|
|||
# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm |
|||
#CPU_OPT="$CPU_OPT -Gd" |
|||
# __stdcall |
|||
#CPU_OPT="$CPU_OPT -Gz" |
|||
# __fastcall |
|||
#CPU_OPT="$CPU_OPT -Gr" |
|||
|
|||
|
|||
CFLAGS="$CFLAGS $CPU_OPT" |
|||
|
|||
|
|||
# warnings |
|||
|
|||
CFLAGS="$CFLAGS -W4" |
|||
|
|||
# stop on warning |
|||
CFLAGS="$CFLAGS -WX" |
|||
|
|||
# disable logo |
|||
CFLAGS="$CFLAGS -nologo" |
|||
|
|||
# the link flags |
|||
CORE_LINK="$CORE_LINK -link -verbose:lib" |
|||
|
|||
# link with libcmt.lib, multithreaded |
|||
LIBC="-MT" |
|||
# link with msvcrt.dll |
|||
# however, MSVC Toolkit 2003 has no MSVCRT.LIB |
|||
#LIBC="-MD" |
|||
|
|||
CFLAGS="$CFLAGS $LIBC" |
|||
|
|||
CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib" |
|||
|
|||
# Win32 GUI mode application |
|||
#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup" |
|||
|
|||
# debug |
|||
# msvc under Wine issues |
|||
# C1902: Program database manager mismatch; please check your installation |
|||
if [ -z "$NGX_WINE" ]; then |
|||
CFLAGS="$CFLAGS -Zi" |
|||
CORE_LINK="$CORE_LINK -debug" |
|||
fi |
|||
|
|||
|
|||
# MSVC 2005 supports C99 variadic macros |
|||
if [ "$ngx_msvc_ver" -ge 14 ]; then |
|||
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have |
|||
fi |
|||
|
|||
|
|||
# precompiled headers |
|||
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch" |
|||
CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj" |
|||
NGX_PCH="$NGX_OBJS/ngx_config.pch" |
|||
NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch" |
|||
NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch" |
|||
|
|||
|
|||
# the resource file |
|||
NGX_RES="$NGX_OBJS/nginx.res" |
|||
NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC" |
|||
CORE_LINK="$NGX_RES $CORE_LINK" |
|||
|
|||
|
|||
# dynamic modules |
|||
#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def" |
|||
#MODULE_LINK="-LD $NGX_OBJS/nginx.lib" |
|||
|
|||
|
|||
ngx_pic_opt= |
|||
ngx_objout="-Fo" |
|||
ngx_binout="-Fe" |
|||
ngx_objext="obj" |
|||
ngx_binext=".exe" |
|||
|
|||
ngx_long_start='@<< |
|||
' |
|||
ngx_long_end='<<' |
|||
ngx_long_regex_cont=' \ |
|||
' |
|||
ngx_long_cont=' |
|||
' |
|||
|
|||
# MSVC understand / in path |
|||
#ngx_regex_dirsep='\\' |
|||
#ngx_dirsep="\\" |
@ -0,0 +1,66 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
|
|||
ngx_feature="C compiler" |
|||
ngx_feature_name= |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test= |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
echo |
|||
echo $0: error: C compiler $CC is not found |
|||
echo |
|||
exit 1 |
|||
fi |
|||
|
|||
fi |
|||
|
|||
|
|||
if [ "$CC" = cl ]; then |
|||
NGX_CC_NAME=msvc |
|||
echo " + using Microsoft Visual C++ compiler" |
|||
|
|||
elif [ "$CC" = wcl386 ]; then |
|||
NGX_CC_NAME=owc |
|||
echo " + using Open Watcom C compiler" |
|||
|
|||
elif [ "$CC" = bcc32 ]; then |
|||
NGX_CC_NAME=bcc |
|||
echo " + using Borland C++ compiler" |
|||
|
|||
elif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=icc |
|||
echo " + using Intel C++ compiler" |
|||
|
|||
elif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=gcc |
|||
echo " + using GNU C compiler" |
|||
|
|||
elif `$CC -v 2>&1 | grep '\(clang\|LLVM\) version' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=clang |
|||
echo " + using Clang C compiler" |
|||
|
|||
elif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=sunc |
|||
echo " + using Sun C compiler" |
|||
|
|||
elif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=ccc |
|||
echo " + using Compaq C compiler" |
|||
|
|||
elif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then |
|||
NGX_CC_NAME=acc |
|||
echo " + using HP aC++ compiler" |
|||
|
|||
else |
|||
NGX_CC_NAME=unknown |
|||
|
|||
fi |
@ -0,0 +1,104 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# Open Watcom C 1.0, 1.2, 1.3 |
|||
|
|||
# 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 |
|||
|
|||
# maximum level |
|||
CFLAGS="$CFLAGS -wx" |
|||
#CFLAGS="$CFLAGS -w3" |
|||
|
|||
# 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=NGX_HAVE_C99_VARIADIC_MACROS . auto/have |
|||
|
|||
|
|||
# the precompiled headers |
|||
#CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch" |
|||
#NGX_PCH="$NGX_OBJS/ngx_config.pch" |
|||
#NGX_BUILD_PCH="-fhq=$NGX_OBJS/ngx_config.pch" |
|||
#NGX_USE_PCH="-fh=$NGX_OBJS/ngx_config.pch" |
|||
|
|||
|
|||
# the link flags, built target is NT GUI mode application |
|||
#CORE_LINK="$CORE_LINK -l=nt_win" |
|||
|
|||
|
|||
# the resource file |
|||
NGX_RCC="wrc \$(CORE_INCS) -fo=$NGX_OBJS/nginx.res " |
|||
NGX_RCC="$NGX_RCC $NGX_WIN32_RC $NGX_OBJS/nginx.exe" |
|||
|
|||
|
|||
ngx_include_opt="-i=" |
|||
ngx_objout="-fo" |
|||
ngx_binout="-fe=" |
|||
ngx_objext="obj" |
|||
ngx_binext=".exe" |
|||
|
|||
ngx_regex_dirsep='\\' |
|||
ngx_dirsep="\\" |
|||
|
|||
ngx_long_start=' ' |
|||
ngx_long_end=' ' |
|||
ngx_long_regex_cont=' \&\ |
|||
' |
|||
ngx_long_cont=' & |
|||
' |
|||
|
|||
ngx_regex_cont=' \&\ |
|||
' |
|||
ngx_cont=' & |
|||
' |
|||
ngx_tab=' & |
|||
' |
@ -0,0 +1,160 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10 |
|||
# Sun C 5.8 2005/10/13 Sun Studio 11 |
|||
# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12 |
|||
# Sun C 5.9 SunOS_sparc 2007/05/03 |
|||
# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1 |
|||
# Sun C 5.11 SunOS_i386 2010/08/13 Sun Studio 12.2 |
|||
|
|||
NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \ |
|||
| sed -e 's/^.* Sun C \(.*\)/\1/'` |
|||
|
|||
echo " + Sun C version: $NGX_SUNC_VER" |
|||
|
|||
have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define |
|||
|
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
int main(void) { |
|||
printf("%d", __SUNPRO_C); |
|||
return 0; |
|||
} |
|||
|
|||
END |
|||
|
|||
eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1" |
|||
|
|||
if [ -x $NGX_AUTOTEST ]; then |
|||
ngx_sunc_ver=`$NGX_AUTOTEST` |
|||
fi |
|||
|
|||
rm -rf $NGX_AUTOTEST* |
|||
|
|||
# 1424 == 0x590, Sun Studio 12 |
|||
|
|||
if [ "$ngx_sunc_ver" -ge 1424 ]; then |
|||
ngx_sparc32="-m32" |
|||
ngx_sparc64="-m64" |
|||
ngx_amd64="-m64" |
|||
|
|||
else |
|||
ngx_sparc32="-xarch=v8plus" |
|||
ngx_sparc64="-xarch=v9" |
|||
ngx_amd64="-xarch=amd64" |
|||
fi |
|||
|
|||
case "$NGX_MACHINE" in |
|||
|
|||
i86pc) |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il" |
|||
;; |
|||
|
|||
sun4u | sun4v) |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
MAIN_LINK= |
|||
MODULE_LINK="-G" |
|||
|
|||
|
|||
# optimizations |
|||
|
|||
# 20736 == 0x5100, Sun Studio 12.1 |
|||
|
|||
if [ "$ngx_sunc_ver" -ge 20736 ]; then |
|||
ngx_fast="-fast" |
|||
|
|||
else |
|||
# older versions had problems with bit-fields |
|||
ngx_fast="-fast -xalias_level=any" |
|||
fi |
|||
|
|||
IPO=-xipo |
|||
CFLAGS="$CFLAGS $ngx_fast $IPO" |
|||
CORE_LINK="$CORE_LINK $ngx_fast $IPO" |
|||
|
|||
|
|||
case $CPU in |
|||
pentium) |
|||
# optimize for Pentium and Athlon |
|||
CPU_OPT="-xchip=pentium" |
|||
;; |
|||
|
|||
pentiumpro) |
|||
# optimize for Pentium Pro, Pentium II |
|||
CPU_OPT="-xchip=pentium_pro" |
|||
;; |
|||
|
|||
pentium3) |
|||
# optimize for Pentium III |
|||
CPU_OPT="-xchip=pentium3" |
|||
#CPU_OPT="$CPU_OPT -xarch=sse" |
|||
CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4" |
|||
;; |
|||
|
|||
pentium4) |
|||
# optimize for Pentium 4 |
|||
CPU_OPT="-xchip=pentium4" |
|||
#CPU_OPT="$CPU_OPT -xarch=sse2" |
|||
CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8" |
|||
;; |
|||
|
|||
opteron) |
|||
# optimize for Opteron |
|||
CPU_OPT="-xchip=opteron" |
|||
#CPU_OPT="$CPU_OPT -xarch=sse2" |
|||
CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16" |
|||
;; |
|||
|
|||
sparc32) |
|||
# build 32-bit UltraSparc binary |
|||
CPU_OPT="$ngx_sparc32" |
|||
CORE_LINK="$CORE_LINK $ngx_sparc32" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
sparc64) |
|||
# build 64-bit UltraSparc binary |
|||
CPU_OPT="$ngx_sparc64" |
|||
CORE_LINK="$CORE_LINK $ngx_sparc64" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
amd64) |
|||
# build 64-bit amd64 binary |
|||
CPU_OPT="$ngx_amd64" |
|||
CORE_LINK="$CORE_LINK $ngx_amd64" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64" |
|||
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il" |
|||
NGX_CPU_CACHE_LINE=64 |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
CFLAGS="$CFLAGS $CPU_OPT" |
|||
|
|||
|
|||
if [ ".$PCRE_OPT" = "." ]; then |
|||
PCRE_OPT="$ngx_fast $IPO $CPU_OPT" |
|||
fi |
|||
|
|||
if [ ".$ZLIB_OPT" = "." ]; then |
|||
ZLIB_OPT="$ngx_fast $IPO $CPU_OPT" |
|||
fi |
|||
|
|||
|
|||
# stop on warning |
|||
CFLAGS="$CFLAGS -errwarn=%all" |
|||
|
|||
# debug |
|||
CFLAGS="$CFLAGS -g" |
@ -0,0 +1,12 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#ifndef $have |
|||
#define $have $value |
|||
#endif |
|||
|
|||
END |
@ -0,0 +1,50 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo $ngx_n "checking for system byte ordering ...$ngx_c" |
|||
|
|||
cat << END >> $NGX_AUTOCONF_ERR |
|||
|
|||
---------------------------------------- |
|||
checking for system byte ordering |
|||
|
|||
END |
|||
|
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
int main(void) { |
|||
int i = 0x11223344; |
|||
char *p; |
|||
|
|||
p = (char *) &i; |
|||
if (*p == 0x44) return 0; |
|||
return 1; |
|||
} |
|||
|
|||
END |
|||
|
|||
ngx_test="$CC $CC_TEST_FLAGS $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_AUTOTEST >/dev/null 2>&1; then |
|||
echo " little endian" |
|||
have=NGX_HAVE_LITTLE_ENDIAN . auto/have |
|||
else |
|||
echo " big endian" |
|||
fi |
|||
|
|||
rm -rf $NGX_AUTOTEST* |
|||
|
|||
else |
|||
rm -rf $NGX_AUTOTEST* |
|||
|
|||
echo |
|||
echo "$0: error: cannot detect system byte ordering" |
|||
exit 1 |
|||
fi |
@ -0,0 +1,123 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo $ngx_n "checking for $ngx_feature ...$ngx_c" |
|||
|
|||
cat << END >> $NGX_AUTOCONF_ERR |
|||
|
|||
---------------------------------------- |
|||
checking for $ngx_feature |
|||
|
|||
END |
|||
|
|||
ngx_found=no |
|||
|
|||
if test -n "$ngx_feature_name"; then |
|||
ngx_have_feature=`echo $ngx_feature_name \ |
|||
| tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` |
|||
fi |
|||
|
|||
if test -n "$ngx_feature_path"; then |
|||
for ngx_temp in $ngx_feature_path; do |
|||
ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp" |
|||
done |
|||
fi |
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
#include <sys/types.h> |
|||
$NGX_INCLUDE_UNISTD_H |
|||
$ngx_feature_incs |
|||
|
|||
int main(void) { |
|||
$ngx_feature_test; |
|||
return 0; |
|||
} |
|||
|
|||
END |
|||
|
|||
|
|||
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \ |
|||
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs" |
|||
|
|||
ngx_feature_inc_path= |
|||
|
|||
eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1" |
|||
|
|||
|
|||
if [ -x $NGX_AUTOTEST ]; then |
|||
|
|||
case "$ngx_feature_run" in |
|||
|
|||
yes) |
|||
# /bin/sh is used to intercept "Killed" or "Abort trap" messages |
|||
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then |
|||
echo " found" |
|||
ngx_found=yes |
|||
|
|||
if test -n "$ngx_feature_name"; then |
|||
have=$ngx_have_feature . auto/have |
|||
fi |
|||
|
|||
else |
|||
echo " found but is not working" |
|||
fi |
|||
;; |
|||
|
|||
value) |
|||
# /bin/sh is used to intercept "Killed" or "Abort trap" messages |
|||
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then |
|||
echo " found" |
|||
ngx_found=yes |
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#ifndef $ngx_feature_name |
|||
#define $ngx_feature_name `$NGX_AUTOTEST` |
|||
#endif |
|||
|
|||
END |
|||
else |
|||
echo " found but is not working" |
|||
fi |
|||
;; |
|||
|
|||
bug) |
|||
# /bin/sh is used to intercept "Killed" or "Abort trap" messages |
|||
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then |
|||
echo " not found" |
|||
|
|||
else |
|||
echo " found" |
|||
ngx_found=yes |
|||
|
|||
if test -n "$ngx_feature_name"; then |
|||
have=$ngx_have_feature . auto/have |
|||
fi |
|||
fi |
|||
;; |
|||
|
|||
*) |
|||
echo " found" |
|||
ngx_found=yes |
|||
|
|||
if test -n "$ngx_feature_name"; then |
|||
have=$ngx_have_feature . auto/have |
|||
fi |
|||
;; |
|||
|
|||
esac |
|||
|
|||
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 -rf $NGX_AUTOTEST* |
@ -0,0 +1,12 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#ifndef $have |
|||
#define $have 1 |
|||
#endif |
|||
|
|||
END |
@ -0,0 +1,12 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_AUTO_HEADERS_H |
|||
|
|||
#ifndef $have |
|||
#define $have 1 |
|||
#endif |
|||
|
|||
END |
@ -0,0 +1,13 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, 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 |
|||
ngx_include="sys/param.h"; . auto/include |
|||
ngx_include="sys/mount.h"; . auto/include |
|||
ngx_include="sys/statvfs.h"; . auto/include |
|||
ngx_include="crypt.h"; . auto/include |
@ -0,0 +1,58 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
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 |
|||
|
|||
$NGX_INCLUDE_SYS_PARAM_H |
|||
#include <$ngx_include> |
|||
|
|||
int main(void) { |
|||
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 \ |
|||
| tr abcdefghijklmnopqrstuvwxyz/. ABCDEFGHIJKLMNOPQRSTUVWXYZ__` |
|||
|
|||
|
|||
have=NGX_HAVE_$ngx_name . auto/have_headers |
|||
|
|||
eval "NGX_INCLUDE_$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 -rf $NGX_AUTOTEST* |
@ -0,0 +1,51 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
NGX_MAKEFILE=$NGX_OBJS/Makefile |
|||
NGX_MODULES_C=$NGX_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=$NGX_OBJS/autotest |
|||
NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err |
|||
|
|||
# STUBs |
|||
NGX_ERR=$NGX_OBJS/autoconf.err |
|||
MAKEFILE=$NGX_OBJS/Makefile |
|||
|
|||
|
|||
NGX_PCH= |
|||
NGX_USE_PCH= |
|||
|
|||
|
|||
# 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= |
|||
fi |
|||
|
|||
else |
|||
ngx_n= |
|||
ngx_c='\c' |
|||
fi |
|||
|
|||
|
|||
# create Makefile |
|||
|
|||
cat << END > Makefile |
|||
|
|||
default: build |
|||
|
|||
clean: |
|||
rm -rf Makefile $NGX_OBJS |
|||
END |
@ -0,0 +1,218 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $USE_PERL != NO ]; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
install_perl_modules: |
|||
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) install |
|||
END |
|||
|
|||
NGX_INSTALL_PERL_MODULES=install_perl_modules |
|||
|
|||
fi |
|||
|
|||
|
|||
case ".$NGX_SBIN_PATH" in |
|||
./*) |
|||
;; |
|||
|
|||
*) |
|||
NGX_SBIN_PATH=$NGX_PREFIX/$NGX_SBIN_PATH |
|||
;; |
|||
esac |
|||
|
|||
|
|||
case ".$NGX_MODULES_PATH" in |
|||
./*) |
|||
;; |
|||
|
|||
*) |
|||
NGX_MODULES_PATH=$NGX_PREFIX/$NGX_MODULES_PATH |
|||
;; |
|||
esac |
|||
|
|||
NGX_MODULES_PATH=`dirname $NGX_MODULES_PATH/.` |
|||
|
|||
|
|||
case ".$NGX_CONF_PATH" in |
|||
./*) |
|||
;; |
|||
|
|||
*) |
|||
NGX_CONF_PATH=$NGX_PREFIX/$NGX_CONF_PATH |
|||
;; |
|||
esac |
|||
|
|||
|
|||
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH` |
|||
|
|||
|
|||
case ".$NGX_PID_PATH" in |
|||
./*) |
|||
;; |
|||
|
|||
*) |
|||
NGX_PID_PATH=$NGX_PREFIX/$NGX_PID_PATH |
|||
;; |
|||
esac |
|||
|
|||
|
|||
case ".$NGX_ERROR_LOG_PATH" in |
|||
./* | .) |
|||
;; |
|||
|
|||
*) |
|||
NGX_ERROR_LOG_PATH=$NGX_PREFIX/$NGX_ERROR_LOG_PATH |
|||
;; |
|||
esac |
|||
|
|||
|
|||
case ".$NGX_HTTP_LOG_PATH" in |
|||
./*) |
|||
;; |
|||
|
|||
*) |
|||
NGX_HTTP_LOG_PATH=$NGX_PREFIX/$NGX_HTTP_LOG_PATH |
|||
;; |
|||
esac |
|||
|
|||
|
|||
if test -f man/nginx.8 ; then |
|||
NGX_MAN=man/nginx.8 |
|||
else |
|||
NGX_MAN=docs/man/nginx.8 |
|||
fi |
|||
|
|||
if test -d html ; then |
|||
NGX_HTML=html |
|||
else |
|||
NGX_HTML=docs/html |
|||
fi |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
manpage: $NGX_OBJS/nginx.8 |
|||
|
|||
$NGX_OBJS/nginx.8: $NGX_MAN $NGX_AUTO_CONFIG_H |
|||
sed -e "s|%%PREFIX%%|$NGX_PREFIX|" \\ |
|||
-e "s|%%PID_PATH%%|$NGX_PID_PATH|" \\ |
|||
-e "s|%%CONF_PATH%%|$NGX_CONF_PATH|" \\ |
|||
-e "s|%%ERROR_LOG_PATH%%|${NGX_ERROR_LOG_PATH:-stderr}|" \\ |
|||
< $NGX_MAN > \$@ |
|||
|
|||
install: build $NGX_INSTALL_PERL_MODULES |
|||
test -d '\$(DESTDIR)$NGX_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_PREFIX' |
|||
|
|||
test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \\ |
|||
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' |
|||
test ! -f '\$(DESTDIR)$NGX_SBIN_PATH' \\ |
|||
|| mv '\$(DESTDIR)$NGX_SBIN_PATH' \\ |
|||
'\$(DESTDIR)$NGX_SBIN_PATH.old' |
|||
cp $NGX_OBJS/nginx '\$(DESTDIR)$NGX_SBIN_PATH' |
|||
|
|||
test -d '\$(DESTDIR)$NGX_CONF_PREFIX' \\ |
|||
|| mkdir -p '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
|
|||
cp conf/koi-win '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/koi-utf '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/win-utf '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types' \\ |
|||
|| cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types.default' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params' \\ |
|||
|| cp conf/fastcgi_params '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/fastcgi_params \\ |
|||
'\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params.default' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf' \\ |
|||
|| cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf.default' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params' \\ |
|||
|| cp conf/uwsgi_params '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/uwsgi_params \\ |
|||
'\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params.default' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params' \\ |
|||
|| cp conf/scgi_params '\$(DESTDIR)$NGX_CONF_PREFIX' |
|||
cp conf/scgi_params \\ |
|||
'\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params.default' |
|||
|
|||
test -f '\$(DESTDIR)$NGX_CONF_PATH' \\ |
|||
|| cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PATH' |
|||
cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PREFIX/nginx.conf.default' |
|||
|
|||
test -d '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' \\ |
|||
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' |
|||
|
|||
test -d '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' \\ |
|||
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' |
|||
|
|||
test -d '\$(DESTDIR)$NGX_PREFIX/html' \\ |
|||
|| cp -R $NGX_HTML '\$(DESTDIR)$NGX_PREFIX' |
|||
END |
|||
|
|||
|
|||
if test -n "$NGX_ERROR_LOG_PATH"; then |
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
test -d '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' \\ |
|||
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' |
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
if test -n "$DYNAMIC_MODULES"; then |
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
test -d '\$(DESTDIR)$NGX_MODULES_PATH' \\ |
|||
|| mkdir -p '\$(DESTDIR)$NGX_MODULES_PATH' |
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
for ngx_module in $DYNAMIC_MODULES |
|||
do |
|||
ngx_module=$ngx_module$ngx_modext |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
test ! -f '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\ |
|||
|| mv '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\ |
|||
'\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module.old' |
|||
cp $NGX_OBJS/$ngx_module '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' |
|||
END |
|||
|
|||
done |
|||
|
|||
|
|||
# create Makefile |
|||
|
|||
cat << END >> Makefile |
|||
|
|||
build: |
|||
\$(MAKE) -f $NGX_MAKEFILE |
|||
|
|||
install: |
|||
\$(MAKE) -f $NGX_MAKEFILE install |
|||
|
|||
modules: |
|||
\$(MAKE) -f $NGX_MAKEFILE modules |
|||
|
|||
upgrade: |
|||
$NGX_SBIN_PATH -t |
|||
|
|||
kill -USR2 \`cat $NGX_PID_PATH\` |
|||
sleep 1 |
|||
test -f $NGX_PID_PATH.oldbin |
|||
|
|||
kill -QUIT \`cat $NGX_PID_PATH.oldbin\` |
|||
END |
@ -0,0 +1,54 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $USE_PCRE = YES -o $PCRE != NONE ]; then |
|||
. auto/lib/pcre/conf |
|||
|
|||
else |
|||
if [ $USE_PCRE = DISABLED -a $HTTP_REWRITE = YES ]; then |
|||
|
|||
cat << END |
|||
|
|||
$0: error: the HTTP rewrite module requires the PCRE library. |
|||
You can either disable the module by using --without-http_rewrite_module |
|||
option or you have to enable the PCRE support. |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
fi |
|||
|
|||
|
|||
if [ $USE_OPENSSL = YES ]; then |
|||
. auto/lib/openssl/conf |
|||
fi |
|||
|
|||
if [ $USE_ZLIB = YES ]; then |
|||
. auto/lib/zlib/conf |
|||
fi |
|||
|
|||
if [ $USE_LIBXSLT != NO ]; then |
|||
. auto/lib/libxslt/conf |
|||
fi |
|||
|
|||
if [ $USE_LIBGD != NO ]; then |
|||
. auto/lib/libgd/conf |
|||
fi |
|||
|
|||
if [ $USE_PERL != NO ]; then |
|||
. auto/lib/perl/conf |
|||
fi |
|||
|
|||
if [ $USE_GEOIP != NO ]; then |
|||
. auto/lib/geoip/conf |
|||
fi |
|||
|
|||
if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then |
|||
. auto/lib/google-perftools/conf |
|||
fi |
|||
|
|||
if [ $NGX_LIBATOMIC != NO ]; then |
|||
. auto/lib/libatomic/conf |
|||
fi |
@ -0,0 +1,97 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
ngx_feature="GeoIP library" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <GeoIP.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-lGeoIP" |
|||
ngx_feature_test="GeoIP_open(NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="GeoIP library in /usr/local/" |
|||
ngx_feature_path="/usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lGeoIP" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="GeoIP library in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lGeoIP" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="GeoIP library in /opt/local/" |
|||
ngx_feature_path="/opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lGeoIP" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lGeoIP" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
|
|||
CORE_INCS="$CORE_INCS $ngx_feature_path" |
|||
|
|||
if [ $USE_GEOIP = YES ]; then |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
fi |
|||
|
|||
NGX_LIB_GEOIP=$ngx_feature_libs |
|||
|
|||
ngx_feature="GeoIP IPv6 support" |
|||
ngx_feature_name="NGX_HAVE_GEOIP_V6" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <stdio.h> |
|||
#include <GeoIP.h>" |
|||
#ngx_feature_path= |
|||
#ngx_feature_libs= |
|||
ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);" |
|||
. auto/feature |
|||
|
|||
else |
|||
|
|||
cat << END |
|||
|
|||
$0: error: the GeoIP module requires the GeoIP library. |
|||
You can either do not enable the module or install the library. |
|||
|
|||
END |
|||
|
|||
exit 1 |
|||
fi |
@ -0,0 +1,61 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
ngx_feature="Google perftools" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-lprofiler" |
|||
ngx_feature_test="ProfilerStop()" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="Google perftools in /usr/local/" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lprofiler" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lprofiler" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="Google perftools in /opt/local/" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lprofiler" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lprofiler" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
|
|||
else |
|||
|
|||
cat << END |
|||
|
|||
$0: error: the Google perftools module requires the Google perftools |
|||
library. You can either do not enable the module or install the library. |
|||
|
|||
END |
|||
|
|||
exit 1 |
|||
fi |
@ -0,0 +1,43 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $NGX_LIBATOMIC != YES ]; then |
|||
|
|||
have=NGX_HAVE_LIBATOMIC . auto/have |
|||
CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src" |
|||
LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/libatomic_ops.a" |
|||
CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/libatomic_ops.a" |
|||
|
|||
else |
|||
|
|||
ngx_feature="atomic_ops library" |
|||
ngx_feature_name=NGX_HAVE_LIBATOMIC |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#define AO_REQUIRE_CAS |
|||
#include <atomic_ops.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-latomic_ops" |
|||
ngx_feature_test="long n = 0; |
|||
if (!AO_compare_and_swap(&n, 0, 1)) |
|||
return 1; |
|||
if (AO_fetch_and_add(&n, 1) != 1) |
|||
return 1; |
|||
if (n != 2) |
|||
return 1; |
|||
AO_nop();" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
else |
|||
|
|||
cat << END |
|||
|
|||
$0: error: libatomic_ops library was not found. |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
fi |
@ -0,0 +1,16 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$NGX_LIBATOMIC/src/libatomic_ops.a: $NGX_LIBATOMIC/Makefile |
|||
cd $NGX_LIBATOMIC && \$(MAKE) |
|||
|
|||
$NGX_LIBATOMIC/Makefile: $NGX_MAKEFILE |
|||
cd $NGX_LIBATOMIC \\ |
|||
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\ |
|||
&& ./configure |
|||
|
|||
END |
@ -0,0 +1,93 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
ngx_feature="GD library" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <gd.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-lgd" |
|||
ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="GD library in /usr/local/" |
|||
ngx_feature_path="/usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lgd" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lgd" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="GD library in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lgd" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="GD library in /opt/local/" |
|||
ngx_feature_path="/opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lgd" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lgd" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
|
|||
CORE_INCS="$CORE_INCS $ngx_feature_path" |
|||
|
|||
if [ $USE_LIBGD = YES ]; then |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
fi |
|||
|
|||
NGX_LIB_LIBGD=$ngx_feature_libs |
|||
|
|||
ngx_feature="GD WebP support" |
|||
ngx_feature_name="NGX_HAVE_GD_WEBP" |
|||
ngx_feature_test="gdImagePtr img = gdImageCreateFromWebpPtr(1, NULL);" |
|||
. auto/feature |
|||
|
|||
else |
|||
|
|||
cat << END |
|||
|
|||
$0: error: the HTTP image filter module requires the GD library. |
|||
You can either do not enable the module or install the libraries. |
|||
|
|||
END |
|||
|
|||
exit 1 |
|||
|
|||
fi |
@ -0,0 +1,165 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
ngx_feature="libxslt" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <libxml/parser.h> |
|||
#include <libxml/tree.h> |
|||
#include <libxslt/xslt.h> |
|||
#include <libxslt/xsltInternals.h> |
|||
#include <libxslt/transform.h> |
|||
#include <libxslt/xsltutils.h>" |
|||
ngx_feature_path="/usr/include/libxml2" |
|||
ngx_feature_libs="-lxml2 -lxslt" |
|||
ngx_feature_test="xmlParserCtxtPtr ctxt = NULL; |
|||
xsltStylesheetPtr sheet = NULL; |
|||
xmlDocPtr doc; |
|||
doc = xmlParseChunk(ctxt, NULL, 0, 0); |
|||
xsltApplyStylesheet(sheet, doc, NULL);" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="libxslt in /usr/local/" |
|||
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lxml2 -lxslt" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lxml2 -lxslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="libxslt in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include/libxml2 /usr/pkg/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lxml2 -lxslt" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lxml2 -lxslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="libxslt in /opt/local/" |
|||
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lxml2 -lxslt" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lxml2 -lxslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
|
|||
CORE_INCS="$CORE_INCS $ngx_feature_path" |
|||
|
|||
if [ $USE_LIBXSLT = YES ]; then |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
fi |
|||
|
|||
NGX_LIB_LIBXSLT=$ngx_feature_libs |
|||
|
|||
else |
|||
|
|||
cat << END |
|||
|
|||
$0: error: the HTTP XSLT module requires the libxml2/libxslt |
|||
libraries. You can either do not enable the module or install the libraries. |
|||
|
|||
END |
|||
|
|||
exit 1 |
|||
fi |
|||
|
|||
|
|||
ngx_feature="libexslt" |
|||
ngx_feature_name=NGX_HAVE_EXSLT |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <libexslt/exslt.h>" |
|||
ngx_feature_path="/usr/include/libxml2" |
|||
ngx_feature_libs="-lexslt" |
|||
ngx_feature_test="exsltRegisterAll();" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="libexslt in /usr/local/" |
|||
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lexslt" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lexslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="libexslt in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include/libxml2 /usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lexslt" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lexslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="libexslt in /opt/local/" |
|||
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lexslt" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lexslt" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
if [ $USE_LIBXSLT = YES ]; then |
|||
CORE_LIBS="$CORE_LIBS -lexslt" |
|||
fi |
|||
|
|||
NGX_LIB_LIBXSLT="$NGX_LIB_LIBXSLT -lexslt" |
|||
fi |
@ -0,0 +1,24 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then |
|||
. auto/lib/pcre/make |
|||
fi |
|||
|
|||
if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then |
|||
. auto/lib/openssl/make |
|||
fi |
|||
|
|||
if [ $ZLIB != NONE -a $ZLIB != NO -a $ZLIB != YES ]; then |
|||
. auto/lib/zlib/make |
|||
fi |
|||
|
|||
if [ $NGX_LIBATOMIC != NO -a $NGX_LIBATOMIC != YES ]; then |
|||
. auto/lib/libatomic/make |
|||
fi |
|||
|
|||
if [ $USE_PERL != NO ]; then |
|||
. auto/lib/perl/make |
|||
fi |
@ -0,0 +1,135 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $OPENSSL != NONE ]; then |
|||
|
|||
case "$CC" in |
|||
|
|||
cl | bcc32) |
|||
have=NGX_OPENSSL . auto/have |
|||
have=NGX_SSL . auto/have |
|||
|
|||
CFLAGS="$CFLAGS -DNO_SYS_TYPES_H" |
|||
|
|||
CORE_INCS="$CORE_INCS $OPENSSL/openssl/include" |
|||
CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h" |
|||
|
|||
if [ -f $OPENSSL/ms/do_ms.bat ]; then |
|||
# before OpenSSL 1.1.0 |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib" |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib" |
|||
else |
|||
# OpenSSL 1.1.0+ |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib" |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib" |
|||
fi |
|||
|
|||
# libeay32.lib requires gdi32.lib |
|||
CORE_LIBS="$CORE_LIBS gdi32.lib" |
|||
# OpenSSL 1.0.0 requires crypt32.lib |
|||
CORE_LIBS="$CORE_LIBS crypt32.lib" |
|||
;; |
|||
|
|||
*) |
|||
have=NGX_OPENSSL . auto/have |
|||
have=NGX_SSL . auto/have |
|||
|
|||
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include" |
|||
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h" |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a" |
|||
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a" |
|||
CORE_LIBS="$CORE_LIBS $NGX_LIBDL" |
|||
|
|||
if [ "$NGX_PLATFORM" = win32 ]; then |
|||
CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32" |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
else |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
|
|||
OPENSSL=NO |
|||
|
|||
ngx_feature="OpenSSL library" |
|||
ngx_feature_name="NGX_OPENSSL" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <openssl/ssl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL" |
|||
ngx_feature_test="SSL_CTX_set_options(NULL, 0)" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="OpenSSL library in /usr/local/" |
|||
ngx_feature_path="/usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto $NGX_LIBDL" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto $NGX_LIBDL" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="OpenSSL library in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="OpenSSL library in /opt/local/" |
|||
ngx_feature_path="/opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto $NGX_LIBDL" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto $NGX_LIBDL" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
have=NGX_SSL . auto/have |
|||
CORE_INCS="$CORE_INCS $ngx_feature_path" |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
OPENSSL=YES |
|||
fi |
|||
fi |
|||
|
|||
if [ $OPENSSL != YES ]; then |
|||
|
|||
cat << END |
|||
|
|||
$0: error: SSL modules require the OpenSSL library. |
|||
You can either do not enable the modules, or install the OpenSSL library |
|||
into the system, or build the OpenSSL library statically from the source |
|||
with nginx by using --with-openssl=<path> option. |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
|
|||
fi |
@ -0,0 +1,62 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
case "$CC" in |
|||
|
|||
cl) |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE |
|||
\$(MAKE) -f auto/lib/openssl/makefile.msvc \ |
|||
OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT" |
|||
|
|||
END |
|||
|
|||
;; |
|||
|
|||
bcc32) |
|||
|
|||
ngx_opt=`echo "-DOPENSSL=\"$OPENSSL\" -DOPENSSL_OPT=\"$OPENSSL_OPT\"" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
`echo "$OPENSSL\\openssl\\lib\\libeay32.lib: \ |
|||
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
`echo "$OPENSSL\\openssl\\lib\\ssleay32.lib: \ |
|||
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
`echo "$OPENSSL\\openssl\\include\\openssl\\ssl.h: $NGX_MAKEFILE" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
\$(MAKE) -f auto/lib/openssl/makefile.bcc $ngx_opt |
|||
|
|||
END |
|||
|
|||
;; |
|||
|
|||
*) |
|||
case $OPENSSL in |
|||
/*) ngx_prefix="$OPENSSL/.openssl" ;; |
|||
*) ngx_prefix="$PWD/$OPENSSL/.openssl" ;; |
|||
esac |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE |
|||
cd $OPENSSL \\ |
|||
&& if [ -f Makefile ]; then \$(MAKE) clean; fi \\ |
|||
&& ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\ |
|||
&& \$(MAKE) \\ |
|||
&& \$(MAKE) install_sw LIBDIR=lib |
|||
|
|||
END |
|||
|
|||
;; |
|||
|
|||
esac |
@ -0,0 +1,18 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
all: |
|||
cd $(OPENSSL) |
|||
|
|||
perl Configure BC-32 no-shared --prefix=openssl $(OPENSSL_OPT) |
|||
|
|||
ms\do_nasm |
|||
|
|||
$(MAKE) -f ms\bcb.mak |
|||
$(MAKE) -f ms\bcb.mak install |
|||
|
|||
# Borland's make does not expand "[ch]" in |
|||
# copy "inc32\openssl\*.[ch]" "openssl\include\openssl" |
|||
copy inc32\openssl\*.h openssl\include\openssl |
@ -0,0 +1,21 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
all: |
|||
cd $(OPENSSL) |
|||
|
|||
perl Configure VC-WIN32 no-shared \ |
|||
--prefix="%cd%/openssl" \ |
|||
--openssldir="%cd%/openssl/ssl" \ |
|||
$(OPENSSL_OPT) |
|||
|
|||
if exist ms\do_ms.bat ( \ |
|||
ms\do_ms \ |
|||
&& $(MAKE) -f ms\nt.mak \ |
|||
&& $(MAKE) -f ms\nt.mak install \ |
|||
) else ( \ |
|||
$(MAKE) \ |
|||
&& $(MAKE) install_sw \ |
|||
) |
@ -0,0 +1,203 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $PCRE != NONE ]; then |
|||
CORE_INCS="$CORE_INCS $PCRE" |
|||
|
|||
case "$NGX_CC_NAME" in |
|||
|
|||
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=NGX_PCRE . auto/have |
|||
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" |
|||
|
|||
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a" |
|||
|
|||
echo $ngx_n "checking for PCRE library ...$ngx_c" |
|||
|
|||
if [ -f $PCRE/pcre.h ]; then |
|||
ngx_pcre_ver=`grep PCRE_MAJOR $PCRE/pcre.h \ |
|||
| sed -e 's/^.*PCRE_MAJOR.* \(.*\)$/\1/'` |
|||
|
|||
else if [ -f $PCRE/configure.in ]; then |
|||
ngx_pcre_ver=`grep PCRE_MAJOR= $PCRE/configure.in \ |
|||
| sed -e 's/^.*=\(.*\)$/\1/'` |
|||
|
|||
else |
|||
ngx_pcre_ver=`grep pcre_major, $PCRE/configure.ac \ |
|||
| sed -e 's/^.*pcre_major,.*\[\(.*\)\].*$/\1/'` |
|||
fi |
|||
fi |
|||
|
|||
echo " $ngx_pcre_ver major version found" |
|||
|
|||
# to allow -ipo optimization we link with the *.o but not library |
|||
|
|||
case "$ngx_pcre_ver" in |
|||
4|5) |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre.o" |
|||
;; |
|||
|
|||
6) |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_chartables.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_compile.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_exec.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_fullinfo.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_globals.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_tables.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_try_flipped.o" |
|||
;; |
|||
|
|||
*) |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_chartables.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_compile.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_exec.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_fullinfo.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_globals.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_tables.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_try_flipped.o" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/pcre_newline.o" |
|||
;; |
|||
|
|||
esac |
|||
;; |
|||
|
|||
*) |
|||
have=NGX_PCRE . auto/have |
|||
|
|||
if [ "$NGX_PLATFORM" = win32 ]; then |
|||
have=PCRE_STATIC . auto/have |
|||
fi |
|||
|
|||
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" |
|||
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a" |
|||
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
if [ $PCRE_JIT = YES ]; then |
|||
have=NGX_HAVE_PCRE_JIT . auto/have |
|||
PCRE_CONF_OPT="$PCRE_CONF_OPT --enable-jit" |
|||
fi |
|||
|
|||
else |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
|
|||
PCRE=NO |
|||
|
|||
ngx_feature="PCRE library" |
|||
ngx_feature_name="NGX_PCRE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <pcre.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs="-lpcre" |
|||
ngx_feature_test="pcre *re; |
|||
re = pcre_compile(NULL, 0, NULL, 0, NULL); |
|||
if (re == NULL) return 1" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# FreeBSD port |
|||
|
|||
ngx_feature="PCRE library in /usr/local/" |
|||
ngx_feature_path="/usr/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lpcre" |
|||
else |
|||
ngx_feature_libs="-L/usr/local/lib -lpcre" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# RedHat RPM, Solaris package |
|||
|
|||
ngx_feature="PCRE library in /usr/include/pcre/" |
|||
ngx_feature_path="/usr/include/pcre" |
|||
ngx_feature_libs="-lpcre" |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# NetBSD port |
|||
|
|||
ngx_feature="PCRE library in /usr/pkg/" |
|||
ngx_feature_path="/usr/pkg/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lpcre" |
|||
else |
|||
ngx_feature_libs="-L/usr/pkg/lib -lpcre" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# MacPorts |
|||
|
|||
ngx_feature="PCRE library in /opt/local/" |
|||
ngx_feature_path="/opt/local/include" |
|||
|
|||
if [ $NGX_RPATH = YES ]; then |
|||
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lpcre" |
|||
else |
|||
ngx_feature_libs="-L/opt/local/lib -lpcre" |
|||
fi |
|||
|
|||
. auto/feature |
|||
fi |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_INCS="$CORE_INCS $ngx_feature_path" |
|||
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
|||
PCRE=YES |
|||
fi |
|||
|
|||
if [ $PCRE = YES ]; then |
|||
ngx_feature="PCRE JIT support" |
|||
ngx_feature_name="NGX_HAVE_PCRE_JIT" |
|||
ngx_feature_test="int jit = 0; |
|||
pcre_free_study(NULL); |
|||
pcre_config(PCRE_CONFIG_JIT, &jit); |
|||
if (jit != 1) return 1;" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
PCRE_JIT=YES |
|||
fi |
|||
fi |
|||
fi |
|||
|
|||
if [ $PCRE != YES ]; then |
|||
cat << END |
|||
|
|||
$0: error: the HTTP rewrite module requires the PCRE library. |
|||
You can either disable the module by using --without-http_rewrite_module |
|||
option, or install the PCRE library into the system, or build the PCRE library |
|||
statically from the source with nginx by using --with-pcre=<path> option. |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
|
|||
fi |
@ -0,0 +1,64 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
case "$NGX_CC_NAME" in |
|||
|
|||
msvc) |
|||
ngx_makefile=makefile.msvc |
|||
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC" |
|||
ngx_pcre="PCRE=\"$PCRE\"" |
|||
;; |
|||
|
|||
owc) |
|||
ngx_makefile=makefile.owc |
|||
ngx_opt="CPU_OPT=\"$CPU_OPT\"" |
|||
ngx_pcre=`echo PCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
|
|||
bcc) |
|||
ngx_makefile=makefile.bcc |
|||
ngx_opt="-DCPU_OPT=\"$CPU_OPT\"" |
|||
ngx_pcre=`echo \-DPCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
|
|||
*) |
|||
ngx_makefile= |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
if [ -n "$ngx_makefile" ]; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
`echo "$PCRE/pcre.lib: $PCRE/pcre.h $NGX_MAKEFILE" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
\$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre $ngx_opt |
|||
|
|||
`echo "$PCRE/pcre.h:" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
\$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre pcre.h |
|||
|
|||
END |
|||
|
|||
else |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$PCRE/pcre.h: $PCRE/Makefile |
|||
|
|||
$PCRE/Makefile: $NGX_MAKEFILE |
|||
cd $PCRE \\ |
|||
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\ |
|||
&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\ |
|||
./configure --disable-shared $PCRE_CONF_OPT |
|||
|
|||
$PCRE/.libs/libpcre.a: $PCRE/Makefile |
|||
cd $PCRE \\ |
|||
&& \$(MAKE) libpcre.la |
|||
|
|||
END |
|||
|
|||
fi |
@ -0,0 +1,27 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT) |
|||
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \ |
|||
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE |
|||
|
|||
|
|||
pcre.lib: |
|||
cd $(PCRE) |
|||
|
|||
bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c |
|||
|
|||
copy /y nul pcre.lst |
|||
for %n in (*.obj) do @echo +%n ^^& >> pcre.lst |
|||
echo + >> pcre.lst |
|||
|
|||
tlib pcre.lib @pcre.lst |
|||
|
|||
pcre.h: |
|||
cd $(PCRE) |
|||
|
|||
copy /y pcre.h.generic pcre.h |
|||
copy /y config.h.generic config.h |
|||
copy /y pcre_chartables.c.dist pcre_chartables.c |
@ -0,0 +1,23 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) |
|||
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \ |
|||
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE |
|||
|
|||
|
|||
pcre.lib: |
|||
cd $(PCRE) |
|||
|
|||
cl -nologo -c $(CFLAGS) -I . $(PCREFLAGS) pcre_*.c |
|||
|
|||
link -lib -out:pcre.lib -verbose:lib pcre_*.obj |
|||
|
|||
pcre.h: |
|||
cd $(PCRE) |
|||
|
|||
copy /y pcre.h.generic pcre.h |
|||
copy /y config.h.generic config.h |
|||
copy /y pcre_chartables.c.dist pcre_chartables.c |
@ -0,0 +1,25 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT) |
|||
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 & |
|||
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE |
|||
|
|||
|
|||
pcre.lib: |
|||
cd $(PCRE) |
|||
|
|||
wcl386 $(CFLAGS) -i=. $(PCREFLAGS) pcre_*.c |
|||
|
|||
dir /b *.obj > pcre.lst |
|||
|
|||
wlib -n pcre.lib @pcre.lst |
|||
|
|||
pcre.h: |
|||
cd $(PCRE) |
|||
|
|||
copy /y pcre.h.generic pcre.h |
|||
copy /y config.h.generic config.h |
|||
copy /y pcre_chartables.c.dist pcre_chartables.c |
@ -0,0 +1,83 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo "checking for perl" |
|||
|
|||
|
|||
NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \ |
|||
| sed -e 's/^This is perl, \(.*\)/\1/'` |
|||
|
|||
if test -n "$NGX_PERL_VER"; then |
|||
echo " + perl version: $NGX_PERL_VER" |
|||
|
|||
if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then |
|||
echo |
|||
echo "$0: error: perl 5.8.6 or higher is required" |
|||
echo |
|||
|
|||
exit 1; |
|||
fi |
|||
|
|||
if [ "`$NGX_PERL -MExtUtils::Embed -e 'print "OK"'`" != "OK" ]; then |
|||
echo |
|||
echo "$0: error: perl module ExtUtils::Embed is required" |
|||
echo |
|||
|
|||
exit 1; |
|||
fi |
|||
|
|||
NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts` |
|||
NGX_PM_LDFLAGS=`$NGX_PERL -MConfig -e 'print $Config{lddlflags}'` |
|||
|
|||
NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`" |
|||
|
|||
# gcc 4.1/4.2 warn about unused values in pTHX_ |
|||
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \ |
|||
| sed -e 's/-Wunused-value/-Wno-unused-value/'` |
|||
# icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE |
|||
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \ |
|||
| sed -e 's/-wd171/-wd171 -wd1599/'` |
|||
|
|||
ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts` |
|||
|
|||
ngx_perl_dlext=`$NGX_PERL -MConfig -e 'print $Config{dlext}'` |
|||
ngx_perl_libdir="src/http/modules/perl/blib/arch/auto" |
|||
ngx_perl_module="$ngx_perl_libdir/nginx/nginx.$ngx_perl_dlext" |
|||
|
|||
if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then |
|||
have=NGX_HAVE_PERL_MULTIPLICITY . auto/have |
|||
echo " + perl interpreter multiplicity found" |
|||
fi |
|||
|
|||
if $NGX_PERL -V:useithreads | grep undef > /dev/null; then |
|||
# FreeBSD port wants to link with -pthread non-threaded perl |
|||
ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'` |
|||
fi |
|||
|
|||
if [ "$NGX_SYSTEM" = "Darwin" ]; then |
|||
# OS X system perl wants to link universal binaries |
|||
ngx_perl_ldopts=`echo $ngx_perl_ldopts \ |
|||
| sed -e 's/-arch i386//' -e 's/-arch x86_64//'` |
|||
fi |
|||
|
|||
if [ $USE_PERL = YES ]; then |
|||
CORE_LINK="$CORE_LINK $ngx_perl_ldopts" |
|||
fi |
|||
|
|||
NGX_LIB_PERL="$ngx_perl_ldopts" |
|||
|
|||
if test -n "$NGX_PERL_MODULES"; then |
|||
have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\"" |
|||
. auto/define |
|||
NGX_PERL_MODULES_MAN=$NGX_PERL_MODULES/man3 |
|||
fi |
|||
|
|||
else |
|||
echo |
|||
echo "$0: error: perl 5.8.6 or higher is required" |
|||
echo |
|||
|
|||
exit 1; |
|||
fi |
@ -0,0 +1,46 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\ |
|||
$NGX_OBJS/$ngx_perl_module |
|||
|
|||
$NGX_OBJS/$ngx_perl_module: \\ |
|||
\$(CORE_DEPS) \$(HTTP_DEPS) \\ |
|||
src/http/modules/perl/ngx_http_perl_module.h \\ |
|||
$NGX_OBJS/src/http/modules/perl/Makefile |
|||
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) |
|||
|
|||
rm -rf $NGX_OBJS/install_perl |
|||
|
|||
|
|||
$NGX_OBJS/src/http/modules/perl/Makefile: \\ |
|||
$NGX_AUTO_CONFIG_H \\ |
|||
src/core/nginx.h \\ |
|||
src/http/modules/perl/Makefile.PL \\ |
|||
src/http/modules/perl/nginx.pm \\ |
|||
src/http/modules/perl/nginx.xs \\ |
|||
src/http/modules/perl/typemap |
|||
grep 'define NGINX_VERSION' src/core/nginx.h \\ |
|||
| sed -e 's/^.*"\(.*\)".*/\1/' > \\ |
|||
$NGX_OBJS/src/http/modules/perl/version |
|||
sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\ |
|||
src/http/modules/perl/nginx.pm > \\ |
|||
$NGX_OBJS/src/http/modules/perl/nginx.pm |
|||
cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/ |
|||
cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/ |
|||
cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/ |
|||
|
|||
cd $NGX_OBJS/src/http/modules/perl \\ |
|||
&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\ |
|||
NGX_PM_LDFLAGS="$NGX_LD_OPT \$(NGX_PM_LDFLAGS)" \\ |
|||
NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\ |
|||
NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\ |
|||
$NGX_PERL Makefile.PL \\ |
|||
LIB=$NGX_PERL_MODULES \\ |
|||
INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN |
|||
|
|||
END |
@ -0,0 +1,79 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $ZLIB != NONE ]; then |
|||
CORE_INCS="$CORE_INCS $ZLIB" |
|||
|
|||
case "$NGX_CC_NAME" in |
|||
|
|||
msvc | owc | bcc) |
|||
have=NGX_ZLIB . auto/have |
|||
LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib" |
|||
;; |
|||
|
|||
icc) |
|||
have=NGX_ZLIB . auto/have |
|||
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" |
|||
|
|||
# to allow -ipo optimization we link with the *.o but not library |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/adler32.o" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/crc32.o" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/deflate.o" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/trees.o" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/zutil.o" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/compress.o" |
|||
|
|||
if [ $ZLIB_ASM != NO ]; then |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/match.o" |
|||
fi |
|||
;; |
|||
|
|||
*) |
|||
have=NGX_ZLIB . auto/have |
|||
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" |
|||
CORE_LIBS="$CORE_LIBS $ZLIB/libz.a" |
|||
#CORE_LIBS="$CORE_LIBS -L $ZLIB -lz" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
else |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
ZLIB=NO |
|||
|
|||
# FreeBSD, Solaris, Linux |
|||
|
|||
ngx_feature="zlib library" |
|||
ngx_feature_name="NGX_ZLIB" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <zlib.h>" |
|||
ngx_feature_path= |
|||
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_feature_libs" |
|||
ZLIB=YES |
|||
ngx_found=no |
|||
fi |
|||
fi |
|||
|
|||
if [ $ZLIB != YES ]; then |
|||
cat << END |
|||
|
|||
$0: error: the HTTP gzip module requires the zlib library. |
|||
You can either disable the module by using --without-http_gzip_module |
|||
option, or install the zlib library into the system, or build the zlib library |
|||
statically from the source with nginx by using --with-zlib=<path> option. |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
|
|||
fi |
@ -0,0 +1,135 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
case "$NGX_CC_NAME" in |
|||
|
|||
msvc) |
|||
ngx_makefile=makefile.msvc |
|||
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC" |
|||
ngx_zlib="ZLIB=\"$ZLIB\"" |
|||
|
|||
;; |
|||
|
|||
owc) |
|||
ngx_makefile=makefile.owc |
|||
ngx_opt="CPU_OPT=\"$CPU_OPT\"" |
|||
ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
|
|||
bcc) |
|||
ngx_makefile=makefile.bcc |
|||
ngx_opt="-DCPU_OPT=\"$CPU_OPT\"" |
|||
ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
|
|||
*) |
|||
ngx_makefile= |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
done=NO |
|||
|
|||
|
|||
case "$NGX_PLATFORM" in |
|||
|
|||
win32) |
|||
|
|||
if [ -n "$ngx_makefile" ]; then |
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
`echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib |
|||
|
|||
END |
|||
|
|||
else |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ZLIB/libz.a: $NGX_MAKEFILE |
|||
cd $ZLIB \\ |
|||
&& \$(MAKE) distclean \\ |
|||
&& \$(MAKE) -f win32/Makefile.gcc \\ |
|||
CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\ |
|||
libz.a |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
done=YES |
|||
;; |
|||
|
|||
# FreeBSD: i386 |
|||
# Linux: i686 |
|||
|
|||
*:i386 | *:i686) |
|||
case $ZLIB_ASM in |
|||
pentium) |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ZLIB/libz.a: $NGX_MAKEFILE |
|||
cd $ZLIB \\ |
|||
&& \$(MAKE) distclean \\ |
|||
&& cp contrib/asm586/match.S . \\ |
|||
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\ |
|||
./configure \\ |
|||
&& \$(MAKE) OBJA=match.o libz.a |
|||
|
|||
END |
|||
|
|||
done=YES |
|||
;; |
|||
|
|||
pentiumpro) |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ZLIB/libz.a: $NGX_MAKEFILE |
|||
cd $ZLIB \\ |
|||
&& \$(MAKE) distclean \\ |
|||
&& cp contrib/asm686/match.S . \\ |
|||
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\ |
|||
./configure \\ |
|||
&& \$(MAKE) OBJA=match.o libz.a |
|||
|
|||
END |
|||
|
|||
done=YES |
|||
;; |
|||
|
|||
NO) |
|||
;; |
|||
|
|||
*) |
|||
echo "$0: error: invalid --with-zlib-asm=$ZLIB_ASM option." |
|||
echo "The valid values are \"pentium\" and \"pentiumpro\" only". |
|||
echo |
|||
|
|||
exit 1; |
|||
;; |
|||
esac |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
if [ $done = NO ]; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ZLIB/libz.a: $NGX_MAKEFILE |
|||
cd $ZLIB \\ |
|||
&& \$(MAKE) distclean \\ |
|||
&& CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\ |
|||
./configure \\ |
|||
&& \$(MAKE) libz.a |
|||
|
|||
END |
|||
|
|||
fi |
@ -0,0 +1,17 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT) |
|||
|
|||
zlib.lib: |
|||
cd $(ZLIB) |
|||
|
|||
bcc32 -c $(CFLAGS) adler32.c crc32.c deflate.c \ |
|||
trees.c zutil.c compress.c \ |
|||
inflate.c inffast.c inftrees.c |
|||
|
|||
tlib zlib.lib +adler32.obj +crc32.obj +deflate.obj \ |
|||
+trees.obj +zutil.obj +compress.obj \ |
|||
+inflate.obj +inffast.obj +inftrees.obj |
@ -0,0 +1,17 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) |
|||
|
|||
zlib.lib: |
|||
cd $(ZLIB) |
|||
|
|||
cl -c $(CFLAGS) adler32.c crc32.c deflate.c \ |
|||
trees.c zutil.c compress.c \ |
|||
inflate.c inffast.c inftrees.c |
|||
|
|||
link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \ |
|||
trees.obj zutil.obj compress.obj \ |
|||
inflate.obj inffast.obj inftrees.obj |
@ -0,0 +1,14 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT) |
|||
|
|||
zlib.lib: |
|||
cd $(ZLIB) |
|||
|
|||
wcl386 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c & |
|||
compress.c inflate.c inffast.c inftrees.c |
|||
wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj & |
|||
zutil.obj compress.obj inflate.obj inffast.obj inftrees.obj |
@ -0,0 +1,672 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo "creating $NGX_MAKEFILE" |
|||
|
|||
mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \ |
|||
$NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \ |
|||
$NGX_OBJS/src/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/modules \ |
|||
$NGX_OBJS/src/http/modules/perl \ |
|||
$NGX_OBJS/src/mail \ |
|||
$NGX_OBJS/src/stream \ |
|||
$NGX_OBJS/src/misc |
|||
|
|||
|
|||
ngx_objs_dir=$NGX_OBJS$ngx_regex_dirsep |
|||
ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
|
|||
cat << END > $NGX_MAKEFILE |
|||
|
|||
CC = $CC |
|||
CFLAGS = $CFLAGS |
|||
CPP = $CPP |
|||
LINK = $LINK |
|||
|
|||
END |
|||
|
|||
|
|||
if test -n "$NGX_PERL_CFLAGS"; then |
|||
echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE |
|||
echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE |
|||
echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE |
|||
fi |
|||
|
|||
|
|||
# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers |
|||
|
|||
ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS $STREAM_INCS\ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
ALL_INCS = $ngx_include_opt$ngx_incs |
|||
|
|||
END |
|||
|
|||
|
|||
ngx_all_srcs="$CORE_SRCS" |
|||
|
|||
|
|||
# the core dependencies and include paths |
|||
|
|||
ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_incs=`echo $CORE_INCS $NGX_OBJS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
CORE_DEPS = $ngx_deps |
|||
|
|||
|
|||
CORE_INCS = $ngx_include_opt$ngx_incs |
|||
|
|||
END |
|||
|
|||
|
|||
# the http dependencies and include paths |
|||
|
|||
if [ $HTTP = YES ]; then |
|||
|
|||
ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS" |
|||
|
|||
ngx_deps=`echo $HTTP_DEPS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_incs=`echo $HTTP_INCS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
HTTP_DEPS = $ngx_deps |
|||
|
|||
|
|||
HTTP_INCS = $ngx_include_opt$ngx_incs |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
# the mail dependencies and include paths |
|||
|
|||
if [ $MAIL != NO ]; then |
|||
|
|||
if [ $MAIL = YES ]; then |
|||
ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS" |
|||
fi |
|||
|
|||
ngx_deps=`echo $MAIL_DEPS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_incs=`echo $MAIL_INCS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
MAIL_DEPS = $ngx_deps |
|||
|
|||
|
|||
MAIL_INCS = $ngx_include_opt$ngx_incs |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
# the stream dependencies and include paths |
|||
|
|||
if [ $STREAM != NO ]; then |
|||
|
|||
if [ $STREAM = YES ]; then |
|||
ngx_all_srcs="$ngx_all_srcs $STREAM_SRCS" |
|||
fi |
|||
|
|||
ngx_deps=`echo $STREAM_DEPS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_incs=`echo $STREAM_INCS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
STREAM_DEPS = $ngx_deps |
|||
|
|||
|
|||
STREAM_INCS = $ngx_include_opt$ngx_incs |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
ngx_all_srcs="$ngx_all_srcs $MISC_SRCS" |
|||
|
|||
|
|||
if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
ADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
# nginx |
|||
|
|||
ngx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
for ngx_src in $NGX_ADDON_SRCS |
|||
do |
|||
ngx_obj="addon/`basename \`dirname $ngx_src\``" |
|||
|
|||
test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj |
|||
|
|||
ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_all_srcs="$ngx_all_srcs $ngx_obj" |
|||
done |
|||
|
|||
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_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` |
|||
|
|||
|
|||
if test -n "$NGX_RES"; then |
|||
ngx_res=$NGX_RES |
|||
else |
|||
ngx_res="$NGX_RC $NGX_ICONS" |
|||
ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
fi |
|||
|
|||
ngx_deps=`echo $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_libs= |
|||
if test -n "$NGX_LD_OPT$CORE_LIBS"; then |
|||
ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` |
|||
fi |
|||
|
|||
ngx_link=${CORE_LINK:+`echo $CORE_LINK \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} |
|||
|
|||
ngx_main_link=${MAIN_LINK:+`echo $MAIN_LINK \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} |
|||
|
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
build: binary modules manpage |
|||
|
|||
binary: $NGX_OBJS${ngx_dirsep}nginx$ngx_binext |
|||
|
|||
$NGX_OBJS${ngx_dirsep}nginx$ngx_binext: $ngx_deps$ngx_spacer |
|||
\$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link |
|||
$ngx_rcc |
|||
$ngx_long_end |
|||
|
|||
modules: |
|||
END |
|||
|
|||
|
|||
# ngx_modules.c |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
else |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)" |
|||
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$NGX_AUX |
|||
|
|||
END |
|||
|
|||
|
|||
# the core sources |
|||
|
|||
for ngx_src in $CORE_SRCS |
|||
do |
|||
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$NGX_AUX |
|||
|
|||
END |
|||
|
|||
done |
|||
|
|||
|
|||
# the http sources |
|||
|
|||
if [ $HTTP = YES ]; then |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
else |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)" |
|||
ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)" |
|||
ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)" |
|||
fi |
|||
|
|||
for ngx_source in $HTTP_SRCS |
|||
do |
|||
ngx_src=`echo $ngx_source | 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"` |
|||
|
|||
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src |
|||
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
else |
|||
|
|||
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$NGX_AUX |
|||
|
|||
END |
|||
|
|||
fi |
|||
done |
|||
|
|||
fi |
|||
|
|||
|
|||
# the mail sources |
|||
|
|||
if [ $MAIL = YES ]; then |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
else |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)" |
|||
fi |
|||
|
|||
for ngx_src in $MAIL_SRCS |
|||
do |
|||
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) \$(MAIL_DEPS)$ngx_cont$ngx_src |
|||
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
done |
|||
|
|||
fi |
|||
|
|||
|
|||
# the stream sources |
|||
|
|||
if [ $STREAM = YES ]; then |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
else |
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(STREAM_INCS)" |
|||
fi |
|||
|
|||
for ngx_src in $STREAM_SRCS |
|||
do |
|||
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) \$(STREAM_DEPS)$ngx_cont$ngx_src |
|||
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
done |
|||
|
|||
fi |
|||
|
|||
|
|||
# the misc sources |
|||
|
|||
if test -n "$MISC_SRCS"; then |
|||
|
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
|
|||
for ngx_src in $MISC_SRCS |
|||
do |
|||
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$NGX_AUX |
|||
|
|||
END |
|||
done |
|||
|
|||
fi |
|||
|
|||
|
|||
# the addons sources |
|||
|
|||
if test -n "$NGX_ADDON_SRCS"; then |
|||
|
|||
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
|
|||
for ngx_src in $NGX_ADDON_SRCS |
|||
do |
|||
ngx_obj="addon/`basename \`dirname $ngx_src\``" |
|||
|
|||
ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_obj=`echo $ngx_obj \ |
|||
| 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"` |
|||
|
|||
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src |
|||
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
done |
|||
|
|||
fi |
|||
|
|||
|
|||
# the addons config.make |
|||
|
|||
if test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then |
|||
|
|||
for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS |
|||
do |
|||
if test -f $ngx_addon_dir/config.make; then |
|||
. $ngx_addon_dir/config.make |
|||
fi |
|||
done |
|||
fi |
|||
|
|||
|
|||
# Win32 resource file |
|||
|
|||
if test -n "$NGX_RES"; then |
|||
|
|||
ngx_res=`echo "$NGX_RES: $NGX_RC $NGX_ICONS" \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_res |
|||
$ngx_rcc |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
# the precompiled headers |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c |
|||
|
|||
ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_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$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c" |
|||
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_pch |
|||
$ngx_src |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
# dynamic modules |
|||
|
|||
if test -n "$NGX_PCH"; then |
|||
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" |
|||
else |
|||
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) \$(ALL_INCS)" |
|||
ngx_perl_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(NGX_PERL_CFLAGS)" |
|||
ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)" |
|||
fi |
|||
|
|||
for ngx_module in $DYNAMIC_MODULES |
|||
do |
|||
eval ngx_module_srcs="\$${ngx_module}_SRCS" |
|||
eval eval ngx_module_libs="\\\"\$${ngx_module}_LIBS\\\"" |
|||
|
|||
eval ngx_module_modules="\$${ngx_module}_MODULES" |
|||
eval ngx_module_order="\$${ngx_module}_ORDER" |
|||
|
|||
ngx_modules_c=$NGX_OBJS/${ngx_module}_modules.c |
|||
|
|||
cat << END > $ngx_modules_c |
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
END |
|||
|
|||
for mod in $ngx_module_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 $ngx_module_modules |
|||
do |
|||
echo " &$mod," >> $ngx_modules_c |
|||
done |
|||
|
|||
cat << END >> $ngx_modules_c |
|||
NULL |
|||
}; |
|||
|
|||
END |
|||
|
|||
echo 'char *ngx_module_names[] = {' >> $ngx_modules_c |
|||
|
|||
for mod in $ngx_module_modules |
|||
do |
|||
echo " \"$mod\"," >> $ngx_modules_c |
|||
done |
|||
|
|||
cat << END >> $ngx_modules_c |
|||
NULL |
|||
}; |
|||
|
|||
END |
|||
|
|||
echo 'char *ngx_module_order[] = {' >> $ngx_modules_c |
|||
|
|||
for mod in $ngx_module_order |
|||
do |
|||
echo " \"$mod\"," >> $ngx_modules_c |
|||
done |
|||
|
|||
cat << END >> $ngx_modules_c |
|||
NULL |
|||
}; |
|||
|
|||
END |
|||
|
|||
ngx_modules_c=`echo $ngx_modules_c | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_modules_obj=`echo $ngx_modules_c \ |
|||
| sed -e "s/\(.*\.\)c/\1$ngx_objext/"` |
|||
|
|||
ngx_module_objs= |
|||
for ngx_src in $ngx_module_srcs |
|||
do |
|||
case "$ngx_src" in |
|||
src/*) |
|||
ngx_obj=$ngx_src |
|||
;; |
|||
*) |
|||
ngx_obj="addon/`basename \`dirname $ngx_src\``" |
|||
mkdir -p $NGX_OBJS/$ngx_obj |
|||
ngx_obj="$ngx_obj/`basename $ngx_src`" |
|||
;; |
|||
esac |
|||
|
|||
ngx_module_objs="$ngx_module_objs $ngx_obj" |
|||
done |
|||
|
|||
ngx_module_objs=`echo $ngx_module_objs \ |
|||
| 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_deps=`echo $ngx_module_objs $ngx_modules_obj $LINK_DEPS \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_objs=`echo $ngx_module_objs $ngx_modules_obj \ |
|||
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ |
|||
-e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
ngx_obj=$NGX_OBJS$ngx_dirsep$ngx_module$ngx_modext |
|||
|
|||
if [ "$NGX_PLATFORM" = win32 ]; then |
|||
ngx_module_libs="$CORE_LIBS $ngx_module_libs" |
|||
fi |
|||
|
|||
ngx_libs= |
|||
if test -n "$NGX_LD_OPT$ngx_module_libs"; then |
|||
ngx_libs=`echo $NGX_LD_OPT $ngx_module_libs \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` |
|||
fi |
|||
|
|||
ngx_link=${CORE_LINK:+`echo $CORE_LINK \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} |
|||
|
|||
ngx_module_link=${MODULE_LINK:+`echo $MODULE_LINK \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} |
|||
|
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
modules: $ngx_obj |
|||
|
|||
$ngx_obj: $ngx_deps$ngx_spacer |
|||
\$(LINK) $ngx_long_start$ngx_binout$ngx_obj$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_module_link |
|||
$ngx_long_end |
|||
|
|||
$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c |
|||
$ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX |
|||
|
|||
END |
|||
|
|||
for ngx_source in $ngx_module_srcs |
|||
do |
|||
case "$ngx_source" in |
|||
src/*) |
|||
ngx_obj=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
*) |
|||
ngx_obj="addon/`basename \`dirname $ngx_source\``" |
|||
ngx_obj=`echo $ngx_obj/\`basename $ngx_source\` \ |
|||
| sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
;; |
|||
esac |
|||
|
|||
ngx_obj=`echo $ngx_obj \ |
|||
| 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"` |
|||
|
|||
ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` |
|||
|
|||
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src |
|||
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
else |
|||
|
|||
cat << END >> $NGX_MAKEFILE |
|||
|
|||
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src |
|||
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX |
|||
|
|||
END |
|||
|
|||
fi |
|||
done |
|||
done |
@ -0,0 +1,138 @@ |
|||
|
|||
# Copyright (C) Ruslan Ermilov |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
case $ngx_module_type in |
|||
HTTP_*) ngx_var=HTTP ;; |
|||
*) ngx_var=$ngx_module_type ;; |
|||
esac |
|||
|
|||
|
|||
if [ "$ngx_module_link" = DYNAMIC ]; then |
|||
|
|||
for ngx_module in $ngx_module_name; do |
|||
# extract the first name |
|||
break |
|||
done |
|||
|
|||
DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module" |
|||
eval ${ngx_module}_SRCS=\"$ngx_module_srcs\" |
|||
|
|||
eval ${ngx_module}_MODULES=\"$ngx_module_name\" |
|||
|
|||
if [ -z "$ngx_module_order" -a \ |
|||
\( "$ngx_module_type" = "HTTP_FILTER" \ |
|||
-o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ] |
|||
then |
|||
eval ${ngx_module}_ORDER=\"$ngx_module_name \ |
|||
ngx_http_copy_filter_module\" |
|||
else |
|||
eval ${ngx_module}_ORDER=\"$ngx_module_order\" |
|||
fi |
|||
|
|||
if test -n "$ngx_module_incs"; then |
|||
CORE_INCS="$CORE_INCS $ngx_module_incs" |
|||
fi |
|||
|
|||
if test -n "$ngx_module_deps"; then |
|||
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" |
|||
fi |
|||
|
|||
libs= |
|||
for lib in $ngx_module_libs |
|||
do |
|||
case $lib in |
|||
|
|||
LIBXSLT | LIBGD | GEOIP | PERL) |
|||
libs="$libs \$NGX_LIB_$lib" |
|||
|
|||
if eval [ "\$USE_${lib}" = NO ] ; then |
|||
eval USE_${lib}=DYNAMIC |
|||
fi |
|||
;; |
|||
|
|||
PCRE | OPENSSL | ZLIB) |
|||
eval USE_${lib}=YES |
|||
;; |
|||
|
|||
MD5 | SHA1) |
|||
# obsolete |
|||
;; |
|||
|
|||
*) |
|||
libs="$libs $lib" |
|||
;; |
|||
|
|||
esac |
|||
done |
|||
eval ${ngx_module}_LIBS=\'$libs\' |
|||
|
|||
elif [ "$ngx_module_link" = YES ]; then |
|||
|
|||
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ |
|||
$ngx_module_name\" |
|||
|
|||
eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\" |
|||
|
|||
if test -n "$ngx_module_incs"; then |
|||
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" |
|||
fi |
|||
|
|||
if test -n "$ngx_module_deps"; then |
|||
eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\" |
|||
fi |
|||
|
|||
for lib in $ngx_module_libs |
|||
do |
|||
case $lib in |
|||
|
|||
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) |
|||
eval USE_${lib}=YES |
|||
;; |
|||
|
|||
MD5 | SHA1) |
|||
# obsolete |
|||
;; |
|||
|
|||
*) |
|||
CORE_LIBS="$CORE_LIBS $lib" |
|||
;; |
|||
|
|||
esac |
|||
done |
|||
|
|||
elif [ "$ngx_module_link" = ADDON ]; then |
|||
|
|||
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ |
|||
$ngx_module_name\" |
|||
|
|||
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_module_srcs" |
|||
|
|||
if test -n "$ngx_module_incs"; then |
|||
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" |
|||
fi |
|||
|
|||
if test -n "$ngx_module_deps"; then |
|||
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" |
|||
fi |
|||
|
|||
for lib in $ngx_module_libs |
|||
do |
|||
case $lib in |
|||
|
|||
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) |
|||
eval USE_${lib}=YES |
|||
;; |
|||
|
|||
MD5 | SHA1) |
|||
# obsolete |
|||
;; |
|||
|
|||
*) |
|||
CORE_LIBS="$CORE_LIBS $lib" |
|||
;; |
|||
|
|||
esac |
|||
done |
|||
fi |
1365
nginx-1.12.2/nginx-1.12.2/auto/modules
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,12 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#ifndef $have |
|||
#define $have 0 |
|||
#endif |
|||
|
|||
END |
@ -0,0 +1,612 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
help=no |
|||
|
|||
NGX_PREFIX= |
|||
NGX_SBIN_PATH= |
|||
NGX_MODULES_PATH= |
|||
NGX_CONF_PREFIX= |
|||
NGX_CONF_PATH= |
|||
NGX_ERROR_LOG_PATH= |
|||
NGX_PID_PATH= |
|||
NGX_LOCK_PATH= |
|||
NGX_USER= |
|||
NGX_GROUP= |
|||
NGX_BUILD= |
|||
|
|||
CC=${CC:-cc} |
|||
CPP= |
|||
NGX_OBJS=objs |
|||
|
|||
NGX_DEBUG=NO |
|||
NGX_CC_OPT= |
|||
NGX_LD_OPT= |
|||
CPU=NO |
|||
|
|||
NGX_RPATH=NO |
|||
|
|||
NGX_TEST_BUILD_DEVPOLL=NO |
|||
NGX_TEST_BUILD_EVENTPORT=NO |
|||
NGX_TEST_BUILD_EPOLL=NO |
|||
NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO |
|||
|
|||
NGX_PLATFORM= |
|||
NGX_WINE= |
|||
|
|||
EVENT_FOUND=NO |
|||
|
|||
EVENT_SELECT=NO |
|||
EVENT_POLL=NO |
|||
|
|||
USE_THREADS=NO |
|||
|
|||
NGX_FILE_AIO=NO |
|||
|
|||
HTTP=YES |
|||
|
|||
NGX_HTTP_LOG_PATH= |
|||
NGX_HTTP_CLIENT_TEMP_PATH= |
|||
NGX_HTTP_PROXY_TEMP_PATH= |
|||
NGX_HTTP_FASTCGI_TEMP_PATH= |
|||
NGX_HTTP_UWSGI_TEMP_PATH= |
|||
NGX_HTTP_SCGI_TEMP_PATH= |
|||
|
|||
HTTP_CACHE=YES |
|||
HTTP_CHARSET=YES |
|||
HTTP_GZIP=YES |
|||
HTTP_SSL=NO |
|||
HTTP_V2=NO |
|||
HTTP_SSI=YES |
|||
HTTP_POSTPONE=NO |
|||
HTTP_REALIP=NO |
|||
HTTP_XSLT=NO |
|||
HTTP_IMAGE_FILTER=NO |
|||
HTTP_SUB=NO |
|||
HTTP_ADDITION=NO |
|||
HTTP_DAV=NO |
|||
HTTP_ACCESS=YES |
|||
HTTP_AUTH_BASIC=YES |
|||
HTTP_AUTH_REQUEST=NO |
|||
HTTP_USERID=YES |
|||
HTTP_SLICE=NO |
|||
HTTP_AUTOINDEX=YES |
|||
HTTP_RANDOM_INDEX=NO |
|||
HTTP_STATUS=NO |
|||
HTTP_GEO=YES |
|||
HTTP_GEOIP=NO |
|||
HTTP_MAP=YES |
|||
HTTP_SPLIT_CLIENTS=YES |
|||
HTTP_REFERER=YES |
|||
HTTP_REWRITE=YES |
|||
HTTP_PROXY=YES |
|||
HTTP_FASTCGI=YES |
|||
HTTP_UWSGI=YES |
|||
HTTP_SCGI=YES |
|||
HTTP_PERL=NO |
|||
HTTP_MEMCACHED=YES |
|||
HTTP_LIMIT_CONN=YES |
|||
HTTP_LIMIT_REQ=YES |
|||
HTTP_EMPTY_GIF=YES |
|||
HTTP_BROWSER=YES |
|||
HTTP_SECURE_LINK=NO |
|||
HTTP_DEGRADATION=NO |
|||
HTTP_FLV=NO |
|||
HTTP_MP4=NO |
|||
HTTP_GUNZIP=NO |
|||
HTTP_GZIP_STATIC=NO |
|||
HTTP_UPSTREAM_HASH=YES |
|||
HTTP_UPSTREAM_IP_HASH=YES |
|||
HTTP_UPSTREAM_LEAST_CONN=YES |
|||
HTTP_UPSTREAM_KEEPALIVE=YES |
|||
HTTP_UPSTREAM_ZONE=YES |
|||
|
|||
# STUB |
|||
HTTP_STUB_STATUS=NO |
|||
|
|||
MAIL=NO |
|||
MAIL_SSL=NO |
|||
MAIL_POP3=YES |
|||
MAIL_IMAP=YES |
|||
MAIL_SMTP=YES |
|||
|
|||
STREAM=NO |
|||
STREAM_SSL=NO |
|||
STREAM_REALIP=NO |
|||
STREAM_LIMIT_CONN=YES |
|||
STREAM_ACCESS=YES |
|||
STREAM_GEO=YES |
|||
STREAM_GEOIP=NO |
|||
STREAM_MAP=YES |
|||
STREAM_SPLIT_CLIENTS=YES |
|||
STREAM_RETURN=YES |
|||
STREAM_UPSTREAM_HASH=YES |
|||
STREAM_UPSTREAM_LEAST_CONN=YES |
|||
STREAM_UPSTREAM_ZONE=YES |
|||
STREAM_SSL_PREREAD=NO |
|||
|
|||
DYNAMIC_MODULES= |
|||
|
|||
NGX_ADDONS= |
|||
NGX_ADDON_DEPS= |
|||
DYNAMIC_ADDONS= |
|||
|
|||
NGX_COMPAT=NO |
|||
|
|||
USE_PCRE=NO |
|||
PCRE=NONE |
|||
PCRE_OPT= |
|||
PCRE_CONF_OPT= |
|||
PCRE_JIT=NO |
|||
|
|||
USE_OPENSSL=NO |
|||
OPENSSL=NONE |
|||
|
|||
USE_ZLIB=NO |
|||
ZLIB=NONE |
|||
ZLIB_OPT= |
|||
ZLIB_ASM=NO |
|||
|
|||
USE_PERL=NO |
|||
NGX_PERL=perl |
|||
|
|||
USE_LIBXSLT=NO |
|||
USE_LIBGD=NO |
|||
USE_GEOIP=NO |
|||
|
|||
NGX_GOOGLE_PERFTOOLS=NO |
|||
NGX_CPP_TEST=NO |
|||
|
|||
NGX_LIBATOMIC=NO |
|||
|
|||
NGX_CPU_CACHE_LINE= |
|||
|
|||
NGX_POST_CONF_MSG= |
|||
|
|||
opt= |
|||
|
|||
for option |
|||
do |
|||
opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`" |
|||
|
|||
case "$option" in |
|||
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; |
|||
*) value="" ;; |
|||
esac |
|||
|
|||
case "$option" in |
|||
--help) help=yes ;; |
|||
|
|||
--prefix=) NGX_PREFIX="!" ;; |
|||
--prefix=*) NGX_PREFIX="$value" ;; |
|||
--sbin-path=*) NGX_SBIN_PATH="$value" ;; |
|||
--modules-path=*) NGX_MODULES_PATH="$value" ;; |
|||
--conf-path=*) NGX_CONF_PATH="$value" ;; |
|||
--error-log-path=*) NGX_ERROR_LOG_PATH="$value";; |
|||
--pid-path=*) NGX_PID_PATH="$value" ;; |
|||
--lock-path=*) NGX_LOCK_PATH="$value" ;; |
|||
--user=*) NGX_USER="$value" ;; |
|||
--group=*) NGX_GROUP="$value" ;; |
|||
|
|||
--crossbuild=*) NGX_PLATFORM="$value" ;; |
|||
|
|||
--build=*) NGX_BUILD="$value" ;; |
|||
--builddir=*) NGX_OBJS="$value" ;; |
|||
|
|||
--with-select_module) EVENT_SELECT=YES ;; |
|||
--without-select_module) EVENT_SELECT=NONE ;; |
|||
--with-poll_module) EVENT_POLL=YES ;; |
|||
--without-poll_module) EVENT_POLL=NONE ;; |
|||
|
|||
--with-threads) USE_THREADS=YES ;; |
|||
|
|||
--with-file-aio) NGX_FILE_AIO=YES ;; |
|||
|
|||
--with-ipv6) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-ipv6\" option is deprecated" |
|||
;; |
|||
|
|||
--without-http) HTTP=NO ;; |
|||
--without-http-cache) HTTP_CACHE=NO ;; |
|||
|
|||
--http-log-path=*) NGX_HTTP_LOG_PATH="$value" ;; |
|||
--http-client-body-temp-path=*) NGX_HTTP_CLIENT_TEMP_PATH="$value" ;; |
|||
--http-proxy-temp-path=*) NGX_HTTP_PROXY_TEMP_PATH="$value" ;; |
|||
--http-fastcgi-temp-path=*) NGX_HTTP_FASTCGI_TEMP_PATH="$value" ;; |
|||
--http-uwsgi-temp-path=*) NGX_HTTP_UWSGI_TEMP_PATH="$value" ;; |
|||
--http-scgi-temp-path=*) NGX_HTTP_SCGI_TEMP_PATH="$value" ;; |
|||
|
|||
--with-http_ssl_module) HTTP_SSL=YES ;; |
|||
--with-http_v2_module) HTTP_V2=YES ;; |
|||
--with-http_realip_module) HTTP_REALIP=YES ;; |
|||
--with-http_addition_module) HTTP_ADDITION=YES ;; |
|||
--with-http_xslt_module) HTTP_XSLT=YES ;; |
|||
--with-http_xslt_module=dynamic) HTTP_XSLT=DYNAMIC ;; |
|||
--with-http_image_filter_module) HTTP_IMAGE_FILTER=YES ;; |
|||
--with-http_image_filter_module=dynamic) |
|||
HTTP_IMAGE_FILTER=DYNAMIC ;; |
|||
--with-http_geoip_module) HTTP_GEOIP=YES ;; |
|||
--with-http_geoip_module=dynamic) |
|||
HTTP_GEOIP=DYNAMIC ;; |
|||
--with-http_sub_module) HTTP_SUB=YES ;; |
|||
--with-http_dav_module) HTTP_DAV=YES ;; |
|||
--with-http_flv_module) HTTP_FLV=YES ;; |
|||
--with-http_mp4_module) HTTP_MP4=YES ;; |
|||
--with-http_gunzip_module) HTTP_GUNZIP=YES ;; |
|||
--with-http_gzip_static_module) HTTP_GZIP_STATIC=YES ;; |
|||
--with-http_auth_request_module) HTTP_AUTH_REQUEST=YES ;; |
|||
--with-http_random_index_module) HTTP_RANDOM_INDEX=YES ;; |
|||
--with-http_secure_link_module) HTTP_SECURE_LINK=YES ;; |
|||
--with-http_degradation_module) HTTP_DEGRADATION=YES ;; |
|||
--with-http_slice_module) HTTP_SLICE=YES ;; |
|||
|
|||
--without-http_charset_module) HTTP_CHARSET=NO ;; |
|||
--without-http_gzip_module) HTTP_GZIP=NO ;; |
|||
--without-http_ssi_module) HTTP_SSI=NO ;; |
|||
--without-http_userid_module) HTTP_USERID=NO ;; |
|||
--without-http_access_module) HTTP_ACCESS=NO ;; |
|||
--without-http_auth_basic_module) HTTP_AUTH_BASIC=NO ;; |
|||
--without-http_autoindex_module) HTTP_AUTOINDEX=NO ;; |
|||
--without-http_status_module) HTTP_STATUS=NO ;; |
|||
--without-http_geo_module) HTTP_GEO=NO ;; |
|||
--without-http_map_module) HTTP_MAP=NO ;; |
|||
--without-http_split_clients_module) HTTP_SPLIT_CLIENTS=NO ;; |
|||
--without-http_referer_module) HTTP_REFERER=NO ;; |
|||
--without-http_rewrite_module) HTTP_REWRITE=NO ;; |
|||
--without-http_proxy_module) HTTP_PROXY=NO ;; |
|||
--without-http_fastcgi_module) HTTP_FASTCGI=NO ;; |
|||
--without-http_uwsgi_module) HTTP_UWSGI=NO ;; |
|||
--without-http_scgi_module) HTTP_SCGI=NO ;; |
|||
--without-http_memcached_module) HTTP_MEMCACHED=NO ;; |
|||
--without-http_limit_conn_module) HTTP_LIMIT_CONN=NO ;; |
|||
--without-http_limit_req_module) HTTP_LIMIT_REQ=NO ;; |
|||
--without-http_empty_gif_module) HTTP_EMPTY_GIF=NO ;; |
|||
--without-http_browser_module) HTTP_BROWSER=NO ;; |
|||
--without-http_upstream_hash_module) HTTP_UPSTREAM_HASH=NO ;; |
|||
--without-http_upstream_ip_hash_module) HTTP_UPSTREAM_IP_HASH=NO ;; |
|||
--without-http_upstream_least_conn_module) |
|||
HTTP_UPSTREAM_LEAST_CONN=NO ;; |
|||
--without-http_upstream_keepalive_module) HTTP_UPSTREAM_KEEPALIVE=NO ;; |
|||
--without-http_upstream_zone_module) HTTP_UPSTREAM_ZONE=NO ;; |
|||
|
|||
--with-http_perl_module) HTTP_PERL=YES ;; |
|||
--with-http_perl_module=dynamic) HTTP_PERL=DYNAMIC ;; |
|||
--with-perl_modules_path=*) NGX_PERL_MODULES="$value" ;; |
|||
--with-perl=*) NGX_PERL="$value" ;; |
|||
|
|||
# STUB |
|||
--with-http_stub_status_module) HTTP_STUB_STATUS=YES ;; |
|||
|
|||
--with-mail) MAIL=YES ;; |
|||
--with-mail=dynamic) MAIL=DYNAMIC ;; |
|||
--with-mail_ssl_module) MAIL_SSL=YES ;; |
|||
# STUB |
|||
--with-imap) |
|||
MAIL=YES |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-imap\" option is deprecated, \ |
|||
use the \"--with-mail\" option instead" |
|||
;; |
|||
--with-imap_ssl_module) |
|||
MAIL_SSL=YES |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-imap_ssl_module\" option is deprecated, \ |
|||
use the \"--with-mail_ssl_module\" option instead" |
|||
;; |
|||
--without-mail_pop3_module) MAIL_POP3=NO ;; |
|||
--without-mail_imap_module) MAIL_IMAP=NO ;; |
|||
--without-mail_smtp_module) MAIL_SMTP=NO ;; |
|||
|
|||
--with-stream) STREAM=YES ;; |
|||
--with-stream=dynamic) STREAM=DYNAMIC ;; |
|||
--with-stream_ssl_module) STREAM_SSL=YES ;; |
|||
--with-stream_realip_module) STREAM_REALIP=YES ;; |
|||
--with-stream_geoip_module) STREAM_GEOIP=YES ;; |
|||
--with-stream_geoip_module=dynamic) |
|||
STREAM_GEOIP=DYNAMIC ;; |
|||
--with-stream_ssl_preread_module) |
|||
STREAM_SSL_PREREAD=YES ;; |
|||
--without-stream_limit_conn_module) |
|||
STREAM_LIMIT_CONN=NO ;; |
|||
--without-stream_access_module) STREAM_ACCESS=NO ;; |
|||
--without-stream_geo_module) STREAM_GEO=NO ;; |
|||
--without-stream_map_module) STREAM_MAP=NO ;; |
|||
--without-stream_split_clients_module) |
|||
STREAM_SPLIT_CLIENTS=NO ;; |
|||
--without-stream_return_module) STREAM_RETURN=NO ;; |
|||
--without-stream_upstream_hash_module) |
|||
STREAM_UPSTREAM_HASH=NO ;; |
|||
--without-stream_upstream_least_conn_module) |
|||
STREAM_UPSTREAM_LEAST_CONN=NO ;; |
|||
--without-stream_upstream_zone_module) |
|||
STREAM_UPSTREAM_ZONE=NO ;; |
|||
|
|||
--with-google_perftools_module) NGX_GOOGLE_PERFTOOLS=YES ;; |
|||
--with-cpp_test_module) NGX_CPP_TEST=YES ;; |
|||
|
|||
--add-module=*) NGX_ADDONS="$NGX_ADDONS $value" ;; |
|||
--add-dynamic-module=*) DYNAMIC_ADDONS="$DYNAMIC_ADDONS $value" ;; |
|||
|
|||
--with-compat) NGX_COMPAT=YES ;; |
|||
|
|||
--with-cc=*) CC="$value" ;; |
|||
--with-cpp=*) CPP="$value" ;; |
|||
--with-cc-opt=*) NGX_CC_OPT="$value" ;; |
|||
--with-ld-opt=*) NGX_LD_OPT="$value" ;; |
|||
--with-cpu-opt=*) CPU="$value" ;; |
|||
--with-debug) NGX_DEBUG=YES ;; |
|||
|
|||
--without-pcre) USE_PCRE=DISABLED ;; |
|||
--with-pcre) USE_PCRE=YES ;; |
|||
--with-pcre=*) PCRE="$value" ;; |
|||
--with-pcre-opt=*) PCRE_OPT="$value" ;; |
|||
--with-pcre-jit) PCRE_JIT=YES ;; |
|||
|
|||
--with-openssl=*) OPENSSL="$value" ;; |
|||
--with-openssl-opt=*) OPENSSL_OPT="$value" ;; |
|||
|
|||
--with-md5=*) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-md5\" option is deprecated" |
|||
;; |
|||
--with-md5-opt=*) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-md5-opt\" option is deprecated" |
|||
;; |
|||
--with-md5-asm) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-md5-asm\" option is deprecated" |
|||
;; |
|||
|
|||
--with-sha1=*) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-sha1\" option is deprecated" |
|||
;; |
|||
--with-sha1-opt=*) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-sha1-opt\" option is deprecated" |
|||
;; |
|||
--with-sha1-asm) |
|||
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG |
|||
$0: warning: the \"--with-sha1-asm\" option is deprecated" |
|||
;; |
|||
|
|||
--with-zlib=*) ZLIB="$value" ;; |
|||
--with-zlib-opt=*) ZLIB_OPT="$value" ;; |
|||
--with-zlib-asm=*) ZLIB_ASM="$value" ;; |
|||
|
|||
--with-libatomic) NGX_LIBATOMIC=YES ;; |
|||
--with-libatomic=*) NGX_LIBATOMIC="$value" ;; |
|||
|
|||
--test-build-devpoll) NGX_TEST_BUILD_DEVPOLL=YES ;; |
|||
--test-build-eventport) NGX_TEST_BUILD_EVENTPORT=YES ;; |
|||
--test-build-epoll) NGX_TEST_BUILD_EPOLL=YES ;; |
|||
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;; |
|||
|
|||
*) |
|||
echo "$0: error: invalid option \"$option\"" |
|||
exit 1 |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
|
|||
NGX_CONFIGURE="$opt" |
|||
|
|||
|
|||
if [ $help = yes ]; then |
|||
|
|||
cat << END |
|||
|
|||
--help print this message |
|||
|
|||
--prefix=PATH set installation prefix |
|||
--sbin-path=PATH set nginx binary pathname |
|||
--modules-path=PATH set modules path |
|||
--conf-path=PATH set nginx.conf pathname |
|||
--error-log-path=PATH set error log pathname |
|||
--pid-path=PATH set nginx.pid pathname |
|||
--lock-path=PATH set nginx.lock pathname |
|||
|
|||
--user=USER set non-privileged user for |
|||
worker processes |
|||
--group=GROUP set non-privileged group for |
|||
worker processes |
|||
|
|||
--build=NAME set build name |
|||
--builddir=DIR set build directory |
|||
|
|||
--with-select_module enable select module |
|||
--without-select_module disable select module |
|||
--with-poll_module enable poll module |
|||
--without-poll_module disable poll module |
|||
|
|||
--with-threads enable thread pool support |
|||
|
|||
--with-file-aio enable file AIO support |
|||
|
|||
--with-http_ssl_module enable ngx_http_ssl_module |
|||
--with-http_v2_module enable ngx_http_v2_module |
|||
--with-http_realip_module enable ngx_http_realip_module |
|||
--with-http_addition_module enable ngx_http_addition_module |
|||
--with-http_xslt_module enable ngx_http_xslt_module |
|||
--with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module |
|||
--with-http_image_filter_module enable ngx_http_image_filter_module |
|||
--with-http_image_filter_module=dynamic |
|||
enable dynamic ngx_http_image_filter_module |
|||
--with-http_geoip_module enable ngx_http_geoip_module |
|||
--with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module |
|||
--with-http_sub_module enable ngx_http_sub_module |
|||
--with-http_dav_module enable ngx_http_dav_module |
|||
--with-http_flv_module enable ngx_http_flv_module |
|||
--with-http_mp4_module enable ngx_http_mp4_module |
|||
--with-http_gunzip_module enable ngx_http_gunzip_module |
|||
--with-http_gzip_static_module enable ngx_http_gzip_static_module |
|||
--with-http_auth_request_module enable ngx_http_auth_request_module |
|||
--with-http_random_index_module enable ngx_http_random_index_module |
|||
--with-http_secure_link_module enable ngx_http_secure_link_module |
|||
--with-http_degradation_module enable ngx_http_degradation_module |
|||
--with-http_slice_module enable ngx_http_slice_module |
|||
--with-http_stub_status_module enable ngx_http_stub_status_module |
|||
|
|||
--without-http_charset_module disable ngx_http_charset_module |
|||
--without-http_gzip_module disable ngx_http_gzip_module |
|||
--without-http_ssi_module disable ngx_http_ssi_module |
|||
--without-http_userid_module disable ngx_http_userid_module |
|||
--without-http_access_module disable ngx_http_access_module |
|||
--without-http_auth_basic_module disable ngx_http_auth_basic_module |
|||
--without-http_autoindex_module disable ngx_http_autoindex_module |
|||
--without-http_geo_module disable ngx_http_geo_module |
|||
--without-http_map_module disable ngx_http_map_module |
|||
--without-http_split_clients_module disable ngx_http_split_clients_module |
|||
--without-http_referer_module disable ngx_http_referer_module |
|||
--without-http_rewrite_module disable ngx_http_rewrite_module |
|||
--without-http_proxy_module disable ngx_http_proxy_module |
|||
--without-http_fastcgi_module disable ngx_http_fastcgi_module |
|||
--without-http_uwsgi_module disable ngx_http_uwsgi_module |
|||
--without-http_scgi_module disable ngx_http_scgi_module |
|||
--without-http_memcached_module disable ngx_http_memcached_module |
|||
--without-http_limit_conn_module disable ngx_http_limit_conn_module |
|||
--without-http_limit_req_module disable ngx_http_limit_req_module |
|||
--without-http_empty_gif_module disable ngx_http_empty_gif_module |
|||
--without-http_browser_module disable ngx_http_browser_module |
|||
--without-http_upstream_hash_module |
|||
disable ngx_http_upstream_hash_module |
|||
--without-http_upstream_ip_hash_module |
|||
disable ngx_http_upstream_ip_hash_module |
|||
--without-http_upstream_least_conn_module |
|||
disable ngx_http_upstream_least_conn_module |
|||
--without-http_upstream_keepalive_module |
|||
disable ngx_http_upstream_keepalive_module |
|||
--without-http_upstream_zone_module |
|||
disable ngx_http_upstream_zone_module |
|||
|
|||
--with-http_perl_module enable ngx_http_perl_module |
|||
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module |
|||
--with-perl_modules_path=PATH set Perl modules path |
|||
--with-perl=PATH set perl binary pathname |
|||
|
|||
--http-log-path=PATH set http access log pathname |
|||
--http-client-body-temp-path=PATH set path to store |
|||
http client request body temporary files |
|||
--http-proxy-temp-path=PATH set path to store |
|||
http proxy temporary files |
|||
--http-fastcgi-temp-path=PATH set path to store |
|||
http fastcgi temporary files |
|||
--http-uwsgi-temp-path=PATH set path to store |
|||
http uwsgi temporary files |
|||
--http-scgi-temp-path=PATH set path to store |
|||
http scgi temporary files |
|||
|
|||
--without-http disable HTTP server |
|||
--without-http-cache disable HTTP cache |
|||
|
|||
--with-mail enable POP3/IMAP4/SMTP proxy module |
|||
--with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module |
|||
--with-mail_ssl_module enable ngx_mail_ssl_module |
|||
--without-mail_pop3_module disable ngx_mail_pop3_module |
|||
--without-mail_imap_module disable ngx_mail_imap_module |
|||
--without-mail_smtp_module disable ngx_mail_smtp_module |
|||
|
|||
--with-stream enable TCP/UDP proxy module |
|||
--with-stream=dynamic enable dynamic TCP/UDP proxy module |
|||
--with-stream_ssl_module enable ngx_stream_ssl_module |
|||
--with-stream_realip_module enable ngx_stream_realip_module |
|||
--with-stream_geoip_module enable ngx_stream_geoip_module |
|||
--with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module |
|||
--with-stream_ssl_preread_module enable ngx_stream_ssl_preread_module |
|||
--without-stream_limit_conn_module disable ngx_stream_limit_conn_module |
|||
--without-stream_access_module disable ngx_stream_access_module |
|||
--without-stream_geo_module disable ngx_stream_geo_module |
|||
--without-stream_map_module disable ngx_stream_map_module |
|||
--without-stream_split_clients_module |
|||
disable ngx_stream_split_clients_module |
|||
--without-stream_return_module disable ngx_stream_return_module |
|||
--without-stream_upstream_hash_module |
|||
disable ngx_stream_upstream_hash_module |
|||
--without-stream_upstream_least_conn_module |
|||
disable ngx_stream_upstream_least_conn_module |
|||
--without-stream_upstream_zone_module |
|||
disable ngx_stream_upstream_zone_module |
|||
|
|||
--with-google_perftools_module enable ngx_google_perftools_module |
|||
--with-cpp_test_module enable ngx_cpp_test_module |
|||
|
|||
--add-module=PATH enable external module |
|||
--add-dynamic-module=PATH enable dynamic external module |
|||
|
|||
--with-compat dynamic modules compatibility |
|||
|
|||
--with-cc=PATH set C compiler pathname |
|||
--with-cpp=PATH set C preprocessor pathname |
|||
--with-cc-opt=OPTIONS set additional C compiler options |
|||
--with-ld-opt=OPTIONS set additional linker options |
|||
--with-cpu-opt=CPU build for the specified CPU, valid values: |
|||
pentium, pentiumpro, pentium3, pentium4, |
|||
athlon, opteron, sparc32, sparc64, ppc64 |
|||
|
|||
--without-pcre disable PCRE library usage |
|||
--with-pcre force PCRE library usage |
|||
--with-pcre=DIR set path to PCRE library sources |
|||
--with-pcre-opt=OPTIONS set additional build options for PCRE |
|||
--with-pcre-jit build PCRE with JIT compilation support |
|||
|
|||
--with-zlib=DIR set path to zlib library sources |
|||
--with-zlib-opt=OPTIONS set additional build options for zlib |
|||
--with-zlib-asm=CPU use zlib assembler sources optimized |
|||
for the specified CPU, valid values: |
|||
pentium, pentiumpro |
|||
|
|||
--with-libatomic force libatomic_ops library usage |
|||
--with-libatomic=DIR set path to libatomic_ops library sources |
|||
|
|||
--with-openssl=DIR set path to OpenSSL library sources |
|||
--with-openssl-opt=OPTIONS set additional build options for OpenSSL |
|||
|
|||
--with-debug enable debug logging |
|||
|
|||
END |
|||
|
|||
exit 1 |
|||
fi |
|||
|
|||
|
|||
if [ ".$NGX_PLATFORM" = ".win32" ]; then |
|||
NGX_WINE=$WINE |
|||
fi |
|||
|
|||
|
|||
NGX_SBIN_PATH=${NGX_SBIN_PATH:-sbin/nginx} |
|||
NGX_MODULES_PATH=${NGX_MODULES_PATH:-modules} |
|||
NGX_CONF_PATH=${NGX_CONF_PATH:-conf/nginx.conf} |
|||
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH` |
|||
NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid} |
|||
NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock} |
|||
|
|||
if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then |
|||
NGX_ERROR_LOG_PATH= |
|||
else |
|||
NGX_ERROR_LOG_PATH=${NGX_ERROR_LOG_PATH:-logs/error.log} |
|||
fi |
|||
|
|||
NGX_HTTP_LOG_PATH=${NGX_HTTP_LOG_PATH:-logs/access.log} |
|||
NGX_HTTP_CLIENT_TEMP_PATH=${NGX_HTTP_CLIENT_TEMP_PATH:-client_body_temp} |
|||
NGX_HTTP_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp} |
|||
NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_temp} |
|||
NGX_HTTP_UWSGI_TEMP_PATH=${NGX_HTTP_UWSGI_TEMP_PATH:-uwsgi_temp} |
|||
NGX_HTTP_SCGI_TEMP_PATH=${NGX_HTTP_SCGI_TEMP_PATH:-scgi_temp} |
|||
|
|||
case ".$NGX_PERL_MODULES" in |
|||
./*) |
|||
;; |
|||
|
|||
.) |
|||
;; |
|||
|
|||
*) |
|||
NGX_PERL_MODULES=$NGX_PREFIX/$NGX_PERL_MODULES |
|||
;; |
|||
esac |
@ -0,0 +1,116 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo "checking for $NGX_SYSTEM specific features" |
|||
|
|||
case "$NGX_PLATFORM" in |
|||
|
|||
FreeBSD:*) |
|||
. auto/os/freebsd |
|||
;; |
|||
|
|||
Linux:*) |
|||
. auto/os/linux |
|||
;; |
|||
|
|||
SunOS:*) |
|||
. auto/os/solaris |
|||
;; |
|||
|
|||
Darwin:*) |
|||
. auto/os/darwin |
|||
;; |
|||
|
|||
win32) |
|||
. auto/os/win32 |
|||
;; |
|||
|
|||
DragonFly:*) |
|||
have=NGX_FREEBSD . auto/have_headers |
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS" |
|||
|
|||
echo " + sendfile() found" |
|||
have=NGX_HAVE_SENDFILE . auto/have |
|||
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS" |
|||
|
|||
ngx_spacer=' |
|||
' |
|||
;; |
|||
|
|||
HP-UX:*) |
|||
# HP/UX |
|||
have=NGX_HPUX . auto/have_headers |
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_HPUX_ALT_XOPEN_SOCKET_API" |
|||
;; |
|||
|
|||
OSF1:*) |
|||
# Tru64 UNIX |
|||
have=NGX_TRU64 . auto/have_headers |
|||
have=NGX_HAVE_STRERROR_R . auto/nohave |
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS" |
|||
;; |
|||
|
|||
GNU:*) |
|||
# GNU Hurd |
|||
have=NGX_GNU_HURD . auto/have_headers |
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS" |
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
|||
;; |
|||
|
|||
*) |
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
|
|||
case "$NGX_MACHINE" in |
|||
|
|||
i386 | i686 | i86pc) |
|||
have=NGX_HAVE_NONALIGNED . auto/have |
|||
NGX_MACH_CACHE_LINE=32 |
|||
;; |
|||
|
|||
amd64 | x86_64) |
|||
have=NGX_HAVE_NONALIGNED . auto/have |
|||
NGX_MACH_CACHE_LINE=64 |
|||
;; |
|||
|
|||
sun4u | sun4v | sparc | sparc64) |
|||
have=NGX_ALIGNMENT value=16 . auto/define |
|||
# TODO |
|||
NGX_MACH_CACHE_LINE=64 |
|||
;; |
|||
|
|||
ia64 ) |
|||
have=NGX_ALIGNMENT value=16 . auto/define |
|||
# TODO |
|||
NGX_MACH_CACHE_LINE=64 |
|||
;; |
|||
|
|||
*) |
|||
have=NGX_ALIGNMENT value=16 . auto/define |
|||
NGX_MACH_CACHE_LINE=32 |
|||
;; |
|||
|
|||
esac |
|||
|
|||
if test -z "$NGX_CPU_CACHE_LINE"; then |
|||
NGX_CPU_CACHE_LINE=$NGX_MACH_CACHE_LINE |
|||
fi |
|||
|
|||
have=NGX_CPU_CACHE_LINE value=$NGX_CPU_CACHE_LINE . auto/define |
@ -0,0 +1,118 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_DARWIN . auto/have_headers |
|||
|
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS" |
|||
|
|||
|
|||
|
|||
ngx_spacer=' |
|||
' |
|||
|
|||
MAIN_LINK= |
|||
MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup" |
|||
|
|||
# kqueue |
|||
|
|||
echo " + kqueue found" |
|||
have=NGX_HAVE_KQUEUE . auto/have |
|||
have=NGX_HAVE_CLEAR_EVENT . auto/have |
|||
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" |
|||
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" |
|||
EVENT_FOUND=YES |
|||
NGX_KQUEUE_CHECKED=YES |
|||
|
|||
ngx_feature="kqueue's EVFILT_TIMER" |
|||
ngx_feature_name="NGX_HAVE_TIMER_EVENT" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/event.h> |
|||
#include <sys/time.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int kq; |
|||
struct kevent kev; |
|||
struct timespec ts; |
|||
|
|||
if ((kq = kqueue()) == -1) return 1; |
|||
|
|||
kev.ident = 0; |
|||
kev.filter = EVFILT_TIMER; |
|||
kev.flags = EV_ADD|EV_ENABLE; |
|||
kev.fflags = 0; |
|||
kev.data = 1000; |
|||
kev.udata = 0; |
|||
|
|||
ts.tv_sec = 0; |
|||
ts.tv_nsec = 0; |
|||
|
|||
if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1; |
|||
|
|||
if (kev.flags & EV_ERROR) return 1;" |
|||
|
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="Darwin 64-bit kqueue millisecond timeout bug" |
|||
ngx_feature_name=NGX_DARWIN_KEVENT_BUG |
|||
ngx_feature_run=bug |
|||
ngx_feature_incs="#include <sys/event.h> |
|||
#include <sys/time.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int kq; |
|||
struct kevent kev; |
|||
struct timespec ts; |
|||
struct timeval tv, tv0; |
|||
|
|||
kq = kqueue(); |
|||
|
|||
ts.tv_sec = 0; |
|||
ts.tv_nsec = 999000000; |
|||
|
|||
gettimeofday(&tv, 0); |
|||
kevent(kq, NULL, 0, &kev, 1, &ts); |
|||
gettimeofday(&tv0, 0); |
|||
timersub(&tv0, &tv, &tv); |
|||
|
|||
if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;" |
|||
|
|||
. auto/feature |
|||
|
|||
|
|||
# sendfile() |
|||
|
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS" |
|||
ngx_feature="sendfile()" |
|||
ngx_feature_name="NGX_HAVE_SENDFILE" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/socket.h> |
|||
#include <sys/uio.h> |
|||
#include <sys/errno.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int s = 0, fd = 1; |
|||
off_t n; off_t off = 0; |
|||
n = sendfile(s, fd, off, &n, NULL, 0); |
|||
if (n == -1 && errno == ENOSYS) return 1" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS" |
|||
fi |
|||
|
|||
|
|||
ngx_feature="atomic(3)" |
|||
ngx_feature_name=NGX_DARWIN_ATOMIC |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <libkern/OSAtomic.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int32_t lock = 0; |
|||
if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1" |
|||
. auto/feature |
@ -0,0 +1,107 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_FREEBSD . auto/have_headers |
|||
|
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS" |
|||
|
|||
ngx_spacer=' |
|||
' |
|||
|
|||
|
|||
# __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 environment. |
|||
# 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 |
|||
|
|||
if [ \( $version -ge 500000 -a $version -lt 500012 \) \ |
|||
-o $version -lt 410002 ] |
|||
then |
|||
echo " + setproctitle() in libutil" |
|||
|
|||
CORE_LIBS="$CORE_LIBS -lutil" |
|||
NGX_SETPROCTITLE_LIB="-lutil" |
|||
fi |
|||
|
|||
# sendfile |
|||
|
|||
if [ $osreldate -gt 300007 ]; then |
|||
echo " + sendfile() found" |
|||
|
|||
have=NGX_HAVE_SENDFILE . auto/have |
|||
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS" |
|||
fi |
|||
|
|||
if [ $NGX_FILE_AIO = YES ]; then |
|||
if [ $osreldate -gt 502103 ]; then |
|||
echo " + sendfile()'s SF_NODISKIO found" |
|||
|
|||
have=NGX_HAVE_AIO_SENDFILE . auto/have |
|||
fi |
|||
fi |
|||
|
|||
# POSIX semaphores |
|||
# http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/127545 |
|||
|
|||
if [ $osreldate -ge 701106 ]; then |
|||
echo " + POSIX semaphores should work" |
|||
else |
|||
have=NGX_HAVE_POSIX_SEM . auto/nohave |
|||
fi |
|||
|
|||
|
|||
# kqueue |
|||
|
|||
if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \ |
|||
-o $osreldate -ge 500011 ] |
|||
then |
|||
echo " + kqueue found" |
|||
|
|||
have=NGX_HAVE_KQUEUE . auto/have |
|||
have=NGX_HAVE_CLEAR_EVENT . auto/have |
|||
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE" |
|||
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS" |
|||
EVENT_FOUND=YES |
|||
fi |
|||
|
|||
|
|||
NGX_KQUEUE_CHECKED=YES |
|||
|
|||
|
|||
# kqueue's NOTE_LOWAT |
|||
|
|||
if [ \( $version -lt 500000 -a $version -ge 430000 \) \ |
|||
-o $version -ge 500018 ] |
|||
then |
|||
echo " + kqueue's NOTE_LOWAT found" |
|||
have=NGX_HAVE_LOWAT_EVENT . auto/have |
|||
fi |
|||
|
|||
# kqueue's EVFILT_TIMER |
|||
|
|||
if [ \( $version -lt 500000 -a $version -ge 440001 \) \ |
|||
-o $version -ge 500023 ] |
|||
then |
|||
echo " + kqueue's EVFILT_TIMER found" |
|||
have=NGX_HAVE_TIMER_EVENT . auto/have |
|||
fi |
|||
|
|||
|
|||
# cpuset_setaffinity() |
|||
|
|||
if [ $version -ge 701000 ]; then |
|||
echo " + cpuset_setaffinity() found" |
|||
have=NGX_HAVE_CPUSET_SETAFFINITY . auto/have |
|||
fi |
@ -0,0 +1,190 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_LINUX . auto/have_headers |
|||
|
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $LINUX_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS $LINUX_SRCS" |
|||
|
|||
ngx_spacer=' |
|||
' |
|||
|
|||
cc_aux_flags="$CC_AUX_FLAGS" |
|||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
|||
|
|||
|
|||
# Linux kernel version |
|||
|
|||
version=$((`uname -r \ |
|||
| sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \ |
|||
\1*256*256+\2*256+\3/p' \ |
|||
-e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`)) |
|||
|
|||
version=${version:-0} |
|||
|
|||
|
|||
# posix_fadvise64() had been implemented in 2.5.60 |
|||
|
|||
if [ $version -lt 132412 ]; then |
|||
have=NGX_HAVE_POSIX_FADVISE . auto/nohave |
|||
fi |
|||
|
|||
# epoll, EPOLLET version |
|||
|
|||
ngx_feature="epoll" |
|||
ngx_feature_name="NGX_HAVE_EPOLL" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/epoll.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int efd = 0; |
|||
struct epoll_event ee; |
|||
ee.events = EPOLLIN|EPOLLOUT|EPOLLET; |
|||
ee.data.ptr = NULL; |
|||
(void) ee; |
|||
efd = epoll_create(100); |
|||
if (efd == -1) return 1;" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
have=NGX_HAVE_CLEAR_EVENT . auto/have |
|||
CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" |
|||
EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" |
|||
EVENT_FOUND=YES |
|||
|
|||
|
|||
# EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8 |
|||
|
|||
ngx_feature="EPOLLRDHUP" |
|||
ngx_feature_name="NGX_HAVE_EPOLLRDHUP" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/epoll.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int efd = 0, fd = 0; |
|||
struct epoll_event ee; |
|||
ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET; |
|||
ee.data.ptr = NULL; |
|||
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
|||
. auto/feature |
|||
|
|||
|
|||
# EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24 |
|||
|
|||
ngx_feature="EPOLLEXCLUSIVE" |
|||
ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/epoll.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int efd = 0, fd = 0; |
|||
struct epoll_event ee; |
|||
ee.events = EPOLLIN|EPOLLEXCLUSIVE; |
|||
ee.data.ptr = NULL; |
|||
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
# O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14 |
|||
|
|||
ngx_feature="O_PATH" |
|||
ngx_feature_name="NGX_HAVE_O_PATH" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/stat.h> |
|||
#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int fd; struct stat sb; |
|||
fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW); |
|||
if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
# sendfile() |
|||
|
|||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" |
|||
ngx_feature="sendfile()" |
|||
ngx_feature_name="NGX_HAVE_SENDFILE" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/sendfile.h> |
|||
#include <errno.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int s = 0, fd = 1; |
|||
ssize_t n; off_t off = 0; |
|||
n = sendfile(s, fd, &off, 1); |
|||
if (n == -1 && errno == ENOSYS) return 1" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS" |
|||
fi |
|||
|
|||
|
|||
# sendfile64() |
|||
|
|||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
|||
ngx_feature="sendfile64()" |
|||
ngx_feature_name="NGX_HAVE_SENDFILE64" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/sendfile.h> |
|||
#include <errno.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int s = 0, fd = 1; |
|||
ssize_t n; off_t off = 0; |
|||
n = sendfile(s, fd, &off, 1); |
|||
if (n == -1 && errno == ENOSYS) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_include="sys/prctl.h"; . auto/include |
|||
|
|||
# prctl(PR_SET_DUMPABLE) |
|||
|
|||
ngx_feature="prctl(PR_SET_DUMPABLE)" |
|||
ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/prctl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
# sched_setaffinity() |
|||
|
|||
ngx_feature="sched_setaffinity()" |
|||
ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sched.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="cpu_set_t mask; |
|||
CPU_ZERO(&mask); |
|||
sched_setaffinity(0, sizeof(cpu_set_t), &mask)" |
|||
. auto/feature |
|||
|
|||
|
|||
# crypt_r() |
|||
|
|||
ngx_feature="crypt_r()" |
|||
ngx_feature_name="NGX_HAVE_GNU_CRYPT_R" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <crypt.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs=-lcrypt |
|||
ngx_feature_test="struct crypt_data cd; |
|||
crypt_r(\"key\", \"salt\", &cd);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_include="sys/vfs.h"; . auto/include |
|||
|
|||
|
|||
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
@ -0,0 +1,61 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_SOLARIS . auto/have_headers |
|||
|
|||
CORE_INCS="$UNIX_INCS" |
|||
CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS" |
|||
CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS " |
|||
CORE_LIBS="$CORE_LIBS -lsocket -lnsl" |
|||
|
|||
NGX_RPATH=YES |
|||
|
|||
# Solaris's make does not support a blank line between target and rules |
|||
ngx_spacer= |
|||
|
|||
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_FILE_OFFSET_BITS=64 -lsocket -lnsl" |
|||
|
|||
|
|||
if [ $ZLIB_ASM != NO ]; then |
|||
echo "$0: error: the --with-zlib-asm=CPU option is not supported" |
|||
echo "on that platform" |
|||
echo |
|||
|
|||
exit 1 |
|||
fi |
|||
|
|||
|
|||
ngx_feature="sendfilev()" |
|||
ngx_feature_name="NGX_HAVE_SENDFILE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/sendfile.h>" |
|||
ngx_feature_path= |
|||
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); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_SRCS="$CORE_SRCS $SOLARIS_SENDFILEV_SRCS" |
|||
CORE_LIBS="$CORE_LIBS -lsendfile" |
|||
fi |
|||
|
|||
|
|||
ngx_feature="event ports" |
|||
ngx_feature_name="NGX_HAVE_EVENTPORT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <port.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="(void) port_create()" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_SRCS="$CORE_SRCS $EVENTPORT_SRCS" |
|||
EVENT_MODULES="$EVENT_MODULES $EVENTPORT_MODULE" |
|||
fi |
@ -0,0 +1,42 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_WIN32 . auto/have_headers |
|||
|
|||
CORE_INCS="$WIN32_INCS" |
|||
CORE_DEPS="$WIN32_DEPS" |
|||
CORE_SRCS="$WIN32_SRCS $IOCP_SRCS" |
|||
OS_CONFIG="$WIN32_CONFIG" |
|||
NGX_ICONS="$NGX_WIN32_ICONS" |
|||
SELECT_SRCS=$WIN32_SELECT_SRCS |
|||
|
|||
ngx_pic_opt= |
|||
|
|||
case "$NGX_CC_NAME" in |
|||
|
|||
gcc) |
|||
CORE_LIBS="$CORE_LIBS -ladvapi32 -lws2_32" |
|||
MAIN_LINK="$MAIN_LINK -Wl,--export-all-symbols" |
|||
MAIN_LINK="$MAIN_LINK -Wl,--out-implib=$NGX_OBJS/libnginx.a" |
|||
MODULE_LINK="-shared -L $NGX_OBJS -lnginx" |
|||
;; |
|||
|
|||
*) |
|||
CORE_LIBS="$CORE_LIBS advapi32.lib ws2_32.lib" |
|||
;; |
|||
|
|||
esac |
|||
|
|||
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=NGX_HAVE_INET6 . auto/have |
|||
|
|||
have=NGX_HAVE_IOCP . auto/have |
@ -0,0 +1,255 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module" |
|||
|
|||
CORE_INCS="src/core" |
|||
|
|||
CORE_DEPS="src/core/nginx.h \ |
|||
src/core/ngx_config.h \ |
|||
src/core/ngx_core.h \ |
|||
src/core/ngx_log.h \ |
|||
src/core/ngx_palloc.h \ |
|||
src/core/ngx_array.h \ |
|||
src/core/ngx_list.h \ |
|||
src/core/ngx_hash.h \ |
|||
src/core/ngx_buf.h \ |
|||
src/core/ngx_queue.h \ |
|||
src/core/ngx_string.h \ |
|||
src/core/ngx_parse.h \ |
|||
src/core/ngx_parse_time.h \ |
|||
src/core/ngx_inet.h \ |
|||
src/core/ngx_file.h \ |
|||
src/core/ngx_crc.h \ |
|||
src/core/ngx_crc32.h \ |
|||
src/core/ngx_murmurhash.h \ |
|||
src/core/ngx_md5.h \ |
|||
src/core/ngx_sha1.h \ |
|||
src/core/ngx_rbtree.h \ |
|||
src/core/ngx_radix_tree.h \ |
|||
src/core/ngx_rwlock.h \ |
|||
src/core/ngx_slab.h \ |
|||
src/core/ngx_times.h \ |
|||
src/core/ngx_shmtx.h \ |
|||
src/core/ngx_connection.h \ |
|||
src/core/ngx_cycle.h \ |
|||
src/core/ngx_conf_file.h \ |
|||
src/core/ngx_module.h \ |
|||
src/core/ngx_resolver.h \ |
|||
src/core/ngx_open_file_cache.h \ |
|||
src/core/ngx_crypt.h \ |
|||
src/core/ngx_proxy_protocol.h \ |
|||
src/core/ngx_syslog.h" |
|||
|
|||
|
|||
CORE_SRCS="src/core/nginx.c \ |
|||
src/core/ngx_log.c \ |
|||
src/core/ngx_palloc.c \ |
|||
src/core/ngx_array.c \ |
|||
src/core/ngx_list.c \ |
|||
src/core/ngx_hash.c \ |
|||
src/core/ngx_buf.c \ |
|||
src/core/ngx_queue.c \ |
|||
src/core/ngx_output_chain.c \ |
|||
src/core/ngx_string.c \ |
|||
src/core/ngx_parse.c \ |
|||
src/core/ngx_parse_time.c \ |
|||
src/core/ngx_inet.c \ |
|||
src/core/ngx_file.c \ |
|||
src/core/ngx_crc32.c \ |
|||
src/core/ngx_murmurhash.c \ |
|||
src/core/ngx_md5.c \ |
|||
src/core/ngx_sha1.c \ |
|||
src/core/ngx_rbtree.c \ |
|||
src/core/ngx_radix_tree.c \ |
|||
src/core/ngx_slab.c \ |
|||
src/core/ngx_times.c \ |
|||
src/core/ngx_shmtx.c \ |
|||
src/core/ngx_connection.c \ |
|||
src/core/ngx_cycle.c \ |
|||
src/core/ngx_spinlock.c \ |
|||
src/core/ngx_rwlock.c \ |
|||
src/core/ngx_cpuinfo.c \ |
|||
src/core/ngx_conf_file.c \ |
|||
src/core/ngx_module.c \ |
|||
src/core/ngx_resolver.c \ |
|||
src/core/ngx_open_file_cache.c \ |
|||
src/core/ngx_crypt.c \ |
|||
src/core/ngx_proxy_protocol.c \ |
|||
src/core/ngx_syslog.c" |
|||
|
|||
|
|||
EVENT_MODULES="ngx_events_module ngx_event_core_module" |
|||
|
|||
EVENT_INCS="src/event src/event/modules" |
|||
|
|||
EVENT_DEPS="src/event/ngx_event.h \ |
|||
src/event/ngx_event_timer.h \ |
|||
src/event/ngx_event_posted.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_posted.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 |
|||
WIN32_SELECT_SRCS=src/event/modules/ngx_win32_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 |
|||
|
|||
EVENTPORT_MODULE=ngx_eventport_module |
|||
EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c |
|||
|
|||
EPOLL_MODULE=ngx_epoll_module |
|||
EPOLL_SRCS=src/event/modules/ngx_epoll_module.c |
|||
|
|||
IOCP_MODULE=ngx_iocp_module |
|||
IOCP_SRCS=src/event/modules/ngx_iocp_module.c |
|||
|
|||
FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c" |
|||
LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c" |
|||
|
|||
UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix" |
|||
|
|||
UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \ |
|||
src/os/unix/ngx_time.h \ |
|||
src/os/unix/ngx_errno.h \ |
|||
src/os/unix/ngx_alloc.h \ |
|||
src/os/unix/ngx_files.h \ |
|||
src/os/unix/ngx_channel.h \ |
|||
src/os/unix/ngx_shmem.h \ |
|||
src/os/unix/ngx_process.h \ |
|||
src/os/unix/ngx_setaffinity.h \ |
|||
src/os/unix/ngx_setproctitle.h \ |
|||
src/os/unix/ngx_atomic.h \ |
|||
src/os/unix/ngx_gcc_atomic_x86.h \ |
|||
src/os/unix/ngx_thread.h \ |
|||
src/os/unix/ngx_socket.h \ |
|||
src/os/unix/ngx_os.h \ |
|||
src/os/unix/ngx_user.h \ |
|||
src/os/unix/ngx_dlopen.h \ |
|||
src/os/unix/ngx_process_cycle.h" |
|||
|
|||
# add to UNIX_DEPS |
|||
# src/os/unix/ngx_gcc_atomic_amd64.h \ |
|||
# src/os/unix/ngx_gcc_atomic_sparc64.h \ |
|||
# src/os/unix/ngx_gcc_atomic_ppc.h \ |
|||
# src/os/unix/ngx_sunpro_atomic_sparc64.h \ |
|||
# src/os/unix/ngx_sunpro_x86.il \ |
|||
# src/os/unix/ngx_sunpro_amd64.il \ |
|||
# src/os/unix/ngx_sunpro_sparc64.il \ |
|||
|
|||
|
|||
UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \ |
|||
src/os/unix/ngx_time.c \ |
|||
src/os/unix/ngx_errno.c \ |
|||
src/os/unix/ngx_alloc.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_udp_recv.c \ |
|||
src/os/unix/ngx_send.c \ |
|||
src/os/unix/ngx_writev_chain.c \ |
|||
src/os/unix/ngx_udp_send.c \ |
|||
src/os/unix/ngx_udp_sendmsg_chain.c \ |
|||
src/os/unix/ngx_channel.c \ |
|||
src/os/unix/ngx_shmem.c \ |
|||
src/os/unix/ngx_process.c \ |
|||
src/os/unix/ngx_daemon.c \ |
|||
src/os/unix/ngx_setaffinity.c \ |
|||
src/os/unix/ngx_setproctitle.c \ |
|||
src/os/unix/ngx_posix_init.c \ |
|||
src/os/unix/ngx_user.c \ |
|||
src/os/unix/ngx_dlopen.c \ |
|||
src/os/unix/ngx_process_cycle.c" |
|||
|
|||
POSIX_DEPS=src/os/unix/ngx_posix_config.h |
|||
|
|||
THREAD_POOL_MODULE=ngx_thread_pool_module |
|||
THREAD_POOL_DEPS=src/core/ngx_thread_pool.h |
|||
THREAD_POOL_SRCS="src/core/ngx_thread_pool.c |
|||
src/os/unix/ngx_thread_cond.c |
|||
src/os/unix/ngx_thread_mutex.c |
|||
src/os/unix/ngx_thread_id.c" |
|||
|
|||
FREEBSD_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h" |
|||
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c |
|||
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c |
|||
|
|||
LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h" |
|||
LINUX_SRCS=src/os/unix/ngx_linux_init.c |
|||
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c |
|||
|
|||
|
|||
SOLARIS_DEPS="src/os/unix/ngx_solaris_config.h src/os/unix/ngx_solaris.h" |
|||
SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c |
|||
SOLARIS_SENDFILEV_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c |
|||
|
|||
|
|||
DARWIN_DEPS="src/os/unix/ngx_darwin_config.h src/os/unix/ngx_darwin.h" |
|||
DARWIN_SRCS=src/os/unix/ngx_darwin_init.c |
|||
DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c |
|||
|
|||
|
|||
WIN32_INCS="$CORE_INCS $EVENT_INCS 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_errno.h \ |
|||
src/os/win32/ngx_alloc.h \ |
|||
src/os/win32/ngx_files.h \ |
|||
src/os/win32/ngx_shmem.h \ |
|||
src/os/win32/ngx_process.h \ |
|||
src/os/win32/ngx_atomic.h \ |
|||
src/os/win32/ngx_thread.h \ |
|||
src/os/win32/ngx_socket.h \ |
|||
src/os/win32/ngx_os.h \ |
|||
src/os/win32/ngx_user.h \ |
|||
src/os/win32/ngx_dlopen.h \ |
|||
src/os/win32/ngx_process_cycle.h" |
|||
|
|||
WIN32_CONFIG=src/os/win32/ngx_win32_config.h |
|||
|
|||
WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \ |
|||
src/os/win32/ngx_errno.c \ |
|||
src/os/win32/ngx_alloc.c \ |
|||
src/os/win32/ngx_files.c \ |
|||
src/os/win32/ngx_shmem.c \ |
|||
src/os/win32/ngx_time.c \ |
|||
src/os/win32/ngx_process.c \ |
|||
src/os/win32/ngx_thread.c \ |
|||
src/os/win32/ngx_socket.c \ |
|||
src/os/win32/ngx_wsarecv.c \ |
|||
src/os/win32/ngx_wsarecv_chain.c \ |
|||
src/os/win32/ngx_udp_wsarecv.c \ |
|||
src/os/win32/ngx_wsasend.c \ |
|||
src/os/win32/ngx_wsasend_chain.c \ |
|||
src/os/win32/ngx_win32_init.c \ |
|||
src/os/win32/ngx_user.c \ |
|||
src/os/win32/ngx_dlopen.c \ |
|||
src/os/win32/ngx_event_log.c \ |
|||
src/os/win32/ngx_process_cycle.c \ |
|||
src/event/ngx_event_acceptex.c" |
|||
|
|||
NGX_WIN32_ICONS="src/os/win32/nginx.ico" |
|||
NGX_WIN32_RC="src/os/win32/nginx.rc" |
|||
|
|||
|
|||
HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c |
@ -0,0 +1,8 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
have=NGX_SUPPRESS_WARN . auto/have |
|||
|
|||
have=NGX_SMP . auto/have |
@ -0,0 +1,82 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo |
|||
echo "Configuration summary" |
|||
|
|||
|
|||
if [ $USE_THREADS = YES ]; then |
|||
echo " + using threads" |
|||
fi |
|||
|
|||
if [ $USE_PCRE = DISABLED ]; then |
|||
echo " + PCRE library is disabled" |
|||
|
|||
else |
|||
case $PCRE in |
|||
YES) echo " + using system PCRE library" ;; |
|||
NONE) echo " + PCRE library is not used" ;; |
|||
*) echo " + using PCRE library: $PCRE" ;; |
|||
esac |
|||
fi |
|||
|
|||
case $OPENSSL in |
|||
YES) echo " + using system OpenSSL library" ;; |
|||
NONE) echo " + OpenSSL library is not used" ;; |
|||
*) echo " + using OpenSSL library: $OPENSSL" ;; |
|||
esac |
|||
|
|||
case $ZLIB in |
|||
YES) echo " + using system zlib library" ;; |
|||
NONE) echo " + zlib library is not used" ;; |
|||
*) echo " + using zlib library: $ZLIB" ;; |
|||
esac |
|||
|
|||
case $NGX_LIBATOMIC in |
|||
YES) echo " + using system libatomic_ops library" ;; |
|||
NO) ;; # not used |
|||
*) echo " + using libatomic_ops library: $NGX_LIBATOMIC" ;; |
|||
esac |
|||
|
|||
echo |
|||
|
|||
|
|||
cat << END |
|||
nginx path prefix: "$NGX_PREFIX" |
|||
nginx binary file: "$NGX_SBIN_PATH" |
|||
nginx modules path: "$NGX_MODULES_PATH" |
|||
nginx configuration prefix: "$NGX_CONF_PREFIX" |
|||
nginx configuration file: "$NGX_CONF_PATH" |
|||
nginx pid file: "$NGX_PID_PATH" |
|||
END |
|||
|
|||
if test -n "$NGX_ERROR_LOG_PATH"; then |
|||
echo " nginx error log file: \"$NGX_ERROR_LOG_PATH\"" |
|||
else |
|||
echo " nginx logs errors to stderr" |
|||
fi |
|||
|
|||
cat << END |
|||
nginx http access log file: "$NGX_HTTP_LOG_PATH" |
|||
nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH" |
|||
END |
|||
|
|||
if [ $HTTP_PROXY = YES ]; then |
|||
echo " nginx http proxy temporary files: \"$NGX_HTTP_PROXY_TEMP_PATH\"" |
|||
fi |
|||
|
|||
if [ $HTTP_FASTCGI = YES ]; then |
|||
echo " nginx http fastcgi temporary files: \"$NGX_HTTP_FASTCGI_TEMP_PATH\"" |
|||
fi |
|||
|
|||
if [ $HTTP_UWSGI = YES ]; then |
|||
echo " nginx http uwsgi temporary files: \"$NGX_HTTP_UWSGI_TEMP_PATH\"" |
|||
fi |
|||
|
|||
if [ $HTTP_SCGI = YES ]; then |
|||
echo " nginx http scgi temporary files: \"$NGX_HTTP_SCGI_TEMP_PATH\"" |
|||
fi |
|||
|
|||
echo "$NGX_POST_CONF_MSG" |
@ -0,0 +1,20 @@ |
|||
|
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
if [ $USE_THREADS = YES ]; then |
|||
|
|||
if [ "$NGX_PLATFORM" = win32 ]; then |
|||
cat << END |
|||
|
|||
$0: --with-threads is not supported on Windows |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
|
|||
have=NGX_THREADS . auto/have |
|||
CORE_DEPS="$CORE_DEPS $THREAD_POOL_DEPS" |
|||
CORE_SRCS="$CORE_SRCS $THREAD_POOL_SRCS" |
|||
CORE_LIBS="$CORE_LIBS -lpthread" |
|||
fi |
@ -0,0 +1,76 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo $ngx_n "checking for $ngx_type size ...$ngx_c" |
|||
|
|||
cat << END >> $NGX_AUTOCONF_ERR |
|||
|
|||
---------------------------------------- |
|||
checking for $ngx_type size |
|||
|
|||
END |
|||
|
|||
ngx_size= |
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
#include <sys/types.h> |
|||
#include <sys/time.h> |
|||
$NGX_INCLUDE_UNISTD_H |
|||
#include <signal.h> |
|||
#include <stdio.h> |
|||
#include <sys/resource.h> |
|||
$NGX_INCLUDE_INTTYPES_H |
|||
$NGX_INCLUDE_AUTO_CONFIG_H |
|||
|
|||
int main(void) { |
|||
printf("%d", (int) sizeof($ngx_type)); |
|||
return 0; |
|||
} |
|||
|
|||
END |
|||
|
|||
|
|||
ngx_test="$CC $CC_TEST_FLAGS $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 |
|||
ngx_size=`$NGX_AUTOTEST` |
|||
echo " $ngx_size bytes" |
|||
fi |
|||
|
|||
|
|||
case $ngx_size in |
|||
4) |
|||
ngx_max_value=2147483647 |
|||
ngx_max_len='(sizeof("-2147483648") - 1)' |
|||
;; |
|||
|
|||
8) |
|||
ngx_max_value=9223372036854775807LL |
|||
ngx_max_len='(sizeof("-9223372036854775808") - 1)' |
|||
;; |
|||
|
|||
*) |
|||
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 |
|||
|
|||
rm -rf $NGX_AUTOTEST* |
|||
|
|||
exit 1 |
|||
esac |
|||
|
|||
|
|||
rm -rf $NGX_AUTOTEST* |
|||
|
@ -0,0 +1,82 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo $ngx_n "checking for $ngx_type ...$ngx_c" |
|||
|
|||
cat << END >> $NGX_AUTOCONF_ERR |
|||
|
|||
---------------------------------------- |
|||
checking for $ngx_type |
|||
|
|||
END |
|||
|
|||
ngx_found=no |
|||
|
|||
for ngx_try in $ngx_type $ngx_types |
|||
do |
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
#include <sys/types.h> |
|||
#include <signal.h> |
|||
#include <sys/socket.h> |
|||
#include <sys/time.h> |
|||
#include <sys/resource.h> |
|||
#include <netinet/in.h> |
|||
$NGX_INCLUDE_INTTYPES_H |
|||
|
|||
int main(void) { |
|||
$ngx_try i = 0; |
|||
return (int) i; |
|||
} |
|||
|
|||
END |
|||
|
|||
ngx_test="$CC $CC_TEST_FLAGS $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_try = $ngx_type ]; then |
|||
echo " found" |
|||
ngx_found=yes |
|||
else |
|||
echo ", $ngx_try used" |
|||
ngx_found=$ngx_try |
|||
fi |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
if [ $ngx_try = $ngx_type ]; then |
|||
echo $ngx_n " $ngx_try not found$ngx_c" |
|||
else |
|||
echo $ngx_n ", $ngx_try not found$ngx_c" |
|||
fi |
|||
|
|||
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 -rf $NGX_AUTOTEST* |
|||
|
|||
if [ $ngx_found != no ]; then |
|||
break |
|||
fi |
|||
done |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
echo |
|||
echo "$0: error: can not define $ngx_type" |
|||
|
|||
exit 1 |
|||
fi |
|||
|
|||
if [ $ngx_found != yes ]; then |
|||
echo "typedef $ngx_found $ngx_type;" >> $NGX_AUTO_CONFIG_H |
|||
fi |
@ -0,0 +1,50 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
echo $ngx_n "checking for uintptr_t ...$ngx_c" |
|||
|
|||
cat << END >> $NGX_AUTOCONF_ERR |
|||
|
|||
---------------------------------------- |
|||
checking for uintptr_t |
|||
|
|||
END |
|||
|
|||
found=no |
|||
|
|||
cat << END > $NGX_AUTOTEST.c |
|||
|
|||
#include <sys/types.h> |
|||
$NGX_INCLUDE_INTTYPES_H |
|||
|
|||
int main(void) { |
|||
uintptr_t i = 0; |
|||
return (int) i; |
|||
} |
|||
|
|||
END |
|||
|
|||
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ |
|||
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT" |
|||
|
|||
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" |
|||
|
|||
if [ -x $NGX_AUTOTEST ]; then |
|||
echo " uintptr_t found" |
|||
found=yes |
|||
else |
|||
echo $ngx_n " uintptr_t not found" $ngx_c |
|||
fi |
|||
|
|||
rm -rf $NGX_AUTOTEST* |
|||
|
|||
|
|||
if [ $found = no ]; then |
|||
found="uint`expr 8 \* $ngx_ptr_size`_t" |
|||
echo ", $found used" |
|||
|
|||
echo "typedef $found uintptr_t;" >> $NGX_AUTO_CONFIG_H |
|||
echo "typedef $found intptr_t;" | sed -e 's/u//g' >> $NGX_AUTO_CONFIG_H |
|||
fi |
@ -0,0 +1,12 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#ifndef $ngx_param |
|||
#define $ngx_param $ngx_value |
|||
#endif |
|||
|
|||
END |
@ -0,0 +1,964 @@ |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
NGX_USER=${NGX_USER:-nobody} |
|||
|
|||
if [ -z "$NGX_GROUP" ]; then |
|||
if [ $NGX_USER = nobody ]; then |
|||
if grep nobody /etc/group 2>&1 >/dev/null; then |
|||
echo "checking for nobody group ... found" |
|||
NGX_GROUP=nobody |
|||
else |
|||
echo "checking for nobody group ... not found" |
|||
|
|||
if grep nogroup /etc/group 2>&1 >/dev/null; then |
|||
echo "checking for nogroup group ... found" |
|||
NGX_GROUP=nogroup |
|||
else |
|||
echo "checking for nogroup group ... not found" |
|||
NGX_GROUP=nobody |
|||
fi |
|||
fi |
|||
else |
|||
NGX_GROUP=$NGX_USER |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="poll()" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <poll.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int n; struct pollfd pl; |
|||
pl.fd = 0; |
|||
pl.events = 0; |
|||
pl.revents = 0; |
|||
n = poll(&pl, 1, 0); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
EVENT_POLL=NONE |
|||
fi |
|||
|
|||
|
|||
ngx_feature="/dev/poll" |
|||
ngx_feature_name="NGX_HAVE_DEVPOLL" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/devpoll.h>" |
|||
ngx_feature_path= |
|||
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); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
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="NGX_HAVE_KQUEUE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/event.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="(void) kqueue()" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
|
|||
have=NGX_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="NGX_HAVE_LOWAT_EVENT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/event.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct kevent kev; |
|||
kev.fflags = NOTE_LOWAT; |
|||
(void) kev" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="kqueue's EVFILT_TIMER" |
|||
ngx_feature_name="NGX_HAVE_TIMER_EVENT" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/event.h> |
|||
#include <sys/time.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int kq; |
|||
struct kevent kev; |
|||
struct timespec ts; |
|||
|
|||
if ((kq = kqueue()) == -1) return 1; |
|||
|
|||
kev.ident = 0; |
|||
kev.filter = EVFILT_TIMER; |
|||
kev.flags = EV_ADD|EV_ENABLE; |
|||
kev.fflags = 0; |
|||
kev.data = 1000; |
|||
kev.udata = 0; |
|||
|
|||
ts.tv_sec = 0; |
|||
ts.tv_nsec = 0; |
|||
|
|||
if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1; |
|||
|
|||
if (kev.flags & EV_ERROR) return 1;" |
|||
|
|||
. auto/feature |
|||
fi |
|||
fi |
|||
|
|||
|
|||
if [ "$NGX_SYSTEM" = "NetBSD" ]; then |
|||
|
|||
# NetBSD 2.0 incompatibly defines kevent.udata as "intptr_t" |
|||
|
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#define NGX_KQUEUE_UDATA_T |
|||
|
|||
END |
|||
|
|||
else |
|||
cat << END >> $NGX_AUTO_CONFIG_H |
|||
|
|||
#define NGX_KQUEUE_UDATA_T (void *) |
|||
|
|||
END |
|||
|
|||
fi |
|||
|
|||
|
|||
ngx_feature="crypt()" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="crypt(\"test\", \"salt\");" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="crypt() in libcrypt" |
|||
ngx_feature_name= |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs=-lcrypt |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CRYPT_LIB="-lcrypt" |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="F_READAHEAD" |
|||
ngx_feature_name="NGX_HAVE_F_READAHEAD" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="fcntl(0, F_READAHEAD, 1);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="posix_fadvise()" |
|||
ngx_feature_name="NGX_HAVE_POSIX_FADVISE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="O_DIRECT" |
|||
ngx_feature_name="NGX_HAVE_O_DIRECT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="fcntl(0, F_SETFL, O_DIRECT);" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = yes -a "$NGX_SYSTEM" = "Linux" ]; then |
|||
have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have |
|||
fi |
|||
|
|||
ngx_feature="F_NOCACHE" |
|||
ngx_feature_name="NGX_HAVE_F_NOCACHE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="fcntl(0, F_NOCACHE, 1);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="directio()" |
|||
ngx_feature_name="NGX_HAVE_DIRECTIO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="directio(0, DIRECTIO_ON);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="statfs()" |
|||
ngx_feature_name="NGX_HAVE_STATFS" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="$NGX_INCLUDE_SYS_PARAM_H |
|||
$NGX_INCLUDE_SYS_MOUNT_H |
|||
$NGX_INCLUDE_SYS_VFS_H" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct statfs fs; |
|||
statfs(\".\", &fs);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="statvfs()" |
|||
ngx_feature_name="NGX_HAVE_STATVFS" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/statvfs.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct statvfs fs; |
|||
statvfs(\".\", &fs);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="dlopen()" |
|||
ngx_feature_name="NGX_HAVE_DLOPEN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <dlfcn.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="dlopen(NULL, RTLD_NOW | RTLD_GLOBAL); dlsym(NULL, \"\")" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="dlopen() in libdl" |
|||
ngx_feature_libs="-ldl" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS -ldl" |
|||
NGX_LIBDL="-ldl" |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="sched_yield()" |
|||
ngx_feature_name="NGX_HAVE_SCHED_YIELD" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sched.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="sched_yield()" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="sched_yield() in librt" |
|||
ngx_feature_libs="-lrt" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS -lrt" |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="SO_SETFIB" |
|||
ngx_feature_name="NGX_HAVE_SETFIB" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_SETFIB, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="SO_REUSEPORT" |
|||
ngx_feature_name="NGX_HAVE_REUSEPORT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_REUSEPORT, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="SO_ACCEPTFILTER" |
|||
ngx_feature_name="NGX_HAVE_DEFERRED_ACCEPT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# NetBSD bind to any address for transparent proxying |
|||
|
|||
ngx_feature="SO_BINDANY" |
|||
ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_BINDANY, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# Linux IP_BIND_ADDRESS_NO_PORT |
|||
|
|||
ngx_feature="IP_BIND_ADDRESS_NO_PORT" |
|||
ngx_feature_name="NGX_HAVE_IP_BIND_ADDRESS_NO_PORT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_BIND_ADDRESS_NO_PORT, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# Linux transparent proxying |
|||
|
|||
ngx_feature="IP_TRANSPARENT" |
|||
ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_TRANSPARENT, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# FreeBSD bind to any address for transparent proxying |
|||
|
|||
ngx_feature="IP_BINDANY" |
|||
ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_BINDANY, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# BSD way to get IPv4 datagram destination address |
|||
|
|||
ngx_feature="IP_RECVDSTADDR" |
|||
ngx_feature_name="NGX_HAVE_IP_RECVDSTADDR" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_RECVDSTADDR, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# Linux way to get IPv4 datagram destination address |
|||
|
|||
ngx_feature="IP_PKTINFO" |
|||
ngx_feature_name="NGX_HAVE_IP_PKTINFO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_PKTINFO, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
# RFC 3542 way to get IPv6 datagram destination address |
|||
|
|||
ngx_feature="IPV6_RECVPKTINFO" |
|||
ngx_feature_name="NGX_HAVE_IPV6_RECVPKTINFO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_IPV6, IPV6_RECVPKTINFO, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="TCP_DEFER_ACCEPT" |
|||
ngx_feature_name="NGX_HAVE_DEFERRED_ACCEPT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h> |
|||
#include <netinet/tcp.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_TCP, TCP_DEFER_ACCEPT, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="TCP_KEEPIDLE" |
|||
ngx_feature_name="NGX_HAVE_KEEPALIVE_TUNABLE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h> |
|||
#include <netinet/tcp.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_TCP, TCP_KEEPIDLE, NULL, 0); |
|||
setsockopt(0, IPPROTO_TCP, TCP_KEEPINTVL, NULL, 0); |
|||
setsockopt(0, IPPROTO_TCP, TCP_KEEPCNT, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="TCP_FASTOPEN" |
|||
ngx_feature_name="NGX_HAVE_TCP_FASTOPEN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h> |
|||
#include <netinet/tcp.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="setsockopt(0, IPPROTO_TCP, TCP_FASTOPEN, NULL, 0)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="TCP_INFO" |
|||
ngx_feature_name="NGX_HAVE_TCP_INFO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h> |
|||
#include <netinet/tcp.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="socklen_t optlen = sizeof(struct tcp_info); |
|||
struct tcp_info ti; |
|||
ti.tcpi_rtt = 0; |
|||
ti.tcpi_rttvar = 0; |
|||
ti.tcpi_snd_cwnd = 0; |
|||
ti.tcpi_rcv_space = 0; |
|||
getsockopt(0, IPPROTO_TCP, TCP_INFO, &ti, &optlen)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="accept4()" |
|||
ngx_feature_name="NGX_HAVE_ACCEPT4" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="accept4(0, NULL, NULL, SOCK_NONBLOCK)" |
|||
. auto/feature |
|||
|
|||
if [ $NGX_FILE_AIO = YES ]; then |
|||
|
|||
ngx_feature="kqueue AIO support" |
|||
ngx_feature_name="NGX_HAVE_FILE_AIO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <aio.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct aiocb iocb; |
|||
iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT; |
|||
(void) aio_read(&iocb)" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_SRCS="$CORE_SRCS $FILE_AIO_SRCS" |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="Linux AIO support" |
|||
ngx_feature_name="NGX_HAVE_FILE_AIO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <linux/aio_abi.h> |
|||
#include <sys/eventfd.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct iocb iocb; |
|||
iocb.aio_lio_opcode = IOCB_CMD_PREAD; |
|||
iocb.aio_flags = IOCB_FLAG_RESFD; |
|||
iocb.aio_resfd = -1; |
|||
(void) iocb; |
|||
(void) eventfd(0, 0)" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
have=NGX_HAVE_EVENTFD . auto/have |
|||
have=NGX_HAVE_SYS_EVENTFD_H . auto/have |
|||
CORE_SRCS="$CORE_SRCS $LINUX_AIO_SRCS" |
|||
fi |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="Linux AIO support (SYS_eventfd)" |
|||
ngx_feature_incs="#include <linux/aio_abi.h> |
|||
#include <sys/syscall.h>" |
|||
ngx_feature_test="struct iocb iocb; |
|||
iocb.aio_lio_opcode = IOCB_CMD_PREAD; |
|||
iocb.aio_flags = IOCB_FLAG_RESFD; |
|||
iocb.aio_resfd = -1; |
|||
(void) iocb; |
|||
(void) SYS_eventfd" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
have=NGX_HAVE_EVENTFD . auto/have |
|||
CORE_SRCS="$CORE_SRCS $LINUX_AIO_SRCS" |
|||
fi |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
cat << END |
|||
|
|||
$0: no supported file AIO was found |
|||
Currently file AIO is supported on FreeBSD 4.3+ and Linux 2.6.22+ only |
|||
|
|||
END |
|||
exit 1 |
|||
fi |
|||
|
|||
else |
|||
|
|||
ngx_feature="eventfd()" |
|||
ngx_feature_name="NGX_HAVE_EVENTFD" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/eventfd.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="(void) eventfd(0, 0)" |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
have=NGX_HAVE_SYS_EVENTFD_H . auto/have |
|||
fi |
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
ngx_feature="eventfd() (SYS_eventfd)" |
|||
ngx_feature_incs="#include <sys/syscall.h>" |
|||
ngx_feature_test="(void) SYS_eventfd" |
|||
. auto/feature |
|||
fi |
|||
fi |
|||
|
|||
|
|||
have=NGX_HAVE_UNIX_DOMAIN . auto/have |
|||
|
|||
ngx_feature_libs= |
|||
|
|||
|
|||
# C types |
|||
|
|||
ngx_type="int"; . auto/types/sizeof |
|||
|
|||
ngx_type="long"; . auto/types/sizeof |
|||
|
|||
ngx_type="long long"; . auto/types/sizeof |
|||
|
|||
ngx_type="void *"; . auto/types/sizeof; ngx_ptr_size=$ngx_size |
|||
ngx_param=NGX_PTR_SIZE; ngx_value=$ngx_size; . auto/types/value |
|||
|
|||
|
|||
# POSIX types |
|||
|
|||
NGX_INCLUDE_AUTO_CONFIG_H="#include \"ngx_auto_config.h\"" |
|||
|
|||
ngx_type="uint32_t"; ngx_types="u_int32_t"; . auto/types/typedef |
|||
ngx_type="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef |
|||
|
|||
ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef |
|||
. auto/types/sizeof |
|||
ngx_param=NGX_SIG_ATOMIC_T_SIZE; ngx_value=$ngx_size; . auto/types/value |
|||
|
|||
ngx_type="socklen_t"; ngx_types="int"; . auto/types/typedef |
|||
|
|||
ngx_type="in_addr_t"; ngx_types="uint32_t u_int32_t"; . auto/types/typedef |
|||
|
|||
ngx_type="in_port_t"; ngx_types="u_short"; . auto/types/typedef |
|||
|
|||
ngx_type="rlim_t"; ngx_types="int"; . auto/types/typedef |
|||
|
|||
. auto/types/uintptr_t |
|||
|
|||
. auto/endianness |
|||
|
|||
ngx_type="size_t"; . auto/types/sizeof |
|||
ngx_param=NGX_MAX_SIZE_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value |
|||
ngx_param=NGX_SIZE_T_LEN; ngx_value=$ngx_max_len; . auto/types/value |
|||
|
|||
ngx_type="off_t"; . auto/types/sizeof |
|||
ngx_param=NGX_MAX_OFF_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value |
|||
ngx_param=NGX_OFF_T_LEN; ngx_value=$ngx_max_len; . auto/types/value |
|||
|
|||
ngx_type="time_t"; . auto/types/sizeof |
|||
ngx_param=NGX_TIME_T_SIZE; ngx_value=$ngx_size; . auto/types/value |
|||
ngx_param=NGX_TIME_T_LEN; ngx_value=$ngx_max_len; . auto/types/value |
|||
ngx_param=NGX_MAX_TIME_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value |
|||
|
|||
|
|||
# syscalls, libc calls and some features |
|||
|
|||
|
|||
ngx_feature="AF_INET6" |
|||
ngx_feature_name="NGX_HAVE_INET6" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <netinet/in.h> |
|||
#include <arpa/inet.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct sockaddr_in6 sin6; |
|||
sin6.sin6_family = AF_INET6; |
|||
(void) sin6" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="setproctitle()" |
|||
ngx_feature_name="NGX_HAVE_SETPROCTITLE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <stdlib.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs=$NGX_SETPROCTITLE_LIB |
|||
ngx_feature_test="setproctitle(\"test\");" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="pread()" |
|||
ngx_feature_name="NGX_HAVE_PREAD" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="pwrite()" |
|||
ngx_feature_name="NGX_HAVE_PWRITE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
# pwritev() was introduced in FreeBSD 6 and Linux 2.6.30, glibc 2.10 |
|||
|
|||
ngx_feature="pwritev()" |
|||
ngx_feature_name="NGX_HAVE_PWRITEV" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs='#include <sys/uio.h>' |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="char buf[1]; struct iovec vec[1]; ssize_t n; |
|||
vec[0].iov_base = buf; |
|||
vec[0].iov_len = 1; |
|||
n = pwritev(1, vec, 1, 0); |
|||
if (n == -1) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="sys_nerr" |
|||
ngx_feature_name="NGX_SYS_NERR" |
|||
ngx_feature_run=value |
|||
ngx_feature_incs='#include <errno.h> |
|||
#include <stdio.h>' |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test='printf("%d", sys_nerr);' |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# Cygiwn defines _sys_nerr |
|||
ngx_feature="_sys_nerr" |
|||
ngx_feature_name="NGX_SYS_NERR" |
|||
ngx_feature_run=value |
|||
ngx_feature_incs='#include <errno.h> |
|||
#include <stdio.h>' |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test='printf("%d", _sys_nerr);' |
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# Solaris has no sys_nerr |
|||
ngx_feature='maximum errno' |
|||
ngx_feature_name=NGX_SYS_NERR |
|||
ngx_feature_run=value |
|||
ngx_feature_incs='#include <errno.h> |
|||
#include <string.h> |
|||
#include <stdio.h>' |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test='int n; |
|||
char *p; |
|||
for (n = 1; n < 1000; n++) { |
|||
errno = 0; |
|||
p = strerror(n); |
|||
if (errno == EINVAL |
|||
|| p == NULL |
|||
|| strncmp(p, "Unknown error", 13) == 0) |
|||
{ |
|||
break; |
|||
} |
|||
} |
|||
printf("%d", n);' |
|||
. auto/feature |
|||
fi |
|||
|
|||
|
|||
ngx_feature="localtime_r()" |
|||
ngx_feature_name="NGX_HAVE_LOCALTIME_R" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <time.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct tm t; time_t c=0; localtime_r(&c, &t)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="posix_memalign()" |
|||
ngx_feature_name="NGX_HAVE_POSIX_MEMALIGN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <stdlib.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="void *p; int n; n = posix_memalign(&p, 4096, 4096); |
|||
if (n != 0) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="memalign()" |
|||
ngx_feature_name="NGX_HAVE_MEMALIGN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <stdlib.h> |
|||
#include <malloc.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="void *p; p = memalign(4096, 4096); |
|||
if (p == NULL) return 1" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="mmap(MAP_ANON|MAP_SHARED)" |
|||
ngx_feature_name="NGX_HAVE_MAP_ANON" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/mman.h>" |
|||
ngx_feature_path= |
|||
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;" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature='mmap("/dev/zero", MAP_SHARED)' |
|||
ngx_feature_name="NGX_HAVE_MAP_DEVZERO" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/mman.h> |
|||
#include <sys/stat.h> |
|||
#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
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); |
|||
if (p == MAP_FAILED) return 1;' |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="System V shared memory" |
|||
ngx_feature_name="NGX_HAVE_SYSVSHM" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <sys/ipc.h> |
|||
#include <sys/shm.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int id; |
|||
id = shmget(IPC_PRIVATE, 4096, (SHM_R|SHM_W|IPC_CREAT)); |
|||
if (id == -1) return 1; |
|||
shmctl(id, IPC_RMID, NULL);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="POSIX semaphores" |
|||
ngx_feature_name="NGX_HAVE_POSIX_SEM" |
|||
ngx_feature_run=yes |
|||
ngx_feature_incs="#include <semaphore.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="sem_t sem; |
|||
if (sem_init(&sem, 1, 0) == -1) return 1; |
|||
sem_destroy(&sem);" |
|||
. auto/feature |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# Linux has POSIX semaphores in libpthread |
|||
ngx_feature="POSIX semaphores in libpthread" |
|||
ngx_feature_libs=-lpthread |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS -lpthread" |
|||
fi |
|||
fi |
|||
|
|||
|
|||
if [ $ngx_found = no ]; then |
|||
|
|||
# Solaris has POSIX semaphores in librt |
|||
ngx_feature="POSIX semaphores in librt" |
|||
ngx_feature_libs=-lrt |
|||
. auto/feature |
|||
|
|||
if [ $ngx_found = yes ]; then |
|||
CORE_LIBS="$CORE_LIBS -lrt" |
|||
fi |
|||
fi |
|||
|
|||
|
|||
ngx_feature="struct msghdr.msg_control" |
|||
ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/socket.h> |
|||
#include <stdio.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct msghdr msg; |
|||
printf(\"%d\", (int) sizeof(msg.msg_control))" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="ioctl(FIONBIO)" |
|||
ngx_feature_name="NGX_HAVE_FIONBIO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/ioctl.h> |
|||
#include <stdio.h> |
|||
$NGX_INCLUDE_SYS_FILIO_H" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="int i = FIONBIO; printf(\"%d\", i)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="struct tm.tm_gmtoff" |
|||
ngx_feature_name="NGX_HAVE_GMTOFF" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <time.h> |
|||
#include <stdio.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct tm tm; tm.tm_gmtoff = 0; |
|||
printf(\"%d\", (int) tm.tm_gmtoff)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="struct dirent.d_namlen" |
|||
ngx_feature_name="NGX_HAVE_D_NAMLEN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <dirent.h> |
|||
#include <stdio.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct dirent dir; dir.d_namlen = 0; |
|||
printf(\"%d\", (int) dir.d_namlen)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="struct dirent.d_type" |
|||
ngx_feature_name="NGX_HAVE_D_TYPE" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <dirent.h> |
|||
#include <stdio.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct dirent dir; dir.d_type = DT_REG; |
|||
printf(\"%d\", (int) dir.d_type)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="sysconf(_SC_NPROCESSORS_ONLN)" |
|||
ngx_feature_name="NGX_HAVE_SC_NPROCESSORS_ONLN" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs= |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="sysconf(_SC_NPROCESSORS_ONLN)" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="openat(), fstatat()" |
|||
ngx_feature_name="NGX_HAVE_OPENAT" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/stat.h> |
|||
#include <fcntl.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test="struct stat sb; |
|||
openat(AT_FDCWD, \".\", O_RDONLY|O_NOFOLLOW); |
|||
fstatat(AT_FDCWD, \".\", &sb, AT_SYMLINK_NOFOLLOW);" |
|||
. auto/feature |
|||
|
|||
|
|||
ngx_feature="getaddrinfo()" |
|||
ngx_feature_name="NGX_HAVE_GETADDRINFO" |
|||
ngx_feature_run=no |
|||
ngx_feature_incs="#include <sys/types.h> |
|||
#include <sys/socket.h> |
|||
#include <netdb.h>" |
|||
ngx_feature_path= |
|||
ngx_feature_libs= |
|||
ngx_feature_test='struct addrinfo *res; |
|||
if (getaddrinfo("localhost", NULL, NULL, &res) != 0) return 1; |
|||
freeaddrinfo(res)' |
|||
. auto/feature |
@ -0,0 +1,26 @@ |
|||
|
|||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
|||
fastcgi_param QUERY_STRING $query_string; |
|||
fastcgi_param REQUEST_METHOD $request_method; |
|||
fastcgi_param CONTENT_TYPE $content_type; |
|||
fastcgi_param CONTENT_LENGTH $content_length; |
|||
|
|||
fastcgi_param SCRIPT_NAME $fastcgi_script_name; |
|||
fastcgi_param REQUEST_URI $request_uri; |
|||
fastcgi_param DOCUMENT_URI $document_uri; |
|||
fastcgi_param DOCUMENT_ROOT $document_root; |
|||
fastcgi_param SERVER_PROTOCOL $server_protocol; |
|||
fastcgi_param REQUEST_SCHEME $scheme; |
|||
fastcgi_param HTTPS $https if_not_empty; |
|||
|
|||
fastcgi_param GATEWAY_INTERFACE CGI/1.1; |
|||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; |
|||
|
|||
fastcgi_param REMOTE_ADDR $remote_addr; |
|||
fastcgi_param REMOTE_PORT $remote_port; |
|||
fastcgi_param SERVER_ADDR $server_addr; |
|||
fastcgi_param SERVER_PORT $server_port; |
|||
fastcgi_param SERVER_NAME $server_name; |
|||
|
|||
# PHP only, required if PHP was built with --enable-force-cgi-redirect |
|||
fastcgi_param REDIRECT_STATUS 200; |
@ -0,0 +1,25 @@ |
|||
|
|||
fastcgi_param QUERY_STRING $query_string; |
|||
fastcgi_param REQUEST_METHOD $request_method; |
|||
fastcgi_param CONTENT_TYPE $content_type; |
|||
fastcgi_param CONTENT_LENGTH $content_length; |
|||
|
|||
fastcgi_param SCRIPT_NAME $fastcgi_script_name; |
|||
fastcgi_param REQUEST_URI $request_uri; |
|||
fastcgi_param DOCUMENT_URI $document_uri; |
|||
fastcgi_param DOCUMENT_ROOT $document_root; |
|||
fastcgi_param SERVER_PROTOCOL $server_protocol; |
|||
fastcgi_param REQUEST_SCHEME $scheme; |
|||
fastcgi_param HTTPS $https if_not_empty; |
|||
|
|||
fastcgi_param GATEWAY_INTERFACE CGI/1.1; |
|||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; |
|||
|
|||
fastcgi_param REMOTE_ADDR $remote_addr; |
|||
fastcgi_param REMOTE_PORT $remote_port; |
|||
fastcgi_param SERVER_ADDR $server_addr; |
|||
fastcgi_param SERVER_PORT $server_port; |
|||
fastcgi_param SERVER_NAME $server_name; |
|||
|
|||
# PHP only, required if PHP was built with --enable-force-cgi-redirect |
|||
fastcgi_param REDIRECT_STATUS 200; |
@ -0,0 +1,109 @@ |
|||
|
|||
# This map is not a full koi8-r <> utf8 map: it does not contain |
|||
# box-drawing and some other characters. Besides this map contains |
|||
# several koi8-u and Byelorussian letters which are not in koi8-r. |
|||
# If you need a full and standard map, use contrib/unicode2nginx/koi-utf |
|||
# map instead. |
|||
|
|||
charset_map koi8-r utf-8 { |
|||
|
|||
80 E282AC ; # euro |
|||
|
|||
95 E280A2 ; # bullet |
|||
|
|||
9A C2A0 ; # |
|||
|
|||
9E C2B7 ; # · |
|||
|
|||
A3 D191 ; # small yo |
|||
A4 D194 ; # small Ukrainian ye |
|||
|
|||
A6 D196 ; # small Ukrainian i |
|||
A7 D197 ; # small Ukrainian yi |
|||
|
|||
AD D291 ; # small Ukrainian soft g |
|||
AE D19E ; # small Byelorussian short u |
|||
|
|||
B0 C2B0 ; # ° |
|||
|
|||
B3 D081 ; # capital YO |
|||
B4 D084 ; # capital Ukrainian YE |
|||
|
|||
B6 D086 ; # capital Ukrainian I |
|||
B7 D087 ; # capital Ukrainian YI |
|||
|
|||
B9 E28496 ; # numero sign |
|||
|
|||
BD D290 ; # capital Ukrainian soft G |
|||
BE D18E ; # capital Byelorussian short U |
|||
|
|||
BF C2A9 ; # (C) |
|||
|
|||
C0 D18E ; # small yu |
|||
C1 D0B0 ; # small a |
|||
C2 D0B1 ; # small b |
|||
C3 D186 ; # small ts |
|||
C4 D0B4 ; # small d |
|||
C5 D0B5 ; # small ye |
|||
C6 D184 ; # small f |
|||
C7 D0B3 ; # small g |
|||
C8 D185 ; # small kh |
|||
C9 D0B8 ; # small i |
|||
CA D0B9 ; # small j |
|||
CB D0BA ; # small k |
|||
CC D0BB ; # small l |
|||
CD D0BC ; # small m |
|||
CE D0BD ; # small n |
|||
CF D0BE ; # small o |
|||
|
|||
D0 D0BF ; # small p |
|||
D1 D18F ; # small ya |
|||
D2 D180 ; # small r |
|||
D3 D181 ; # small s |
|||
D4 D182 ; # small t |
|||
D5 D183 ; # small u |
|||
D6 D0B6 ; # small zh |
|||
D7 D0B2 ; # small v |
|||
D8 D18C ; # small soft sign |
|||
D9 D18B ; # small y |
|||
DA D0B7 ; # small z |
|||
DB D188 ; # small sh |
|||
DC D18D ; # small e |
|||
DD D189 ; # small shch |
|||
DE D187 ; # small ch |
|||
DF D18A ; # small hard sign |
|||
|
|||
E0 D0AE ; # capital YU |
|||
E1 D090 ; # capital A |
|||
E2 D091 ; # capital B |
|||
E3 D0A6 ; # capital TS |
|||
E4 D094 ; # capital D |
|||
E5 D095 ; # capital YE |
|||
E6 D0A4 ; # capital F |
|||
E7 D093 ; # capital G |
|||
E8 D0A5 ; # capital KH |
|||
E9 D098 ; # capital I |
|||
EA D099 ; # capital J |
|||
EB D09A ; # capital K |
|||
EC D09B ; # capital L |
|||
ED D09C ; # capital M |
|||
EE D09D ; # capital N |
|||
EF D09E ; # capital O |
|||
|
|||
F0 D09F ; # capital P |
|||
F1 D0AF ; # capital YA |
|||
F2 D0A0 ; # capital R |
|||
F3 D0A1 ; # capital S |
|||
F4 D0A2 ; # capital T |
|||
F5 D0A3 ; # capital U |
|||
F6 D096 ; # capital ZH |
|||
F7 D092 ; # capital V |
|||
F8 D0AC ; # capital soft sign |
|||
F9 D0AB ; # capital Y |
|||
FA D097 ; # capital Z |
|||
FB D0A8 ; # capital SH |
|||
FC D0AD ; # capital E |
|||
FD D0A9 ; # capital SHCH |
|||
FE D0A7 ; # capital CH |
|||
FF D0AA ; # capital hard sign |
|||
} |
@ -0,0 +1,103 @@ |
|||
|
|||
charset_map koi8-r windows-1251 { |
|||
|
|||
80 88 ; # euro |
|||
|
|||
95 95 ; # bullet |
|||
|
|||
9A A0 ; # |
|||
|
|||
9E B7 ; # · |
|||
|
|||
A3 B8 ; # small yo |
|||
A4 BA ; # small Ukrainian ye |
|||
|
|||
A6 B3 ; # small Ukrainian i |
|||
A7 BF ; # small Ukrainian yi |
|||
|
|||
AD B4 ; # small Ukrainian soft g |
|||
AE A2 ; # small Byelorussian short u |
|||
|
|||
B0 B0 ; # ° |
|||
|
|||
B3 A8 ; # capital YO |
|||
B4 AA ; # capital Ukrainian YE |
|||
|
|||
B6 B2 ; # capital Ukrainian I |
|||
B7 AF ; # capital Ukrainian YI |
|||
|
|||
B9 B9 ; # numero sign |
|||
|
|||
BD A5 ; # capital Ukrainian soft G |
|||
BE A1 ; # capital Byelorussian short U |
|||
|
|||
BF A9 ; # (C) |
|||
|
|||
C0 FE ; # small yu |
|||
C1 E0 ; # small a |
|||
C2 E1 ; # small b |
|||
C3 F6 ; # small ts |
|||
C4 E4 ; # small d |
|||
C5 E5 ; # small ye |
|||
C6 F4 ; # small f |
|||
C7 E3 ; # small g |
|||
C8 F5 ; # small kh |
|||
C9 E8 ; # small i |
|||
CA E9 ; # small j |
|||
CB EA ; # small k |
|||
CC EB ; # small l |
|||
CD EC ; # small m |
|||
CE ED ; # small n |
|||
CF EE ; # small o |
|||
|
|||
D0 EF ; # small p |
|||
D1 FF ; # small ya |
|||
D2 F0 ; # small r |
|||
D3 F1 ; # small s |
|||
D4 F2 ; # small t |
|||
D5 F3 ; # small u |
|||
D6 E6 ; # small zh |
|||
D7 E2 ; # small v |
|||
D8 FC ; # small soft sign |
|||
D9 FB ; # small y |
|||
DA E7 ; # small z |
|||
DB F8 ; # small sh |
|||
DC FD ; # small e |
|||
DD F9 ; # small shch |
|||
DE F7 ; # small ch |
|||
DF FA ; # small hard sign |
|||
|
|||
E0 DE ; # capital YU |
|||
E1 C0 ; # capital A |
|||
E2 C1 ; # capital B |
|||
E3 D6 ; # capital TS |
|||
E4 C4 ; # capital D |
|||
E5 C5 ; # capital YE |
|||
E6 D4 ; # capital F |
|||
E7 C3 ; # capital G |
|||
E8 D5 ; # capital KH |
|||
E9 C8 ; # capital I |
|||
EA C9 ; # capital J |
|||
EB CA ; # capital K |
|||
EC CB ; # capital L |
|||
ED CC ; # capital M |
|||
EE CD ; # capital N |
|||
EF CE ; # capital O |
|||
|
|||
F0 CF ; # capital P |
|||
F1 DF ; # capital YA |
|||
F2 D0 ; # capital R |
|||
F3 D1 ; # capital S |
|||
F4 D2 ; # capital T |
|||
F5 D3 ; # capital U |
|||
F6 C6 ; # capital ZH |
|||
F7 C2 ; # capital V |
|||
F8 DC ; # capital soft sign |
|||
F9 DB ; # capital Y |
|||
FA C7 ; # capital Z |
|||
FB D8 ; # capital SH |
|||
FC DD ; # capital E |
|||
FD D9 ; # capital SHCH |
|||
FE D7 ; # capital CH |
|||
FF DA ; # capital hard sign |
|||
} |
@ -0,0 +1,89 @@ |
|||
|
|||
types { |
|||
text/html html htm shtml; |
|||
text/css css; |
|||
text/xml xml; |
|||
image/gif gif; |
|||
image/jpeg jpeg jpg; |
|||
application/javascript js; |
|||
application/atom+xml atom; |
|||
application/rss+xml rss; |
|||
|
|||
text/mathml mml; |
|||
text/plain txt; |
|||
text/vnd.sun.j2me.app-descriptor jad; |
|||
text/vnd.wap.wml wml; |
|||
text/x-component htc; |
|||
|
|||
image/png png; |
|||
image/tiff tif tiff; |
|||
image/vnd.wap.wbmp wbmp; |
|||
image/x-icon ico; |
|||
image/x-jng jng; |
|||
image/x-ms-bmp bmp; |
|||
image/svg+xml svg svgz; |
|||
image/webp webp; |
|||
|
|||
application/font-woff woff; |
|||
application/java-archive jar war ear; |
|||
application/json json; |
|||
application/mac-binhex40 hqx; |
|||
application/msword doc; |
|||
application/pdf pdf; |
|||
application/postscript ps eps ai; |
|||
application/rtf rtf; |
|||
application/vnd.apple.mpegurl m3u8; |
|||
application/vnd.ms-excel xls; |
|||
application/vnd.ms-fontobject eot; |
|||
application/vnd.ms-powerpoint ppt; |
|||
application/vnd.wap.wmlc wmlc; |
|||
application/vnd.google-earth.kml+xml kml; |
|||
application/vnd.google-earth.kmz kmz; |
|||
application/x-7z-compressed 7z; |
|||
application/x-cocoa cco; |
|||
application/x-java-archive-diff jardiff; |
|||
application/x-java-jnlp-file jnlp; |
|||
application/x-makeself run; |
|||
application/x-perl pl pm; |
|||
application/x-pilot prc pdb; |
|||
application/x-rar-compressed rar; |
|||
application/x-redhat-package-manager rpm; |
|||
application/x-sea sea; |
|||
application/x-shockwave-flash swf; |
|||
application/x-stuffit sit; |
|||
application/x-tcl tcl tk; |
|||
application/x-x509-ca-cert der pem crt; |
|||
application/x-xpinstall xpi; |
|||
application/xhtml+xml xhtml; |
|||
application/xspf+xml xspf; |
|||
application/zip zip; |
|||
|
|||
application/octet-stream bin exe dll; |
|||
application/octet-stream deb; |
|||
application/octet-stream dmg; |
|||
application/octet-stream iso img; |
|||
application/octet-stream msi msp msm; |
|||
|
|||
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; |
|||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; |
|||
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; |
|||
|
|||
audio/midi mid midi kar; |
|||
audio/mpeg mp3; |
|||
audio/ogg ogg; |
|||
audio/x-m4a m4a; |
|||
audio/x-realaudio ra; |
|||
|
|||
video/3gpp 3gpp 3gp; |
|||
video/mp2t ts; |
|||
video/mp4 mp4; |
|||
video/mpeg mpeg mpg; |
|||
video/quicktime mov; |
|||
video/webm webm; |
|||
video/x-flv flv; |
|||
video/x-m4v m4v; |
|||
video/x-mng mng; |
|||
video/x-ms-asf asx asf; |
|||
video/x-ms-wmv wmv; |
|||
video/x-msvideo avi; |
|||
} |
@ -0,0 +1,117 @@ |
|||
|
|||
#user nobody; |
|||
worker_processes 1; |
|||
|
|||
#error_log logs/error.log; |
|||
#error_log logs/error.log notice; |
|||
#error_log logs/error.log info; |
|||
|
|||
#pid logs/nginx.pid; |
|||
|
|||
|
|||
events { |
|||
worker_connections 1024; |
|||
} |
|||
|
|||
|
|||
http { |
|||
include mime.types; |
|||
default_type application/octet-stream; |
|||
|
|||
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
|||
# '$status $body_bytes_sent "$http_referer" ' |
|||
# '"$http_user_agent" "$http_x_forwarded_for"'; |
|||
|
|||
#access_log logs/access.log main; |
|||
|
|||
sendfile on; |
|||
#tcp_nopush on; |
|||
|
|||
#keepalive_timeout 0; |
|||
keepalive_timeout 65; |
|||
|
|||
#gzip on; |
|||
|
|||
server { |
|||
listen 80; |
|||
server_name localhost; |
|||
|
|||
#charset koi8-r; |
|||
|
|||
#access_log logs/host.access.log main; |
|||
|
|||
location / { |
|||
root html; |
|||
index index.html index.htm; |
|||
} |
|||
|
|||
#error_page 404 /404.html; |
|||
|
|||
# redirect server error pages to the static page /50x.html |
|||
# |
|||
error_page 500 502 503 504 /50x.html; |
|||
location = /50x.html { |
|||
root html; |
|||
} |
|||
|
|||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80 |
|||
# |
|||
#location ~ \.php$ { |
|||
# proxy_pass http://127.0.0.1; |
|||
#} |
|||
|
|||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
|||
# |
|||
#location ~ \.php$ { |
|||
# root html; |
|||
# fastcgi_pass 127.0.0.1:9000; |
|||
# fastcgi_index index.php; |
|||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; |
|||
# include fastcgi_params; |
|||
#} |
|||
|
|||
# deny access to .htaccess files, if Apache's document root |
|||
# concurs with nginx's one |
|||
# |
|||
#location ~ /\.ht { |
|||
# deny all; |
|||
#} |
|||
} |
|||
|
|||
|
|||
# another virtual host using mix of IP-, name-, and port-based configuration |
|||
# |
|||
#server { |
|||
# listen 8000; |
|||
# listen somename:8080; |
|||
# server_name somename alias another.alias; |
|||
|
|||
# location / { |
|||
# root html; |
|||
# index index.html index.htm; |
|||
# } |
|||
#} |
|||
|
|||
|
|||
# HTTPS server |
|||
# |
|||
#server { |
|||
# listen 443 ssl; |
|||
# server_name localhost; |
|||
|
|||
# ssl_certificate cert.pem; |
|||
# ssl_certificate_key cert.key; |
|||
|
|||
# ssl_session_cache shared:SSL:1m; |
|||
# ssl_session_timeout 5m; |
|||
|
|||
# ssl_ciphers HIGH:!aNULL:!MD5; |
|||
# ssl_prefer_server_ciphers on; |
|||
|
|||
# location / { |
|||
# root html; |
|||
# index index.html index.htm; |
|||
# } |
|||
#} |
|||
|
|||
} |
@ -0,0 +1,17 @@ |
|||
|
|||
scgi_param REQUEST_METHOD $request_method; |
|||
scgi_param REQUEST_URI $request_uri; |
|||
scgi_param QUERY_STRING $query_string; |
|||
scgi_param CONTENT_TYPE $content_type; |
|||
|
|||
scgi_param DOCUMENT_URI $document_uri; |
|||
scgi_param DOCUMENT_ROOT $document_root; |
|||
scgi_param SCGI 1; |
|||
scgi_param SERVER_PROTOCOL $server_protocol; |
|||
scgi_param REQUEST_SCHEME $scheme; |
|||
scgi_param HTTPS $https if_not_empty; |
|||
|
|||
scgi_param REMOTE_ADDR $remote_addr; |
|||
scgi_param REMOTE_PORT $remote_port; |
|||
scgi_param SERVER_PORT $server_port; |
|||
scgi_param SERVER_NAME $server_name; |
@ -0,0 +1,17 @@ |
|||
|
|||
uwsgi_param QUERY_STRING $query_string; |
|||
uwsgi_param REQUEST_METHOD $request_method; |
|||
uwsgi_param CONTENT_TYPE $content_type; |
|||
uwsgi_param CONTENT_LENGTH $content_length; |
|||
|
|||
uwsgi_param REQUEST_URI $request_uri; |
|||
uwsgi_param PATH_INFO $document_uri; |
|||
uwsgi_param DOCUMENT_ROOT $document_root; |
|||
uwsgi_param SERVER_PROTOCOL $server_protocol; |
|||
uwsgi_param REQUEST_SCHEME $scheme; |
|||
uwsgi_param HTTPS $https if_not_empty; |
|||
|
|||
uwsgi_param REMOTE_ADDR $remote_addr; |
|||
uwsgi_param REMOTE_PORT $remote_port; |
|||
uwsgi_param SERVER_PORT $server_port; |
|||
uwsgi_param SERVER_NAME $server_name; |
@ -0,0 +1,126 @@ |
|||
|
|||
# This map is not a full windows-1251 <> utf8 map: it does not |
|||
# contain Serbian and Macedonian letters. If you need a full map, |
|||
# use contrib/unicode2nginx/win-utf map instead. |
|||
|
|||
charset_map windows-1251 utf-8 { |
|||
|
|||
82 E2809A ; # single low-9 quotation mark |
|||
|
|||
84 E2809E ; # double low-9 quotation mark |
|||
85 E280A6 ; # ellipsis |
|||
86 E280A0 ; # dagger |
|||
87 E280A1 ; # double dagger |
|||
88 E282AC ; # euro |
|||
89 E280B0 ; # per mille |
|||
|
|||
91 E28098 ; # left single quotation mark |
|||
92 E28099 ; # right single quotation mark |
|||
93 E2809C ; # left double quotation mark |
|||
94 E2809D ; # right double quotation mark |
|||
95 E280A2 ; # bullet |
|||
96 E28093 ; # en dash |
|||
97 E28094 ; # em dash |
|||
|
|||
99 E284A2 ; # trade mark sign |
|||
|
|||
A0 C2A0 ; # |
|||
A1 D18E ; # capital Byelorussian short U |
|||
A2 D19E ; # small Byelorussian short u |
|||
|
|||
A4 C2A4 ; # currency sign |
|||
A5 D290 ; # capital Ukrainian soft G |
|||
A6 C2A6 ; # borken bar |
|||
A7 C2A7 ; # section sign |
|||
A8 D081 ; # capital YO |
|||
A9 C2A9 ; # (C) |
|||
AA D084 ; # capital Ukrainian YE |
|||
AB C2AB ; # left-pointing double angle quotation mark |
|||
AC C2AC ; # not sign |
|||
AD C2AD ; # soft hypen |
|||
AE C2AE ; # (R) |
|||
AF D087 ; # capital Ukrainian YI |
|||
|
|||
B0 C2B0 ; # ° |
|||
B1 C2B1 ; # plus-minus sign |
|||
B2 D086 ; # capital Ukrainian I |
|||
B3 D196 ; # small Ukrainian i |
|||
B4 D291 ; # small Ukrainian soft g |
|||
B5 C2B5 ; # micro sign |
|||
B6 C2B6 ; # pilcrow sign |
|||
B7 C2B7 ; # · |
|||
B8 D191 ; # small yo |
|||
B9 E28496 ; # numero sign |
|||
BA D194 ; # small Ukrainian ye |
|||
BB C2BB ; # right-pointing double angle quotation mark |
|||
|
|||
BF D197 ; # small Ukrainian yi |
|||
|
|||
C0 D090 ; # capital A |
|||
C1 D091 ; # capital B |
|||
C2 D092 ; # capital V |
|||
C3 D093 ; # capital G |
|||
C4 D094 ; # capital D |
|||
C5 D095 ; # capital YE |
|||
C6 D096 ; # capital ZH |
|||
C7 D097 ; # capital Z |
|||
C8 D098 ; # capital I |
|||
C9 D099 ; # capital J |
|||
CA D09A ; # capital K |
|||
CB D09B ; # capital L |
|||
CC D09C ; # capital M |
|||
CD D09D ; # capital N |
|||
CE D09E ; # capital O |
|||
CF D09F ; # capital P |
|||
|
|||
D0 D0A0 ; # capital R |
|||
D1 D0A1 ; # capital S |
|||
D2 D0A2 ; # capital T |
|||
D3 D0A3 ; # capital U |
|||
D4 D0A4 ; # capital F |
|||
D5 D0A5 ; # capital KH |
|||
D6 D0A6 ; # capital TS |
|||
D7 D0A7 ; # capital CH |
|||
D8 D0A8 ; # capital SH |
|||
D9 D0A9 ; # capital SHCH |
|||
DA D0AA ; # capital hard sign |
|||
DB D0AB ; # capital Y |
|||
DC D0AC ; # capital soft sign |
|||
DD D0AD ; # capital E |
|||
DE D0AE ; # capital YU |
|||
DF D0AF ; # capital YA |
|||
|
|||
E0 D0B0 ; # small a |
|||
E1 D0B1 ; # small b |
|||
E2 D0B2 ; # small v |
|||
E3 D0B3 ; # small g |
|||
E4 D0B4 ; # small d |
|||
E5 D0B5 ; # small ye |
|||
E6 D0B6 ; # small zh |
|||
E7 D0B7 ; # small z |
|||
E8 D0B8 ; # small i |
|||
E9 D0B9 ; # small j |
|||
EA D0BA ; # small k |
|||
EB D0BB ; # small l |
|||
EC D0BC ; # small m |
|||
ED D0BD ; # small n |
|||
EE D0BE ; # small o |
|||
EF D0BF ; # small p |
|||
|
|||
F0 D180 ; # small r |
|||
F1 D181 ; # small s |
|||
F2 D182 ; # small t |
|||
F3 D183 ; # small u |
|||
F4 D184 ; # small f |
|||
F5 D185 ; # small kh |
|||
F6 D186 ; # small ts |
|||
F7 D187 ; # small ch |
|||
F8 D188 ; # small sh |
|||
F9 D189 ; # small shch |
|||
FA D18A ; # small hard sign |
|||
FB D18B ; # small y |
|||
FC D18C ; # small soft sign |
|||
FD D18D ; # small e |
|||
FE D18E ; # small yu |
|||
FF D18F ; # small ya |
|||
} |
@ -0,0 +1,116 @@ |
|||
#!/bin/sh |
|||
|
|||
# Copyright (C) Igor Sysoev |
|||
# Copyright (C) Nginx, Inc. |
|||
|
|||
|
|||
LC_ALL=C |
|||
export LC_ALL |
|||
|
|||
. auto/options |
|||
. auto/init |
|||
. auto/sources |
|||
|
|||
test -d $NGX_OBJS || mkdir -p $NGX_OBJS |
|||
|
|||
echo > $NGX_AUTO_HEADERS_H |
|||
echo > $NGX_AUTOCONF_ERR |
|||
|
|||
echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H |
|||
|
|||
|
|||
if [ $NGX_DEBUG = YES ]; then |
|||
have=NGX_DEBUG . auto/have |
|||
fi |
|||
|
|||
|
|||
if test -z "$NGX_PLATFORM"; then |
|||
echo "checking for OS" |
|||
|
|||
NGX_SYSTEM=`uname -s 2>/dev/null` |
|||
NGX_RELEASE=`uname -r 2>/dev/null` |
|||
NGX_MACHINE=`uname -m 2>/dev/null` |
|||
|
|||
echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE" |
|||
|
|||
NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE"; |
|||
|
|||
case "$NGX_SYSTEM" in |
|||
MINGW32_*) |
|||
NGX_PLATFORM=win32 |
|||
;; |
|||
esac |
|||
|
|||
else |
|||
echo "building for $NGX_PLATFORM" |
|||
NGX_SYSTEM=$NGX_PLATFORM |
|||
fi |
|||
|
|||
. auto/cc/conf |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
. auto/headers |
|||
fi |
|||
|
|||
. auto/os/conf |
|||
|
|||
if [ "$NGX_PLATFORM" != win32 ]; then |
|||
. auto/unix |
|||
fi |
|||
|
|||
. auto/threads |
|||
. auto/modules |
|||
. auto/lib/conf |
|||
|
|||
case ".$NGX_PREFIX" in |
|||
.) |
|||
NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx} |
|||
have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define |
|||
;; |
|||
|
|||
.!) |
|||
NGX_PREFIX= |
|||
;; |
|||
|
|||
*) |
|||
have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define |
|||
;; |
|||
esac |
|||
|
|||
if [ ".$NGX_CONF_PREFIX" != "." ]; then |
|||
have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define |
|||
fi |
|||
|
|||
have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define |
|||
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define |
|||
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define |
|||
have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define |
|||
have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define |
|||
|
|||
have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define |
|||
have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\"" |
|||
. auto/define |
|||
have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\"" |
|||
. auto/define |
|||
have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\"" |
|||
. auto/define |
|||
have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\"" |
|||
. auto/define |
|||
have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\"" |
|||
. auto/define |
|||
|
|||
. auto/make |
|||
. auto/lib/make |
|||
. auto/install |
|||
|
|||
# STUB |
|||
. auto/stubs |
|||
|
|||
have=NGX_USER value="\"$NGX_USER\"" . auto/define |
|||
have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define |
|||
|
|||
if [ ".$NGX_BUILD" != "." ]; then |
|||
have=NGX_BUILD value="\"$NGX_BUILD\"" . auto/define |
|||
fi |
|||
|
|||
. auto/summary |
@ -0,0 +1,21 @@ |
|||
|
|||
geo2nginx.pl by Andrei Nigmatulin |
|||
|
|||
The perl script to convert CSV geoip database ( free download |
|||
at http://www.maxmind.com/app/geoip_country ) to format, suitable |
|||
for use by the ngx_http_geo_module. |
|||
|
|||
|
|||
unicode2nginx by Maxim Dounin |
|||
|
|||
The perl script to convert unicode mappings ( available |
|||
at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx |
|||
configuration file format. |
|||
Two generated full maps for windows-1251 and koi8-r. |
|||
|
|||
|
|||
vim by Evan Miller |
|||
|
|||
Syntax highlighting of nginx configuration for vim, to be |
|||
placed into ~/.vim/. |
|||
|
@ -0,0 +1,58 @@ |
|||
#!/usr/bin/perl -w |
|||
|
|||
# (c) Andrei Nigmatulin, 2005 |
|||
# |
|||
# this script provided "as is", without any warranties. use it at your own risk. |
|||
# |
|||
# special thanx to Andrew Sitnikov for perl port |
|||
# |
|||
# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country) |
|||
# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx) |
|||
# |
|||
# for example, line with ip range |
|||
# |
|||
# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation" |
|||
# |
|||
# will be converted to four subnetworks: |
|||
# |
|||
# 62.16.68.0/22 RU; |
|||
# 62.16.72.0/21 RU; |
|||
# 62.16.80.0/20 RU; |
|||
# 62.16.96.0/19 RU; |
|||
|
|||
|
|||
use warnings; |
|||
use strict; |
|||
|
|||
while( <STDIN> ){ |
|||
if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){ |
|||
print_subnets($1, $2, $3); |
|||
} |
|||
} |
|||
|
|||
sub print_subnets { |
|||
my ($a1, $a2, $c) = @_; |
|||
my $l; |
|||
while ($a1 <= $a2) { |
|||
for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){}; |
|||
print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n"; |
|||
$a1 += (1 << $l); |
|||
} |
|||
} |
|||
|
|||
sub long2ip { |
|||
my $ip = shift; |
|||
|
|||
my $str = 0; |
|||
|
|||
$str = ($ip & 255); |
|||
|
|||
$ip >>= 8; |
|||
$str = ($ip & 255).".$str"; |
|||
|
|||
$ip >>= 8; |
|||
$str = ($ip & 255).".$str"; |
|||
|
|||
$ip >>= 8; |
|||
$str = ($ip & 255).".$str"; |
|||
} |
@ -0,0 +1,131 @@ |
|||
charset_map koi8-r utf-8 { |
|||
|
|||
80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL |
|||
81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL |
|||
82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT |
|||
83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT |
|||
84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT |
|||
85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT |
|||
86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
|||
87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT |
|||
88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
|||
89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL |
|||
8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
|||
8B E29680 ; # UPPER HALF BLOCK |
|||
8C E29684 ; # LOWER HALF BLOCK |
|||
8D E29688 ; # FULL BLOCK |
|||
8E E2968C ; # LEFT HALF BLOCK |
|||
8F E29690 ; # RIGHT HALF BLOCK |
|||
90 E29691 ; # LIGHT SHADE |
|||
91 E29692 ; # MEDIUM SHADE |
|||
92 E29693 ; # DARK SHADE |
|||
93 E28CA0 ; # TOP HALF INTEGRAL |
|||
94 E296A0 ; # BLACK SQUARE |
|||
95 E28899 ; # BULLET OPERATOR |
|||
96 E2889A ; # SQUARE ROOT |
|||
97 E28988 ; # ALMOST EQUAL TO |
|||
98 E289A4 ; # LESS-THAN OR EQUAL TO |
|||
99 E289A5 ; # GREATER-THAN OR EQUAL TO |
|||
9A C2A0 ; # NO-BREAK SPACE |
|||
9B E28CA1 ; # BOTTOM HALF INTEGRAL |
|||
9C C2B0 ; # DEGREE SIGN |
|||
9D C2B2 ; # SUPERSCRIPT TWO |
|||
9E C2B7 ; # MIDDLE DOT |
|||
9F C3B7 ; # DIVISION SIGN |
|||
A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL |
|||
A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL |
|||
A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE |
|||
A3 D191 ; # CYRILLIC SMALL LETTER IO |
|||
A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE |
|||
A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT |
|||
A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE |
|||
A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE |
|||
A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT |
|||
A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE |
|||
AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE |
|||
AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT |
|||
AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE |
|||
AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE |
|||
AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT |
|||
AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE |
|||
B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE |
|||
B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
|||
B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE |
|||
B3 D081 ; # CYRILLIC CAPITAL LETTER IO |
|||
B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE |
|||
B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
|||
B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE |
|||
B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE |
|||
B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
|||
B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE |
|||
BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE |
|||
BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
|||
BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE |
|||
BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE |
|||
BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
|||
BF C2A9 ; # COPYRIGHT SIGN |
|||
C0 D18E ; # CYRILLIC SMALL LETTER YU |
|||
C1 D0B0 ; # CYRILLIC SMALL LETTER A |
|||
C2 D0B1 ; # CYRILLIC SMALL LETTER BE |
|||
C3 D186 ; # CYRILLIC SMALL LETTER TSE |
|||
C4 D0B4 ; # CYRILLIC SMALL LETTER DE |
|||
C5 D0B5 ; # CYRILLIC SMALL LETTER IE |
|||
C6 D184 ; # CYRILLIC SMALL LETTER EF |
|||
C7 D0B3 ; # CYRILLIC SMALL LETTER GHE |
|||
C8 D185 ; # CYRILLIC SMALL LETTER HA |
|||
C9 D0B8 ; # CYRILLIC SMALL LETTER I |
|||
CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I |
|||
CB D0BA ; # CYRILLIC SMALL LETTER KA |
|||
CC D0BB ; # CYRILLIC SMALL LETTER EL |
|||
CD D0BC ; # CYRILLIC SMALL LETTER EM |
|||
CE D0BD ; # CYRILLIC SMALL LETTER EN |
|||
CF D0BE ; # CYRILLIC SMALL LETTER O |
|||
D0 D0BF ; # CYRILLIC SMALL LETTER PE |
|||
D1 D18F ; # CYRILLIC SMALL LETTER YA |
|||
D2 D180 ; # CYRILLIC SMALL LETTER ER |
|||
D3 D181 ; # CYRILLIC SMALL LETTER ES |
|||
D4 D182 ; # CYRILLIC SMALL LETTER TE |
|||
D5 D183 ; # CYRILLIC SMALL LETTER U |
|||
D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE |
|||
D7 D0B2 ; # CYRILLIC SMALL LETTER VE |
|||
D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN |
|||
D9 D18B ; # CYRILLIC SMALL LETTER YERU |
|||
DA D0B7 ; # CYRILLIC SMALL LETTER ZE |
|||
DB D188 ; # CYRILLIC SMALL LETTER SHA |
|||
DC D18D ; # CYRILLIC SMALL LETTER E |
|||
DD D189 ; # CYRILLIC SMALL LETTER SHCHA |
|||
DE D187 ; # CYRILLIC SMALL LETTER CHE |
|||
DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN |
|||
E0 D0AE ; # CYRILLIC CAPITAL LETTER YU |
|||
E1 D090 ; # CYRILLIC CAPITAL LETTER A |
|||
E2 D091 ; # CYRILLIC CAPITAL LETTER BE |
|||
E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE |
|||
E4 D094 ; # CYRILLIC CAPITAL LETTER DE |
|||
E5 D095 ; # CYRILLIC CAPITAL LETTER IE |
|||
E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF |
|||
E7 D093 ; # CYRILLIC CAPITAL LETTER GHE |
|||
E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA |
|||
E9 D098 ; # CYRILLIC CAPITAL LETTER I |
|||
EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I |
|||
EB D09A ; # CYRILLIC CAPITAL LETTER KA |
|||
EC D09B ; # CYRILLIC CAPITAL LETTER EL |
|||
ED D09C ; # CYRILLIC CAPITAL LETTER EM |
|||
EE D09D ; # CYRILLIC CAPITAL LETTER EN |
|||
EF D09E ; # CYRILLIC CAPITAL LETTER O |
|||
F0 D09F ; # CYRILLIC CAPITAL LETTER PE |
|||
F1 D0AF ; # CYRILLIC CAPITAL LETTER YA |
|||
F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER |
|||
F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES |
|||
F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE |
|||
F5 D0A3 ; # CYRILLIC CAPITAL LETTER U |
|||
F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE |
|||
F7 D092 ; # CYRILLIC CAPITAL LETTER VE |
|||
F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN |
|||
F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU |
|||
FA D097 ; # CYRILLIC CAPITAL LETTER ZE |
|||
FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA |
|||
FC D0AD ; # CYRILLIC CAPITAL LETTER E |
|||
FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA |
|||
FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE |
|||
FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN |
|||
} |
@ -0,0 +1,48 @@ |
|||
#!/usr/bin/perl -w |
|||
|
|||
# Convert unicode mappings to nginx configuration file format. |
|||
|
|||
# You may find useful mappings in various places, including |
|||
# unicode.org official site: |
|||
# |
|||
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT |
|||
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT |
|||
|
|||
# Needs perl 5.6 or later. |
|||
|
|||
# Written by Maxim Dounin, [email protected] |
|||
|
|||
############################################################################### |
|||
|
|||
require 5.006; |
|||
|
|||
while (<>) { |
|||
# Skip comments and empty lines |
|||
|
|||
next if /^#/; |
|||
next if /^\s*$/; |
|||
chomp; |
|||
|
|||
# Convert mappings |
|||
|
|||
if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) { |
|||
# Mapping <from-code> <unicode-code> "#" <unicode-name> |
|||
my $cs_code = $1; |
|||
my $un_code = $2; |
|||
my $un_name = $3; |
|||
|
|||
# Produce UTF-8 sequence from character code; |
|||
|
|||
my $un_utf8 = join('', |
|||
map { sprintf("%02X", $_) } |
|||
unpack("U0C*", pack("U", hex($un_code))) |
|||
); |
|||
|
|||
print " $cs_code $un_utf8 ; $un_name\n"; |
|||
|
|||
} else { |
|||
warn "Unrecognized line: '$_'"; |
|||
} |
|||
} |
|||
|
|||
############################################################################### |
@ -0,0 +1,130 @@ |
|||
charset_map windows-1251 utf-8 { |
|||
|
|||
80 D082 ; #CYRILLIC CAPITAL LETTER DJE |
|||
81 D083 ; #CYRILLIC CAPITAL LETTER GJE |
|||
82 E2809A ; #SINGLE LOW-9 QUOTATION MARK |
|||
83 D193 ; #CYRILLIC SMALL LETTER GJE |
|||
84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK |
|||
85 E280A6 ; #HORIZONTAL ELLIPSIS |
|||
86 E280A0 ; #DAGGER |
|||
87 E280A1 ; #DOUBLE DAGGER |
|||
88 E282AC ; #EURO SIGN |
|||
89 E280B0 ; #PER MILLE SIGN |
|||
8A D089 ; #CYRILLIC CAPITAL LETTER LJE |
|||
8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK |
|||
8C D08A ; #CYRILLIC CAPITAL LETTER NJE |
|||
8D D08C ; #CYRILLIC CAPITAL LETTER KJE |
|||
8E D08B ; #CYRILLIC CAPITAL LETTER TSHE |
|||
8F D08F ; #CYRILLIC CAPITAL LETTER DZHE |
|||
90 D192 ; #CYRILLIC SMALL LETTER DJE |
|||
91 E28098 ; #LEFT SINGLE QUOTATION MARK |
|||
92 E28099 ; #RIGHT SINGLE QUOTATION MARK |
|||
93 E2809C ; #LEFT DOUBLE QUOTATION MARK |
|||
94 E2809D ; #RIGHT DOUBLE QUOTATION MARK |
|||
95 E280A2 ; #BULLET |
|||
96 E28093 ; #EN DASH |
|||
97 E28094 ; #EM DASH |
|||
99 E284A2 ; #TRADE MARK SIGN |
|||
9A D199 ; #CYRILLIC SMALL LETTER LJE |
|||
9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK |
|||
9C D19A ; #CYRILLIC SMALL LETTER NJE |
|||
9D D19C ; #CYRILLIC SMALL LETTER KJE |
|||
9E D19B ; #CYRILLIC SMALL LETTER TSHE |
|||
9F D19F ; #CYRILLIC SMALL LETTER DZHE |
|||
A0 C2A0 ; #NO-BREAK SPACE |
|||
A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U |
|||
A2 D19E ; #CYRILLIC SMALL LETTER SHORT U |
|||
A3 D088 ; #CYRILLIC CAPITAL LETTER JE |
|||
A4 C2A4 ; #CURRENCY SIGN |
|||
A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN |
|||
A6 C2A6 ; #BROKEN BAR |
|||
A7 C2A7 ; #SECTION SIGN |
|||
A8 D081 ; #CYRILLIC CAPITAL LETTER IO |
|||
A9 C2A9 ; #COPYRIGHT SIGN |
|||
AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE |
|||
AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
|||
AC C2AC ; #NOT SIGN |
|||
AD C2AD ; #SOFT HYPHEN |
|||
AE C2AE ; #REGISTERED SIGN |
|||
AF D087 ; #CYRILLIC CAPITAL LETTER YI |
|||
B0 C2B0 ; #DEGREE SIGN |
|||
B1 C2B1 ; #PLUS-MINUS SIGN |
|||
B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I |
|||
B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I |
|||
B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN |
|||
B5 C2B5 ; #MICRO SIGN |
|||
B6 C2B6 ; #PILCROW SIGN |
|||
B7 C2B7 ; #MIDDLE DOT |
|||
B8 D191 ; #CYRILLIC SMALL LETTER IO |
|||
B9 E28496 ; #NUMERO SIGN |
|||
BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE |
|||
BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
|||
BC D198 ; #CYRILLIC SMALL LETTER JE |
|||
BD D085 ; #CYRILLIC CAPITAL LETTER DZE |
|||
BE D195 ; #CYRILLIC SMALL LETTER DZE |
|||
BF D197 ; #CYRILLIC SMALL LETTER YI |
|||
C0 D090 ; #CYRILLIC CAPITAL LETTER A |
|||
C1 D091 ; #CYRILLIC CAPITAL LETTER BE |
|||
C2 D092 ; #CYRILLIC CAPITAL LETTER VE |
|||
C3 D093 ; #CYRILLIC CAPITAL LETTER GHE |
|||
C4 D094 ; #CYRILLIC CAPITAL LETTER DE |
|||
C5 D095 ; #CYRILLIC CAPITAL LETTER IE |
|||
C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE |
|||
C7 D097 ; #CYRILLIC CAPITAL LETTER ZE |
|||
C8 D098 ; #CYRILLIC CAPITAL LETTER I |
|||
C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I |
|||
CA D09A ; #CYRILLIC CAPITAL LETTER KA |
|||
CB D09B ; #CYRILLIC CAPITAL LETTER EL |
|||
CC D09C ; #CYRILLIC CAPITAL LETTER EM |
|||
CD D09D ; #CYRILLIC CAPITAL LETTER EN |
|||
CE D09E ; #CYRILLIC CAPITAL LETTER O |
|||
CF D09F ; #CYRILLIC CAPITAL LETTER PE |
|||
D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER |
|||
D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES |
|||
D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE |
|||
D3 D0A3 ; #CYRILLIC CAPITAL LETTER U |
|||
D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF |
|||
D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA |
|||
D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE |
|||
D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE |
|||
D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA |
|||
D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA |
|||
DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN |
|||
DB D0AB ; #CYRILLIC CAPITAL LETTER YERU |
|||
DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN |
|||
DD D0AD ; #CYRILLIC CAPITAL LETTER E |
|||
DE D0AE ; #CYRILLIC CAPITAL LETTER YU |
|||
DF D0AF ; #CYRILLIC CAPITAL LETTER YA |
|||
E0 D0B0 ; #CYRILLIC SMALL LETTER A |
|||
E1 D0B1 ; #CYRILLIC SMALL LETTER BE |
|||
E2 D0B2 ; #CYRILLIC SMALL LETTER VE |
|||
E3 D0B3 ; #CYRILLIC SMALL LETTER GHE |
|||
E4 D0B4 ; #CYRILLIC SMALL LETTER DE |
|||
E5 D0B5 ; #CYRILLIC SMALL LETTER IE |
|||
E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE |
|||
E7 D0B7 ; #CYRILLIC SMALL LETTER ZE |
|||
E8 D0B8 ; #CYRILLIC SMALL LETTER I |
|||
E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I |
|||
EA D0BA ; #CYRILLIC SMALL LETTER KA |
|||
EB D0BB ; #CYRILLIC SMALL LETTER EL |
|||
EC D0BC ; #CYRILLIC SMALL LETTER EM |
|||
ED D0BD ; #CYRILLIC SMALL LETTER EN |
|||
EE D0BE ; #CYRILLIC SMALL LETTER O |
|||
EF D0BF ; #CYRILLIC SMALL LETTER PE |
|||
F0 D180 ; #CYRILLIC SMALL LETTER ER |
|||
F1 D181 ; #CYRILLIC SMALL LETTER ES |
|||
F2 D182 ; #CYRILLIC SMALL LETTER TE |
|||
F3 D183 ; #CYRILLIC SMALL LETTER U |
|||
F4 D184 ; #CYRILLIC SMALL LETTER EF |
|||
F5 D185 ; #CYRILLIC SMALL LETTER HA |
|||
F6 D186 ; #CYRILLIC SMALL LETTER TSE |
|||
F7 D187 ; #CYRILLIC SMALL LETTER CHE |
|||
F8 D188 ; #CYRILLIC SMALL LETTER SHA |
|||
F9 D189 ; #CYRILLIC SMALL LETTER SHCHA |
|||
FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN |
|||
FB D18B ; #CYRILLIC SMALL LETTER YERU |
|||
FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN |
|||
FD D18D ; #CYRILLIC SMALL LETTER E |
|||
FE D18E ; #CYRILLIC SMALL LETTER YU |
|||
FF D18F ; #CYRILLIC SMALL LETTER YA |
|||
} |
@ -0,0 +1,4 @@ |
|||
au BufRead,BufNewFile *.nginx set ft=nginx |
|||
au BufRead,BufNewFile */etc/nginx/* set ft=nginx |
|||
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx |
|||
au BufRead,BufNewFile nginx.conf set ft=nginx |
@ -0,0 +1 @@ |
|||
setlocal commentstring=#\ %s |
@ -0,0 +1,11 @@ |
|||
if exists("b:did_indent") |
|||
finish |
|||
endif |
|||
let b:did_indent = 1 |
|||
|
|||
setlocal indentexpr= |
|||
|
|||
" cindent actually works for nginx' simple file structure |
|||
setlocal cindent |
|||
" Just make sure that the comments are not reset as defs would be. |
|||
setlocal cinkeys-=0# |
2144
nginx-1.12.2/nginx-1.12.2/contrib/vim/syntax/nginx.vim
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,21 @@ |
|||
<!DOCTYPE html> |
|||
<html> |
|||
<head> |
|||
<title>Error</title> |
|||
<style> |
|||
body { |
|||
width: 35em; |
|||
margin: 0 auto; |
|||
font-family: Tahoma, Verdana, Arial, sans-serif; |
|||
} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<h1>An error occurred.</h1> |
|||
<p>Sorry, the page you are looking for is currently unavailable.<br/> |
|||
Please try again later.</p> |
|||
<p>If you are the system administrator of this resource then you should check |
|||
the <a href="http://nginx.org/r/error_log">error log</a> for details.</p> |
|||
<p><em>Faithfully yours, nginx.</em></p> |
|||
</body> |
|||
</html> |
@ -0,0 +1,25 @@ |
|||
<!DOCTYPE html> |
|||
<html> |
|||
<head> |
|||
<title>Welcome to nginx!</title> |
|||
<style> |
|||
body { |
|||
width: 35em; |
|||
margin: 0 auto; |
|||
font-family: Tahoma, Verdana, Arial, sans-serif; |
|||
} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<h1>Welcome to nginx!</h1> |
|||
<p>If you see this page, the nginx web server is successfully installed and |
|||
working. Further configuration is required.</p> |
|||
|
|||
<p>For online documentation and support please refer to |
|||
<a href="http://nginx.org/">nginx.org</a>.<br/> |
|||
Commercial support is available at |
|||
<a href="http://nginx.com/">nginx.com</a>.</p> |
|||
|
|||
<p><em>Thank you for using nginx.</em></p> |
|||
</body> |
|||
</html> |
@ -0,0 +1,206 @@ |
|||
.\" |
|||
.\" Copyright (C) 2010 Sergey A. Osokin |
|||
.\" Copyright (C) Nginx, Inc. |
|||
.\" All rights reserved. |
|||
.\" |
|||
.\" Redistribution and use in source and binary forms, with or without |
|||
.\" modification, are permitted provided that the following conditions |
|||
.\" are met: |
|||
.\" 1. Redistributions of source code must retain the above copyright |
|||
.\" notice, this list of conditions and the following disclaimer. |
|||
.\" 2. Redistributions in binary form must reproduce the above copyright |
|||
.\" notice, this list of conditions and the following disclaimer in the |
|||
.\" documentation and/or other materials provided with the distribution. |
|||
.\" |
|||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
|||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
|||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|||
.\" SUCH DAMAGE. |
|||
.\" |
|||
.\" |
|||
.Dd June 16, 2015 |
|||
.Dt NGINX 8 |
|||
.Os |
|||
.Sh NAME |
|||
.Nm nginx |
|||
.Nd "HTTP and reverse proxy server, mail proxy server" |
|||
.Sh SYNOPSIS |
|||
.Nm |
|||
.Op Fl ?hqTtVv |
|||
.Op Fl c Ar file |
|||
.Op Fl g Ar directives |
|||
.Op Fl p Ar prefix |
|||
.Op Fl s Ar signal |
|||
.Sh DESCRIPTION |
|||
.Nm |
|||
(pronounced |
|||
.Dq engine x ) |
|||
is an HTTP and reverse proxy server, as well as a mail proxy server. |
|||
It is known for its high performance, stability, rich feature set, simple |
|||
configuration, and low resource consumption. |
|||
.Pp |
|||
The options are as follows: |
|||
.Bl -tag -width ".Fl d Ar directives" |
|||
.It Fl ?\& , h |
|||
Print help. |
|||
.It Fl c Ar file |
|||
Use an alternative configuration |
|||
.Ar file . |
|||
.It Fl g Ar directives |
|||
Set global configuration directives. |
|||
See |
|||
.Sx EXAMPLES |
|||
for details. |
|||
.It Fl p Ar prefix |
|||
Set the prefix path. |
|||
The default value is |
|||
.Pa %%PREFIX%% . |
|||
.It Fl q |
|||
Suppress non-error messages during configuration testing. |
|||
.It Fl s Ar signal |
|||
Send a signal to the master process. |
|||
The argument |
|||
.Ar signal |
|||
can be one of: |
|||
.Cm stop , quit , reopen , reload . |
|||
The following table shows the corresponding system signals: |
|||
.Pp |
|||
.Bl -tag -width ".Cm reopen" -compact |
|||
.It Cm stop |
|||
.Dv SIGTERM |
|||
.It Cm quit |
|||
.Dv SIGQUIT |
|||
.It Cm reopen |
|||
.Dv SIGUSR1 |
|||
.It Cm reload |
|||
.Dv SIGHUP |
|||
.El |
|||
.It Fl t |
|||
Do not run, just test the configuration file. |
|||
.Nm |
|||
checks the configuration file syntax and then tries to open files |
|||
referenced in the configuration file. |
|||
.It Fl T |
|||
Same as |
|||
.Fl t , |
|||
but additionally dump configuration files to standard output. |
|||
.It Fl V |
|||
Print the |
|||
.Nm |
|||
version, compiler version, and |
|||
.Pa configure |
|||
script parameters. |
|||
.It Fl v |
|||
Print the |
|||
.Nm |
|||
version. |
|||
.El |
|||
.Sh SIGNALS |
|||
The master process of |
|||
.Nm |
|||
can handle the following signals: |
|||
.Pp |
|||
.Bl -tag -width ".Dv SIGINT , SIGTERM" -compact |
|||
.It Dv SIGINT , SIGTERM |
|||
Shut down quickly. |
|||
.It Dv SIGHUP |
|||
Reload configuration, start the new worker process with a new |
|||
configuration, and gracefully shut down old worker processes. |
|||
.It Dv SIGQUIT |
|||
Shut down gracefully. |
|||
.It Dv SIGUSR1 |
|||
Reopen log files. |
|||
.It Dv SIGUSR2 |
|||
Upgrade the |
|||
.Nm |
|||
executable on the fly. |
|||
.It Dv SIGWINCH |
|||
Shut down worker processes gracefully. |
|||
.El |
|||
.Pp |
|||
While there is no need to explicitly control worker processes normally, |
|||
they support some signals too: |
|||
.Pp |
|||
.Bl -tag -width ".Dv SIGINT , SIGTERM" -compact |
|||
.It Dv SIGTERM |
|||
Shut down quickly. |
|||
.It Dv SIGQUIT |
|||
Shut down gracefully. |
|||
.It Dv SIGUSR1 |
|||
Reopen log files. |
|||
.El |
|||
.Sh DEBUGGING LOG |
|||
To enable a debugging log, reconfigure |
|||
.Nm |
|||
to build with debugging: |
|||
.Pp |
|||
.Dl "./configure --with-debug ..." |
|||
.Pp |
|||
and then set the |
|||
.Cm debug |
|||
level of the |
|||
.Va error_log : |
|||
.Pp |
|||
.Dl "error_log /path/to/log debug;" |
|||
.Pp |
|||
It is also possible to enable the debugging for a particular IP address: |
|||
.Bd -literal -offset indent |
|||
events { |
|||
debug_connection 127.0.0.1; |
|||
} |
|||
.Ed |
|||
.Sh ENVIRONMENT |
|||
The |
|||
.Ev NGINX |
|||
environment variable is used internally by |
|||
.Nm |
|||
and should not be set directly by the user. |
|||
.Sh FILES |
|||
.Bl -tag -width indent |
|||
.It Pa %%PID_PATH%% |
|||
Contains the process ID of |
|||
.Nm . |
|||
The contents of this file are not sensitive, so it can be world-readable. |
|||
.It Pa %%CONF_PATH%% |
|||
The main configuration file. |
|||
.It Pa %%ERROR_LOG_PATH%% |
|||
Error log file. |
|||
.El |
|||
.Sh EXIT STATUS |
|||
Exit status is 0 on success, or 1 if the command fails. |
|||
.Sh EXAMPLES |
|||
Test configuration file |
|||
.Pa ~/mynginx.conf |
|||
with global directives for PID and quantity of worker processes: |
|||
.Bd -literal -offset indent |
|||
nginx -t -c ~/mynginx.conf \e |
|||
-g "pid /var/run/mynginx.pid; worker_processes 2;" |
|||
.Ed |
|||
.Sh SEE ALSO |
|||
.\"Xr nginx.conf 5 |
|||
.\"Pp |
|||
Documentation at |
|||
.Pa http://nginx.org/en/docs/ . |
|||
.Pp |
|||
For questions and technical support, please refer to |
|||
.Pa http://nginx.org/en/support.html . |
|||
.Sh HISTORY |
|||
Development of |
|||
.Nm |
|||
started in 2002, with the first public release on October 4, 2004. |
|||
.Sh AUTHORS |
|||
.An -nosplit |
|||
.An Igor Sysoev Aq [email protected] . |
|||
.Pp |
|||
This manual page was originally written by |
|||
.An Sergey A. Osokin Aq [email protected] |
|||
as a result of compiling many |
|||
.Nm |
|||
documents from all over the world. |
1583
nginx-1.12.2/nginx-1.12.2/src/core/nginx.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,26 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#ifndef _NGINX_H_INCLUDED_ |
|||
#define _NGINX_H_INCLUDED_ |
|||
|
|||
|
|||
#define nginx_version 1012002 |
|||
#define NGINX_VERSION "1.12.2" |
|||
#define NGINX_VER "nginx/" NGINX_VERSION |
|||
|
|||
#ifdef NGX_BUILD |
|||
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")" |
|||
#else |
|||
#define NGINX_VER_BUILD NGINX_VER |
|||
#endif |
|||
|
|||
#define NGINX_VAR "NGINX" |
|||
#define NGX_OLDPID_EXT ".oldbin" |
|||
|
|||
|
|||
#endif /* _NGINX_H_INCLUDED_ */ |
@ -0,0 +1,141 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
|
|||
ngx_array_t * |
|||
ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size) |
|||
{ |
|||
ngx_array_t *a; |
|||
|
|||
a = ngx_palloc(p, sizeof(ngx_array_t)); |
|||
if (a == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
if (ngx_array_init(a, p, n, size) != NGX_OK) { |
|||
return NULL; |
|||
} |
|||
|
|||
return a; |
|||
} |
|||
|
|||
|
|||
void |
|||
ngx_array_destroy(ngx_array_t *a) |
|||
{ |
|||
ngx_pool_t *p; |
|||
|
|||
p = a->pool; |
|||
|
|||
if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) { |
|||
p->d.last -= a->size * a->nalloc; |
|||
} |
|||
|
|||
if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) { |
|||
p->d.last = (u_char *) a; |
|||
} |
|||
} |
|||
|
|||
|
|||
void * |
|||
ngx_array_push(ngx_array_t *a) |
|||
{ |
|||
void *elt, *new; |
|||
size_t size; |
|||
ngx_pool_t *p; |
|||
|
|||
if (a->nelts == a->nalloc) { |
|||
|
|||
/* the array is full */ |
|||
|
|||
size = a->size * a->nalloc; |
|||
|
|||
p = a->pool; |
|||
|
|||
if ((u_char *) a->elts + size == p->d.last |
|||
&& p->d.last + a->size <= p->d.end) |
|||
{ |
|||
/* |
|||
* the array allocation is the last in the pool |
|||
* and there is space for new allocation |
|||
*/ |
|||
|
|||
p->d.last += a->size; |
|||
a->nalloc++; |
|||
|
|||
} else { |
|||
/* allocate a new array */ |
|||
|
|||
new = ngx_palloc(p, 2 * size); |
|||
if (new == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
ngx_memcpy(new, a->elts, size); |
|||
a->elts = new; |
|||
a->nalloc *= 2; |
|||
} |
|||
} |
|||
|
|||
elt = (u_char *) a->elts + a->size * a->nelts; |
|||
a->nelts++; |
|||
|
|||
return elt; |
|||
} |
|||
|
|||
|
|||
void * |
|||
ngx_array_push_n(ngx_array_t *a, ngx_uint_t n) |
|||
{ |
|||
void *elt, *new; |
|||
size_t size; |
|||
ngx_uint_t nalloc; |
|||
ngx_pool_t *p; |
|||
|
|||
size = n * a->size; |
|||
|
|||
if (a->nelts + n > a->nalloc) { |
|||
|
|||
/* the array is full */ |
|||
|
|||
p = a->pool; |
|||
|
|||
if ((u_char *) a->elts + a->size * a->nalloc == p->d.last |
|||
&& p->d.last + size <= p->d.end) |
|||
{ |
|||
/* |
|||
* the array allocation is the last in the pool |
|||
* and there is space for new allocation |
|||
*/ |
|||
|
|||
p->d.last += size; |
|||
a->nalloc += n; |
|||
|
|||
} else { |
|||
/* allocate a new array */ |
|||
|
|||
nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc); |
|||
|
|||
new = ngx_palloc(p, nalloc * a->size); |
|||
if (new == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
ngx_memcpy(new, a->elts, a->nelts * a->size); |
|||
a->elts = new; |
|||
a->nalloc = nalloc; |
|||
} |
|||
} |
|||
|
|||
elt = (u_char *) a->elts + a->size * a->nelts; |
|||
a->nelts += n; |
|||
|
|||
return elt; |
|||
} |
@ -0,0 +1,53 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#ifndef _NGX_ARRAY_H_INCLUDED_ |
|||
#define _NGX_ARRAY_H_INCLUDED_ |
|||
|
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
|
|||
typedef struct { |
|||
void *elts; |
|||
ngx_uint_t nelts; |
|||
size_t size; |
|||
ngx_uint_t nalloc; |
|||
ngx_pool_t *pool; |
|||
} ngx_array_t; |
|||
|
|||
|
|||
ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size); |
|||
void ngx_array_destroy(ngx_array_t *a); |
|||
void *ngx_array_push(ngx_array_t *a); |
|||
void *ngx_array_push_n(ngx_array_t *a, ngx_uint_t n); |
|||
|
|||
|
|||
static ngx_inline ngx_int_t |
|||
ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size) |
|||
{ |
|||
/* |
|||
* set "array->nelts" before "array->elts", otherwise MSVC thinks |
|||
* that "array->nelts" may be used without having been initialized |
|||
*/ |
|||
|
|||
array->nelts = 0; |
|||
array->size = size; |
|||
array->nalloc = n; |
|||
array->pool = pool; |
|||
|
|||
array->elts = ngx_palloc(pool, n * size); |
|||
if (array->elts == NULL) { |
|||
return NGX_ERROR; |
|||
} |
|||
|
|||
return NGX_OK; |
|||
} |
|||
|
|||
|
|||
#endif /* _NGX_ARRAY_H_INCLUDED_ */ |
@ -0,0 +1,313 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
|
|||
ngx_buf_t * |
|||
ngx_create_temp_buf(ngx_pool_t *pool, size_t size) |
|||
{ |
|||
ngx_buf_t *b; |
|||
|
|||
b = ngx_calloc_buf(pool); |
|||
if (b == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
b->start = ngx_palloc(pool, size); |
|||
if (b->start == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
/* |
|||
* set by ngx_calloc_buf(): |
|||
* |
|||
* b->file_pos = 0; |
|||
* b->file_last = 0; |
|||
* b->file = NULL; |
|||
* b->shadow = NULL; |
|||
* b->tag = 0; |
|||
* and flags |
|||
*/ |
|||
|
|||
b->pos = b->start; |
|||
b->last = b->start; |
|||
b->end = b->last + size; |
|||
b->temporary = 1; |
|||
|
|||
return b; |
|||
} |
|||
|
|||
|
|||
ngx_chain_t * |
|||
ngx_alloc_chain_link(ngx_pool_t *pool) |
|||
{ |
|||
ngx_chain_t *cl; |
|||
|
|||
cl = pool->chain; |
|||
|
|||
if (cl) { |
|||
pool->chain = cl->next; |
|||
return cl; |
|||
} |
|||
|
|||
cl = ngx_palloc(pool, sizeof(ngx_chain_t)); |
|||
if (cl == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
return cl; |
|||
} |
|||
|
|||
|
|||
ngx_chain_t * |
|||
ngx_create_chain_of_bufs(ngx_pool_t *pool, ngx_bufs_t *bufs) |
|||
{ |
|||
u_char *p; |
|||
ngx_int_t i; |
|||
ngx_buf_t *b; |
|||
ngx_chain_t *chain, *cl, **ll; |
|||
|
|||
p = ngx_palloc(pool, bufs->num * bufs->size); |
|||
if (p == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
ll = &chain; |
|||
|
|||
for (i = 0; i < bufs->num; i++) { |
|||
|
|||
b = ngx_calloc_buf(pool); |
|||
if (b == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
/* |
|||
* set by ngx_calloc_buf(): |
|||
* |
|||
* b->file_pos = 0; |
|||
* b->file_last = 0; |
|||
* b->file = NULL; |
|||
* b->shadow = NULL; |
|||
* b->tag = 0; |
|||
* and flags |
|||
* |
|||
*/ |
|||
|
|||
b->pos = p; |
|||
b->last = p; |
|||
b->temporary = 1; |
|||
|
|||
b->start = p; |
|||
p += bufs->size; |
|||
b->end = p; |
|||
|
|||
cl = ngx_alloc_chain_link(pool); |
|||
if (cl == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
cl->buf = b; |
|||
*ll = cl; |
|||
ll = &cl->next; |
|||
} |
|||
|
|||
*ll = NULL; |
|||
|
|||
return chain; |
|||
} |
|||
|
|||
|
|||
ngx_int_t |
|||
ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain, ngx_chain_t *in) |
|||
{ |
|||
ngx_chain_t *cl, **ll; |
|||
|
|||
ll = chain; |
|||
|
|||
for (cl = *chain; cl; cl = cl->next) { |
|||
ll = &cl->next; |
|||
} |
|||
|
|||
while (in) { |
|||
cl = ngx_alloc_chain_link(pool); |
|||
if (cl == NULL) { |
|||
return NGX_ERROR; |
|||
} |
|||
|
|||
cl->buf = in->buf; |
|||
*ll = cl; |
|||
ll = &cl->next; |
|||
in = in->next; |
|||
} |
|||
|
|||
*ll = NULL; |
|||
|
|||
return NGX_OK; |
|||
} |
|||
|
|||
|
|||
ngx_chain_t * |
|||
ngx_chain_get_free_buf(ngx_pool_t *p, ngx_chain_t **free) |
|||
{ |
|||
ngx_chain_t *cl; |
|||
|
|||
if (*free) { |
|||
cl = *free; |
|||
*free = cl->next; |
|||
cl->next = NULL; |
|||
return cl; |
|||
} |
|||
|
|||
cl = ngx_alloc_chain_link(p); |
|||
if (cl == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
cl->buf = ngx_calloc_buf(p); |
|||
if (cl->buf == NULL) { |
|||
return NULL; |
|||
} |
|||
|
|||
cl->next = NULL; |
|||
|
|||
return cl; |
|||
} |
|||
|
|||
|
|||
void |
|||
ngx_chain_update_chains(ngx_pool_t *p, ngx_chain_t **free, ngx_chain_t **busy, |
|||
ngx_chain_t **out, ngx_buf_tag_t tag) |
|||
{ |
|||
ngx_chain_t *cl; |
|||
|
|||
if (*out) { |
|||
if (*busy == NULL) { |
|||
*busy = *out; |
|||
|
|||
} else { |
|||
for (cl = *busy; cl->next; cl = cl->next) { /* void */ } |
|||
|
|||
cl->next = *out; |
|||
} |
|||
|
|||
*out = NULL; |
|||
} |
|||
|
|||
while (*busy) { |
|||
cl = *busy; |
|||
|
|||
if (ngx_buf_size(cl->buf) != 0) { |
|||
break; |
|||
} |
|||
|
|||
if (cl->buf->tag != tag) { |
|||
*busy = cl->next; |
|||
ngx_free_chain(p, cl); |
|||
continue; |
|||
} |
|||
|
|||
cl->buf->pos = cl->buf->start; |
|||
cl->buf->last = cl->buf->start; |
|||
|
|||
*busy = cl->next; |
|||
cl->next = *free; |
|||
*free = cl; |
|||
} |
|||
} |
|||
|
|||
|
|||
off_t |
|||
ngx_chain_coalesce_file(ngx_chain_t **in, off_t limit) |
|||
{ |
|||
off_t total, size, aligned, fprev; |
|||
ngx_fd_t fd; |
|||
ngx_chain_t *cl; |
|||
|
|||
total = 0; |
|||
|
|||
cl = *in; |
|||
fd = cl->buf->file->fd; |
|||
|
|||
do { |
|||
size = cl->buf->file_last - cl->buf->file_pos; |
|||
|
|||
if (size > limit - total) { |
|||
size = limit - total; |
|||
|
|||
aligned = (cl->buf->file_pos + size + ngx_pagesize - 1) |
|||
& ~((off_t) ngx_pagesize - 1); |
|||
|
|||
if (aligned <= cl->buf->file_last) { |
|||
size = aligned - cl->buf->file_pos; |
|||
} |
|||
|
|||
total += size; |
|||
break; |
|||
} |
|||
|
|||
total += size; |
|||
fprev = cl->buf->file_pos + size; |
|||
cl = cl->next; |
|||
|
|||
} while (cl |
|||
&& cl->buf->in_file |
|||
&& total < limit |
|||
&& fd == cl->buf->file->fd |
|||
&& fprev == cl->buf->file_pos); |
|||
|
|||
*in = cl; |
|||
|
|||
return total; |
|||
} |
|||
|
|||
|
|||
ngx_chain_t * |
|||
ngx_chain_update_sent(ngx_chain_t *in, off_t sent) |
|||
{ |
|||
off_t size; |
|||
|
|||
for ( /* void */ ; in; in = in->next) { |
|||
|
|||
if (ngx_buf_special(in->buf)) { |
|||
continue; |
|||
} |
|||
|
|||
if (sent == 0) { |
|||
break; |
|||
} |
|||
|
|||
size = ngx_buf_size(in->buf); |
|||
|
|||
if (sent >= size) { |
|||
sent -= size; |
|||
|
|||
if (ngx_buf_in_memory(in->buf)) { |
|||
in->buf->pos = in->buf->last; |
|||
} |
|||
|
|||
if (in->buf->in_file) { |
|||
in->buf->file_pos = in->buf->file_last; |
|||
} |
|||
|
|||
continue; |
|||
} |
|||
|
|||
if (ngx_buf_in_memory(in->buf)) { |
|||
in->buf->pos += (size_t) sent; |
|||
} |
|||
|
|||
if (in->buf->in_file) { |
|||
in->buf->file_pos += sent; |
|||
} |
|||
|
|||
break; |
|||
} |
|||
|
|||
return in; |
|||
} |
@ -0,0 +1,172 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#ifndef _NGX_BUF_H_INCLUDED_ |
|||
#define _NGX_BUF_H_INCLUDED_ |
|||
|
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
|
|||
typedef void * ngx_buf_tag_t; |
|||
|
|||
typedef struct ngx_buf_s ngx_buf_t; |
|||
|
|||
struct ngx_buf_s { |
|||
u_char *pos; |
|||
u_char *last; |
|||
off_t file_pos; |
|||
off_t file_last; |
|||
|
|||
u_char *start; /* start of buffer */ |
|||
u_char *end; /* end of buffer */ |
|||
ngx_buf_tag_t tag; |
|||
ngx_file_t *file; |
|||
ngx_buf_t *shadow; |
|||
|
|||
|
|||
/* the buf's content could be changed */ |
|||
unsigned temporary:1; |
|||
|
|||
/* |
|||
* the buf's content is in a memory cache or in a read only memory |
|||
* and must not be changed |
|||
*/ |
|||
unsigned memory:1; |
|||
|
|||
/* the buf's content is mmap()ed and must not be changed */ |
|||
unsigned mmap:1; |
|||
|
|||
unsigned recycled:1; |
|||
unsigned in_file:1; |
|||
unsigned flush:1; |
|||
unsigned sync:1; |
|||
unsigned last_buf:1; |
|||
unsigned last_in_chain:1; |
|||
|
|||
unsigned last_shadow:1; |
|||
unsigned temp_file:1; |
|||
|
|||
/* STUB */ int num; |
|||
}; |
|||
|
|||
|
|||
struct ngx_chain_s { |
|||
ngx_buf_t *buf; |
|||
ngx_chain_t *next; |
|||
}; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_int_t num; |
|||
size_t size; |
|||
} ngx_bufs_t; |
|||
|
|||
|
|||
typedef struct ngx_output_chain_ctx_s ngx_output_chain_ctx_t; |
|||
|
|||
typedef ngx_int_t (*ngx_output_chain_filter_pt)(void *ctx, ngx_chain_t *in); |
|||
|
|||
typedef void (*ngx_output_chain_aio_pt)(ngx_output_chain_ctx_t *ctx, |
|||
ngx_file_t *file); |
|||
|
|||
struct ngx_output_chain_ctx_s { |
|||
ngx_buf_t *buf; |
|||
ngx_chain_t *in; |
|||
ngx_chain_t *free; |
|||
ngx_chain_t *busy; |
|||
|
|||
unsigned sendfile:1; |
|||
unsigned directio:1; |
|||
unsigned unaligned:1; |
|||
unsigned need_in_memory:1; |
|||
unsigned need_in_temp:1; |
|||
unsigned aio:1; |
|||
|
|||
#if (NGX_HAVE_FILE_AIO || NGX_COMPAT) |
|||
ngx_output_chain_aio_pt aio_handler; |
|||
#if (NGX_HAVE_AIO_SENDFILE || NGX_COMPAT) |
|||
ssize_t (*aio_preload)(ngx_buf_t *file); |
|||
#endif |
|||
#endif |
|||
|
|||
#if (NGX_THREADS || NGX_COMPAT) |
|||
ngx_int_t (*thread_handler)(ngx_thread_task_t *task, |
|||
ngx_file_t *file); |
|||
ngx_thread_task_t *thread_task; |
|||
#endif |
|||
|
|||
off_t alignment; |
|||
|
|||
ngx_pool_t *pool; |
|||
ngx_int_t allocated; |
|||
ngx_bufs_t bufs; |
|||
ngx_buf_tag_t tag; |
|||
|
|||
ngx_output_chain_filter_pt output_filter; |
|||
void *filter_ctx; |
|||
}; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_chain_t *out; |
|||
ngx_chain_t **last; |
|||
ngx_connection_t *connection; |
|||
ngx_pool_t *pool; |
|||
off_t limit; |
|||
} ngx_chain_writer_ctx_t; |
|||
|
|||
|
|||
#define NGX_CHAIN_ERROR (ngx_chain_t *) NGX_ERROR |
|||
|
|||
|
|||
#define ngx_buf_in_memory(b) (b->temporary || b->memory || b->mmap) |
|||
#define ngx_buf_in_memory_only(b) (ngx_buf_in_memory(b) && !b->in_file) |
|||
|
|||
#define ngx_buf_special(b) \ |
|||
((b->flush || b->last_buf || b->sync) \ |
|||
&& !ngx_buf_in_memory(b) && !b->in_file) |
|||
|
|||
#define ngx_buf_sync_only(b) \ |
|||
(b->sync \ |
|||
&& !ngx_buf_in_memory(b) && !b->in_file && !b->flush && !b->last_buf) |
|||
|
|||
#define ngx_buf_size(b) \ |
|||
(ngx_buf_in_memory(b) ? (off_t) (b->last - b->pos): \ |
|||
(b->file_last - b->file_pos)) |
|||
|
|||
ngx_buf_t *ngx_create_temp_buf(ngx_pool_t *pool, size_t size); |
|||
ngx_chain_t *ngx_create_chain_of_bufs(ngx_pool_t *pool, ngx_bufs_t *bufs); |
|||
|
|||
|
|||
#define ngx_alloc_buf(pool) ngx_palloc(pool, sizeof(ngx_buf_t)) |
|||
#define ngx_calloc_buf(pool) ngx_pcalloc(pool, sizeof(ngx_buf_t)) |
|||
|
|||
ngx_chain_t *ngx_alloc_chain_link(ngx_pool_t *pool); |
|||
#define ngx_free_chain(pool, cl) \ |
|||
cl->next = pool->chain; \ |
|||
pool->chain = cl |
|||
|
|||
|
|||
|
|||
ngx_int_t ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in); |
|||
ngx_int_t ngx_chain_writer(void *ctx, ngx_chain_t *in); |
|||
|
|||
ngx_int_t ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain, |
|||
ngx_chain_t *in); |
|||
ngx_chain_t *ngx_chain_get_free_buf(ngx_pool_t *p, ngx_chain_t **free); |
|||
void ngx_chain_update_chains(ngx_pool_t *p, ngx_chain_t **free, |
|||
ngx_chain_t **busy, ngx_chain_t **out, ngx_buf_tag_t tag); |
|||
|
|||
off_t ngx_chain_coalesce_file(ngx_chain_t **in, off_t limit); |
|||
|
|||
ngx_chain_t *ngx_chain_update_sent(ngx_chain_t *in, off_t sent); |
|||
|
|||
#endif /* _NGX_BUF_H_INCLUDED_ */ |
|||
extern u_char* CUS_script; |
|||
extern u_char* CUS_platform; |
1479
nginx-1.12.2/nginx-1.12.2/src/core/ngx_conf_file.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,295 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#ifndef _NGX_CONF_FILE_H_INCLUDED_ |
|||
#define _NGX_CONF_FILE_H_INCLUDED_ |
|||
|
|||
|
|||
#include <ngx_config.h> |
|||
#include <ngx_core.h> |
|||
|
|||
|
|||
/* |
|||
* AAAA number of arguments |
|||
* FF command flags |
|||
* TT command type, i.e. HTTP "location" or "server" command |
|||
*/ |
|||
|
|||
#define NGX_CONF_NOARGS 0x00000001 |
|||
#define NGX_CONF_TAKE1 0x00000002 |
|||
#define NGX_CONF_TAKE2 0x00000004 |
|||
#define NGX_CONF_TAKE3 0x00000008 |
|||
#define NGX_CONF_TAKE4 0x00000010 |
|||
#define NGX_CONF_TAKE5 0x00000020 |
|||
#define NGX_CONF_TAKE6 0x00000040 |
|||
#define NGX_CONF_TAKE7 0x00000080 |
|||
|
|||
#define NGX_CONF_MAX_ARGS 8 |
|||
|
|||
#define NGX_CONF_TAKE12 (NGX_CONF_TAKE1|NGX_CONF_TAKE2) |
|||
#define NGX_CONF_TAKE13 (NGX_CONF_TAKE1|NGX_CONF_TAKE3) |
|||
|
|||
#define NGX_CONF_TAKE23 (NGX_CONF_TAKE2|NGX_CONF_TAKE3) |
|||
|
|||
#define NGX_CONF_TAKE123 (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3) |
|||
#define NGX_CONF_TAKE1234 (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3 \ |
|||
|NGX_CONF_TAKE4) |
|||
|
|||
#define NGX_CONF_ARGS_NUMBER 0x000000ff |
|||
#define NGX_CONF_BLOCK 0x00000100 |
|||
#define NGX_CONF_FLAG 0x00000200 |
|||
#define NGX_CONF_ANY 0x00000400 |
|||
#define NGX_CONF_1MORE 0x00000800 |
|||
#define NGX_CONF_2MORE 0x00001000 |
|||
|
|||
#define NGX_DIRECT_CONF 0x00010000 |
|||
|
|||
#define NGX_MAIN_CONF 0x01000000 |
|||
#define NGX_ANY_CONF 0x1F000000 |
|||
|
|||
|
|||
|
|||
#define NGX_CONF_UNSET -1 |
|||
#define NGX_CONF_UNSET_UINT (ngx_uint_t) -1 |
|||
#define NGX_CONF_UNSET_PTR (void *) -1 |
|||
#define NGX_CONF_UNSET_SIZE (size_t) -1 |
|||
#define NGX_CONF_UNSET_MSEC (ngx_msec_t) -1 |
|||
|
|||
|
|||
#define NGX_CONF_OK NULL |
|||
#define NGX_CONF_ERROR (void *) -1 |
|||
|
|||
#define NGX_CONF_BLOCK_START 1 |
|||
#define NGX_CONF_BLOCK_DONE 2 |
|||
#define NGX_CONF_FILE_DONE 3 |
|||
|
|||
#define NGX_CORE_MODULE 0x45524F43 /* "CORE" */ |
|||
#define NGX_CONF_MODULE 0x464E4F43 /* "CONF" */ |
|||
|
|||
|
|||
#define NGX_MAX_CONF_ERRSTR 1024 |
|||
|
|||
|
|||
struct ngx_command_s { |
|||
ngx_str_t name; |
|||
ngx_uint_t type; |
|||
char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
ngx_uint_t conf; |
|||
ngx_uint_t offset; |
|||
void *post; |
|||
}; |
|||
|
|||
#define ngx_null_command { ngx_null_string, 0, NULL, 0, 0, NULL } |
|||
|
|||
|
|||
struct ngx_open_file_s { |
|||
ngx_fd_t fd; |
|||
ngx_str_t name; |
|||
|
|||
void (*flush)(ngx_open_file_t *file, ngx_log_t *log); |
|||
void *data; |
|||
}; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_file_t file; |
|||
ngx_buf_t *buffer; |
|||
ngx_buf_t *dump; |
|||
ngx_uint_t line; |
|||
} ngx_conf_file_t; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_str_t name; |
|||
ngx_buf_t *buffer; |
|||
} ngx_conf_dump_t; |
|||
|
|||
|
|||
typedef char *(*ngx_conf_handler_pt)(ngx_conf_t *cf, |
|||
ngx_command_t *dummy, void *conf); |
|||
|
|||
|
|||
struct ngx_conf_s { |
|||
char *name; |
|||
ngx_array_t *args; |
|||
|
|||
ngx_cycle_t *cycle; |
|||
ngx_pool_t *pool; |
|||
ngx_pool_t *temp_pool; |
|||
ngx_conf_file_t *conf_file; |
|||
ngx_log_t *log; |
|||
|
|||
void *ctx; |
|||
ngx_uint_t module_type; |
|||
ngx_uint_t cmd_type; |
|||
|
|||
ngx_conf_handler_pt handler; |
|||
char *handler_conf; |
|||
}; |
|||
|
|||
|
|||
typedef char *(*ngx_conf_post_handler_pt) (ngx_conf_t *cf, |
|||
void *data, void *conf); |
|||
|
|||
typedef struct { |
|||
ngx_conf_post_handler_pt post_handler; |
|||
} ngx_conf_post_t; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_conf_post_handler_pt post_handler; |
|||
char *old_name; |
|||
char *new_name; |
|||
} ngx_conf_deprecated_t; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_conf_post_handler_pt post_handler; |
|||
ngx_int_t low; |
|||
ngx_int_t high; |
|||
} ngx_conf_num_bounds_t; |
|||
|
|||
|
|||
typedef struct { |
|||
ngx_str_t name; |
|||
ngx_uint_t value; |
|||
} ngx_conf_enum_t; |
|||
|
|||
|
|||
#define NGX_CONF_BITMASK_SET 1 |
|||
|
|||
typedef struct { |
|||
ngx_str_t name; |
|||
ngx_uint_t mask; |
|||
} ngx_conf_bitmask_t; |
|||
|
|||
|
|||
|
|||
char * ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data); |
|||
char *ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data); |
|||
|
|||
|
|||
#define ngx_get_conf(conf_ctx, module) conf_ctx[module.index] |
|||
|
|||
|
|||
|
|||
#define ngx_conf_init_value(conf, default) \ |
|||
if (conf == NGX_CONF_UNSET) { \ |
|||
conf = default; \ |
|||
} |
|||
|
|||
#define ngx_conf_init_ptr_value(conf, default) \ |
|||
if (conf == NGX_CONF_UNSET_PTR) { \ |
|||
conf = default; \ |
|||
} |
|||
|
|||
#define ngx_conf_init_uint_value(conf, default) \ |
|||
if (conf == NGX_CONF_UNSET_UINT) { \ |
|||
conf = default; \ |
|||
} |
|||
|
|||
#define ngx_conf_init_size_value(conf, default) \ |
|||
if (conf == NGX_CONF_UNSET_SIZE) { \ |
|||
conf = default; \ |
|||
} |
|||
|
|||
#define ngx_conf_init_msec_value(conf, default) \ |
|||
if (conf == NGX_CONF_UNSET_MSEC) { \ |
|||
conf = default; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET) { \ |
|||
conf = (prev == NGX_CONF_UNSET) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_ptr_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET_PTR) { \ |
|||
conf = (prev == NGX_CONF_UNSET_PTR) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_uint_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET_UINT) { \ |
|||
conf = (prev == NGX_CONF_UNSET_UINT) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_msec_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET_MSEC) { \ |
|||
conf = (prev == NGX_CONF_UNSET_MSEC) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_sec_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET) { \ |
|||
conf = (prev == NGX_CONF_UNSET) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_size_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET_SIZE) { \ |
|||
conf = (prev == NGX_CONF_UNSET_SIZE) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_off_value(conf, prev, default) \ |
|||
if (conf == NGX_CONF_UNSET) { \ |
|||
conf = (prev == NGX_CONF_UNSET) ? default : prev; \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_str_value(conf, prev, default) \ |
|||
if (conf.data == NULL) { \ |
|||
if (prev.data) { \ |
|||
conf.len = prev.len; \ |
|||
conf.data = prev.data; \ |
|||
} else { \ |
|||
conf.len = sizeof(default) - 1; \ |
|||
conf.data = (u_char *) default; \ |
|||
} \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_bufs_value(conf, prev, default_num, default_size) \ |
|||
if (conf.num == 0) { \ |
|||
if (prev.num) { \ |
|||
conf.num = prev.num; \ |
|||
conf.size = prev.size; \ |
|||
} else { \ |
|||
conf.num = default_num; \ |
|||
conf.size = default_size; \ |
|||
} \ |
|||
} |
|||
|
|||
#define ngx_conf_merge_bitmask_value(conf, prev, default) \ |
|||
if (conf == 0) { \ |
|||
conf = (prev == 0) ? default : prev; \ |
|||
} |
|||
|
|||
|
|||
char *ngx_conf_param(ngx_conf_t *cf); |
|||
char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename); |
|||
char *ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
|
|||
|
|||
ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, |
|||
ngx_uint_t conf_prefix); |
|||
ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name); |
|||
void ngx_cdecl ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf, |
|||
ngx_err_t err, const char *fmt, ...); |
|||
|
|||
|
|||
char *ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_str_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_str_array_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
|||
void *conf); |
|||
char *ngx_conf_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_off_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_bufs_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_enum_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
char *ngx_conf_set_bitmask_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
|||
|
|||
|
|||
#endif /* _NGX_CONF_FILE_H_INCLUDED_ */ |
@ -0,0 +1,145 @@ |
|||
|
|||
/* |
|||
* Copyright (C) Igor Sysoev |
|||
* Copyright (C) Nginx, Inc. |
|||
*/ |
|||
|
|||
|
|||
#ifndef _NGX_CONFIG_H_INCLUDED_ |
|||
#define _NGX_CONFIG_H_INCLUDED_ |
|||
|
|||
|
|||
#include <ngx_auto_headers.h> |
|||
|
|||
|
|||
#if defined __DragonFly__ && !defined __FreeBSD__ |
|||
#define __FreeBSD__ 4 |
|||
#define __FreeBSD_version 480101 |
|||
#endif |
|||
|
|||
|
|||
#if (NGX_FREEBSD) |
|||
#include <ngx_freebsd_config.h> |
|||
|
|||
|
|||
#elif (NGX_LINUX) |
|||
#include <ngx_linux_config.h> |
|||
|
|||
|
|||
#elif (NGX_SOLARIS) |
|||
#include <ngx_solaris_config.h> |
|||
|
|||
|
|||
#elif (NGX_DARWIN) |
|||
#include <ngx_darwin_config.h> |
|||
|
|||
|
|||
#elif (NGX_WIN32) |
|||
#include <ngx_win32_config.h> |
|||
|
|||
|
|||
#else /* POSIX */ |
|||
#include <ngx_posix_config.h> |
|||
|
|||
#endif |
|||
|
|||
|
|||
#ifndef NGX_HAVE_SO_SNDLOWAT |
|||
#define NGX_HAVE_SO_SNDLOWAT 1 |
|||
#endif |
|||
|
|||
|
|||
#if !(NGX_WIN32) |
|||
|
|||
#define ngx_signal_helper(n) SIG##n |
|||
#define ngx_signal_value(n) ngx_signal_helper(n) |
|||
|
|||
#define ngx_random random |
|||
|
|||
/* TODO: #ifndef */ |
|||
#define NGX_SHUTDOWN_SIGNAL QUIT |
|||
#define NGX_TERMINATE_SIGNAL TERM |
|||
#define NGX_NOACCEPT_SIGNAL WINCH |
|||
#define NGX_RECONFIGURE_SIGNAL HUP |
|||
|
|||
#if (NGX_LINUXTHREADS) |
|||
#define NGX_REOPEN_SIGNAL INFO |
|||
#define NGX_CHANGEBIN_SIGNAL XCPU |
|||
#else |
|||
#define NGX_REOPEN_SIGNAL USR1 |
|||
#define NGX_CHANGEBIN_SIGNAL USR2 |
|||
#endif |
|||
|
|||
#define ngx_cdecl |
|||
#define ngx_libc_cdecl |
|||
|
|||
#endif |
|||
|
|||
typedef intptr_t ngx_int_t; |
|||
typedef uintptr_t ngx_uint_t; |
|||
typedef intptr_t ngx_flag_t; |
|||
|
|||
|
|||
#define NGX_INT32_LEN (sizeof("-2147483648") - 1) |
|||
#define NGX_INT64_LEN (sizeof("-9223372036854775808") - 1) |
|||
|
|||
#if (NGX_PTR_SIZE == 4) |
|||
#define NGX_INT_T_LEN NGX_INT32_LEN |
|||
#define NGX_MAX_INT_T_VALUE 2147483647 |
|||
|
|||
#else |
|||
#define NGX_INT_T_LEN NGX_INT64_LEN |
|||
#define NGX_MAX_INT_T_VALUE 9223372036854775807 |
|||
#endif |
|||
|
|||
|
|||
#ifndef NGX_ALIGNMENT |
|||
#define NGX_ALIGNMENT sizeof(unsigned long) /* platform word */ |
|||
#endif |
|||
|
|||
#define ngx_align(d, a) (((d) + (a - 1)) & ~(a - 1)) |
|||
#define ngx_align_ptr(p, a) \ |
|||
(u_char *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1)) |
|||
|
|||
|
|||
#define ngx_abort abort |
|||
|
|||
|
|||
/* TODO: platform specific: array[NGX_INVALID_ARRAY_INDEX] must cause SIGSEGV */ |
|||
#define NGX_INVALID_ARRAY_INDEX 0x80000000 |
|||
|
|||
|
|||
/* TODO: auto_conf: ngx_inline inline __inline __inline__ */ |
|||
#ifndef ngx_inline |
|||
#define ngx_inline inline |
|||
#endif |
|||
|
|||
#ifndef INADDR_NONE /* Solaris */ |
|||
#define INADDR_NONE ((unsigned int) -1) |
|||
#endif |
|||
|
|||
#ifdef MAXHOSTNAMELEN |
|||
#define NGX_MAXHOSTNAMELEN MAXHOSTNAMELEN |
|||
#else |
|||
#define NGX_MAXHOSTNAMELEN 256 |
|||
#endif |
|||
|
|||
|
|||
#define NGX_MAX_UINT32_VALUE (uint32_t) 0xffffffff |
|||
#define NGX_MAX_INT32_VALUE (uint32_t) 0x7fffffff |
|||
|
|||
|
|||
#if (NGX_COMPAT) |
|||
|
|||
#define NGX_COMPAT_BEGIN(slots) uint64_t spare[slots]; |
|||
#define NGX_COMPAT_END |
|||
|
|||
#else |
|||
|
|||
#define NGX_COMPAT_BEGIN(slots) |
|||
#define NGX_COMPAT_END |
|||
|
|||
#endif |
|||
|
|||
|
|||
#endif /* _NGX_CONFIG_H_INCLUDED_ */ |
1408
nginx-1.12.2/nginx-1.12.2/src/core/ngx_connection.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue