Compare commits

..

134 commits

Author SHA1 Message Date
Igor Sysoev
ee22c0a33b release-0.7.69 tag 2011-07-19 14:20:33 +00:00
Igor Sysoev
2c80cff285 nginx-0.7.69-RELEASE 2011-07-19 14:20:25 +00:00
Igor Sysoev
e673d7c5c9 copy OpenSSL-0.9.8r LICENSE for nginx/Windows zip 2011-07-19 14:16:58 +00:00
Igor Sysoev
0346321da5 merge r3945:
fix segfault if cache key is larger than upstream buffer size
patch by Lanshun Zhou
2011-07-19 14:15:50 +00:00
Igor Sysoev
364399a29c bump version 2011-07-19 14:11:18 +00:00
Igor Sysoev
459ed367fc release-0.7.68 tag 2010-12-14 19:48:04 +00:00
Igor Sysoev
5e089f4eca nginx-0.7.68-RELEASE 2010-12-14 19:48:03 +00:00
Igor Sysoev
1613129672 merge r3797:
allocate last zero byte in ngx_crypt()
2010-12-14 19:35:44 +00:00
Igor Sysoev
a9166b8255 merge r3681:
update r->buffered after processing SSI command,
the bug has been probably introduced in r2378
2010-12-14 19:34:29 +00:00
Igor Sysoev
bbc52b9b28 merge r3676:
fix case of partially matched patterns on buffer border in sub_filter
2010-12-14 19:32:52 +00:00
Igor Sysoev
813d95d705 SSL related fixes:
*) merge r3675:
   fix recognition of SSLv2 Client Hello Packet large than 255 bytes
*) upgrade OpenSSL to 0.8.9q in nginx/Windows
2010-12-14 19:29:57 +00:00
Igor Sysoev
aad4528125 merge r3659, r3825, r3826:
IPv6 related fixes:

*) fix IPv6 listen socket handling while reconfiguring
*) test wildcard tail hash existance for IPv6 addresses,
   the same fix for IPv4 addresses has been made in r2581
*) always run regex in server_name to get captures for IPv6 addresses,
   the same fix for IPv4 addresses has been made in r2584
2010-12-14 19:19:07 +00:00
Igor Sysoev
95c86bc8b4 set r->valid_unparsed_uri just after request line processing,
it allows to use X-Accel-Redirect'ed URI in a proxy_pass without URI part
this fix corresponds to r3616
2010-12-14 19:15:08 +00:00
Igor Sysoev
d53c2ebaa3 bump version 2010-12-14 19:10:00 +00:00
Igor Sysoev
0fa6d231bc release-0.7.67 tag 2010-06-15 09:55:01 +00:00
Igor Sysoev
87fc2486af nginx-0.7.67-RELEASE 2010-06-15 09:55:00 +00:00
Igor Sysoev
86fa681d16 merge r3615:
do not free() stack allocated buffer
2010-06-15 09:51:58 +00:00
Igor Sysoev
784e96770e bump version 2010-06-15 09:50:55 +00:00
Igor Sysoev
31ada09e06 release-0.7.66 tag 2010-06-07 12:41:32 +00:00
Igor Sysoev
9e711c55b6 nginx-0.7.66-RELEASE 2010-06-07 12:41:31 +00:00
Igor Sysoev
d8020e69f5 merge r3528:
remove r->zero_in_uri
2010-06-07 12:27:06 +00:00
Igor Sysoev
4bda43e5b9 merge r3518, r3527:
cache related fixes:

*) do not cache response if it has "no-store" or "private"
   in "Cache-Control" header
*) proxy_no_cache and fastcgi_no_cache
2010-06-07 12:23:23 +00:00
Igor Sysoev
7637e17aac merge r3502:
use lstat() for WebDAV DELETE, COPY, and MOVE to handle symlinks
2010-06-07 12:17:10 +00:00
Igor Sysoev
f40f491092 merge r3498, r3499:
opening files fixes:

*) use non-blocking open() not to hang on FIFO files, etc.
*) do not log misleading errno in "not a regular file" error
2010-06-07 12:08:44 +00:00
Igor Sysoev
8b6279ef16 merge r3489, r3493:
*) MSVC8 compatibility with OpenSSL 1.0.0
*) fix building OpenSSL-1.0.0 on 64-bit Linux:
   make installs the libraries in lib64 directory

and build nginx/Windows against OpenSSL-0.9.8n
2010-06-07 11:55:20 +00:00
Igor Sysoev
8258c50bbb merge r3487, r3525:
rewrite fixes:

*) escape ampersand in argument while rewrite
*) autodetect redirect if URI is rewritten to a string starting with $scheme
2010-06-07 11:51:37 +00:00
Igor Sysoev
f93f77f431 merge r3488:
revert partially r1555 and fix the error "memcached sent invalid trailer"
2010-06-07 11:49:03 +00:00
Igor Sysoev
64a572cb8c merge r3482:
do not set file time in ngx_copy_file() if the time is -1,
this fixes an issue when file is moved across devices
2010-06-07 11:48:19 +00:00
Igor Sysoev
584e7aefb0 merge r3515:
fix segfault: ngx_http_upstream_cleanup() cleans r->cleanup,
the bug had been introduced in r3426
2010-06-07 11:46:43 +00:00
Igor Sysoev
b61109cc00 merge r3478:
reset a parsing state to parse correctly an upstream response,
if 400 or 414 response has been redirected to upstream
2010-06-07 11:45:04 +00:00
Igor Sysoev
fc9853f61c merge r3477:
zlib 1.2.4 compatibility
2010-06-07 10:37:58 +00:00
Igor Sysoev
8b45b8d1b4 merge r3473, r3474, r3385, r3386, r3537:
signal processing stability:

*) use sys_errlist[] in signal handler instead
   of non Async-Signal-Safe strerror_r()
*) do not update time in the timer signal handler,
   since localtime_r() is not Async-Signal-Safe function
*) use previously cached GMT offset value to update time from a signal handler
*) change ngx_time_update() interface since there are no notification methods
   those return time
*) introduce ngx_time_sigsafe_update() to update the error log time only
*) change ngx_time_update() interface
2010-06-07 10:35:08 +00:00
Igor Sysoev
bb699ffdb2 merge r3464, r3500, r3501:
*) make $request_method non-cacheable
*) make $arg_ variables non-cacheable
*) change processing variables accessed by SSI and perl module:
   *) the indexed variables are always flushed
   *) never show warning for not found variables
2010-06-07 10:26:50 +00:00
Igor Sysoev
9e81dfc1d4 merge r3460:
allow HTTPS referers
2010-06-07 10:15:21 +00:00
Igor Sysoev
54f0e8ae0a merge r3459, r3571:
Win32 fixes:

*) compare long file names in case-insensitive mode,
   the bug had been introduced in r3436
*) test default NTFS stream "::$DATA"
2010-06-07 10:14:11 +00:00
Igor Sysoev
5ff6279efa merge r3456, r3458, r3465:
SSL fixes:

*) decrease SSL handshake error level to info
*) Set SSL session context for "ssl_session_cache none".
   This fixes a bug when client certficate is used and nginx closes connection
   with the message: "SSL_GET_PREV_SESSION:session id context uninitialized".
*) add OpenSSL_add_all_algorithms(), this fixes the error
   "ASN1_item_verify:unknown message digest algorithm" occurred if
   client certificate is signed using sha256WithRSAEncryption
2010-06-07 10:09:14 +00:00
Igor Sysoev
8a0e2616c2 merge r3457:
fix a geo range if the range includes two or more /16 networks
and does not begin at /16 network boundary
2010-06-07 10:04:13 +00:00
Igor Sysoev
3baed8e663 merge r3454, r3455, r3486, r3496, r3519, r3523:
SSI fixes:

*) use content type of the parent request in SSI stub block output
   instead of default one
*) SSI %s timefmt has no timezone offset
*) change ngx_http_ssi_filter and ngx_http_charset_filter order
*) do not store an encoded variable value as a new cached variable value
*) fix SSI include stub for valid empty responses
*) allow to use $uid_got in SSI and perl module
2010-06-07 09:54:19 +00:00
Igor Sysoev
f3a89a2cd3 merge r3452, r3462, r3471, r3472:
fix miscellaneous name bugs:

*) fix $upstream_http_ variable prefix length
*) use a right "Location" header name, however, it did not harm,
   since ngx_http_variable_sent_location() never use key name field
*) fix proxy_redirect name in error message
*) "proxy_redirect default" may not be used if a proxy_pass uses variables
2010-06-07 09:36:33 +00:00
Igor Sysoev
e6365cd48e merge r3451, r3506:
mail related fixes:

*) delete surplus code
*) Zimbra IMAP server may return only 4 bytes: "+ \r\n"
2010-06-07 09:25:39 +00:00
Igor Sysoev
edebdd6404 merge r3412, r3485:
*) allow a chunked body for 201 responses
*) chunked_transfer_encoding
2010-06-07 09:19:10 +00:00
Igor Sysoev
b1a13a3501 merge r3399:
$geoip_city_continent_code, $geoip_latitude, $geoip_longitude
2010-06-07 09:06:39 +00:00
Igor Sysoev
974c49330c merge r3394, r3395:
force image filter conversion if JPEG application data consume more than 5%
2010-06-07 09:05:18 +00:00
Igor Sysoev
5427dc9ee5 merge r3368, r3392:
./configure related fixes:

*) test invalid --with-ld-opt in right place
*) do not add NGX_GCC_OPT twice: it is added later with -W
2010-06-07 09:01:46 +00:00
Igor Sysoev
d916bacca5 merge r3318, r3449:
perl related fixes:

*) do not log error if $r->variable was not found
*) delete ngx_http_perl_cleanup_t unused since r909
2010-06-07 08:51:48 +00:00
Igor Sysoev
47762239ef merge r3316, r3317, r3420, r3421, r3453:
browsers related fixes:

*) add MSIE padding for Chrome too
*) disable keepalive for Safari:
       https://bugs.webkit.org/show_bug.cgi?id=5760
*) do not disable keepalive after POST requests for MSIE 7+
2010-06-04 17:47:04 +00:00
Igor Sysoev
68a58c361d bump version 2010-06-04 17:38:59 +00:00
Igor Sysoev
838eb01a8b release-0.7.65 tag 2010-02-01 16:09:16 +00:00
Igor Sysoev
eee52d16e8 nginx-0.7.65-RELEASE 2010-02-01 16:09:15 +00:00
Igor Sysoev
d13451937a merge r3406:
fix negative time in "Cache-Control" if "expires modified" sets time in the past
2010-02-01 15:56:45 +00:00
Igor Sysoev
6eb6500651 merge r3351, r3352:
perl exit fixes:

*) use global perl variable in perl_destruct()/perl_free()
   for non-mulitiplicity perl
*) add comment from r2716 commit message
2010-02-01 15:55:48 +00:00
Igor Sysoev
d1378313b6 merge r3309, r3314, r3315, r3380:
gzip headers related fixes:

*) remove "Content-Encoding: gzip" in 304 response
   sent by ngx_http_gzip_static_module
*) refactor gzip_vary handling
*) test r->header_only last, since it's not actually
   frequent here: 304 and HEAD responses are not set it before the filter
2010-02-01 15:54:02 +00:00
Igor Sysoev
ac11ecdcb2 merge r3294, r3305:
Fix a bug introduced in r2032: After a child process has read a terminate
message from a channel, the process tries to read the channel again.
The kernel (at least FreeBSD) may preempt the process and sends a SIGIO
signal to a master process. The master process sends a new terminate message,
the kernel switches again to the the child process, and the child process
reads the messages instead of an EAGAIN error. And this may repeat over
and over. Being that the child process can not exit the cycle and test
the termination flag set by the message handler.

The fix disallow the master process to send a new terminate message on
SIGIO signal reception. It may send the message only on SIGALARM signal.
2010-02-01 15:49:36 +00:00
Igor Sysoev
6f400f8a46 merge r3137, r3198, r3199, r3353, r3370, r3371, r3398, r3399:
cache related fixes:

*) do not pass buf with empty cached response,
   this fixes "zero size buf in output" alert
*) hide cacheable Set-Cookie and P3P FastCGI response headers
*) test comma separator in "Cache-Control"
*) a cache manager thread handle was overwritten by a cache loader thread
   handle, this caused an exit delay, the bug had been introduced in r3248
*) fix handling cached HTTP/0.9 response
*) log proxied HTTP/0.9 responses status as "009"
*) fix the "If-None-Match" header name
*) fix a cached zero-length body case
2010-02-01 15:46:14 +00:00
Igor Sysoev
9d87953f67 merge r3286:
use setproctitle("%s", title)
2010-02-01 15:32:57 +00:00
Igor Sysoev
7ac538bd2a merge r3283, r3284:
fix segfault if $limit_rate was logged
fix segfault in SSL if limit_rate is used
2010-02-01 15:20:43 +00:00
Igor Sysoev
8059c8bb5c merge r3282:
fix "if (!-x ...)"
2010-02-01 15:17:12 +00:00
Igor Sysoev
553388bca1 merge r3138, r3139, r3157, r3158, r3159, r3164, r3165,
r3202, r3203, r3383, r3388, r3417, r3418:

Win32 (mostly) and some Unix file related fixes:

*) preserve errno while ngx_free()
*) win32 ngx_file_info() utf8 support
*) delete Win95 code
*) log file name for read/write errors
*) test incomplete WriteFile()
*) handle short pwrite() to log an error cause: ENOSPC, EDQUOT, or EFBIG
*) uniform ngx_directio_on/off() interface with other file functions
*) do not create Win32 drive letter in ngx_create_full_path()
*) ignore EACCES errors for top level directories in ngx_create_full_path()
*) fix Win32 error messages when an temporary file replaces an existent file:
   *) do not rename an already renamed file
   *) now ngx_win32_rename_file() returns error code
   *) do not log failure inside ngx_win32_rename_file()
*) fix Win32 error message when an temporary file replaces an existent file:
   return at once if ngx_win32_rename_file() was not failed
   and do not try to delete already the renamed temporary file
*) skip URI trailing spaces under Win32
*) disable Win32 short file names
2010-02-01 15:06:25 +00:00
Igor Sysoev
45ccf9336a merge r3208, r3209:
ngx_http_parse_time() fixes:

*) use ngx_uint_t instead of int,
   strange to say this reduce function size by 16 bytes
*) ngx_http_parse_time() should support full 32-bit time
2010-02-01 14:55:53 +00:00
Igor Sysoev
f846765797 merge r3201, r3204, r3411:
ngx_http_autoindex_module fixes:

*) reset cached dirent.d_type after stat()
   this fixes slash after link to a directory in ngx_http_autoindex_module;
*) use cached dirent.d_type as hint on all systems

   the issues has been introduced in r2235

*) fix ngx_utf8_cpystrn(): it did not fully copy utf-8 string
2010-02-01 14:52:25 +00:00
Igor Sysoev
651ae60661 merge r3200:
nginx did not close log file set by --error-log-path,
the bug was introduced in r2744
2010-02-01 14:44:43 +00:00
Igor Sysoev
324484a59c merge r3163, r3213:
*) fix discarding body
*) prevent handling discarded body as a pipelined request
2010-02-01 14:42:38 +00:00
Igor Sysoev
70a7d24817 merge r3155, r3156, r3160, r969, r3191, r3197, r3358:
SSL fixes:

*) $ssl_session_id
*) allow "make clean" for OpenSSL, the bug was introduced in r2874
*) disable SSLv2 and use only strong ciphers by default
*) decrease SSL handshake error level to info
2010-02-01 14:39:16 +00:00
Igor Sysoev
87706c49c3 merge r3148, r3152, r3161:
error processing fixes:

*) fail if file size was changed
*) low default connection errors level from alert to error
*) low ENAMETOOLONG logging level
2010-02-01 14:31:26 +00:00
Igor Sysoev
313e559485 merge r3147:
fix typo in addition_types directive name
2010-02-01 14:24:20 +00:00
Igor Sysoev
a5b05e329f merge r3153, r3154, r3288, r3382:
request header processing fixes:

*) $host is always in low case:
   *) move low case convertation from ngx_http_find_virtual_server()
      to ngx_http_validate_host()
   *) add in ngx_http_validate_host() capability to copy host name in the pool
      allocated memory
*) fix segfault if there is single large_client_header_buffers
   and a request line fills it completely
*) default large_client_header_buffers' buffer size should be 8K as compatible
   with Apache's one
2010-02-01 14:16:45 +00:00
Igor Sysoev
841bb0752b merge r3039, r3145:
access_log fixes:

*) strict testing "access_log off"
*) allow to log invalid $request in access_log always,
   before it was logged only if error_log was set to info or debug level
2010-02-01 14:04:20 +00:00
Igor Sysoev
3f326eb3b5 merge r2990, r3324, r3384, r3419:
various proxy/FastCGI fixes:

*) do auto redirect for proxy_pass/fastcgi_pass with variables
*) allow "proxy_pass  http://$backend" without URI part
*) add conf/fastcgi.conf
*) delete u->cleanup mark, this fixes large values in $upstream_response_time,
   the bug had been introduced in r3246
2010-02-01 14:01:24 +00:00
Igor Sysoev
d53377900f merge r3408:
update year
2010-02-01 13:53:14 +00:00
Igor Sysoev
b4d638cfe6 bump version 2010-02-01 13:50:03 +00:00
Igor Sysoev
5b910b0880 release-0.7.64 tag 2009-11-16 15:29:47 +00:00
Igor Sysoev
b0842a2a7d nginx-0.7.64-RELEASE 2009-11-16 15:29:46 +00:00
Igor Sysoev
09dd51fe1f r3301 merge:
disable SSL renegotiation (CVE-2009-3555)
2009-11-16 15:24:39 +00:00
Igor Sysoev
d657043fe1 r3141 merge:
fix posix_memalign() error handling
2009-11-16 15:22:03 +00:00
Igor Sysoev
971e495c55 r3313 merge:
nginx sent gzipped responses to clients those do not support gzip,
if "gzip_static on" and "gzip_vary off"; the bug had been introduced in r3250
2009-11-16 15:16:47 +00:00
Igor Sysoev
0980938054 r3140, r3144, r3298, r3299, r3300, r3307, r3308 merge:
resolver fixes:

*) fix memory leak in resolver
*) fix resolver cache rbtree comparison
*) fix segfault in resolver:
   ngx_resolve_name_done() and ngx_resolve_addr_done() did not delete
   contexts from a resolver node waiting list.
*) fix "PTR ." case in address resolver
*) add quotes in an error message,
*) fix resolving an empty name (".")
*) use ngx_resolver_alloc() instead of ngx_resolver_calloc()
   since all fields are filled
2009-11-16 15:13:02 +00:00
Igor Sysoev
e7d583d555 r3117, r3123, r3229 merge:
server name related merges:

*) If .domain.com, .sub.domain.com, and .domain-some.com were defined,
   then .sub.domain.com was matched by .domain.com: wildcard names hash
   was built incorrectly due to sorting order issue of "." vs "-".
   They were sorted as
       com.domain  com.domain-some  com.domain.sub
   while they should be sorted as
       com.domain  com.domain.sub   com.domain-some
   for correct hash building

*) test space between "~" and regex in server_name and invalid_referers

*) do not run regex for empty host name since regex always fails in this case,
   the bug had been introduced in r2196
2009-11-16 15:00:13 +00:00
Igor Sysoev
acd17d7b4b bump version 2009-11-16 14:52:22 +00:00
Igor Sysoev
d0be36af24 release-0.7.63 tag 2009-10-26 17:57:37 +00:00
Igor Sysoev
332c854d50 nginx-0.7.63-RELEASE 2009-10-26 17:57:36 +00:00
Igor Sysoev
a2939c14c8 merge r3185:
fix building by gcc45
2009-10-26 17:46:25 +00:00
Igor Sysoev
648c01365f merge r3162, r3183:
WebDAV fixes:

*) check unsafe Destination
*) omit '\0' from "Location" header on MKCOL request
2009-10-26 17:45:55 +00:00
Igor Sysoev
c2c30b26a2 merge r3079:
discard request body before returning 413 error,
this fixes custom 413 page redirection bug introduced in r1456
2009-10-26 17:40:07 +00:00
Igor Sysoev
ddfa019fc2 merge r2976:
allow underscore in request method
2009-10-26 17:37:18 +00:00
Igor Sysoev
74007f8ed3 merge r3055, r3136:
gzip related fixes:

*) do not disable gzip for MSIE 6.0 SV1 in "gzip_disable msie6"
*) nginx always sent "Vary: Accept-Encoding",
   if both gzip_static and gzip_vary were on
2009-10-26 17:34:43 +00:00
Igor Sysoev
50e7dc1524 merge r3024, r3025, r3028, r3033, r3034, r3035, r3036:
allow cross device temporary files atomic copying
2009-10-26 17:32:17 +00:00
Igor Sysoev
7119a20a10 merge r3017, r3018, r3019, r3020, r3021, r3022, r3023, r3196:
cache management fixes:

*) separate cache loader process
*) use real file cache length, this fixes cache size counting for responses
   without "Content-Length" header and 304 responses.
2009-10-26 17:23:49 +00:00
Igor Sysoev
aaf6f614ba merge r3004, r3005, r3006:
various header fixes:

*) allow to proxy_pass_header/fastcgi_pass_header "X-Accel-Redirect",
   "X-Accel-Limit-Rate", "X-Accel-Buffering", and "X-Accel-Charset"
*) fix handling "Last-Modified" and "Accept-Ranges" for upstream responses
*) clear "Accept-Ranges" for SSI responses
2009-10-26 17:13:44 +00:00
Igor Sysoev
9a7f7e4578 merge r3001, r3007, r3013:
fix variuos segfaults:

*) fix segfault if 400 or 414 errors are handled intricately
*) ngx_http_upstream_create() to cleanup the previous upstream after
   internal redirect
2009-10-26 17:09:27 +00:00
Igor Sysoev
8d1d7b5aaa merge r2999, r3118, r3134, r3135:
various image filter fixes and features:

*) variables support in image_filter
*) fix transparency in GIF
*) fix alpha-channel transparency in PNG
*) image_filter_transparency
2009-10-26 16:56:49 +00:00
Igor Sysoev
66e573174e merge r2995, r2996, r2997, r2998, r3003, r3141, r3210, r3211, r3232:
various SSL fixes and features:

*) $ssl_client_verify
*) "ssl_verify_client ask" was changed to "ssl_verify_client optional"
*) ssl_crl
*) delete OpenSSL pre-0.9.7 compatibility: the sources were not actually
   compatible with OpenSSL 0.9.6 since ssl_session_cache introduction
*) fix memory corruption in $ssl_client_cert
*) issue SNI warning instead of failure: this is too common case
*) use ngx_log_error(), since OpenSSL does not set an error on the failure
*) add SNI support in -V output
2009-10-26 16:53:34 +00:00
Igor Sysoev
55cec826e6 merge r2993:
geo module supports trusted proxies
2009-10-26 16:42:19 +00:00
Igor Sysoev
462ab8826d merge r2986, r2992, r3032:
ngx_http_geoip_module
2009-10-26 16:38:44 +00:00
Igor Sysoev
29db22923f merge r2973, r2974, r3184, r3192, r3186, r3187:
various limit_req and limit_conn fixes:

*) fix client write event handling in ngx_http_limit_req_module
*) make limit_req to conform to the leaky bucket algorithm
*) limit_req_log_level
*) limit_conn_log_level
2009-10-26 16:30:34 +00:00
Igor Sysoev
12138838b6 merge r2972, r2994, r3133, r3142, r3143, r3174, r3175, r3176:
various perl fixes:

*) fix ngx_http_send_special() for subrequests handled by perl
*) allow perl "sub{..."
*) restore environ, this fixes segfault on reconfiguration failure when
   perl module creates new environment
*) optimize error handling
*) use ngx_conf_set_str_array_slot() for perl_require
*) allow several perl_modules
2009-10-26 16:22:24 +00:00
Igor Sysoev
8cec66ecd4 merge r2920, r2934, r3116, r3119:
style fixes
2009-10-26 16:06:11 +00:00
Igor Sysoev
c11383c4f2 merge r2903, r2911, r2912, r3002:
fix various failures handling
2009-10-26 15:54:29 +00:00
Igor Sysoev
e87d9b3151 merge r2908:
limit_rate_after
2009-10-26 15:46:59 +00:00
Igor Sysoev
b75b08ef6b merge r2890, r2891, r2892:
refactor ngx_http_charset_header_filter()
2009-10-26 15:37:54 +00:00
Igor Sysoev
b6c39a5510 bump version 2009-10-26 15:32:50 +00:00
Igor Sysoev
b47a13102d release-0.7.62 tag 2009-09-14 13:09:55 +00:00
Igor Sysoev
3b3894d6bf nginx-0.7.62-RELEASE 2009-09-14 13:09:54 +00:00
Igor Sysoev
05c22e7b4b merge r3047, r3048, r3049:
twice termination delay only after SIGALRM, otherwise many separate SIGCHLD
and SIGIO signals quickly increase delay to the level when SIGKILL is sent
2009-09-07 11:31:20 +00:00
Igor Sysoev
9973606ec4 r3040:
fix Linux "uname -r" version matching
2009-09-07 11:27:37 +00:00
Igor Sysoev
a8b6c54f2c merge r3038:
process upstream ETag header
2009-09-07 11:27:07 +00:00
Igor Sysoev
896d915479 merge r3037:
the flags should be bit-wide only
2009-09-07 11:26:40 +00:00
Igor Sysoev
26b4d3a7cb merge r3076, r3077, r3080:
fix invalid header logging:

*) fix segfault when a header starts with "\rX"
   and logging is set to info or debug level
*) use %*s instead of %V
2009-09-07 11:11:24 +00:00
Igor Sysoev
4758710b63 merge r3011, r3012, r3026:
FastCGI fixes:

*) continue to parse available fastcgi record after a split header,
   this fixes the erroneous message "upstream prematurely closed connection
   while reading response header from upstream"
*) fix a garbage in a split fastcgi header
*) refactor fastcgi stderr handling
2009-09-07 10:12:49 +00:00
Igor Sysoev
cec15be7b2 merge r2984, r2985, r3000:
XSLT filter fixes:

*) preserve XML wellFormed field before freeing memory
*) fix libxml2 error message
2009-09-07 10:05:36 +00:00
Igor Sysoev
79d498074b merge r2983:
name of file specified in --conf-path was not honored during installation
the bug had been appeared in r1353
2009-09-07 10:03:15 +00:00
Igor Sysoev
4645fa7c02 merge r2980, r2981, r2982:
win32 fixes:

*) ngx_http_set_exten() is always successful since 0.3.46
*) skip URI trailing dots under Win32
*) use caseless regex locations on caseless filesystems: MacOSX, Win32, Cygwin
2009-09-07 10:01:26 +00:00
Igor Sysoev
d6b442b8d4 merge r2975:
handle Win32 ReadFile() EOF state in Unix way
2009-09-07 09:54:47 +00:00
Igor Sysoev
529827109f merge r2953, r2958, r3084:
*) $upstream_cache_status
*) clean cache updating state if a response has uncacheable code or
   cache prohibitive headers
2009-09-07 09:49:51 +00:00
Igor Sysoev
7e4621bfa3 handle "/../" case more reliably 2009-09-07 09:29:41 +00:00
Igor Sysoev
7d0fecc6cb merge r2991:
do not test "..." case since it's Win9x family feature only
2009-09-07 09:25:59 +00:00
Igor Sysoev
1ab7430cdb fix Win95 "/.../" handling for the record 2009-09-07 09:18:55 +00:00
Igor Sysoev
ae1a33254a bump version 2009-09-07 09:15:47 +00:00
Igor Sysoev
aa6b2514cf release-0.7.61 tag 2009-06-22 09:37:08 +00:00
Igor Sysoev
36f31e9e5e nginx-0.7.61-RELEASE 2009-06-22 09:37:07 +00:00
Igor Sysoev
0fd29f9f30 merge r2954:
fix segfault if there is error_page 401, proxy_intercept_errors is on
and backend does not return "WWW-Authenticate" header
2009-06-22 09:32:03 +00:00
Igor Sysoev
d15bfa03e6 merge r2952:
ignore ngx_atomic_fetch_add() result
this fixes building at least by gcc 4.2.1 on Mac OS X 10.6
2009-06-22 09:31:33 +00:00
Igor Sysoev
fea94dde50 merge r2950, r2951:
cache related fixes:

*) fix building --without-http-cache, broken in r2945
*) fix ./configure error message
2009-06-22 09:29:10 +00:00
Igor Sysoev
7e726e8111 bump version 2009-06-22 09:23:35 +00:00
Igor Sysoev
0e385d96b7 release-0.7.60 tag 2009-06-15 09:55:52 +00:00
Igor Sysoev
6752d8734a nginx-0.7.60-RELEASE 2009-06-15 09:55:51 +00:00
Igor Sysoev
4bf4a52828 merge r2897, r2898, r2899, r2901, r2902, r2904, r2905, r2906, r2907,
r2909, r2910, r2922, r2923, r2924, r2925, r2929:

various win32 fixes:

*) use no-threads for Unix builds only
*) Win32 returns ERROR_PATH_NOT_FOUND instead of ERROR_FILE_NOT_FOUND
*) add trailing zero to a file name in ngx_win32_rename_file()
*) fix logging in ngx_win32_rename_file()
*) allow shared memory segments more than 4G
*) fix memory leak in successful case
*) log shared memory name in failure case
*) test that zone has the same addresses in different processes
*) add drive letter for Win32 root path
*) log GetExitCodeProcess()'s errno
*) test premature process termination
*) fix debug logging
*) exit if no workers could not be started
*) do not quit old workers if no new workers could not be started
*) a signaller process should stop configuration processing just after
   it is able to get pid file, this allows to not open log files, etc.
*) win32 master process had aready closed listening sockets
2009-06-15 09:48:15 +00:00
Igor Sysoev
ae6cd36c40 merge r2895, r2896, r2926, r2927, r2928, r2930, and r2936:
various proxy/fastcgi cache features and fixes:

*) report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
*) delete useless r->cache->uses
*) proxy_cache_use_stale/fastcgi_cache_use_stale  updating
*) inherit proxy_set_header, proxy_hide_header, and fastcgi_hide_header
   only if cache settings are similar
*) add response file uniq while loading cold cache on demand
2009-06-15 09:30:59 +00:00
Igor Sysoev
7a2e47f51d merge r2919:
test GIF87a
2009-06-15 09:05:31 +00:00
Igor Sysoev
f72368522d merge r2900:
fix XSLT filter in SSI subrequests
2009-06-15 09:02:09 +00:00
Igor Sysoev
4870682da7 merge r2935:
initialize use_event field in open file cache
the bug had been introduced in r2071
2009-06-15 08:58:16 +00:00
Igor Sysoev
2f2fb78ff8 merge r2893, r2894, and r2917:
various ./configure fixes:

*) use md5/sha1 in OpenSSL only if OpenSSL is used
*) stop ./configure at once on library failure
*) librt must be tested before creating Makefile
   the bug has been introduced in r2817
2009-06-15 08:49:53 +00:00
Igor Sysoev
8b3cfa8884 merge r2889, r2918, and r2921:
fix a pool growing and CPU usage for multi-requests keepalive connections:

*) keepalive_requests
*) try to reuse last 4 free large allocation links
*) do not test a pool block space if we can not allocated from
   the block 4 times
2009-06-15 08:43:10 +00:00
Igor Sysoev
743ecf05b6 bump version 2009-06-15 08:36:30 +00:00
Igor Sysoev
fc357e1f79 stable-0.7 branch 2009-05-25 12:05:02 +00:00
530 changed files with 28100 additions and 162134 deletions

389
README
View file

@ -1,389 +0,0 @@
Experimental QUIC support for nginx
-----------------------------------
1. Introduction
2. Building from sources
3. Configuration
4. Directives
5. Clients
6. Troubleshooting
7. Contributing
8. Links
1. Introduction
This is an experimental QUIC [1] / HTTP/3 [2] support for nginx.
The code is developed in a separate "quic" branch available
at https://hg.nginx.org/nginx-quic. Currently it is based
on nginx mainline 1.23.x. We merge new nginx releases into
this branch regularly.
The project code base is under the same BSD license as nginx.
The code is currently at a beta level of quality, however
there are several production deployments with it.
NGINX Development Team is working on improving HTTP/3 support to
integrate it into the main NGINX codebase. Thus, expect further
updates of this code, including features, changes in behaviour,
bug fixes, and refactoring. NGINX Development team will be
grateful for any feedback and code submissions.
Please contact NGINX Development Team via nginx-devel mailing list [3].
What works now:
IETF QUIC version 1 is supported. Internet drafts are no longer supported.
nginx should be able to respond to HTTP/3 requests over QUIC and
it should be possible to upload and download big files without errors.
+ The handshake completes successfully
+ One endpoint can update keys and its peer responds correctly
+ 0-RTT data is being received and acted on
+ Connection is established using TLS Resume Ticket
+ A handshake that includes a Retry packet completes successfully
+ Stream data is being exchanged and ACK'ed
+ An H3 transaction succeeded
+ One or both endpoints insert entries into dynamic table and
subsequently reference them from header blocks
+ Version Negotiation packet is sent to client with unknown version
+ Lost packets are detected and retransmitted properly
+ Clients may migrate to new address
2. Building from sources
The build is configured using the configure command.
Refer to http://nginx.org/en/docs/configure.html for details.
When configuring nginx, it's possible to enable QUIC and HTTP/3
using the following new configuration options:
--with-http_v3_module - enable QUIC and HTTP/3
--with-stream_quic_module - enable QUIC in Stream
A library that provides QUIC support is recommended to build nginx, there
are several of those available on the market:
+ BoringSSL [4]
+ LibreSSL [5]
+ QuicTLS [6]
Alternatively, nginx can be configured with OpenSSL compatibility
layer, which emulates BoringSSL QUIC API for OpenSSL. This mode is
enabled by default if native QUIC support is not detected.
0-RTT is not supported in OpenSSL compatibility mode.
Clone the NGINX QUIC repository
$ hg clone -b quic https://hg.nginx.org/nginx-quic
$ cd nginx-quic
Use the following command to configure nginx with BoringSSL [4]
$ ./auto/configure --with-debug --with-http_v3_module \
--with-cc-opt="-I../boringssl/include" \
--with-ld-opt="-L../boringssl/build/ssl \
-L../boringssl/build/crypto"
$ make
Alternatively, nginx can be configured with QuicTLS [6]
$ ./auto/configure --with-debug --with-http_v3_module \
--with-cc-opt="-I../quictls/build/include" \
--with-ld-opt="-L../quictls/build/lib"
Alternatively, nginx can be configured with a modern version
of LibreSSL [7]
$ ./auto/configure --with-debug --with-http_v3_module \
--with-cc-opt="-I../libressl/build/include" \
--with-ld-opt="-L../libressl/build/lib"
3. Configuration
The HTTP "listen" directive got a new option "quic" which enables
QUIC as client transport protocol instead of TCP.
The Stream "listen" directive got a new option "quic" which enables
QUIC as client transport protocol instead of TCP or plain UDP.
Along with "quic", it's also possible to specify "reuseport"
option [8] to make it work properly with multiple workers.
To enable address validation:
quic_retry on;
To enable 0-RTT:
ssl_early_data on;
Make sure that TLS 1.3 is configured which is required for QUIC:
ssl_protocols TLSv1.3;
To enable GSO (Generic Segmentation Offloading):
quic_gso on;
To limit maximum UDP payload size on receive path:
quic_mtu <size>;
To set host key for various tokens:
quic_host_key <filename>;
By default, GSO Linux-specific optimization [10] is disabled.
Enable it in case a corresponding network interface is configured to
support GSO.
A number of directives were added that configure HTTP/3:
http3
http3_hq
http3_stream_buffer_size
http3_max_concurrent_pushes
http3_max_concurrent_streams
http3_push
http3_push_preload
In http, an additional variable is available: $http3.
The value of $http3 is "h3" for HTTP/3 connections,
"hq" for hq connections, or an empty string otherwise.
In stream, an additional variable is available: $quic.
The value of $quic is "quic" if QUIC connection is used,
or an empty string otherwise.
Example configuration:
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# for better compatibility it's recommended
# to use the same port for quic and https
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
ssl_protocols TLSv1.3;
location / {
# required for browsers to direct them into quic port
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}
4. Directives
Syntax: quic_bpf on | off;
Default: quic_bpf off;
Context: main
Enables routing of QUIC packets using eBPF.
When enabled, this allows to support QUIC connection migration.
The directive is only supported on Linux 5.7+.
Syntax: quic_retry on | off;
Default: quic_retry off;
Context: http | stream, server
Enables the QUIC Address Validation feature. This includes:
- sending a new token in a Retry packet or a NEW_TOKEN frame
- validating a token received in the Initial packet
Syntax: quic_gso on | off;
Default: quic_gso off;
Context: http | stream, server
Enables sending in optimized batch mode using segmentation offloading.
Optimized sending is only supported on Linux featuring UDP_SEGMENT.
Syntax: quic_mtu size;
Default: quic_mtu 65527;
Context: http | stream, server
Sets the QUIC max_udp_payload_size transport parameter value.
This is the maximum UDP payload that we are willing to receive.
Syntax: quic_host_key file;
Default: -
Context: http | stream, server
Specifies a file with the secret key used to encrypt stateless reset and
address validation tokens. By default, a randomly generated key is used.
Syntax: quic_active_connection_id_limit number;
Default: quic_active_connection_id_limit 2;
Context: http | stream, server
Sets the QUIC active_connection_id_limit transport parameter value.
This is the maximum number of connection IDs we are willing to store.
Syntax: quic_timeout time;
Default: quic_timeout 60s;
Context: stream, server
Defines a timeout used to negotiate the QUIC idle timeout.
In the http module, it is taken from the keepalive_timeout directive.
Syntax: quic_stream_buffer_size size;
Default: quic_stream_buffer_size 64k;
Context: stream, server
Syntax: http3_stream_buffer_size size;
Default: http3_stream_buffer_size 64k;
Context: http, server
Sets buffer size for reading and writing of the QUIC STREAM payload.
The buffer size is used to calculate initial flow control limits
in the following QUIC transport parameters:
- initial_max_data
- initial_max_stream_data_bidi_local
- initial_max_stream_data_bidi_remote
- initial_max_stream_data_uni
Syntax: http3_max_concurrent_pushes number;
Default: http3_max_concurrent_pushes 10;
Context: http, server
Limits the maximum number of concurrent push requests in a connection.
Syntax: http3_max_concurrent_streams number;
Default: http3_max_concurrent_streams 128;
Context: http, server
Sets the maximum number of concurrent HTTP/3 streams in a connection.
Syntax: http3_push uri | off;
Default: http3_push off;
Context: http, server, location
Pre-emptively sends (pushes) a request to the specified uri along with
the response to the original request. Only relative URIs with absolute
path will be processed, for example:
http3_push /static/css/main.css;
The uri value can contain variables.
Several http3_push directives can be specified on the same configuration
level. The off parameter cancels the effect of the http3_push directives
inherited from the previous configuration level.
Syntax: http3_push_preload on | off;
Default: http3_push_preload off;
Context: http, server, location
Enables automatic conversion of preload links specified in the “Link”
response header fields into push requests.
Syntax: http3 on | off;
Default: http3 on;
Context: http, server
Enables HTTP/3 protocol negotiation.
Syntax: http3_hq on | off;
Default: http3_hq off;
Context: http, server
Enables HTTP/0.9 protocol negotiation used in QUIC interoperability tests.
5. Clients
* Browsers
Known to work: Firefox 90+ and Chrome 92+ (QUIC version 1)
Beware of strange issues: sometimes browser may decide to ignore QUIC
Cache clearing/restart might help. Always check access.log and
error.log to make sure the browser is using HTTP/3 and not TCP https.
* Console clients
Known to work: ngtcp2, firefox's neqo and chromium's console clients:
$ examples/client 127.0.0.1 8443 https://example.com:8443/index.html
$ ./neqo-client https://127.0.0.1:8443/
$ chromium-build/out/my_build/quic_client http://example.com:8443
In case everyhing is right, the access log should show something like:
127.0.0.1 - - [24/Apr/2020:11:27:29 +0300] "GET / HTTP/3" 200 805 "-"
"nghttp3/ngtcp2 client" "quic"
6. Troubleshooting
Here are some tips that may help to identify problems:
+ Ensure nginx is built with proper SSL library that supports QUIC
+ Ensure nginx is using the proper SSL library in runtime
(`nginx -V` shows what it's using)
+ Ensure a client is actually sending requests over QUIC
(see "Clients" section about browsers and cache)
We recommend to start with simple console client like ngtcp2
to ensure the server is configured properly before trying
with real browsers that may be very picky with certificates,
for example.
+ Build nginx with debug support [9] and check the debug log.
It should contain all details about connection and why it
failed. All related messages contain "quic " prefix and can
be easily filtered out.
+ For a deeper investigation, please enable additional debugging
in src/event/quic/ngx_event_quic_connection.h:
#define NGX_QUIC_DEBUG_PACKETS
#define NGX_QUIC_DEBUG_FRAMES
#define NGX_QUIC_DEBUG_ALLOC
#define NGX_QUIC_DEBUG_CRYPTO
7. Contributing
Please refer to
http://nginx.org/en/docs/contributing_changes.html
8. Links
[1] https://datatracker.ietf.org/doc/html/rfc9000
[2] https://datatracker.ietf.org/doc/html/rfc9114
[3] https://mailman.nginx.org/mailman/listinfo/nginx-devel
[4] https://boringssl.googlesource.com/boringssl/
[5] https://www.libressl.org/
[6] https://github.com/quictls/openssl
[7] https://github.com/libressl-portable/portable/releases/tag/v3.6.0
[8] https://nginx.org/en/docs/http/ngx_http_core_module.html#listen
[9] https://nginx.org/en/docs/debugging_log.html
[10] http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# aCC: HP ANSI C++ B3910B A.03.55.02 # aCC: HP ANSI C++ B3910B A.03.55.02
@ -12,3 +11,4 @@ CC_TEST_FLAGS="-Ae"
PCRE_OPT="$PCRE_OPT -Ae" PCRE_OPT="$PCRE_OPT -Ae"
ZLIB_OPT="$ZLIB_OPT -Ae" ZLIB_OPT="$ZLIB_OPT -Ae"
MD5_OPT="$MD5_OPT -Ae"

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# Borland C++ 5.5 # Borland C++ 5.5
@ -62,6 +61,7 @@ ngx_include_opt="-I"
ngx_objout="-o" ngx_objout="-o"
ngx_binout="-e" ngx_binout="-e"
ngx_objext="obj" ngx_objext="obj"
ngx_binext=".exe"
ngx_long_start='@&&| ngx_long_start='@&&|
' '

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# Compaq C V6.5-207 # Compaq C V6.5-207

View file

@ -1,99 +0,0 @@
# Copyright (C) Nginx, Inc.
# clang
NGX_CLANG_VER=`$CC -v 2>&1 | grep 'version' 2>&1 \
| sed -n -e 's/^.*clang version \(.*\)/\1/p' \
-e 's/^.*LLVM version \(.*\)/\1/p'`
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

View file

@ -1,21 +1,15 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
LINK="\$(CC)" LINK="\$(CC)"
MAIN_LINK=
MODULE_LINK="-shared"
ngx_include_opt="-I " ngx_include_opt="-I "
ngx_compile_opt="-c" ngx_compile_opt="-c"
ngx_pic_opt="-fPIC"
ngx_objout="-o " ngx_objout="-o "
ngx_binout="-o " ngx_binout="-o "
ngx_objext="o" ngx_objext="o"
ngx_binext= ngx_binext=
ngx_modext=".so"
ngx_long_start= ngx_long_start=
ngx_long_end= ngx_long_end=
@ -48,32 +42,6 @@ if test -n "$CFLAGS"; then
ngx_include_opt="-I" 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 esac
else else
@ -87,12 +55,6 @@ else
. auto/cc/gcc . auto/cc/gcc
;; ;;
clang)
# Clang C compiler
. auto/cc/clang
;;
icc) icc)
# Intel C++ compiler 7.1, 8.0, 8.1 # Intel C++ compiler 7.1, 8.0, 8.1
@ -117,7 +79,7 @@ else
. auto/cc/acc . auto/cc/acc
;; ;;
msvc) msvc*)
# MSVC++ 6.0 SP2, MSVC++ Toolkit 2003 # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003
. auto/cc/msvc . auto/cc/msvc
@ -144,6 +106,7 @@ fi
CFLAGS="$CFLAGS $NGX_CC_OPT" CFLAGS="$CFLAGS $NGX_CC_OPT"
NGX_TEST_LD_OPT="$NGX_LD_OPT" NGX_TEST_LD_OPT="$NGX_LD_OPT"
if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_PLATFORM" != win32 ]; then
if test -n "$NGX_LD_OPT"; then if test -n "$NGX_LD_OPT"; then
@ -163,41 +126,18 @@ if [ "$NGX_PLATFORM" != win32 ]; then
fi fi
fi fi
ngx_feature="gcc variadic macros"
ngx_feature="-Wl,-E switch" ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
ngx_feature_name= ngx_feature_run=yes
ngx_feature_run=no ngx_feature_incs="#include <stdio.h>
ngx_feature_incs= #define var(dummy, args...) sprintf(args)"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs=-Wl,-E ngx_feature_libs=
ngx_feature_test= ngx_feature_test="char buf[30]; buf[0] = '0';
var(0, buf, \"%d\", 1);
if (buf[0] != '1') return 1"
. auto/feature . auto/feature
if [ $ngx_found = yes ]; then
MAIN_LINK="-Wl,-E"
fi
if [ "$NGX_CC_NAME" = "sunc" ]; then
echo "checking for gcc builtin atomic operations ... disabled"
else
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
fi
if [ "$NGX_CC_NAME" = "ccc" ]; then if [ "$NGX_CC_NAME" = "ccc" ]; then
echo "checking for C99 variadic macros ... disabled" echo "checking for C99 variadic macros ... disabled"
@ -213,30 +153,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
var(0, buf, \"%d\", 1); var(0, buf, \"%d\", 1);
if (buf[0] != '1') return 1" if (buf[0] != '1') return 1"
. auto/feature . auto/feature
fi 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="inline"

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
@ -89,6 +88,7 @@ case $CPU in
# build 32-bit UltraSparc binary # build 32-bit UltraSparc binary
CPU_OPT="-m32" CPU_OPT="-m32"
CORE_LINK="$CORE_LINK -m32" CORE_LINK="$CORE_LINK -m32"
CC_AUX_FLAGS="$CC_AUX_FLAGS -m32"
NGX_CPU_CACHE_LINE=64 NGX_CPU_CACHE_LINE=64
;; ;;
@ -96,6 +96,7 @@ case $CPU in
# build 64-bit UltraSparc binary # build 64-bit UltraSparc binary
CPU_OPT="-m64" CPU_OPT="-m64"
CORE_LINK="$CORE_LINK -m64" CORE_LINK="$CORE_LINK -m64"
CC_AUX_FLAGS="$CC_AUX_FLAGS -m64"
NGX_CPU_CACHE_LINE=64 NGX_CPU_CACHE_LINE=64
;; ;;
@ -105,12 +106,12 @@ case $CPU in
CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32" CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32"
CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32" CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32"
CORE_LINK="$CORE_LINK -m64" CORE_LINK="$CORE_LINK -m64"
CC_AUX_FLAGS="$CC_AUX_FLAGS -m64"
NGX_CPU_CACHE_LINE=128 NGX_CPU_CACHE_LINE=128
;; ;;
esac esac
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
case "$NGX_GCC_VER" in case "$NGX_GCC_VER" in
2.7*) 2.7*)
@ -128,6 +129,12 @@ else
PCRE_OPT="$PCRE_OPT $PIPE" PCRE_OPT="$PCRE_OPT $PIPE"
fi fi
if [ ".$MD5_OPT" = "." ]; then
MD5_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
else
MD5_OPT="$MD5_OPT $PIPE"
fi
if [ ".$ZLIB_OPT" = "." ]; then if [ ".$ZLIB_OPT" = "." ]; then
ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
else else
@ -143,24 +150,22 @@ CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W"
CFLAGS="$CFLAGS -Wall -Wpointer-arith" CFLAGS="$CFLAGS -Wall -Wpointer-arith"
#CFLAGS="$CFLAGS -Wconversion" #CFLAGS="$CFLAGS -Wconversion"
#CFLAGS="$CFLAGS -Winline" #CFLAGS="$CFLAGS -Winline"
#CFLAGS="$CFLAGS -Wmissing-prototypes"
case "$NGX_GCC_VER" in case "$NGX_GCC_VER" in
2.*) 3.* | 4.* )
# we have a lot of the unused function arguments # we have a lot of the unused function arguments
CFLAGS="$CFLAGS -Wno-unused" CFLAGS="$CFLAGS -Wno-unused-parameter"
CFLAGS="$CFLAGS -Wunused-function"
CFLAGS="$CFLAGS -Wunused-variable"
CFLAGS="$CFLAGS -Wunused-value"
# 4.2.1 shows the warning in wrong places
#CFLAGS="$CFLAGS -Wunreachable-code"
;; ;;
*) *)
# we have a lot of the unused function arguments # we have a lot of the unused function arguments
CFLAGS="$CFLAGS -Wno-unused-parameter" CFLAGS="$CFLAGS -Wno-unused"
# 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 esac

View file

@ -1,9 +1,8 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1 # Intel C++ compiler 7.1, 8.0, 8.1, 9.0
NGX_ICC_VER=`$CC -V 2>&1 | grep 'Version' 2>&1 \ NGX_ICC_VER=`$CC -V 2>&1 | grep 'Version' 2>&1 \
| sed -e 's/^.* Version \([^ ]*\) *Build.*$/\1/'` | sed -e 's/^.* Version \([^ ]*\) *Build.*$/\1/'`
@ -16,7 +15,32 @@ have=NGX_COMPILER value="\"Intel C Compiler $NGX_ICC_VER\"" . auto/define
# optimizations # optimizations
CFLAGS="$CFLAGS -O" CFLAGS="$CFLAGS -O"
# inline the functions declared with __inline
#CFLAGS="$CFLAGS -Ob1"
# inline any function, at the compiler's discretion
CFLAGS="$CFLAGS -Ob2"
# multi-file IP optimizations
case "$NGX_ICC_VER" in
9.*)
IPO="-ipo"
;;
# 8.1.38 under FreeBSD can not link -ipo
8.1)
IPO="-ip"
;;
*)
IPO="-ipo -ipo_obj"
;;
esac
# single-file IP optimizations
#IPO="-ip"
CFLAGS="$CFLAGS $IPO"
CORE_LINK="$CORE_LINK $IPO"
CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file" CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file"
@ -40,11 +64,15 @@ esac
CFLAGS="$CFLAGS $CPU_OPT" CFLAGS="$CFLAGS $CPU_OPT"
if [ ".$PCRE_OPT" = "." ]; then if [ ".$PCRE_OPT" = "." ]; then
PCRE_OPT="-O $CPU_OPT" PCRE_OPT="-O $IPO $CPU_OPT"
fi
if [ ".$MD5_OPT" = "." ]; then
MD5_OPT="-O $IPO $CPU_OPT"
fi fi
if [ ".$ZLIB_OPT" = "." ]; then if [ ".$ZLIB_OPT" = "." ]; then
ZLIB_OPT="-O $CPU_OPT" ZLIB_OPT="-O $IPO $CPU_OPT"
fi fi
@ -85,7 +113,7 @@ CFLAGS="$CFLAGS -wd1419"
case "$NGX_ICC_VER" in case "$NGX_ICC_VER" in
9.*) 9.*)
# "cc" clobber ignored, warnings for Linux's htonl()/htons() # "cc" clobber ignored, warnings for Liunx's htonl()/htons()
CFLAGS="$CFLAGS -wd1469" CFLAGS="$CFLAGS -wd1469"
# explicit conversion of a 64-bit integral type to a smaller # explicit conversion of a 64-bit integral type to a smaller
# integral type # integral type
@ -99,7 +127,7 @@ case "$NGX_ICC_VER" in
;; ;;
8.*) 8.*)
# "cc" clobber ignored, warnings for Linux's htonl()/htons() # "cc" clobber ignored, warnings for Liunx's htonl()/htons()
CFLAGS="$CFLAGS -wd1469" CFLAGS="$CFLAGS -wd1469"
# floating-point equality and inequality comparisons are unreliable, # floating-point equality and inequality comparisons are unreliable,
# warning on SvTRUE() # warning on SvTRUE()

View file

@ -1,41 +1,10 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# MSVC 6.0 SP2 cl 12.00 # MSVC 6.0 SP2
# MSVC Toolkit 2003 (7.1) cl 13.10 # MSVC Toolkit 2003 (7.1)
# MSVC 2005 Express Edition SP1 (8.0) cl 14.00 # MSVC 2005 Express Edition SP1 (8.0)
# 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 'C/C++.* [0-9][0-9]*\.[0-9]' 2>&1 \
| sed -e 's/^.* \([0-9][0-9]*\.[0-9].*\)/\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/'`
# detect x64 builds
case "$NGX_MSVC_VER" in
*x64)
NGX_MACHINE=amd64
;;
*)
NGX_MACHINE=i386
;;
esac
# optimizations # optimizations
@ -103,6 +72,9 @@ CFLAGS="$CFLAGS -WX"
# disable logo # disable logo
CFLAGS="$CFLAGS -nologo" CFLAGS="$CFLAGS -nologo"
LINK="\$(CC)"
# the link flags # the link flags
CORE_LINK="$CORE_LINK -link -verbose:lib" CORE_LINK="$CORE_LINK -link -verbose:lib"
@ -120,23 +92,22 @@ CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup" #CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
# debug # debug
# msvc under Wine issues # msvc8 under Wine issues
# C1902: Program database manager mismatch; please check your installation # Program database manager mismatch; please check your installation
if [ -z "$NGX_WINE" ]; then if [ $NGX_CC_NAME != msvc8 ]; then
CFLAGS="$CFLAGS -Zi -Fd$NGX_OBJS/nginx.pdb" CFLAGS="$CFLAGS -Zi"
CORE_LINK="$CORE_LINK -debug" CORE_LINK="$CORE_LINK -debug"
fi fi
# MSVC 2005 supports C99 variadic macros # MSVC 2005 supports C99 variadic macros
if [ "$ngx_msvc_ver" -ge 14 ]; then if [ $NGX_CC_NAME = msvc8 ]; then
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
fi fi
# precompiled headers # precompiled headers
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch" 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_PCH="$NGX_OBJS/ngx_config.pch"
NGX_BUILD_PCH="-Ycngx_config.h -Fp$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" NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
@ -148,15 +119,10 @@ NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
CORE_LINK="$NGX_RES $CORE_LINK" 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_objout="-Fo"
ngx_binout="-Fe" ngx_binout="-Fe"
ngx_objext="obj" ngx_objext="obj"
ngx_binext=".exe"
ngx_long_start='@<< ngx_long_start='@<<
' '

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_PLATFORM" != win32 ]; then
@ -25,46 +24,69 @@ fi
if [ "$CC" = cl ]; then if [ "$CC" = cl ]; then
NGX_CC_NAME=msvc if `$NGX_WINE $CC -v 2>&1 \
echo " + using Microsoft Visual C++ compiler" | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
>/dev/null 2>&1`; then
elif [ "$CC" = wcl386 ]; then NGX_CC_NAME=msvc8
echo " + using Microsoft Visual C++ 8 compiler"
else if `$NGX_WINE $CC -v 2>&1 \
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
>/dev/null 2>&1`; then
NGX_CC_NAME=msvc7
echo " + using Microsoft Visual C++ 7 compiler"
else
NGX_CC_NAME=msvc
echo " + using Microsoft Visual C++ compiler"
fi
fi
else
if [ "$CC" = wcl386 ]; then
NGX_CC_NAME=owc NGX_CC_NAME=owc
echo " + using Open Watcom C compiler" echo " + using Open Watcom C compiler"
elif [ "$CC" = bcc32 ]; then else
if [ "$CC" = bcc32 ]; then
NGX_CC_NAME=bcc NGX_CC_NAME=bcc
echo " + using Borland C++ compiler" echo " + using Borland C++ compiler"
elif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then else
NGX_CC_NAME=icc if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
echo " + using Intel C++ compiler"
elif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
NGX_CC_NAME=gcc NGX_CC_NAME=gcc
echo " + using GNU C compiler" echo " + using GNU C compiler"
elif `$CC -v 2>&1 | grep 'clang version' >/dev/null 2>&1`; then else
NGX_CC_NAME=clang if `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
echo " + using Clang C compiler" NGX_CC_NAME=icc
echo " + using Intel C++ compiler"
elif `$CC -v 2>&1 | grep 'LLVM version' >/dev/null 2>&1`; then else
NGX_CC_NAME=clang if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
echo " + using Clang C compiler"
elif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
NGX_CC_NAME=sunc NGX_CC_NAME=sunc
echo " + using Sun C compiler" echo " + using Sun C compiler"
elif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then else
if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
NGX_CC_NAME=ccc NGX_CC_NAME=ccc
echo " + using Compaq C compiler" echo " + using Compaq C compiler"
elif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then else
if `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
NGX_CC_NAME=acc NGX_CC_NAME=acc
echo " + using HP aC++ compiler" echo " + using HP aC++ compiler"
else else
NGX_CC_NAME=unknown NGX_CC_NAME=unknown
fi fi # acc
fi # ccc
fi # sunc
fi # icc
fi # gcc
fi # bcc
fi # owc
fi # msvc

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# Open Watcom C 1.0, 1.2, 1.3 # Open Watcom C 1.0, 1.2, 1.3
@ -65,10 +64,10 @@ have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
# the precompiled headers # the precompiled headers
#CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch" CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
#NGX_PCH="$NGX_OBJS/ngx_config.pch" NGX_PCH="$NGX_OBJS/ngx_config.pch"
#NGX_BUILD_PCH="-fhq=$NGX_OBJS/ngx_config.pch" NGX_BUILD_PCH="-fhq=$NGX_OBJS/ngx_config.pch"
#NGX_USE_PCH="-fh=$NGX_OBJS/ngx_config.pch" NGX_USE_PCH="-fh=$NGX_OBJS/ngx_config.pch"
# the link flags, built target is NT GUI mode application # the link flags, built target is NT GUI mode application
@ -84,6 +83,7 @@ ngx_include_opt="-i="
ngx_objout="-fo" ngx_objout="-fo"
ngx_binout="-fe=" ngx_binout="-fe="
ngx_objext="obj" ngx_objext="obj"
ngx_binext=".exe"
ngx_regex_dirsep='\\' ngx_regex_dirsep='\\'
ngx_dirsep="\\" ngx_dirsep="\\"

View file

@ -1,17 +1,11 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10 # 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.8 2005/10/13 Sun Studio 11
# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12 # Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
# Sun C 5.9 SunOS_sparc 2007/05/03 # 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 Oracle Solaris Studio 12.2
# Sun C 5.12 SunOS_i386 2011/11/16 Oracle Solaris Studio 12.3
# Sun C 5.13 SunOS_i386 2014/10/20 Oracle Solaris Studio 12.4
# Sun C 5.14 SunOS_i386 2016/05/31 Oracle Developer Studio 12.5
NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \ NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
| sed -e 's/^.* Sun C \(.*\)/\1/'` | sed -e 's/^.* Sun C \(.*\)/\1/'`
@ -23,10 +17,7 @@ have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
cat << END > $NGX_AUTOTEST.c cat << END > $NGX_AUTOTEST.c
int main(void) { int main() { printf("%d", __SUNPRO_C); }
printf("%d", __SUNPRO_C);
return 0;
}
END END
@ -36,7 +27,7 @@ if [ -x $NGX_AUTOTEST ]; then
ngx_sunc_ver=`$NGX_AUTOTEST` ngx_sunc_ver=`$NGX_AUTOTEST`
fi fi
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*
# 1424 == 0x590, Sun Studio 12 # 1424 == 0x590, Sun Studio 12
@ -63,25 +54,12 @@ case "$NGX_MACHINE" in
esac esac
MAIN_LINK=
MODULE_LINK="-G"
# optimizations # 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 IPO=-xipo
CFLAGS="$CFLAGS $ngx_fast $IPO" CFLAGS="$CFLAGS -fast $IPO"
CORE_LINK="$CORE_LINK $ngx_fast $IPO" CORE_LINK="$CORE_LINK -fast $IPO"
case $CPU in case $CPU in
@ -148,11 +126,15 @@ CFLAGS="$CFLAGS $CPU_OPT"
if [ ".$PCRE_OPT" = "." ]; then if [ ".$PCRE_OPT" = "." ]; then
PCRE_OPT="$ngx_fast $IPO $CPU_OPT" PCRE_OPT="-fast $IPO $CPU_OPT"
fi
if [ ".$MD5_OPT" = "." ]; then
MD5_OPT="-fast $IPO $CPU_OPT"
fi fi
if [ ".$ZLIB_OPT" = "." ]; then if [ ".$ZLIB_OPT" = "." ]; then
ZLIB_OPT="$ngx_fast $IPO $CPU_OPT" ZLIB_OPT="-fast $IPO $CPU_OPT"
fi fi

29
auto/configure vendored
View file

@ -1,17 +1,13 @@
#!/bin/sh #!/bin/sh
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
LC_ALL=C
export LC_ALL
. auto/options . auto/options
. auto/init . auto/init
. auto/sources . auto/sources
test -d $NGX_OBJS || mkdir -p $NGX_OBJS test -d $NGX_OBJS || mkdir $NGX_OBJS
echo > $NGX_AUTO_HEADERS_H echo > $NGX_AUTO_HEADERS_H
echo > $NGX_AUTOCONF_ERR echo > $NGX_AUTOCONF_ERR
@ -36,7 +32,7 @@ if test -z "$NGX_PLATFORM"; then
NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE"; NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";
case "$NGX_SYSTEM" in case "$NGX_SYSTEM" in
MINGW32_* | MINGW64_* | MSYS_*) MINGW32_*)
NGX_PLATFORM=win32 NGX_PLATFORM=win32
;; ;;
esac esac
@ -44,7 +40,6 @@ if test -z "$NGX_PLATFORM"; then
else else
echo "building for $NGX_PLATFORM" echo "building for $NGX_PLATFORM"
NGX_SYSTEM=$NGX_PLATFORM NGX_SYSTEM=$NGX_PLATFORM
NGX_MACHINE=i386
fi fi
. auto/cc/conf . auto/cc/conf
@ -56,10 +51,10 @@ fi
. auto/os/conf . auto/os/conf
if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_PLATFORM" != win32 ]; then
. auto/unix . auto/os/features
. auto/threads
fi fi
. auto/threads
. auto/modules . auto/modules
. auto/lib/conf . auto/lib/conf
@ -88,10 +83,6 @@ have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
have=NGX_LOCK_PATH value="\"$NGX_LOCK_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_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define
if [ ".$NGX_ERROR_LOG_PATH" = "." ]; then
have=NGX_ERROR_LOG_STDERR . auto/have
fi
have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_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\"" have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
. auto/define . auto/define
@ -99,23 +90,19 @@ have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\""
. auto/define . auto/define
have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\"" have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\""
. auto/define . 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/make
. auto/lib/make . auto/lib/make
. auto/install . auto/install
if [ "$NGX_PLATFORM" != win32 ]; then
. auto/unix
fi
# STUB # STUB
. auto/stubs . auto/stubs
have=NGX_USER value="\"$NGX_USER\"" . auto/define have=NGX_USER value="\"$NGX_USER\"" . auto/define
have=NGX_GROUP value="\"$NGX_GROUP\"" . 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 . auto/summary

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H cat << END >> $NGX_AUTO_CONFIG_H

View file

@ -1,21 +1,15 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for system byte ordering ...$ngx_c" echo $ngx_n "checking for system endianess ...$ngx_c"
echo >> $NGX_ERR
cat << END >> $NGX_AUTOCONF_ERR echo "checking for system endianess" >> $NGX_ERR
----------------------------------------
checking for system byte ordering
END
cat << END > $NGX_AUTOTEST.c cat << END > $NGX_AUTOTEST.c
int main(void) { int main() {
int i = 0x11223344; int i = 0x11223344;
char *p; char *p;
@ -33,18 +27,18 @@ eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
if [ -x $NGX_AUTOTEST ]; then if [ -x $NGX_AUTOTEST ]; then
if $NGX_AUTOTEST >/dev/null 2>&1; then if $NGX_AUTOTEST >/dev/null 2>&1; then
echo " little endian" echo " little endianess"
have=NGX_HAVE_LITTLE_ENDIAN . auto/have have=NGX_HAVE_LITTLE_ENDIAN . auto/have
else else
echo " big endian" echo " big endianess"
fi fi
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*
else else
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*
echo echo
echo "$0: error: cannot detect system byte ordering" echo "$0: error: can not detect system endianess"
exit 1 exit 1
fi fi

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_feature ...$ngx_c" echo $ngx_n "checking for $ngx_feature ...$ngx_c"
@ -31,7 +30,7 @@ cat << END > $NGX_AUTOTEST.c
$NGX_INCLUDE_UNISTD_H $NGX_INCLUDE_UNISTD_H
$ngx_feature_incs $ngx_feature_incs
int main(void) { int main() {
$ngx_feature_test; $ngx_feature_test;
return 0; return 0;
} }
@ -53,7 +52,7 @@ if [ -x $NGX_AUTOTEST ]; then
yes) yes)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages # /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then if /bin/sh -c $NGX_AUTOTEST >/dev/null 2>&1; then
echo " found" echo " found"
ngx_found=yes ngx_found=yes
@ -66,27 +65,9 @@ if [ -x $NGX_AUTOTEST ]; then
fi 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) bug)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages # /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then if /bin/sh -c $NGX_AUTOTEST >/dev/null 2>&1; then
echo " not found" echo " not found"
else else
@ -120,4 +101,4 @@ else
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
fi fi
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H cat << END >> $NGX_AUTO_CONFIG_H

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_HEADERS_H cat << END >> $NGX_AUTO_HEADERS_H

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
ngx_include="unistd.h"; . auto/include ngx_include="unistd.h"; . auto/include

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_include ...$ngx_c" echo $ngx_n "checking for $ngx_include ...$ngx_c"
@ -20,7 +19,7 @@ cat << END > $NGX_AUTOTEST.c
$NGX_INCLUDE_SYS_PARAM_H $NGX_INCLUDE_SYS_PARAM_H
#include <$ngx_include> #include <$ngx_include>
int main(void) { int main() {
return 0; return 0;
} }
@ -45,6 +44,9 @@ if [ -x $NGX_AUTOTEST ]; then
eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'" eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
#STUB
eval "NGX_$ngx_name='#include <$ngx_include>'"
else else
echo " not found" echo " not found"
@ -55,4 +57,4 @@ else
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
fi fi
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
NGX_MAKEFILE=$NGX_OBJS/Makefile NGX_MAKEFILE=$NGX_OBJS/Makefile
@ -48,6 +47,4 @@ default: build
clean: clean:
rm -rf Makefile $NGX_OBJS rm -rf Makefile $NGX_OBJS
.PHONY: default clean
END END

View file

@ -1,14 +1,13 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $USE_PERL != NO ]; then if [ $USE_PERL = YES ]; then
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
install_perl_modules: install_perl_modules:
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) install cd $NGX_OBJS/src/http/modules/perl && make install
END END
NGX_INSTALL_PERL_MODULES=install_perl_modules NGX_INSTALL_PERL_MODULES=install_perl_modules
@ -20,24 +19,16 @@ case ".$NGX_SBIN_PATH" in
./*) ./*)
;; ;;
.)
NGX_SBIN_PATH=$NGX_PREFIX/sbin/nginx
;;
*) *)
NGX_SBIN_PATH=$NGX_PREFIX/$NGX_SBIN_PATH NGX_SBIN_PATH=$NGX_PREFIX/$NGX_SBIN_PATH
;; ;;
esac 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 case ".$NGX_CONF_PATH" in
./*) ./*)
;; ;;
@ -62,7 +53,7 @@ esac
case ".$NGX_ERROR_LOG_PATH" in case ".$NGX_ERROR_LOG_PATH" in
./* | .) ./*)
;; ;;
*) *)
@ -81,119 +72,64 @@ case ".$NGX_HTTP_LOG_PATH" in
esac 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 cat << END >> $NGX_MAKEFILE
manpage: $NGX_OBJS/nginx.8 install: $NGX_OBJS${ngx_dirsep}nginx${ngx_binext} \
$NGX_INSTALL_PERL_MODULES
$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)$NGX_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_PREFIX'
test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \\ test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' || mkdir -p '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`'
test ! -f '\$(DESTDIR)$NGX_SBIN_PATH' \\ test ! -f '\$(DESTDIR)$NGX_SBIN_PATH' \
|| mv '\$(DESTDIR)$NGX_SBIN_PATH' \\ || mv '\$(DESTDIR)$NGX_SBIN_PATH' \
'\$(DESTDIR)$NGX_SBIN_PATH.old' '\$(DESTDIR)$NGX_SBIN_PATH.old'
cp $NGX_OBJS/nginx '\$(DESTDIR)$NGX_SBIN_PATH' cp $NGX_OBJS/nginx '\$(DESTDIR)$NGX_SBIN_PATH'
test -d '\$(DESTDIR)$NGX_CONF_PREFIX' \\ test -d '\$(DESTDIR)$NGX_CONF_PREFIX' \
|| mkdir -p '\$(DESTDIR)$NGX_CONF_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/koi-win '\$(DESTDIR)$NGX_CONF_PREFIX' cp conf/koi-win '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/koi-utf '\$(DESTDIR)$NGX_CONF_PREFIX' cp conf/koi-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/win-utf '\$(DESTDIR)$NGX_CONF_PREFIX' cp conf/win-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types' \\ test -f '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types' \
|| cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX' || cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types.default' cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types.default'
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params' \\ test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params' \
|| cp conf/fastcgi_params '\$(DESTDIR)$NGX_CONF_PREFIX' || cp conf/fastcgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/fastcgi_params \\ cp conf/fastcgi_params \
'\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params.default' '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params.default'
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf' \\ test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf' \
|| cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX' || cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX'
cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf.default' cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf.default'
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params' \\ test -f '\$(DESTDIR)$NGX_CONF_PATH' \
|| 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_PATH'
cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PREFIX/nginx.conf.default' cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PREFIX/nginx.conf.default'
test -d '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' \\ test -d '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' \
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' || mkdir -p '\$(DESTDIR)`dirname "$NGX_PID_PATH"`'
test -d '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' \\ test -d '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' || \
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' mkdir -p '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`'
test -d '\$(DESTDIR)$NGX_PREFIX/html' \\ test -d '\$(DESTDIR)$NGX_PREFIX/html' \
|| cp -R $NGX_HTML '\$(DESTDIR)$NGX_PREFIX' || cp -r html '\$(DESTDIR)$NGX_PREFIX'
END END
if test -n "$NGX_ERROR_LOG_PATH"; then if test -n "\$(DESTDIR)$NGX_ERROR_LOG_PATH"; then
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
test -d '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' \\ test -d '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' || \
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' mkdir -p '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`'
END END
fi 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 # create Makefile
cat << END >> Makefile cat << END >> Makefile
@ -204,9 +140,6 @@ build:
install: install:
\$(MAKE) -f $NGX_MAKEFILE install \$(MAKE) -f $NGX_MAKEFILE install
modules:
\$(MAKE) -f $NGX_MAKEFILE modules
upgrade: upgrade:
$NGX_SBIN_PATH -t $NGX_SBIN_PATH -t
@ -216,5 +149,18 @@ upgrade:
kill -QUIT \`cat $NGX_PID_PATH.oldbin\` kill -QUIT \`cat $NGX_PID_PATH.oldbin\`
.PHONY: build install modules upgrade upgrade1:
# upgrade 0.1.x to 0.2+
$NGX_SBIN_PATH -t
cp $NGX_PID_PATH $NGX_PID_PATH.oldbin
kill -USR2 \`cat $NGX_PID_PATH\`
sleep 1
test -f $NGX_PID_PATH.oldbin
cp $NGX_PID_PATH $NGX_PID_PATH.newbin
kill -QUIT \`cat $NGX_PID_PATH.oldbin\`
END END

View file

@ -1,13 +1,12 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $USE_PCRE = YES -o $PCRE != NONE ]; then if [ $USE_PCRE = YES -o $PCRE != NONE ]; then
. auto/lib/pcre/conf . auto/lib/pcre/conf
else else
if [ $USE_PCRE = DISABLED -a $HTTP = YES -a $HTTP_REWRITE = YES ]; then if [ $USE_PCRE = DISABLED -a $HTTP_REWRITE = YES ]; then
cat << END cat << END
@ -25,30 +24,52 @@ if [ $USE_OPENSSL = YES ]; then
. auto/lib/openssl/conf . auto/lib/openssl/conf
fi fi
if [ $USE_MD5 = YES ]; then
if [ $USE_OPENSSL = YES ]; then
have=NGX_HAVE_OPENSSL_MD5_H . auto/have
have=NGX_OPENSSL_MD5 . auto/have
MD5=YES
MD5_LIB=OpenSSL
else
. auto/lib/md5/conf
fi
fi
if [ $USE_SHA1 = YES ]; then
if [ $USE_OPENSSL = YES ]; then
have=NGX_HAVE_OPENSSL_SHA1_H . auto/have
SHA1=YES
SHA1_LIB=OpenSSL
else
. auto/lib/sha1/conf
fi
fi
if [ $USE_ZLIB = YES ]; then if [ $USE_ZLIB = YES ]; then
. auto/lib/zlib/conf . auto/lib/zlib/conf
fi fi
if [ $USE_LIBXSLT != NO ]; then if [ $USE_LIBXSLT = YES ]; then
. auto/lib/libxslt/conf . auto/lib/libxslt/conf
fi fi
if [ $USE_LIBGD != NO ]; then if [ $USE_LIBGD = YES ]; then
. auto/lib/libgd/conf . auto/lib/libgd/conf
fi fi
if [ $USE_PERL != NO ]; then if [ $USE_PERL = YES ]; then
. auto/lib/perl/conf . auto/lib/perl/conf
fi fi
if [ $USE_GEOIP != NO ]; then if [ $HTTP_GEOIP = YES ]; then
. auto/lib/geoip/conf . auto/lib/geoip/conf
fi fi
if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then
. auto/lib/google-perftools/conf . auto/lib/google-perftools/conf
fi fi
if [ $NGX_LIBATOMIC != NO ]; then
. auto/lib/libatomic/conf
fi

View file

@ -1,12 +1,11 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
ngx_feature="GeoIP library" ngx_feature="GeoIP library"
ngx_feature_name= ngx_feature_name=
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <GeoIP.h>" ngx_feature_incs=
ngx_feature_path= ngx_feature_path=
ngx_feature_libs="-lGeoIP" ngx_feature_libs="-lGeoIP"
ngx_feature_test="GeoIP_open(NULL, 0)" ngx_feature_test="GeoIP_open(NULL, 0)"
@ -18,7 +17,6 @@ if [ $ngx_found = no ]; then
# FreeBSD port # FreeBSD port
ngx_feature="GeoIP library in /usr/local/" ngx_feature="GeoIP library in /usr/local/"
ngx_feature_path="/usr/local/include"
if [ $NGX_RPATH = YES ]; then if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP" ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP"
@ -35,7 +33,7 @@ if [ $ngx_found = no ]; then
# NetBSD port # NetBSD port
ngx_feature="GeoIP library in /usr/pkg/" ngx_feature="GeoIP library in /usr/pkg/"
ngx_feature_path="/usr/pkg/include" ngx_feature_path="/usr/pkg/include/"
if [ $NGX_RPATH = YES ]; then if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP" ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP"
@ -65,24 +63,7 @@ fi
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
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 else

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
ngx_feature="Google perftools" ngx_feature="Google perftools"
@ -9,8 +8,7 @@
ngx_feature_incs= ngx_feature_incs=
ngx_feature_path= ngx_feature_path=
ngx_feature_libs="-lprofiler" ngx_feature_libs="-lprofiler"
ngx_feature_test="void ProfilerStop(void); ngx_feature_test="ProfilerStop()"
ProfilerStop()"
. auto/feature . auto/feature
@ -30,22 +28,6 @@ if [ $ngx_found = no ]; then
fi 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 if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
@ -53,7 +35,7 @@ else
cat << END cat << END
$0: error: the Google perftools module requires the Google perftools $0: error: the Google perftool module requires the Google perftools
library. You can either do not enable the module or install the library. library. You can either do not enable the module or install the library.
END END

View file

@ -1,43 +0,0 @@
# 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

View file

@ -1,16 +0,0 @@
# 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

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
ngx_feature="GD library" ngx_feature="GD library"
@ -9,8 +8,7 @@
ngx_feature_incs="#include <gd.h>" ngx_feature_incs="#include <gd.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs="-lgd" ngx_feature_libs="-lgd"
ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL); ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);"
(void) img"
. auto/feature . auto/feature
@ -36,7 +34,7 @@ if [ $ngx_found = no ]; then
# NetBSD port # NetBSD port
ngx_feature="GD library in /usr/pkg/" ngx_feature="GD library in /usr/pkg/"
ngx_feature_path="/usr/pkg/include" ngx_feature_path="/usr/pkg/include/"
if [ $NGX_RPATH = YES ]; then if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd" ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd"
@ -68,18 +66,7 @@ fi
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
CORE_INCS="$CORE_INCS $ngx_feature_path" CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
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);
(void) img"
. auto/feature
else else

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
ngx_feature="libxslt" ngx_feature="libxslt"
@ -16,8 +15,8 @@
ngx_feature_libs="-lxml2 -lxslt" ngx_feature_libs="-lxml2 -lxslt"
ngx_feature_test="xmlParserCtxtPtr ctxt = NULL; ngx_feature_test="xmlParserCtxtPtr ctxt = NULL;
xsltStylesheetPtr sheet = NULL; xsltStylesheetPtr sheet = NULL;
xmlDocPtr doc = NULL; xmlDocPtr doc;
xmlParseChunk(ctxt, NULL, 0, 0); doc = xmlParseChunk(ctxt, NULL, 0, 0);
xsltApplyStylesheet(sheet, doc, NULL);" xsltApplyStylesheet(sheet, doc, NULL);"
. auto/feature . auto/feature
@ -76,12 +75,7 @@ fi
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
CORE_INCS="$CORE_INCS $ngx_feature_path" CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
if [ $USE_LIBXSLT = YES ]; then
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
fi
NGX_LIB_LIBXSLT=$ngx_feature_libs
else else
@ -157,9 +151,5 @@ fi
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
if [ $USE_LIBXSLT = YES ]; then CORE_LIBS="$CORE_LIBS -lexslt"
CORE_LIBS="$CORE_LIBS -lexslt"
fi
NGX_LIB_LIBXSLT="$NGX_LIB_LIBXSLT -lexslt"
fi fi

View file

@ -1,12 +1,19 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then
. auto/lib/pcre/make . auto/lib/pcre/make
fi fi
if [ $MD5 != NONE -a $MD5 != NO -a $MD5 != YES ]; then
. auto/lib/md5/make
fi
if [ $SHA1 != NONE -a $SHA1 != NO -a $SHA1 != YES ]; then
. auto/lib/sha1/make
fi
if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then
. auto/lib/openssl/make . auto/lib/openssl/make
fi fi
@ -15,10 +22,6 @@ if [ $ZLIB != NONE -a $ZLIB != NO -a $ZLIB != YES ]; then
. auto/lib/zlib/make . auto/lib/zlib/make
fi fi
if [ $NGX_LIBATOMIC != NO -a $NGX_LIBATOMIC != YES ]; then if [ $USE_PERL = YES ]; then
. auto/lib/libatomic/make
fi
if [ $USE_PERL != NO ]; then
. auto/lib/perl/make . auto/lib/perl/make
fi fi

113
auto/lib/md5/conf Normal file
View file

@ -0,0 +1,113 @@
# Copyright (C) Igor Sysoev
if [ $MD5 != NONE ]; then
if grep MD5_Init $MD5/md5.h 2>&1 >/dev/null; then
# OpenSSL md5
OPENSSL_MD5=YES
have=NGX_HAVE_OPENSSL_MD5 . auto/have
have=NGX_OPENSSL_MD5 . auto/have
else
# rsaref md5
OPENSSL_MD5=NO
fi
CORE_INCS="$CORE_INCS $MD5"
case "$NGX_CC_NAME" in
msvc* | owc* | bcc)
LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
;;
icc*)
LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
# to allow -ipo optimization we link with the *.o but not library
CORE_LIBS="$CORE_LIBS $MD5/md5_dgst.o"
if [ $MD5_ASM = YES ]; then
CORE_LIBS="$CORE_LIBS $MD5/asm/mx86-elf.o"
fi
;;
*)
LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
CORE_LIBS="$CORE_LIBS $MD5/libmd5.a"
#CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
;;
esac
else
if [ "$NGX_PLATFORM" != win32 ]; then
MD5=NO
# FreeBSD, Solaris 10
ngx_feature="system md library"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <md5.h>"
ngx_feature_path=
ngx_feature_libs="-lmd"
ngx_feature_test="MD5_CTX md5; MD5Init(&md5)"
. auto/feature
ngx_md5_lib="system md"
if [ $ngx_found = no ]; then
# Solaris 8/9
ngx_feature="system md5 library"
ngx_feature_libs="-lmd5"
. auto/feature
ngx_md5_lib="system md5"
fi
if [ $ngx_found = no ]; then
# OpenSSL crypto library
ngx_feature="OpenSSL md5 crypto library"
ngx_feature_name="NGX_OPENSSL_MD5"
ngx_feature_incs="#include <openssl/md5.h>"
ngx_feature_libs="-lcrypto"
ngx_feature_test="MD5_CTX md5; MD5_Init(&md5)"
. auto/feature
ngx_md5_lib="system crypto"
if [ $ngx_found = yes ]; then
have=NGX_HAVE_OPENSSL_MD5_H . auto/have
fi
fi
if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
MD5=YES
MD5_LIB=$ngx_md5_lib
else
cat << END
$0: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.
END
exit 1
fi
fi
fi

95
auto/lib/md5/make Normal file
View file

@ -0,0 +1,95 @@
# Copyright (C) Igor Sysoev
case "$NGX_CC_NAME" in
msvc*)
ngx_makefile=makefile.msvc
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC MD5_ASM=$MD5_ASM"
ngx_md5="MD5=\"$MD5\""
;;
owc*)
ngx_makefile=makefile.owc
ngx_opt="CPU_OPT=\"$CPU_OPT\""
ngx_md5=`echo MD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
bcc)
ngx_makefile=makefile.bcc
ngx_opt="-DCPU_OPT=\"$CPU_OPT\" -DMD5_ASM=$MD5_ASM"
ngx_md5=`echo \-DMD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
esac
done=NO
case "$NGX_PLATFORM" in
win32)
cat << END >> $NGX_MAKEFILE
`echo "$MD5/md5.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
\$(MAKE) -f auto/lib/md5/$ngx_makefile $ngx_opt $ngx_md5
END
done=YES
;;
SunOS:*:i86pc)
if [ $MD5_ASM = YES ]; then
cat << END >> $NGX_MAKEFILE
$MD5/libmd5.a: $NGX_MAKEFILE
cd $MD5 \\
&& \$(MAKE) CFLAGS="$MD5_OPT -DSOL -DMD5_ASM -DL_ENDIAN" \\
CC="\$(CC)" CPP="\$(CPP)" \\
MD5_ASM_OBJ=asm/mx86-sol.o clean libmd5.a
END
done=YES
fi
;;
# FreeBSD: i386
# Linux: i686
*:i386 | *:i686)
if [ $MD5_ASM = YES ]; then
cat << END >> $NGX_MAKEFILE
$MD5/libmd5.a: $NGX_MAKEFILE
cd $MD5 \\
&& \$(MAKE) CFLAGS="$MD5_OPT -DELF -DMD5_ASM -DL_ENDIAN" \\
CC="\$(CC)" CPP="\$(CPP)" \\
MD5_ASM_OBJ=asm/mx86-elf.o clean libmd5.a
END
done=YES
fi
;;
esac
if [ $done = NO ]; then
cat << END >> $NGX_MAKEFILE
$MD5/libmd5.a: $NGX_MAKEFILE
cd $MD5 \\
&& \$(MAKE) CFLAGS="$MD5_OPT" \\
CC="\$(CC)" MD5_ASM_OBJ= clean libmd5.a
END
fi

21
auto/lib/md5/makefile.bcc Normal file
View file

@ -0,0 +1,21 @@
# Copyright (C) Igor Sysoev
CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
!if "$(MD5_ASM)" == "YES"
md5.lib:
cd $(MD5)
bcc32 -c $(CFLAGS) -DMD5_ASM md5_dgst.c
tlib md5.lib +md5_dgst.obj +"asm\m-win32.obj"
!else
md5.lib:
cd $(MD5)
bcc32 -c $(CFLAGS) md5_dgst.c
tlib md5.lib +md5_dgst.obj
!endif

View file

@ -0,0 +1,21 @@
# Copyright (C) Igor Sysoev
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
!IF "$(MD5_ASM)" == "YES"
md5.lib:
cd $(MD5)
cl -c $(CFLAGS) -D MD5_ASM md5_dgst.c
link -lib -out:md5.lib md5_dgst.obj asm/m-win32.obj
!ELSE
md5.lib:
cd $(MD5)
cl -c $(CFLAGS) md5_dgst.c
link -lib -out:md5.lib md5_dgst.obj
!ENDIF

10
auto/lib/md5/makefile.owc Normal file
View file

@ -0,0 +1,10 @@
# Copyright (C) Igor Sysoev
CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
md5.lib:
cd $(MD5)
wcl386 -c $(CFLAGS) -dL_ENDIAN md5_dgst.c
wlib -n md5.lib md5_dgst.obj

View file

@ -1,35 +1,21 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $OPENSSL != NONE ]; then if [ $OPENSSL != NONE ]; then
have=NGX_OPENSSL . auto/have
have=NGX_SSL . auto/have
if [ $USE_OPENSSL_QUIC = YES ]; then
have=NGX_QUIC . auto/have
have=NGX_QUIC_OPENSSL_COMPAT . auto/have
fi
case "$CC" in case "$CC" in
cl | bcc32) cl | bcc32)
have=NGX_OPENSSL . auto/have
have=NGX_SSL . auto/have
CFLAGS="$CFLAGS -DNO_SYS_TYPES_H" CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
CORE_INCS="$CORE_INCS $OPENSSL/openssl/include" CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h" CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
if [ -f $OPENSSL/ms/do_ms.bat ]; then CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
# 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 # libeay32.lib requires gdi32.lib
CORE_LIBS="$CORE_LIBS gdi32.lib" CORE_LIBS="$CORE_LIBS gdi32.lib"
@ -38,126 +24,51 @@ if [ $OPENSSL != NONE ]; then
;; ;;
*) *)
have=NGX_OPENSSL . auto/have
have=NGX_SSL . auto/have
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include" CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h" 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/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a" CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL" CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
if [ "$NGX_PLATFORM" = win32 ]; then
CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
fi
;; ;;
esac esac
else else
if [ "$NGX_PLATFORM" != win32 ]; then case "$NGX_PLATFORM" in
OPENSSL=NO win32)
have=NGX_OPENSSL . auto/have
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_LIBPTHREAD"
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"
else
ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto"
fi
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
. 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"
else
ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto"
fi
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
. 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"
else
ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto"
fi
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
. auto/feature
fi
if [ $ngx_found = yes ]; then
have=NGX_SSL . auto/have have=NGX_SSL . auto/have
CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
OPENSSL=YES OPENSSL=YES
if [ $USE_OPENSSL_QUIC = YES ]; then CORE_INCS="$CORE_INCS c:/openssl/include"
CORE_LIBS="$CORE_LIBS c:/openssl/ssleay32.lib"
CORE_LIBS="$CORE_LIBS c:/openssl/libeay32.lib"
ngx_feature="OpenSSL QUIC support" # libeay32.lib requires gdi32.lib
ngx_feature_name="NGX_QUIC" CORE_LIBS="$CORE_LIBS gdi32.lib"
ngx_feature_test="SSL_set_quic_method(NULL, NULL)" ;;
. auto/feature
if [ $ngx_found = no ]; then *)
have=NGX_QUIC_OPENSSL_COMPAT . auto/have OPENSSL=NO
ngx_feature="OpenSSL QUIC compatibility" ngx_feature="OpenSSL library"
ngx_feature_test="SSL_CTX_add_custom_ext(NULL, 0, 0, ngx_feature_name="NGX_OPENSSL"
NULL, NULL, NULL, NULL, NULL)" ngx_feature_run=no
. auto/feature ngx_feature_incs="#include <openssl/ssl.h>"
fi ngx_feature_path=
ngx_feature_libs="-lssl -lcrypto"
ngx_feature_test="SSL_library_init()"
. auto/feature
if [ $ngx_found = no ]; then if [ $ngx_found = yes ]; then
cat << END have=NGX_SSL . auto/have
CORE_LIBS="$CORE_LIBS $ngx_feature_libs $NGX_LIBDL"
$0: error: certain modules require OpenSSL QUIC support. OPENSSL=YES
You can either do not enable the modules, or install the OpenSSL library with else
QUIC support into the system, or build the OpenSSL library with QUIC support
statically from the source with nginx by using --with-openssl=<path> option.
END
exit 1
fi
fi
fi
fi
if [ $OPENSSL != YES ]; then
cat << END cat << END
@ -167,7 +78,10 @@ into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option. with nginx by using --with-openssl=<path> option.
END END
exit 1 exit 1
fi fi
;;
esac
fi fi

View file

@ -1,30 +1,16 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
case "$CC" in case "$CC" in
cl) cl)
case "$NGX_MACHINE" in
amd64)
OPENSSL_TARGET=VC-WIN64A
;;
*)
OPENSSL_TARGET=VC-WIN32
;;
esac
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE $OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE
\$(MAKE) -f auto/lib/openssl/makefile.msvc \ \$(MAKE) -f auto/lib/openssl/makefile.msvc \
OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT" \ OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT"
OPENSSL_TARGET="$OPENSSL_TARGET"
END END
@ -54,6 +40,11 @@ END
;; ;;
*) *)
case $USE_THREADS in
NO) OPENSSL_OPT="$OPENSSL_OPT no-threads" ;;
*) OPENSSL_OPT="$OPENSSL_OPT threads" ;;
esac
case $OPENSSL in case $OPENSSL in
/*) ngx_prefix="$OPENSSL/.openssl" ;; /*) ngx_prefix="$OPENSSL/.openssl" ;;
*) ngx_prefix="$PWD/$OPENSSL/.openssl" ;; *) ngx_prefix="$PWD/$OPENSSL/.openssl" ;;
@ -63,10 +54,10 @@ END
$OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE $OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE
cd $OPENSSL \\ cd $OPENSSL \\
&& if [ -f Makefile ]; then \$(MAKE) clean; fi \\ && \$(MAKE) clean \\
&& ./config --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \\ && ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\
&& \$(MAKE) \\ && \$(MAKE) \\
&& \$(MAKE) install_sw LIBDIR=lib && \$(MAKE) install LIBDIR=lib
END END

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
all: all:

View file

@ -1,21 +1,13 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
all: all:
cd $(OPENSSL) cd $(OPENSSL)
perl Configure $(OPENSSL_TARGET) no-shared no-threads \ perl Configure VC-WIN32 no-shared --prefix=openssl $(OPENSSL_OPT)
--prefix="%cd%/openssl" \
--openssldir="%cd%/openssl/ssl" \
$(OPENSSL_OPT)
if exist ms\do_ms.bat ( \ ms\do_ms
ms\do_ms \
&& $(MAKE) -f ms\nt.mak \ $(MAKE) -f ms\nt.mak
&& $(MAKE) -f ms\nt.mak install \ $(MAKE) -f ms\nt.mak install
) else ( \
$(MAKE) \
&& $(MAKE) install_sw \
)

View file

@ -1,116 +1,91 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $PCRE != NONE ]; then if [ $PCRE != NONE ]; then
CORE_INCS="$CORE_INCS $PCRE"
CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
if [ -f $PCRE/src/pcre2.h.generic ]; then case "$NGX_CC_NAME" in
PCRE_LIBRARY=PCRE2 msvc* | owc* | bcc)
have=NGX_PCRE . auto/have
have=NGX_PCRE . auto/have
have=NGX_PCRE2 . auto/have
if [ "$NGX_PLATFORM" = win32 ]; then
have=PCRE2_STATIC . auto/have
fi
CORE_INCS="$CORE_INCS $PCRE/src/"
CORE_DEPS="$CORE_DEPS $PCRE/src/pcre2.h"
case "$NGX_CC_NAME" in
msvc)
LINK_DEPS="$LINK_DEPS $PCRE/src/pcre2-8.lib"
CORE_LIBS="$CORE_LIBS $PCRE/src/pcre2-8.lib"
;;
*)
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre2-8.a"
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre2-8.a"
;;
esac
else
PCRE_LIBRARY=PCRE
have=NGX_PCRE . auto/have
if [ "$NGX_PLATFORM" = win32 ]; then
have=PCRE_STATIC . auto/have have=PCRE_STATIC . auto/have
fi CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib"
CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
;;
CORE_INCS="$CORE_INCS $PCRE" icc* )
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" have=NGX_PCRE . auto/have
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
case "$NGX_CC_NAME" in LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
msvc | owc | bcc) echo $ngx_n "checking for PCRE library ...$ngx_c"
LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib"
CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
;;
*) if [ -f $PCRE/pcre.h ]; then
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a" ngx_pcre_ver=`grep PCRE_MAJOR $PCRE/pcre.h \
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a" | sed -e 's/^.*PCRE_MAJOR.* \(.*\)$/\1/'`
;;
esac else if [ -f $PCRE/configure.in ]; then
fi ngx_pcre_ver=`grep PCRE_MAJOR= $PCRE/configure.in \
| sed -e 's/^.*=\(.*\)$/\1/'`
if [ $PCRE_JIT = YES ]; then else
have=NGX_HAVE_PCRE_JIT . auto/have ngx_pcre_ver=`grep pcre_major, $PCRE/configure.ac \
PCRE_CONF_OPT="$PCRE_CONF_OPT --enable-jit" | sed -e 's/^.*pcre_major,.*\[\(.*\)\].*$/\1/'`
fi 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
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a"
;;
esac
else else
if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_PLATFORM" != win32 ]; then
PCRE=NO PCRE=NO
fi
if [ $PCRE = NO -a $PCRE2 != DISABLED ]; then
ngx_feature="PCRE2 library"
ngx_feature_name="NGX_PCRE2"
ngx_feature_run=no
ngx_feature_incs="#define PCRE2_CODE_UNIT_WIDTH 8
#include <pcre2.h>"
ngx_feature_path=
ngx_feature_libs="-lpcre2-8"
ngx_feature_test="pcre2_code *re;
re = pcre2_compile(NULL, 0, 0, NULL, NULL, NULL);
if (re == NULL) return 1"
. auto/feature
if [ $ngx_found = no ]; then
# pcre2-config
ngx_pcre2_prefix=`pcre2-config --prefix 2>/dev/null`
if [ -n "$ngx_pcre2_prefix" ]; then
ngx_feature="PCRE2 library in $ngx_pcre2_prefix"
ngx_feature_path=`pcre2-config --cflags \
| sed -n -e 's/.*-I *\([^ ][^ ]*\).*/\1/p'`
ngx_feature_libs=`pcre2-config --libs8`
. auto/feature
fi
fi
if [ $ngx_found = yes ]; then
have=NGX_PCRE . auto/have
CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
PCRE=YES
PCRE_LIBRARY=PCRE2
fi
fi
if [ $PCRE = NO ]; then
ngx_feature="PCRE library" ngx_feature="PCRE library"
ngx_feature_name="NGX_PCRE" ngx_feature_name="NGX_PCRE"
@ -118,9 +93,7 @@ else
ngx_feature_incs="#include <pcre.h>" ngx_feature_incs="#include <pcre.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs="-lpcre" ngx_feature_libs="-lpcre"
ngx_feature_test="pcre *re; ngx_feature_test="pcre *re; re = pcre_compile(NULL, 0, NULL, 0, NULL)"
re = pcre_compile(NULL, 0, NULL, 0, NULL);
if (re == NULL) return 1"
. auto/feature . auto/feature
if [ $ngx_found = no ]; then if [ $ngx_found = no ]; then
@ -183,28 +156,13 @@ else
fi fi
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
CORE_DEPS="$CORE_DEPS $REGEX_DEPS"
CORE_SRCS="$CORE_SRCS $REGEX_SRCS"
CORE_INCS="$CORE_INCS $ngx_feature_path" CORE_INCS="$CORE_INCS $ngx_feature_path"
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
PCRE=YES PCRE=YES
PCRE_LIBRARY=PCRE else
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 cat << END
$0: error: the HTTP rewrite module requires the PCRE library. $0: error: the HTTP rewrite module requires the PCRE library.
@ -213,7 +171,9 @@ 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. statically from the source with nginx by using --with-pcre=<path> option.
END END
exit 1 exit 1
fi
fi
fi
fi fi

View file

@ -1,143 +1,37 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $PCRE_LIBRARY = PCRE2 ]; then case "$NGX_CC_NAME" in
# PCRE2 msvc*)
ngx_makefile=makefile.msvc
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
ngx_pcre="PCRE=\"$PCRE\""
;;
if [ $NGX_CC_NAME = msvc ]; then owc*)
ngx_makefile=makefile.owc
ngx_opt="CPU_OPT=\"$CPU_OPT\""
ngx_pcre=`echo PCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
# With PCRE2, it is not possible to compile all sources. bcc)
# Since list of source files changes between versions, we ngx_makefile=makefile.bcc
# test files which might not be present. ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
ngx_pcre=`echo \-DPCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
ngx_pcre_srcs="pcre2_auto_possess.c \ esac
pcre2_chartables.c \
pcre2_compile.c \
pcre2_config.c \
pcre2_context.c \
pcre2_dfa_match.c \
pcre2_error.c \
pcre2_jit_compile.c \
pcre2_maketables.c \
pcre2_match.c \
pcre2_match_data.c \
pcre2_newline.c \
pcre2_ord2utf.c \
pcre2_pattern_info.c \
pcre2_string_utils.c \
pcre2_study.c \
pcre2_substitute.c \
pcre2_substring.c \
pcre2_tables.c \
pcre2_ucd.c \
pcre2_valid_utf.c \
pcre2_xclass.c"
ngx_pcre_test="pcre2_convert.c \
pcre2_extuni.c \
pcre2_find_bracket.c \
pcre2_script_run.c \
pcre2_serialize.c"
for ngx_src in $ngx_pcre_test case "$NGX_PLATFORM" in
do
if [ -f $PCRE/src/$ngx_src ]; then
ngx_pcre_srcs="$ngx_pcre_srcs $ngx_src"
fi
done
ngx_pcre_objs=`echo $ngx_pcre_srcs \ win32)
| sed -e "s#\([^ ]*\.\)c#\1$ngx_objext#g"`
ngx_pcre_srcs=`echo $ngx_pcre_srcs \
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g"`
ngx_pcre_objs=`echo $ngx_pcre_objs \
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g"`
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
PCRE_CFLAGS = -O2 -Ob1 -Oi -Gs $LIBC $CPU_OPT `echo "$PCRE/pcre.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
PCRE_FLAGS = -DHAVE_CONFIG_H -DPCRE2_STATIC -DPCRE2_CODE_UNIT_WIDTH=8 \\
-DHAVE_MEMMOVE
PCRE_SRCS = $ngx_pcre_srcs
PCRE_OBJS = $ngx_pcre_objs
$PCRE/src/pcre2.h:
cd $PCRE/src \\
&& copy /y config.h.generic config.h \\
&& copy /y pcre2.h.generic pcre2.h \\
&& copy /y pcre2_chartables.c.dist pcre2_chartables.c
$PCRE/src/pcre2-8.lib: $PCRE/src/pcre2.h $NGX_MAKEFILE
cd $PCRE/src \\
&& cl -nologo -c \$(PCRE_CFLAGS) -I . \$(PCRE_FLAGS) \$(PCRE_SRCS) \\
&& link -lib -out:pcre2-8.lib -verbose:lib \$(PCRE_OBJS)
END
else
cat << END >> $NGX_MAKEFILE
$PCRE/src/pcre2.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/libpcre2-8.a: $PCRE/Makefile
cd $PCRE \\
&& \$(MAKE) libpcre2-8.la
END
fi
else
# PCRE
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 \$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre $ngx_opt
`echo "$PCRE/pcre.h:" | sed -e "s/\//$ngx_regex_dirsep/g"` `echo "$PCRE/pcre.h:" | sed -e "s/\//$ngx_regex_dirsep/g"`
@ -145,8 +39,9 @@ else
END END
else ;;
*)
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
$PCRE/pcre.h: $PCRE/Makefile $PCRE/pcre.h: $PCRE/Makefile
@ -155,7 +50,7 @@ $PCRE/Makefile: $NGX_MAKEFILE
cd $PCRE \\ cd $PCRE \\
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\ && if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\ && CC="\$(CC)" CFLAGS="$PCRE_OPT" \\
./configure --disable-shared $PCRE_CONF_OPT ./configure --disable-shared
$PCRE/.libs/libpcre.a: $PCRE/Makefile $PCRE/.libs/libpcre.a: $PCRE/Makefile
cd $PCRE \\ cd $PCRE \\
@ -163,6 +58,6 @@ $PCRE/.libs/libpcre.a: $PCRE/Makefile
END END
fi ;;
fi esac

View file

@ -1,11 +1,9 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT) CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT)
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \ PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
pcre.lib: pcre.lib:
@ -13,8 +11,8 @@ pcre.lib:
bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c
copy /y nul pcre.lst > pcre.lst
for %n in (*.obj) do @echo +%n ^^& >> pcre.lst for %n in (*.obj) do @echo +%n & >> pcre.lst
echo + >> pcre.lst echo + >> pcre.lst
tlib pcre.lib @pcre.lst tlib pcre.lib @pcre.lst

View file

@ -1,11 +1,9 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \ PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
pcre.lib: pcre.lib:

View file

@ -1,11 +1,9 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT) CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 & PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
pcre.lib: pcre.lib:

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo "checking for perl" echo "checking for perl"
@ -12,26 +11,16 @@ NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
if test -n "$NGX_PERL_VER"; then if test -n "$NGX_PERL_VER"; then
echo " + perl version: $NGX_PERL_VER" echo " + perl version: $NGX_PERL_VER"
if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then if [ "`echo 'use 5.006001; print "OK"' | $NGX_PERL 2>&1`" != OK ]; then
echo echo
echo "$0: error: perl 5.8.6 or higher is required" echo "$0: error: perl 5.6.1 or higher is required"
echo echo
exit 1; exit 1;
fi 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`" NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`
# gcc 4.1/4.2 warn about unused values in pTHX_ # gcc 4.1/4.2 warn about unused values in pTHX_
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \ NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
@ -42,10 +31,6 @@ if test -n "$NGX_PERL_VER"; then
ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts` 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 if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
have=NGX_HAVE_PERL_MULTIPLICITY . auto/have have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
echo " + perl interpreter multiplicity found" echo " + perl interpreter multiplicity found"
@ -56,17 +41,8 @@ if test -n "$NGX_PERL_VER"; then
ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'` ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'`
fi fi
if [ "$NGX_SYSTEM" = "Darwin" ]; then CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
# OS X system perl wants to link universal binaries LINK_DEPS="$LINK_DEPS $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so"
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 if test -n "$NGX_PERL_MODULES"; then
have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\"" have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
@ -76,7 +52,7 @@ if test -n "$NGX_PERL_VER"; then
else else
echo echo
echo "$0: error: perl 5.8.6 or higher is required" echo "$0: error: perl 5.6.1 or higher is required"
echo echo
exit 1; exit 1;

View file

@ -1,46 +1,34 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
$NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\ $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so: \
$NGX_OBJS/$ngx_perl_module src/http/modules/perl/nginx.pm \
src/http/modules/perl/nginx.xs \
$NGX_OBJS/$ngx_perl_module: \\ src/http/modules/perl/ngx_http_perl_module.h \
\$(CORE_DEPS) \$(HTTP_DEPS) \\
src/http/modules/perl/ngx_http_perl_module.h \\
$NGX_OBJS/src/http/modules/perl/Makefile $NGX_OBJS/src/http/modules/perl/Makefile
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) cp -p src/http/modules/perl/nginx.* $NGX_OBJS/src/http/modules/perl/
cd $NGX_OBJS/src/http/modules/perl && make
rm -rf $NGX_OBJS/install_perl rm -rf $NGX_OBJS/install_perl
$NGX_OBJS/src/http/modules/perl/Makefile: \\ $NGX_OBJS/src/http/modules/perl/Makefile: \
$NGX_AUTO_CONFIG_H \\ src/http/modules/perl/Makefile.PL \
src/core/nginx.h \\ src/http/modules/perl/nginx.pm
src/http/modules/perl/Makefile.PL \\ cp -p src/http/modules/perl/nginx.* $NGX_OBJS/src/http/modules/perl/
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/typemap $NGX_OBJS/src/http/modules/perl/
cp -p src/http/modules/perl/Makefile.PL $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 \\ cd $NGX_OBJS/src/http/modules/perl \
&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\ && NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \
NGX_PM_LDFLAGS="$NGX_LD_OPT \$(NGX_PM_LDFLAGS)" \\ NGX_PCRE=$PCRE \
NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\ NGX_OBJS=$NGX_OBJS \
NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\ $NGX_PERL Makefile.PL \
$NGX_PERL Makefile.PL \\ LIB=$NGX_PERL_MODULES \
LIB=$NGX_PERL_MODULES \\
INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
END END

77
auto/lib/sha1/conf Normal file
View file

@ -0,0 +1,77 @@
# Copyright (C) Igor Sysoev
if [ $SHA1 != NONE ]; then
CORE_INCS="$CORE_INCS $SHA1"
case "$NGX_CC_NAME" in
msvc* | owc* | bcc)
LINK_DEPS="$LINK_DEPS $SHA1/sha1.lib"
CORE_LIBS="$CORE_LIBS $SHA1/sha1.lib"
;;
icc*)
LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
# to allow -ipo optimization we link with the *.o but not library
CORE_LIBS="$CORE_LIBS $SHA1/sha1_dgst.o"
if [ $SHA1_ASM = YES ]; then
CORE_LIBS="$CORE_LIBS $SHA1/asm/sx86-elf.o"
fi
;;
*)
LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
CORE_LIBS="$CORE_LIBS $SHA1/libsha.a"
#CORE_LIBS="$CORE_LIBS -L $SHA1 -lsha"
;;
esac
else
if [ "$NGX_PLATFORM" != win32 ]; then
SHA1=NO
# FreeBSD
ngx_feature="sha1 in system md library"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <sha.h>"
ngx_feature_path=
ngx_feature_libs="-lmd"
ngx_feature_test="SHA_CTX sha1; SHA1_Init(&sha1)"
. auto/feature
ngx_sha1_lib="system md"
if [ $ngx_found = no ]; then
# OpenSSL crypto library
ngx_feature="OpenSSL sha1 crypto library"
ngx_feature_incs="#include <openssl/sha.h>"
ngx_feature_libs="-lcrypto"
. auto/feature
ngx_sha1_lib="system crypto"
if [ $ngx_found = yes ]; then
have=NGX_HAVE_OPENSSL_SHA1_H . auto/have
fi
fi
if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
SHA1=YES
SHA1_LIB=$ngx_sha1_lib
fi
fi
fi

95
auto/lib/sha1/make Normal file
View file

@ -0,0 +1,95 @@
# Copyright (C) Igor Sysoev
case "$NGX_CC_NAME" in
msvc*)
ngx_makefile=makefile.msvc
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC SHA1_ASM=$SHA1_ASM"
ngx_sha1="SHA1=\"$SHA1\""
;;
owc*)
ngx_makefile=makefile.owc
ngx_opt="CPU_OPT=\"$CPU_OPT\""
ngx_sha1=`echo SHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
bcc)
ngx_makefile=makefile.bcc
ngx_opt="-DCPU_OPT=\"$CPU_OPT\" -DSHA1_ASM=$SHA1_ASM"
ngx_sha1=`echo \-DSHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;;
esac
done=NO
case "$NGX_PLATFORM" in
win32)
cat << END >> $NGX_MAKEFILE
`echo "$SHA1/sha1.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
\$(MAKE) -f auto/lib/sha1/$ngx_makefile $ngx_opt $ngx_sha1
END
done=YES
;;
SunOS:*:i86pc)
if [ $SHA1_ASM = YES ]; then
cat << END >> $NGX_MAKEFILE
$SHA1/libsha.a: $NGX_MAKEFILE
cd $SHA1 \\
&& \$(MAKE) CFLAGS="$SHA1_OPT -DSOL -DSHA1_ASM -DL_ENDIAN" \\
CC="\$(CC)" CPP="\$(CPP)" \\
SHA_ASM_OBJ=asm/sx86-sol.o clean libsha.a
END
done=YES
fi
;;
# FreeBSD: i386
# Linux: i686
*:i386 | *:i686)
if [ $SHA1_ASM = YES ]; then
cat << END >> $NGX_MAKEFILE
$SHA1/libsha.a: $NGX_MAKEFILE
cd $SHA1 \\
&& \$(MAKE) CFLAGS="$SHA1_OPT -DELF -DSHA1_ASM -DL_ENDIAN" \\
CC="\$(CC)" CPP="\$(CPP)" \\
SHA_ASM_OBJ=asm/sx86-elf.o clean libsha.a
END
done=YES
fi
;;
esac
if [ $done = NO ]; then
cat << END >> $NGX_MAKEFILE
$SHA1/libsha.a: $NGX_MAKEFILE
cd $SHA1 \\
&& \$(MAKE) CFLAGS="$SHA1_OPT" \\
CC="\$(CC)" SHA_ASM_OBJ= clean libsha.a
END
fi

View file

@ -0,0 +1,21 @@
# Copyright (C) Igor Sysoev
CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
!if "$(SHA1_ASM)" == "YES"
sha1.lib:
cd $(SHA1)
bcc32 -c $(CFLAGS) -DSHA1_ASM sha1dgst.c
tlib sha1.lib +sha1dgst.obj +"asm\s-win32.obj"
!else
sha1.lib:
cd $(SHA1)
bcc32 -c $(CFLAGS) sha1dgst.c
tlib sha1.lib +sha1dgst.obj
!endif

View file

@ -0,0 +1,21 @@
# Copyright (C) Igor Sysoev
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
!IF "$(SHA1_ASM)" == "YES"
sha1.lib:
cd $(SHA1)
cl -c $(CFLAGS) -D SHA1_ASM sha1dgst.c
link -lib -out:sha1.lib sha1dgst.obj asm/s-win32.obj
!ELSE
sha1.lib:
cd $(SHA1)
cl -c $(CFLAGS) sha1dgst.c
link -lib -out:sha1.lib sha1dgst.obj
!ENDIF

View file

@ -0,0 +1,10 @@
# Copyright (C) Igor Sysoev
CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
sha1.lib:
cd $(SHA1)
wcl386 -c $(CFLAGS) -dL_ENDIAN sha1dgst.c
wlib -n sha1.lib sha1dgst.obj

39
auto/lib/test Normal file
View file

@ -0,0 +1,39 @@
# Copyright (C) Igor Sysoev
echo $ngx_n "checking for $ngx_lib ...$ngx_c"
cat << END >> $NGX_AUTOCONF_ERR
----------------------------------------
checking for $ngx_lib
END
ngx_found=no
cat << END > $NGX_AUTOTEST.c
$ngx_lib_incs
int main() {
$ngx_lib_test;
return 0;
}
eval "$CC $cc_test_flags $ngx_lib_cflags \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $ngx_libs \
>> $NGX_ERR 2>&1"
if [ -x $NGX_AUTOTEST ]; then
echo " found"
ngx_found=yes
else
echo " not found"
fi
rm $NGX_AUTOTEST*

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
if [ $ZLIB != NONE ]; then if [ $ZLIB != NONE ]; then
@ -8,14 +7,12 @@ if [ $ZLIB != NONE ]; then
case "$NGX_CC_NAME" in case "$NGX_CC_NAME" in
msvc | owc | bcc) msvc* | owc* | bcc)
have=NGX_ZLIB . auto/have
LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib" LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib" CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
;; ;;
icc) icc*)
have=NGX_ZLIB . auto/have
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
# to allow -ipo optimization we link with the *.o but not library # to allow -ipo optimization we link with the *.o but not library
@ -32,7 +29,6 @@ if [ $ZLIB != NONE ]; then
;; ;;
*) *)
have=NGX_ZLIB . auto/have
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
CORE_LIBS="$CORE_LIBS $ZLIB/libz.a" CORE_LIBS="$CORE_LIBS $ZLIB/libz.a"
#CORE_LIBS="$CORE_LIBS -L $ZLIB -lz" #CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
@ -48,7 +44,7 @@ else
# FreeBSD, Solaris, Linux # FreeBSD, Solaris, Linux
ngx_feature="zlib library" ngx_feature="zlib library"
ngx_feature_name="NGX_ZLIB" ngx_feature_name=
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <zlib.h>" ngx_feature_incs="#include <zlib.h>"
ngx_feature_path= ngx_feature_path=
@ -61,10 +57,8 @@ else
CORE_LIBS="$CORE_LIBS $ngx_feature_libs" CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
ZLIB=YES ZLIB=YES
ngx_found=no ngx_found=no
fi else
fi
if [ $ZLIB != YES ]; then
cat << END cat << END
$0: error: the HTTP gzip module requires the zlib library. $0: error: the HTTP gzip module requires the zlib library.
@ -73,7 +67,8 @@ 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. statically from the source with nginx by using --with-zlib=<path> option.
END END
exit 1 exit 1
fi
fi fi
fi fi

View file

@ -1,18 +1,17 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
case "$NGX_CC_NAME" in case "$NGX_CC_NAME" in
msvc) msvc*)
ngx_makefile=makefile.msvc ngx_makefile=makefile.msvc
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC" ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
ngx_zlib="ZLIB=\"$ZLIB\"" ngx_zlib="ZLIB=\"$ZLIB\""
;; ;;
owc) owc*)
ngx_makefile=makefile.owc ngx_makefile=makefile.owc
ngx_opt="CPU_OPT=\"$CPU_OPT\"" ngx_opt="CPU_OPT=\"$CPU_OPT\""
ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"` ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
@ -24,10 +23,6 @@ case "$NGX_CC_NAME" in
ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"` ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
;; ;;
*)
ngx_makefile=
;;
esac esac
@ -37,30 +32,13 @@ done=NO
case "$NGX_PLATFORM" in case "$NGX_PLATFORM" in
win32) win32)
cat << END >> $NGX_MAKEFILE
if [ -n "$ngx_makefile" ]; then
cat << END >> $NGX_MAKEFILE
`echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"` `echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib \$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib
END 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 done=YES
;; ;;

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT) CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)
@ -8,10 +7,8 @@ CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)
zlib.lib: zlib.lib:
cd $(ZLIB) cd $(ZLIB)
bcc32 -c $(CFLAGS) adler32.c crc32.c deflate.c \ bcc32 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c \
trees.c zutil.c compress.c \ compress.c
inflate.c inffast.c inftrees.c
tlib zlib.lib +adler32.obj +crc32.obj +deflate.obj \ tlib zlib.lib +adler32.obj +crc32.obj +deflate.obj \
+trees.obj +zutil.obj +compress.obj \ +trees.obj +zutil.obj +compress.obj
+inflate.obj +inffast.obj +inftrees.obj

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
@ -8,10 +7,7 @@ CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
zlib.lib: zlib.lib:
cd $(ZLIB) cd $(ZLIB)
cl -c $(CFLAGS) adler32.c crc32.c deflate.c \ cl -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c compress.c
trees.c zutil.c compress.c \
inflate.c inffast.c inftrees.c
link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \ link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
trees.obj zutil.obj compress.obj \ trees.obj zutil.obj compress.obj
inflate.obj inffast.obj inftrees.obj

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT) CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
@ -9,6 +8,6 @@ zlib.lib:
cd $(ZLIB) cd $(ZLIB)
wcl386 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c & wcl386 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c &
compress.c inflate.c inffast.c inftrees.c compress.c
wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj & wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj &
zutil.obj compress.obj inflate.obj inffast.obj inftrees.obj zutil.obj compress.obj

View file

@ -0,0 +1,10 @@
--- zlib.h Thu Jul 9 20:06:56 1998
+++ zlib-1.1.3/zlib.h Tue Mar 22 13:41:04 2005
@@ -709,7 +709,6 @@
(0 in case of error).
*/
-ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
/*
Converts, formats, and writes the args to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of

302
auto/make
View file

@ -1,17 +1,14 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo "creating $NGX_MAKEFILE" echo "creating $NGX_MAKEFILE"
mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \ mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \
$NGX_OBJS/src/event/quic \
$NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \ $NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \
$NGX_OBJS/src/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/v3 \ $NGX_OBJS/src/http $NGX_OBJS/src/http/modules \
$NGX_OBJS/src/http/modules $NGX_OBJS/src/http/modules/perl \ $NGX_OBJS/src/http/modules/perl \
$NGX_OBJS/src/mail \ $NGX_OBJS/src/mail \
$NGX_OBJS/src/stream \
$NGX_OBJS/src/misc $NGX_OBJS/src/misc
@ -32,13 +29,12 @@ END
if test -n "$NGX_PERL_CFLAGS"; then if test -n "$NGX_PERL_CFLAGS"; then
echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE
echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE
echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE
fi fi
# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers # 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\ ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS\
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
-e "s/\//$ngx_regex_dirsep/g"` -e "s/\//$ngx_regex_dirsep/g"`
@ -52,7 +48,7 @@ END
ngx_all_srcs="$CORE_SRCS" ngx_all_srcs="$CORE_SRCS"
# the core dependencies and include paths # the core dependences and include pathes
ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \ ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
@ -72,7 +68,7 @@ CORE_INCS = $ngx_include_opt$ngx_incs
END END
# the http dependencies and include paths # the http dependences and include pathes
if [ $HTTP = YES ]; then if [ $HTTP = YES ]; then
@ -98,13 +94,11 @@ END
fi fi
# the mail dependencies and include paths # the mail dependences and include pathes
if [ $MAIL != NO ]; then if [ $MAIL = YES ]; then
if [ $MAIL = YES ]; then ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS"
ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS"
fi
ngx_deps=`echo $MAIL_DEPS \ ngx_deps=`echo $MAIL_DEPS \
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
@ -126,38 +120,10 @@ END
fi fi
# the stream dependencies and include paths ngx_all_srcs="$ngx_all_srcs $NGX_MISC_SRCS"
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 if test -n "$NGX_ADDON_SRCS"; then
END
fi
ngx_all_srcs="$ngx_all_srcs $MISC_SRCS"
if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then
cat << END >> $NGX_MAKEFILE cat << END >> $NGX_MAKEFILE
@ -210,7 +176,6 @@ ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
-e "s/\//$ngx_regex_dirsep/g"` -e "s/\//$ngx_regex_dirsep/g"`
ngx_libs=
if test -n "$NGX_LD_OPT$CORE_LIBS"; then if test -n "$NGX_LD_OPT$CORE_LIBS"; then
ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \ ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`
@ -219,22 +184,13 @@ fi
ngx_link=${CORE_LINK:+`echo $CORE_LINK \ ngx_link=${CORE_LINK:+`echo $CORE_LINK \
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} | 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 cat << END >> $NGX_MAKEFILE
build: binary modules manpage $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
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_binext$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link
$ngx_rcc $ngx_rcc
$ngx_long_end ${ngx_long_end}
modules:
END END
@ -283,7 +239,7 @@ if [ $HTTP = YES ]; then
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
else else
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)" ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)" ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS) "
ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)" ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)"
fi fi
@ -314,7 +270,7 @@ $ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
END END
fi fi
done done
fi fi
@ -344,48 +300,18 @@ $ngx_obj: \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
END END
done 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 fi
# the misc sources # the misc sources
if test -n "$MISC_SRCS"; then if test -n "$NGX_MISC_SRCS"; then
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
for ngx_src in $MISC_SRCS for ngx_src in $NGX_MISC_SRCS
do do
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
ngx_obj=`echo $ngx_src \ ngx_obj=`echo $ngx_src \
@ -400,7 +326,7 @@ $ngx_obj: \$(CORE_DEPS) $ngx_cont$ngx_src
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
END END
done done
fi fi
@ -432,16 +358,16 @@ $ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
END END
done done
fi fi
# the addons config.make # the addons config.make
if test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then if test -n "$NGX_ADDONS"; then
for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS for ngx_addon_dir in $NGX_ADDONS
do do
if test -f $ngx_addon_dir/config.make; then if test -f $ngx_addon_dir/config.make; then
. $ngx_addon_dir/config.make . $ngx_addon_dir/config.make
@ -488,187 +414,3 @@ $ngx_pch
END END
fi 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 ngx_module_shrd="\$${ngx_module}_SHRD"
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 $ngx_module_shrd
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

View file

@ -1,178 +0,0 @@
# 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}_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
srcs=
shrd=
for src in $ngx_module_srcs
do
found=no
for old in $DYNAMIC_MODULES_SRCS
do
if [ $src = $old ]; then
found=yes
break
fi
done
if [ $found = no ]; then
srcs="$srcs $src"
else
shrd="$shrd $src"
fi
done
eval ${ngx_module}_SRCS=\"$srcs\"
eval ${ngx_module}_SHRD=\"$shrd\"
DYNAMIC_MODULES_SRCS="$DYNAMIC_MODULES_SRCS $srcs"
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\"
srcs=
for src in $ngx_module_srcs
do
found=no
for old in $NGX_ADDON_SRCS
do
if [ $src = $old ]; then
found=yes
break
fi
done
if [ $found = no ]; then
srcs="$srcs $src"
fi
done
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $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

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H cat << END >> $NGX_AUTO_CONFIG_H

View file

@ -1,13 +1,11 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
help=no help=no
NGX_PREFIX= NGX_PREFIX=
NGX_SBIN_PATH= NGX_SBIN_PATH=
NGX_MODULES_PATH=
NGX_CONF_PREFIX= NGX_CONF_PREFIX=
NGX_CONF_PATH= NGX_CONF_PATH=
NGX_ERROR_LOG_PATH= NGX_ERROR_LOG_PATH=
@ -15,9 +13,8 @@ NGX_PID_PATH=
NGX_LOCK_PATH= NGX_LOCK_PATH=
NGX_USER= NGX_USER=
NGX_GROUP= NGX_GROUP=
NGX_BUILD=
CC=${CC:-cc} CC=${CC:-gcc}
CPP= CPP=
NGX_OBJS=objs NGX_OBJS=objs
@ -31,6 +28,7 @@ NGX_RPATH=NO
NGX_TEST_BUILD_DEVPOLL=NO NGX_TEST_BUILD_DEVPOLL=NO
NGX_TEST_BUILD_EVENTPORT=NO NGX_TEST_BUILD_EVENTPORT=NO
NGX_TEST_BUILD_EPOLL=NO NGX_TEST_BUILD_EPOLL=NO
NGX_TEST_BUILD_RTSIG=NO
NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO
NGX_PLATFORM= NGX_PLATFORM=
@ -38,14 +36,14 @@ NGX_WINE=
EVENT_FOUND=NO EVENT_FOUND=NO
EVENT_RTSIG=NO
EVENT_SELECT=NO EVENT_SELECT=NO
EVENT_POLL=NO EVENT_POLL=NO
EVENT_AIO=NO
USE_THREADS=NO USE_THREADS=NO
NGX_FILE_AIO=NO NGX_IPV6=NO
QUIC_BPF=NO
HTTP=YES HTTP=YES
@ -53,16 +51,13 @@ NGX_HTTP_LOG_PATH=
NGX_HTTP_CLIENT_TEMP_PATH= NGX_HTTP_CLIENT_TEMP_PATH=
NGX_HTTP_PROXY_TEMP_PATH= NGX_HTTP_PROXY_TEMP_PATH=
NGX_HTTP_FASTCGI_TEMP_PATH= NGX_HTTP_FASTCGI_TEMP_PATH=
NGX_HTTP_UWSGI_TEMP_PATH=
NGX_HTTP_SCGI_TEMP_PATH=
HTTP_CACHE=YES HTTP_CACHE=YES
HTTP_CHARSET=YES HTTP_CHARSET=YES
HTTP_GZIP=YES HTTP_GZIP=YES
HTTP_SSL=NO HTTP_SSL=NO
HTTP_V2=NO
HTTP_V3=NO
HTTP_SSI=YES HTTP_SSI=YES
HTTP_POSTPONE=NO
HTTP_REALIP=NO HTTP_REALIP=NO
HTTP_XSLT=NO HTTP_XSLT=NO
HTTP_IMAGE_FILTER=NO HTTP_IMAGE_FILTER=NO
@ -71,42 +66,27 @@ HTTP_ADDITION=NO
HTTP_DAV=NO HTTP_DAV=NO
HTTP_ACCESS=YES HTTP_ACCESS=YES
HTTP_AUTH_BASIC=YES HTTP_AUTH_BASIC=YES
HTTP_AUTH_REQUEST=NO
HTTP_MIRROR=YES
HTTP_USERID=YES HTTP_USERID=YES
HTTP_SLICE=NO
HTTP_AUTOINDEX=YES HTTP_AUTOINDEX=YES
HTTP_RANDOM_INDEX=NO HTTP_RANDOM_INDEX=NO
HTTP_STATUS=NO HTTP_STATUS=NO
HTTP_GEO=YES HTTP_GEO=YES
HTTP_GEOIP=NO HTTP_GEOIP=NO
HTTP_MAP=YES HTTP_MAP=YES
HTTP_SPLIT_CLIENTS=YES
HTTP_REFERER=YES HTTP_REFERER=YES
HTTP_REWRITE=YES HTTP_REWRITE=YES
HTTP_PROXY=YES HTTP_PROXY=YES
HTTP_FASTCGI=YES HTTP_FASTCGI=YES
HTTP_UWSGI=YES
HTTP_SCGI=YES
HTTP_GRPC=YES
HTTP_PERL=NO HTTP_PERL=NO
HTTP_MEMCACHED=YES HTTP_MEMCACHED=YES
HTTP_LIMIT_CONN=YES HTTP_LIMIT_ZONE=YES
HTTP_LIMIT_REQ=YES HTTP_LIMIT_REQ=YES
HTTP_EMPTY_GIF=YES HTTP_EMPTY_GIF=YES
HTTP_BROWSER=YES HTTP_BROWSER=YES
HTTP_SECURE_LINK=NO HTTP_SECURE_LINK=NO
HTTP_DEGRADATION=NO
HTTP_FLV=NO HTTP_FLV=NO
HTTP_MP4=NO
HTTP_GUNZIP=NO
HTTP_GZIP_STATIC=NO HTTP_GZIP_STATIC=NO
HTTP_UPSTREAM_HASH=YES
HTTP_UPSTREAM_IP_HASH=YES HTTP_UPSTREAM_IP_HASH=YES
HTTP_UPSTREAM_LEAST_CONN=YES
HTTP_UPSTREAM_RANDOM=YES
HTTP_UPSTREAM_KEEPALIVE=YES
HTTP_UPSTREAM_ZONE=YES
# STUB # STUB
HTTP_STUB_STATUS=NO HTTP_STUB_STATUS=NO
@ -117,45 +97,25 @@ MAIL_POP3=YES
MAIL_IMAP=YES MAIL_IMAP=YES
MAIL_SMTP=YES MAIL_SMTP=YES
STREAM=NO
STREAM_SSL=NO
STREAM_QUIC=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_SET=YES
STREAM_UPSTREAM_HASH=YES
STREAM_UPSTREAM_LEAST_CONN=YES
STREAM_UPSTREAM_RANDOM=YES
STREAM_UPSTREAM_ZONE=YES
STREAM_SSL_PREREAD=NO
DYNAMIC_MODULES=
DYNAMIC_MODULES_SRCS=
NGX_ADDONS= NGX_ADDONS=
NGX_ADDON_SRCS=
NGX_ADDON_DEPS=
DYNAMIC_ADDONS=
NGX_COMPAT=NO
USE_PCRE=NO USE_PCRE=NO
PCRE=NONE PCRE=NONE
PCRE_OPT= PCRE_OPT=
PCRE_CONF_OPT=
PCRE_JIT=NO
PCRE2=YES
USE_OPENSSL=NO USE_OPENSSL=NO
USE_OPENSSL_QUIC=NO
OPENSSL=NONE OPENSSL=NONE
USE_MD5=NO
MD5=NONE
MD5_OPT=
MD5_ASM=NO
USE_SHA1=NO
SHA1=NONE
SHA1_OPT=
SHA1_ASM=NO
USE_ZLIB=NO USE_ZLIB=NO
ZLIB=NONE ZLIB=NONE
ZLIB_OPT= ZLIB_OPT=
@ -166,19 +126,12 @@ NGX_PERL=perl
USE_LIBXSLT=NO USE_LIBXSLT=NO
USE_LIBGD=NO USE_LIBGD=NO
USE_GEOIP=NO
NGX_GOOGLE_PERFTOOLS=NO NGX_GOOGLE_PERFTOOLS=NO
NGX_CPP_TEST=NO NGX_CPP_TEST=NO
SO_COOKIE_FOUND=NO
NGX_LIBATOMIC=NO
NGX_CPU_CACHE_LINE= NGX_CPU_CACHE_LINE=
NGX_POST_CONF_MSG=
opt= opt=
for option for option
@ -196,7 +149,6 @@ do
--prefix=) NGX_PREFIX="!" ;; --prefix=) NGX_PREFIX="!" ;;
--prefix=*) NGX_PREFIX="$value" ;; --prefix=*) NGX_PREFIX="$value" ;;
--sbin-path=*) NGX_SBIN_PATH="$value" ;; --sbin-path=*) NGX_SBIN_PATH="$value" ;;
--modules-path=*) NGX_MODULES_PATH="$value" ;;
--conf-path=*) NGX_CONF_PATH="$value" ;; --conf-path=*) NGX_CONF_PATH="$value" ;;
--error-log-path=*) NGX_ERROR_LOG_PATH="$value";; --error-log-path=*) NGX_ERROR_LOG_PATH="$value";;
--pid-path=*) NGX_PID_PATH="$value" ;; --pid-path=*) NGX_PID_PATH="$value" ;;
@ -206,24 +158,19 @@ do
--crossbuild=*) NGX_PLATFORM="$value" ;; --crossbuild=*) NGX_PLATFORM="$value" ;;
--build=*) NGX_BUILD="$value" ;;
--builddir=*) NGX_OBJS="$value" ;; --builddir=*) NGX_OBJS="$value" ;;
--with-rtsig_module) EVENT_RTSIG=YES ;;
--with-select_module) EVENT_SELECT=YES ;; --with-select_module) EVENT_SELECT=YES ;;
--without-select_module) EVENT_SELECT=NONE ;; --without-select_module) EVENT_SELECT=NONE ;;
--with-poll_module) EVENT_POLL=YES ;; --with-poll_module) EVENT_POLL=YES ;;
--without-poll_module) EVENT_POLL=NONE ;; --without-poll_module) EVENT_POLL=NONE ;;
--with-aio_module) EVENT_AIO=YES ;;
--with-threads) USE_THREADS=YES ;; #--with-threads=*) USE_THREADS="$value" ;;
#--with-threads) USE_THREADS="pthreads" ;;
--with-file-aio) NGX_FILE_AIO=YES ;; --with-ipv6) NGX_IPV6=YES ;;
--without-quic_bpf_module) QUIC_BPF=NONE ;;
--with-ipv6)
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
$0: warning: the \"--with-ipv6\" option is deprecated"
;;
--without-http) HTTP=NO ;; --without-http) HTTP=NO ;;
--without-http-cache) HTTP_CACHE=NO ;; --without-http-cache) HTTP_CACHE=NO ;;
@ -232,33 +179,19 @@ $0: warning: the \"--with-ipv6\" option is deprecated"
--http-client-body-temp-path=*) NGX_HTTP_CLIENT_TEMP_PATH="$value" ;; --http-client-body-temp-path=*) NGX_HTTP_CLIENT_TEMP_PATH="$value" ;;
--http-proxy-temp-path=*) NGX_HTTP_PROXY_TEMP_PATH="$value" ;; --http-proxy-temp-path=*) NGX_HTTP_PROXY_TEMP_PATH="$value" ;;
--http-fastcgi-temp-path=*) NGX_HTTP_FASTCGI_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_ssl_module) HTTP_SSL=YES ;;
--with-http_v2_module) HTTP_V2=YES ;;
--with-http_v3_module) HTTP_V3=YES ;;
--with-http_realip_module) HTTP_REALIP=YES ;; --with-http_realip_module) HTTP_REALIP=YES ;;
--with-http_addition_module) HTTP_ADDITION=YES ;; --with-http_addition_module) HTTP_ADDITION=YES ;;
--with-http_xslt_module) HTTP_XSLT=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) 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) HTTP_GEOIP=YES ;;
--with-http_geoip_module=dynamic)
HTTP_GEOIP=DYNAMIC ;;
--with-http_sub_module) HTTP_SUB=YES ;; --with-http_sub_module) HTTP_SUB=YES ;;
--with-http_dav_module) HTTP_DAV=YES ;; --with-http_dav_module) HTTP_DAV=YES ;;
--with-http_flv_module) HTTP_FLV=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_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_random_index_module) HTTP_RANDOM_INDEX=YES ;;
--with-http_secure_link_module) HTTP_SECURE_LINK=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_charset_module) HTTP_CHARSET=NO ;;
--without-http_gzip_module) HTTP_GZIP=NO ;; --without-http_gzip_module) HTTP_GZIP=NO ;;
@ -266,35 +199,22 @@ $0: warning: the \"--with-ipv6\" option is deprecated"
--without-http_userid_module) HTTP_USERID=NO ;; --without-http_userid_module) HTTP_USERID=NO ;;
--without-http_access_module) HTTP_ACCESS=NO ;; --without-http_access_module) HTTP_ACCESS=NO ;;
--without-http_auth_basic_module) HTTP_AUTH_BASIC=NO ;; --without-http_auth_basic_module) HTTP_AUTH_BASIC=NO ;;
--without-http_mirror_module) HTTP_MIRROR=NO ;;
--without-http_autoindex_module) HTTP_AUTOINDEX=NO ;; --without-http_autoindex_module) HTTP_AUTOINDEX=NO ;;
--without-http_status_module) HTTP_STATUS=NO ;; --without-http_status_module) HTTP_STATUS=NO ;;
--without-http_geo_module) HTTP_GEO=NO ;; --without-http_geo_module) HTTP_GEO=NO ;;
--without-http_map_module) HTTP_MAP=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_referer_module) HTTP_REFERER=NO ;;
--without-http_rewrite_module) HTTP_REWRITE=NO ;; --without-http_rewrite_module) HTTP_REWRITE=NO ;;
--without-http_proxy_module) HTTP_PROXY=NO ;; --without-http_proxy_module) HTTP_PROXY=NO ;;
--without-http_fastcgi_module) HTTP_FASTCGI=NO ;; --without-http_fastcgi_module) HTTP_FASTCGI=NO ;;
--without-http_uwsgi_module) HTTP_UWSGI=NO ;;
--without-http_scgi_module) HTTP_SCGI=NO ;;
--without-http_grpc_module) HTTP_GRPC=NO ;;
--without-http_memcached_module) HTTP_MEMCACHED=NO ;; --without-http_memcached_module) HTTP_MEMCACHED=NO ;;
--without-http_limit_conn_module) HTTP_LIMIT_CONN=NO ;; --without-http_limit_zone_module) HTTP_LIMIT_ZONE=NO ;;
--without-http_limit_req_module) HTTP_LIMIT_REQ=NO ;; --without-http_limit_req_module) HTTP_LIMIT_REQ=NO ;;
--without-http_empty_gif_module) HTTP_EMPTY_GIF=NO ;; --without-http_empty_gif_module) HTTP_EMPTY_GIF=NO ;;
--without-http_browser_module) HTTP_BROWSER=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_ip_hash_module) HTTP_UPSTREAM_IP_HASH=NO ;;
--without-http_upstream_least_conn_module)
HTTP_UPSTREAM_LEAST_CONN=NO ;;
--without-http_upstream_random_module)
HTTP_UPSTREAM_RANDOM=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) HTTP_PERL=YES ;;
--with-http_perl_module=dynamic) HTTP_PERL=DYNAMIC ;;
--with-perl_modules_path=*) NGX_PERL_MODULES="$value" ;; --with-perl_modules_path=*) NGX_PERL_MODULES="$value" ;;
--with-perl=*) NGX_PERL="$value" ;; --with-perl=*) NGX_PERL="$value" ;;
@ -302,60 +222,18 @@ $0: warning: the \"--with-ipv6\" option is deprecated"
--with-http_stub_status_module) HTTP_STUB_STATUS=YES ;; --with-http_stub_status_module) HTTP_STUB_STATUS=YES ;;
--with-mail) MAIL=YES ;; --with-mail) MAIL=YES ;;
--with-mail=dynamic) MAIL=DYNAMIC ;;
--with-mail_ssl_module) MAIL_SSL=YES ;; --with-mail_ssl_module) MAIL_SSL=YES ;;
# STUB # STUB
--with-imap) --with-imap) MAIL=YES ;;
MAIL=YES --with-imap_ssl_module) MAIL_SSL=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_pop3_module) MAIL_POP3=NO ;;
--without-mail_imap_module) MAIL_IMAP=NO ;; --without-mail_imap_module) MAIL_IMAP=NO ;;
--without-mail_smtp_module) MAIL_SMTP=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_quic_module) STREAM_QUIC=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_set_module) STREAM_SET=NO ;;
--without-stream_upstream_hash_module)
STREAM_UPSTREAM_HASH=NO ;;
--without-stream_upstream_least_conn_module)
STREAM_UPSTREAM_LEAST_CONN=NO ;;
--without-stream_upstream_random_module)
STREAM_UPSTREAM_RANDOM=NO ;;
--without-stream_upstream_zone_module)
STREAM_UPSTREAM_ZONE=NO ;;
--with-google_perftools_module) NGX_GOOGLE_PERFTOOLS=YES ;; --with-google_perftools_module) NGX_GOOGLE_PERFTOOLS=YES ;;
--with-cpp_test_module) NGX_CPP_TEST=YES ;; --with-cpp_test_module) NGX_CPP_TEST=YES ;;
--add-module=*) NGX_ADDONS="$NGX_ADDONS $value" ;; --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-cc=*) CC="$value" ;;
--with-cpp=*) CPP="$value" ;; --with-cpp=*) CPP="$value" ;;
@ -368,48 +246,26 @@ use the \"--with-mail_ssl_module\" option instead"
--with-pcre) USE_PCRE=YES ;; --with-pcre) USE_PCRE=YES ;;
--with-pcre=*) PCRE="$value" ;; --with-pcre=*) PCRE="$value" ;;
--with-pcre-opt=*) PCRE_OPT="$value" ;; --with-pcre-opt=*) PCRE_OPT="$value" ;;
--with-pcre-jit) PCRE_JIT=YES ;;
--without-pcre2) PCRE2=DISABLED ;;
--with-openssl=*) OPENSSL="$value" ;; --with-openssl=*) OPENSSL="$value" ;;
--with-openssl-opt=*) OPENSSL_OPT="$value" ;; --with-openssl-opt=*) OPENSSL_OPT="$value" ;;
--with-md5=*) --with-md5=*) MD5="$value" ;;
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG --with-md5-opt=*) MD5_OPT="$value" ;;
$0: warning: the \"--with-md5\" option is deprecated" --with-md5-asm) MD5_ASM=YES ;;
;;
--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=*) --with-sha1=*) SHA1="$value" ;;
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG --with-sha1-opt=*) SHA1_OPT="$value" ;;
$0: warning: the \"--with-sha1\" option is deprecated" --with-sha1-asm) SHA1_ASM=YES ;;
;;
--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=*) ZLIB="$value" ;;
--with-zlib-opt=*) ZLIB_OPT="$value" ;; --with-zlib-opt=*) ZLIB_OPT="$value" ;;
--with-zlib-asm=*) ZLIB_ASM="$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-devpoll) NGX_TEST_BUILD_DEVPOLL=YES ;;
--test-build-eventport) NGX_TEST_BUILD_EVENTPORT=YES ;; --test-build-eventport) NGX_TEST_BUILD_EVENTPORT=YES ;;
--test-build-epoll) NGX_TEST_BUILD_EPOLL=YES ;; --test-build-epoll) NGX_TEST_BUILD_EPOLL=YES ;;
--test-build-rtsig) NGX_TEST_BUILD_RTSIG=YES ;;
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;; --test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
*) *)
@ -427,58 +283,42 @@ if [ $help = yes ]; then
cat << END cat << END
--help print this message --help this message
--prefix=PATH set installation prefix --prefix=PATH set the installation prefix
--sbin-path=PATH set nginx binary pathname --sbin-path=PATH set path to the nginx binary file
--modules-path=PATH set modules path --conf-path=PATH set path to the nginx.conf file
--conf-path=PATH set nginx.conf pathname --error-log-path=PATH set path to the error log
--error-log-path=PATH set error log pathname --pid-path=PATH set path to nginx.pid file
--pid-path=PATH set nginx.pid pathname --lock-path=PATH set path to nginx.lock file
--lock-path=PATH set nginx.lock pathname
--user=USER set non-privileged user for --user=USER set non-privilege user
worker processes for the worker processes
--group=GROUP set non-privileged group for --group=GROUP set non-privilege group
worker processes for the worker processes
--build=NAME set build name --builddir=DIR set the build directory
--builddir=DIR set build directory
--with-rtsig_module enable rtsig module
--with-select_module enable select module --with-select_module enable select module
--without-select_module disable select module --without-select_module disable select module
--with-poll_module enable poll module --with-poll_module enable poll module
--without-poll_module disable poll module --without-poll_module disable poll module
--with-threads enable thread pool support --with-ipv6 enable ipv6 support
--with-file-aio enable file AIO support
--without-quic_bpf_module disable ngx_quic_bpf_module
--with-http_ssl_module enable ngx_http_ssl_module --with-http_ssl_module enable ngx_http_ssl_module
--with-http_v2_module enable ngx_http_v2_module
--with-http_v3_module enable ngx_http_v3_module
--with-http_realip_module enable ngx_http_realip_module --with-http_realip_module enable ngx_http_realip_module
--with-http_addition_module enable ngx_http_addition_module --with-http_addition_module enable ngx_http_addition_module
--with-http_xslt_module enable ngx_http_xslt_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 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 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_sub_module enable ngx_http_sub_module
--with-http_dav_module enable ngx_http_dav_module --with-http_dav_module enable ngx_http_dav_module
--with-http_flv_module enable ngx_http_flv_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_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_random_index_module enable ngx_http_random_index_module
--with-http_secure_link_module enable ngx_http_secure_link_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 --with-http_stub_status_module enable ngx_http_stub_status_module
--without-http_charset_module disable ngx_http_charset_module --without-http_charset_module disable ngx_http_charset_module
@ -487,124 +327,77 @@ cat << END
--without-http_userid_module disable ngx_http_userid_module --without-http_userid_module disable ngx_http_userid_module
--without-http_access_module disable ngx_http_access_module --without-http_access_module disable ngx_http_access_module
--without-http_auth_basic_module disable ngx_http_auth_basic_module --without-http_auth_basic_module disable ngx_http_auth_basic_module
--without-http_mirror_module disable ngx_http_mirror_module
--without-http_autoindex_module disable ngx_http_autoindex_module --without-http_autoindex_module disable ngx_http_autoindex_module
--without-http_geo_module disable ngx_http_geo_module --without-http_geo_module disable ngx_http_geo_module
--without-http_map_module disable ngx_http_map_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_referer_module disable ngx_http_referer_module
--without-http_rewrite_module disable ngx_http_rewrite_module --without-http_rewrite_module disable ngx_http_rewrite_module
--without-http_proxy_module disable ngx_http_proxy_module --without-http_proxy_module disable ngx_http_proxy_module
--without-http_fastcgi_module disable ngx_http_fastcgi_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_grpc_module disable ngx_http_grpc_module
--without-http_memcached_module disable ngx_http_memcached_module --without-http_memcached_module disable ngx_http_memcached_module
--without-http_limit_conn_module disable ngx_http_limit_conn_module --without-http_limit_zone_module disable ngx_http_limit_zone_module
--without-http_limit_req_module disable ngx_http_limit_req_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_empty_gif_module disable ngx_http_empty_gif_module
--without-http_browser_module disable ngx_http_browser_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 --without-http_upstream_ip_hash_module
disable ngx_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_random_module
disable ngx_http_upstream_random_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 enable ngx_http_perl_module
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module --with-perl_modules_path=PATH set path to the perl modules
--with-perl_modules_path=PATH set Perl modules path --with-perl=PATH set path to the perl binary
--with-perl=PATH set perl binary pathname
--http-log-path=PATH set http access log pathname --http-log-path=PATH set path to the http access log
--http-client-body-temp-path=PATH set path to store --http-client-body-temp-path=PATH set path to the http client request body
http client request body temporary files temporary files
--http-proxy-temp-path=PATH set path to store --http-proxy-temp-path=PATH set path to the http proxy temporary files
http proxy temporary files --http-fastcgi-temp-path=PATH set path to the http fastcgi temporary
--http-fastcgi-temp-path=PATH set path to store files
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 disable HTTP server
--without-http-cache disable HTTP cache --without-http-cache disable HTTP cache
--with-mail enable POP3/IMAP4/SMTP proxy module --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 --with-mail_ssl_module enable ngx_mail_ssl_module
--without-mail_pop3_module disable ngx_mail_pop3_module --without-mail_pop3_module disable ngx_mail_pop3_module
--without-mail_imap_module disable ngx_mail_imap_module --without-mail_imap_module disable ngx_mail_imap_module
--without-mail_smtp_module disable ngx_mail_smtp_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_quic_module enable ngx_stream_quic_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_set_module disable ngx_stream_set_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_random_module
disable ngx_stream_upstream_random_module
--without-stream_upstream_zone_module
disable ngx_stream_upstream_zone_module
--with-google_perftools_module enable ngx_google_perftools_module --with-google_perftools_module enable ngx_google_perftools_module
--with-cpp_test_module enable ngx_cpp_test_module --with-cpp_test_module enable ngx_cpp_test_module
--add-module=PATH enable external module --add-module=PATH enable an external module
--add-dynamic-module=PATH enable dynamic external module
--with-compat dynamic modules compatibility --with-cc=PATH set path to C compiler
--with-cpp=PATH set path to C preprocessor
--with-cc=PATH set C compiler pathname --with-cc-opt=OPTIONS set additional options for C compiler
--with-cpp=PATH set C preprocessor pathname --with-ld-opt=OPTIONS set additional options for linker
--with-cc-opt=OPTIONS set additional C compiler options --with-cpu-opt=CPU build for specified CPU, the valid values:
--with-ld-opt=OPTIONS set additional linker options
--with-cpu-opt=CPU build for the specified CPU, valid values:
pentium, pentiumpro, pentium3, pentium4, pentium, pentiumpro, pentium3, pentium4,
athlon, opteron, sparc32, sparc64, ppc64 athlon, opteron, sparc32, sparc64, ppc64
--without-pcre disable PCRE library usage --without-pcre disable PCRE library usage
--with-pcre force PCRE library usage --with-pcre force PCRE library usage
--with-pcre=DIR set path to PCRE library sources --with-pcre=DIR set path to PCRE library sources
--with-pcre-opt=OPTIONS set additional build options for PCRE --with-pcre-opt=OPTIONS set additional options for PCRE building
--with-pcre-jit build PCRE with JIT compilation support
--without-pcre2 do not use PCRE2 library --with-md5=DIR set path to md5 library sources
--with-md5-opt=OPTIONS set additional options for md5 building
--with-md5-asm use md5 assembler sources
--with-sha1=DIR set path to sha1 library sources
--with-sha1-opt=OPTIONS set additional options for sha1 building
--with-sha1-asm use sha1 assembler sources
--with-zlib=DIR set path to zlib library sources --with-zlib=DIR set path to zlib library sources
--with-zlib-opt=OPTIONS set additional build options for zlib --with-zlib-opt=OPTIONS set additional options for zlib building
--with-zlib-asm=CPU use zlib assembler sources optimized --with-zlib-asm=CPU use zlib assembler sources optimized
for the specified CPU, valid values: for specified CPU, the valid values:
pentium, pentiumpro 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=DIR set path to OpenSSL library sources
--with-openssl-opt=OPTIONS set additional build options for OpenSSL --with-openssl-opt=OPTIONS set additional options for OpenSSL building
--with-debug enable debug logging --with-debug enable the debugging logging
END END
@ -612,13 +405,24 @@ END
fi fi
if [ $HTTP = NO ]; then
HTTP_CHARSET=NO
HTTP_GZIP=NO
HTTP_SSI=NO
HTTP_USERID=NO
HTTP_ACCESS=NO
HTTP_STATUS=NO
HTTP_REWRITE=NO
HTTP_PROXY=NO
HTTP_FASTCGI=NO
fi
if [ ".$NGX_PLATFORM" = ".win32" ]; then if [ ".$NGX_PLATFORM" = ".win32" ]; then
NGX_WINE=$WINE NGX_WINE=$WINE
fi 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_PATH=${NGX_CONF_PATH:-conf/nginx.conf}
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH` NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid} NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid}
@ -634,8 +438,6 @@ 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_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_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp}
NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_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 case ".$NGX_PERL_MODULES" in
./*) ./*)

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo "checking for $NGX_SYSTEM specific features" echo "checking for $NGX_SYSTEM specific features"
@ -41,14 +40,6 @@ case "$NGX_PLATFORM" in
' '
;; ;;
NetBSD:*)
CORE_INCS="$UNIX_INCS"
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
CORE_SRCS="$UNIX_SRCS"
NGX_RPATH=YES
;;
HP-UX:*) HP-UX:*)
# HP/UX # HP/UX
have=NGX_HPUX . auto/have_headers have=NGX_HPUX . auto/have_headers
@ -56,7 +47,6 @@ case "$NGX_PLATFORM" in
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
CORE_SRCS="$UNIX_SRCS" 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_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_HPUX_ALT_XOPEN_SOCKET_API"
;; ;;
OSF1:*) OSF1:*)
@ -68,15 +58,6 @@ case "$NGX_PLATFORM" in
CORE_SRCS="$UNIX_SRCS" 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_INCS="$UNIX_INCS"
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
@ -110,13 +91,7 @@ case "$NGX_MACHINE" in
NGX_MACH_CACHE_LINE=64 NGX_MACH_CACHE_LINE=64
;; ;;
aarch64 | arm64)
have=NGX_ALIGNMENT value=16 . auto/define
NGX_MACH_CACHE_LINE=64
;;
*) *)
have=NGX_ALIGNMENT value=16 . auto/define
NGX_MACH_CACHE_LINE=32 NGX_MACH_CACHE_LINE=32
;; ;;

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_DARWIN . auto/have_headers have=NGX_DARWIN . auto/have_headers
@ -14,12 +13,6 @@ CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
ngx_spacer=' ngx_spacer='
' '
MAIN_LINK=
MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup"
CC_AUX_FLAGS="$CC_AUX_FLAGS -D__APPLE_USE_RFC_3542"
# kqueue # kqueue
echo " + kqueue found" echo " + kqueue found"
@ -89,6 +82,7 @@ ngx_feature_test="int kq;
# sendfile() # sendfile()
CC_AUX_FLAGS="$CC_AUX_FLAGS"
ngx_feature="sendfile()" ngx_feature="sendfile()"
ngx_feature_name="NGX_HAVE_SENDFILE" ngx_feature_name="NGX_HAVE_SENDFILE"
ngx_feature_run=yes ngx_feature_run=yes
@ -105,6 +99,7 @@ ngx_feature_test="int s = 0, fd = 1;
. auto/feature . auto/feature
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then
have=NGX_HAVE_SENDFILE . auto/have
CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS" CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS"
fi fi
@ -115,6 +110,6 @@ ngx_feature_run=no
ngx_feature_incs="#include <libkern/OSAtomic.h>" ngx_feature_incs="#include <libkern/OSAtomic.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="int32_t lock = 0; ngx_feature_test="int32_t lock, n;
if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1" n = OSAtomicCompareAndSwap32Barrier(0, 1, lock)"
. auto/feature . auto/feature

276
auto/os/features Normal file
View file

@ -0,0 +1,276 @@
# Copyright (C) Igor Sysoev
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, dp; struct pollfd pl;
dp = 0;
pl.fd = 0;
pl.events = 0;
pl.revents = 0;
n = poll(&pl, 1, 0)"
. 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)"
. 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="int kq; kq = 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;"
. 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="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(NULL, &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(NULL, &fs);"
. auto/feature
ngx_feature="dlopen()"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <dlfcn.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="dlopen(NULL, 0)"
. auto/feature
if [ $ngx_found != yes ]; then
ngx_feature="dlopen() in libdl"
ngx_feature_libs="-ldl"
. auto/feature
if [ $ngx_found = yes ]; then
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 != yes ]; 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

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_FREEBSD . auto/have_headers have=NGX_FREEBSD . auto/have_headers
@ -44,21 +43,6 @@ if [ $osreldate -gt 300007 ]; then
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS" CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
fi fi
if [ $osreldate -gt 1100093 ]; then
echo " + sendfile()'s SF_NODISKIO found"
have=NGX_HAVE_SENDFILE_NODISKIO . auto/have
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 # kqueue
@ -78,7 +62,7 @@ fi
NGX_KQUEUE_CHECKED=YES NGX_KQUEUE_CHECKED=YES
# kqueue's NOTE_LOWAT # kqueue's NOTE_LAWAT
if [ \( $version -lt 500000 -a $version -ge 430000 \) \ if [ \( $version -lt 500000 -a $version -ge 430000 \) \
-o $version -ge 500018 ] -o $version -ge 500018 ]
@ -97,9 +81,40 @@ then
fi fi
# cpuset_setaffinity() if [ $USE_THREADS = "rfork" ]; then
if [ $version -ge 701000 ]; then echo " + using rfork()"
echo " + cpuset_setaffinity() found"
have=NGX_HAVE_CPUSET_SETAFFINITY . auto/have # # kqueue's EVFILT_SIGNAL is safe
#
# if [ $version -gt 460101 ]; then
# echo " + kqueue's EVFILT_SIGNAL is safe"
# have=NGX_HAVE_SAFE_EVFILT_SIGNAL . auto/have
# else
# echo "$0: error: the kqueue's EVFILT_SIGNAL is unsafe on this"
# echo "FreeBSD version, so --with-threads=rfork could not be used"
# echo
#
# exit 1
# fi
fi
if [ $EVENT_AIO = YES ]; then
if [ \( $version -lt 500000 -a $version -ge 430000 \) \
-o $version -ge 500014 ]
then
have=NGX_HAVE_AIO . auto/have
EVENT_MODULES="$EVENT_MODULES $AIO_MODULE"
CORE_SRCS="$CORE_SRCS $AIO_SRCS"
else
cat << END
$0: error: the kqueue does not support AIO on this FreeBSD version
END
exit 1
fi
fi fi

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_LINUX . auto/have_headers have=NGX_LINUX . auto/have_headers
@ -19,19 +18,23 @@ CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
# Linux kernel version # Linux kernel version
version=$((`uname -r \ version=$((`uname -r \
| sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \ | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1*256*256+\2*256+\3/'`))
\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} version=${version:-0}
# posix_fadvise64() had been implemented in 2.5.60 # enable the rt signals on Linux between 2.2.19 and 2.6.17
if [ $version -lt 132412 ]; then if [ \( $version -ge 131603 -a $version -lt 132626 \) -o $EVENT_RTSIG = YES ]
have=NGX_HAVE_POSIX_FADVISE . auto/nohave then
echo " + rt signals found"
have=NGX_HAVE_RTSIG . auto/have
EVENT_MODULES="$EVENT_MODULES $RTSIG_MODULE"
CORE_SRCS="$CORE_SRCS $RTSIG_SRCS"
EVENT_FOUND=YES
fi fi
# epoll, EPOLLET version # epoll, EPOLLET version
ngx_feature="epoll" ngx_feature="epoll"
@ -40,11 +43,10 @@ ngx_feature_run=yes
ngx_feature_incs="#include <sys/epoll.h>" ngx_feature_incs="#include <sys/epoll.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="int efd = 0; ngx_feature_test="int efd = 0, fd = 1, n;
struct epoll_event ee; struct epoll_event ee;
ee.events = EPOLLIN|EPOLLOUT|EPOLLET; ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
ee.data.ptr = NULL; ee.data.ptr = NULL;
(void) ee;
efd = epoll_create(100); efd = epoll_create(100);
if (efd == -1) return 1;" if (efd == -1) return 1;"
. auto/feature . auto/feature
@ -54,82 +56,9 @@ if [ $ngx_found = yes ]; then
CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
EVENT_FOUND=YES 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
# eventfd()
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 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() # sendfile()
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
@ -182,37 +111,16 @@ ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
. auto/feature . auto/feature
# prctl(PR_SET_KEEPCAPS) # sched_setaffinity()
ngx_feature="prctl(PR_SET_KEEPCAPS)" ngx_feature="sched_setaffinity()"
ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS" ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
ngx_feature_run=yes
ngx_feature_incs="#include <sys/prctl.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1) return 1"
. auto/feature
# capabilities
ngx_feature="capabilities"
ngx_feature_name="NGX_HAVE_CAPABILITIES"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <linux/capability.h> ngx_feature_incs="#include <sched.h>"
#include <sys/syscall.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="struct __user_cap_data_struct data; ngx_feature_test="long mask = 0;
struct __user_cap_header_struct header; sched_setaffinity(0, 32, (cpu_set_t *) &mask)"
header.version = _LINUX_CAPABILITY_VERSION_1;
data.effective = CAP_TO_MASK(CAP_NET_RAW);
data.permitted = 0;
(void) header;
(void) data;
(void) SYS_capset"
. auto/feature . auto/feature
@ -225,70 +133,11 @@ ngx_feature_incs="#include <crypt.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs=-lcrypt ngx_feature_libs=-lcrypt
ngx_feature_test="struct crypt_data cd; ngx_feature_test="struct crypt_data cd;
crypt_r(\"key\", \"salt\", &cd);" crypt_r(NULL, NULL, &cd);"
. auto/feature . auto/feature
ngx_include="sys/vfs.h"; . auto/include ngx_include="sys/vfs.h"; . auto/include
# BPF sockhash
ngx_feature="BPF sockhash"
ngx_feature_name="NGX_HAVE_BPF"
ngx_feature_run=no
ngx_feature_incs="#include <linux/bpf.h>
#include <sys/syscall.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="union bpf_attr attr = { 0 };
attr.map_flags = 0;
attr.map_type = BPF_MAP_TYPE_SOCKHASH;
syscall(__NR_bpf, 0, &attr, 0);"
. auto/feature
if [ $ngx_found = yes ]; then
CORE_SRCS="$CORE_SRCS src/core/ngx_bpf.c"
CORE_DEPS="$CORE_DEPS src/core/ngx_bpf.h"
if [ $QUIC_BPF != NONE ]; then
QUIC_BPF=YES
fi
fi
ngx_feature="SO_COOKIE"
ngx_feature_name="NGX_HAVE_SO_COOKIE"
ngx_feature_run=no
ngx_feature_incs="#include <sys/socket.h>
$NGX_INCLUDE_INTTYPES_H"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="socklen_t optlen = sizeof(uint64_t);
uint64_t cookie;
getsockopt(0, SOL_SOCKET, SO_COOKIE, &cookie, &optlen)"
. auto/feature
if [ $ngx_found = yes ]; then
SO_COOKIE_FOUND=YES
fi
# UDP segmentation offloading
ngx_feature="UDP_SEGMENT"
ngx_feature_name="NGX_HAVE_UDP_SEGMENT"
ngx_feature_run=no
ngx_feature_incs="#include <sys/socket.h>
#include <netinet/udp.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="socklen_t optlen = sizeof(int);
int val;
getsockopt(0, SOL_UDP, UDP_SEGMENT, &val, &optlen)"
. auto/feature
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_SOLARIS . auto/have_headers have=NGX_SOLARIS . auto/have_headers
@ -35,8 +34,7 @@ ngx_feature_path=
ngx_feature_libs="-lsendfile" ngx_feature_libs="-lsendfile"
ngx_feature_test="int fd = 1; sendfilevec_t vec[1]; ngx_feature_test="int fd = 1; sendfilevec_t vec[1];
size_t sent; ssize_t n; size_t sent; ssize_t n;
n = sendfilev(fd, vec, 1, &sent); n = sendfilev(fd, vec, 1, &sent)"
if (n == -1) return 1"
. auto/feature . auto/feature
@ -52,7 +50,7 @@ ngx_feature_run=no
ngx_feature_incs="#include <port.h>" ngx_feature_incs="#include <port.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="(void) port_create()" ngx_feature_test="int n = port_create()"
. auto/feature . auto/feature
if [ $ngx_found = yes ]; then if [ $ngx_found = yes ]; then

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_WIN32 . auto/have_headers have=NGX_WIN32 . auto/have_headers
@ -9,31 +8,21 @@ CORE_INCS="$WIN32_INCS"
CORE_DEPS="$WIN32_DEPS" CORE_DEPS="$WIN32_DEPS"
CORE_SRCS="$WIN32_SRCS $IOCP_SRCS" CORE_SRCS="$WIN32_SRCS $IOCP_SRCS"
OS_CONFIG="$WIN32_CONFIG" OS_CONFIG="$WIN32_CONFIG"
CORE_LIBS="$CORE_LIBS advapi32.lib ws2_32.lib"
NGX_ICONS="$NGX_WIN32_ICONS" NGX_ICONS="$NGX_WIN32_ICONS"
SELECT_SRCS=$WIN32_SELECT_SRCS SELECT_SRCS=$WIN32_SELECT_SRCS
POLL_SRCS=$WIN32_POLL_SRCS
ngx_pic_opt=
ngx_binext=".exe"
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_MODULES="$EVENT_MODULES $IOCP_MODULE"
#EVENT_FOUND=YES EVENT_FOUND=YES
have=NGX_HAVE_INET6 . auto/have if [ $EVENT_SELECT = NO ]; then
CORE_SRCS="$CORE_SRCS $SELECT_SRCS"
EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE"
fi
if [ $NGX_IPV6 = YES ]; then
have=NGX_HAVE_INET6 . auto/have
fi
have=NGX_HAVE_AIO . auto/have
have=NGX_HAVE_IOCP . auto/have have=NGX_HAVE_IOCP . auto/have

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module" CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
@ -19,29 +18,22 @@ CORE_DEPS="src/core/nginx.h \
src/core/ngx_queue.h \ src/core/ngx_queue.h \
src/core/ngx_string.h \ src/core/ngx_string.h \
src/core/ngx_parse.h \ src/core/ngx_parse.h \
src/core/ngx_parse_time.h \
src/core/ngx_inet.h \ src/core/ngx_inet.h \
src/core/ngx_file.h \ src/core/ngx_file.h \
src/core/ngx_crc.h \ src/core/ngx_crc.h \
src/core/ngx_crc32.h \ src/core/ngx_crc32.h \
src/core/ngx_murmurhash.h \
src/core/ngx_md5.h \ src/core/ngx_md5.h \
src/core/ngx_sha1.h \ src/core/ngx_sha1.h \
src/core/ngx_rbtree.h \ src/core/ngx_rbtree.h \
src/core/ngx_radix_tree.h \ src/core/ngx_radix_tree.h \
src/core/ngx_rwlock.h \
src/core/ngx_slab.h \ src/core/ngx_slab.h \
src/core/ngx_times.h \ src/core/ngx_times.h \
src/core/ngx_shmtx.h \ src/core/ngx_shmtx.h \
src/core/ngx_connection.h \ src/core/ngx_connection.h \
src/core/ngx_cycle.h \ src/core/ngx_cycle.h \
src/core/ngx_conf_file.h \ src/core/ngx_conf_file.h \
src/core/ngx_module.h \
src/core/ngx_resolver.h \ src/core/ngx_resolver.h \
src/core/ngx_open_file_cache.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 \ CORE_SRCS="src/core/nginx.c \
@ -55,13 +47,9 @@ CORE_SRCS="src/core/nginx.c \
src/core/ngx_output_chain.c \ src/core/ngx_output_chain.c \
src/core/ngx_string.c \ src/core/ngx_string.c \
src/core/ngx_parse.c \ src/core/ngx_parse.c \
src/core/ngx_parse_time.c \
src/core/ngx_inet.c \ src/core/ngx_inet.c \
src/core/ngx_file.c \ src/core/ngx_file.c \
src/core/ngx_crc32.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_rbtree.c \
src/core/ngx_radix_tree.c \ src/core/ngx_radix_tree.c \
src/core/ngx_slab.c \ src/core/ngx_slab.c \
@ -70,33 +58,37 @@ CORE_SRCS="src/core/nginx.c \
src/core/ngx_connection.c \ src/core/ngx_connection.c \
src/core/ngx_cycle.c \ src/core/ngx_cycle.c \
src/core/ngx_spinlock.c \ src/core/ngx_spinlock.c \
src/core/ngx_rwlock.c \
src/core/ngx_cpuinfo.c \ src/core/ngx_cpuinfo.c \
src/core/ngx_conf_file.c \ src/core/ngx_conf_file.c \
src/core/ngx_module.c \
src/core/ngx_resolver.c \ src/core/ngx_resolver.c \
src/core/ngx_open_file_cache.c \ src/core/ngx_open_file_cache.c"
src/core/ngx_crypt.c \
src/core/ngx_proxy_protocol.c \
src/core/ngx_syslog.c" REGEX_DEPS=src/core/ngx_regex.h
REGEX_SRCS=src/core/ngx_regex.c
OPENSSL_MODULE=ngx_openssl_module
OPENSSL_DEPS=src/event/ngx_event_openssl.h
OPENSSL_SRCS=src/event/ngx_event_openssl.c
EVENT_MODULES="ngx_events_module ngx_event_core_module" EVENT_MODULES="ngx_events_module ngx_event_core_module"
EVENT_INCS="src/event src/event/modules src/event/quic" EVENT_INCS="src/event src/event/modules"
EVENT_DEPS="src/event/ngx_event.h \ EVENT_DEPS="src/event/ngx_event.h \
src/event/ngx_event_timer.h \ src/event/ngx_event_timer.h \
src/event/ngx_event_posted.h \ src/event/ngx_event_posted.h \
src/event/ngx_event_busy_lock.h \
src/event/ngx_event_connect.h \ src/event/ngx_event_connect.h \
src/event/ngx_event_pipe.h \ src/event/ngx_event_pipe.h"
src/event/ngx_event_udp.h"
EVENT_SRCS="src/event/ngx_event.c \ EVENT_SRCS="src/event/ngx_event.c \
src/event/ngx_event_timer.c \ src/event/ngx_event_timer.c \
src/event/ngx_event_posted.c \ src/event/ngx_event_posted.c \
src/event/ngx_event_busy_lock.c \
src/event/ngx_event_accept.c \ src/event/ngx_event_accept.c \
src/event/ngx_event_udp.c \
src/event/ngx_event_connect.c \ src/event/ngx_event_connect.c \
src/event/ngx_event_pipe.c" src/event/ngx_event_pipe.c"
@ -107,7 +99,6 @@ WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c
POLL_MODULE=ngx_poll_module POLL_MODULE=ngx_poll_module
POLL_SRCS=src/event/modules/ngx_poll_module.c POLL_SRCS=src/event/modules/ngx_poll_module.c
WIN32_POLL_SRCS=src/event/modules/ngx_win32_poll_module.c
KQUEUE_MODULE=ngx_kqueue_module KQUEUE_MODULE=ngx_kqueue_module
KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
@ -121,11 +112,19 @@ EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c
EPOLL_MODULE=ngx_epoll_module EPOLL_MODULE=ngx_epoll_module
EPOLL_SRCS=src/event/modules/ngx_epoll_module.c EPOLL_SRCS=src/event/modules/ngx_epoll_module.c
RTSIG_MODULE=ngx_rtsig_module
RTSIG_SRCS=src/event/modules/ngx_rtsig_module.c
IOCP_MODULE=ngx_iocp_module IOCP_MODULE=ngx_iocp_module
IOCP_SRCS=src/event/modules/ngx_iocp_module.c IOCP_SRCS=src/event/modules/ngx_iocp_module.c
FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c" AIO_MODULE=ngx_aio_module
LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c" AIO_SRCS="src/event/modules/ngx_aio_module.c \
src/os/unix/ngx_aio_read.c \
src/os/unix/ngx_aio_write.c \
src/os/unix/ngx_aio_read_chain.c \
src/os/unix/ngx_aio_write_chain.c"
UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix" UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
@ -137,7 +136,6 @@ UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
src/os/unix/ngx_channel.h \ src/os/unix/ngx_channel.h \
src/os/unix/ngx_shmem.h \ src/os/unix/ngx_shmem.h \
src/os/unix/ngx_process.h \ src/os/unix/ngx_process.h \
src/os/unix/ngx_setaffinity.h \
src/os/unix/ngx_setproctitle.h \ src/os/unix/ngx_setproctitle.h \
src/os/unix/ngx_atomic.h \ src/os/unix/ngx_atomic.h \
src/os/unix/ngx_gcc_atomic_x86.h \ src/os/unix/ngx_gcc_atomic_x86.h \
@ -145,7 +143,6 @@ UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
src/os/unix/ngx_socket.h \ src/os/unix/ngx_socket.h \
src/os/unix/ngx_os.h \ src/os/unix/ngx_os.h \
src/os/unix/ngx_user.h \ src/os/unix/ngx_user.h \
src/os/unix/ngx_dlopen.h \
src/os/unix/ngx_process_cycle.h" src/os/unix/ngx_process_cycle.h"
# add to UNIX_DEPS # add to UNIX_DEPS
@ -169,31 +166,25 @@ UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
src/os/unix/ngx_udp_recv.c \ src/os/unix/ngx_udp_recv.c \
src/os/unix/ngx_send.c \ src/os/unix/ngx_send.c \
src/os/unix/ngx_writev_chain.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_channel.c \
src/os/unix/ngx_shmem.c \ src/os/unix/ngx_shmem.c \
src/os/unix/ngx_process.c \ src/os/unix/ngx_process.c \
src/os/unix/ngx_daemon.c \ src/os/unix/ngx_daemon.c \
src/os/unix/ngx_setaffinity.c \
src/os/unix/ngx_setproctitle.c \ src/os/unix/ngx_setproctitle.c \
src/os/unix/ngx_posix_init.c \ src/os/unix/ngx_posix_init.c \
src/os/unix/ngx_user.c \ src/os/unix/ngx_user.c \
src/os/unix/ngx_dlopen.c \
src/os/unix/ngx_process_cycle.c" src/os/unix/ngx_process_cycle.c"
POSIX_DEPS=src/os/unix/ngx_posix_config.h 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_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h"
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
FREEBSD_RFORK_DEPS="src/os/unix/ngx_freebsd_rfork_thread.h"
FREEBSD_RFORK_SRCS="src/os/unix/ngx_freebsd_rfork_thread.c"
FREEBSD_RFORK_THREAD_SRCS="src/os/unix/rfork_thread.S"
PTHREAD_SRCS="src/os/unix/ngx_pthread_thread.c"
LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h" 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_SRCS=src/os/unix/ngx_linux_init.c
@ -225,7 +216,6 @@ WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
src/os/win32/ngx_socket.h \ src/os/win32/ngx_socket.h \
src/os/win32/ngx_os.h \ src/os/win32/ngx_os.h \
src/os/win32/ngx_user.h \ src/os/win32/ngx_user.h \
src/os/win32/ngx_dlopen.h \
src/os/win32/ngx_process_cycle.h" src/os/win32/ngx_process_cycle.h"
WIN32_CONFIG=src/os/win32/ngx_win32_config.h WIN32_CONFIG=src/os/win32/ngx_win32_config.h
@ -246,7 +236,6 @@ WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
src/os/win32/ngx_wsasend_chain.c \ src/os/win32/ngx_wsasend_chain.c \
src/os/win32/ngx_win32_init.c \ src/os/win32/ngx_win32_init.c \
src/os/win32/ngx_user.c \ src/os/win32/ngx_user.c \
src/os/win32/ngx_dlopen.c \
src/os/win32/ngx_event_log.c \ src/os/win32/ngx_event_log.c \
src/os/win32/ngx_process_cycle.c \ src/os/win32/ngx_process_cycle.c \
src/event/ngx_event_acceptex.c" src/event/ngx_event_acceptex.c"
@ -255,7 +244,247 @@ NGX_WIN32_ICONS="src/os/win32/nginx.ico"
NGX_WIN32_RC="src/os/win32/nginx.rc" NGX_WIN32_RC="src/os/win32/nginx.rc"
# the http modules that have their logging formats
# must be after ngx_http_log_module
HTTP_MODULES="ngx_http_module \
ngx_http_core_module \
ngx_http_log_module \
ngx_http_upstream_module"
HTTP_WRITE_FILTER_MODULE="ngx_http_write_filter_module"
HTTP_HEADER_FILTER_MODULE="ngx_http_header_filter_module"
HTTP_POSTPONE_FILTER_MODULE=ngx_http_postpone_filter_module
HTTP_COPY_FILTER_MODULE=ngx_http_copy_filter_module
HTTP_CHUNKED_FILTER_MODULE=ngx_http_chunked_filter_module
HTTP_HEADERS_FILTER_MODULE=ngx_http_headers_filter_module
HTTP_RANGE_HEADER_FILTER_MODULE=ngx_http_range_header_filter_module
HTTP_RANGE_BODY_FILTER_MODULE=ngx_http_range_body_filter_module
HTTP_NOT_MODIFIED_FILTER_MODULE=ngx_http_not_modified_filter_module
HTTP_STATIC_MODULE=ngx_http_static_module
HTTP_INDEX_MODULE=ngx_http_index_module
HTTP_INCS="src/http src/http/modules"
HTTP_DEPS="src/http/ngx_http.h \
src/http/ngx_http_request.h \
src/http/ngx_http_config.h \
src/http/ngx_http_core_module.h \
src/http/ngx_http_cache.h \
src/http/ngx_http_variables.h \
src/http/ngx_http_script.h \
src/http/ngx_http_upstream.h \
src/http/ngx_http_upstream_round_robin.h \
src/http/ngx_http_busy_lock.h"
HTTP_SRCS="src/http/ngx_http.c \
src/http/ngx_http_core_module.c \
src/http/ngx_http_special_response.c \
src/http/ngx_http_request.c \
src/http/ngx_http_parse.c \
src/http/ngx_http_header_filter_module.c \
src/http/ngx_http_write_filter_module.c \
src/http/ngx_http_copy_filter_module.c \
src/http/modules/ngx_http_log_module.c \
src/http/ngx_http_request_body.c \
src/http/ngx_http_variables.c \
src/http/ngx_http_script.c \
src/http/ngx_http_upstream.c \
src/http/ngx_http_upstream_round_robin.c \
src/http/ngx_http_parse_time.c \
src/http/modules/ngx_http_static_module.c \
src/http/modules/ngx_http_index_module.c \
src/http/modules/ngx_http_chunked_filter_module.c \
src/http/modules/ngx_http_range_filter_module.c \
src/http/modules/ngx_http_headers_filter_module.c \
src/http/modules/ngx_http_not_modified_filter_module.c"
# STUB
HTTP_SRCS="$HTTP_SRCS src/http/ngx_http_busy_lock.c"
HTTP_POSTPONE_FILTER_SRCS=src/http/ngx_http_postpone_filter_module.c
HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
HTTP_HUFF_SRCS="src/http/ngx_http_huff_decode.c
src/http/ngx_http_huff_encode.c" HTTP_CHARSET_FILTER_MODULE=ngx_http_charset_filter_module
HTTP_CHARSET_SRCS=src/http/modules/ngx_http_charset_filter_module.c
HTTP_GZIP_FILTER_MODULE=ngx_http_gzip_filter_module
HTTP_GZIP_SRCS=src/http/modules/ngx_http_gzip_filter_module.c
HTTP_SSI_FILTER_MODULE=ngx_http_ssi_filter_module
HTTP_SSI_DEPS=src/http/modules/ngx_http_ssi_filter_module.h
HTTP_SSI_SRCS=src/http/modules/ngx_http_ssi_filter_module.c
HTTP_XSLT_FILTER_MODULE=ngx_http_xslt_filter_module
HTTP_XSLT_SRCS=src/http/modules/ngx_http_xslt_filter_module.c
HTTP_IMAGE_FILTER_MODULE=ngx_http_image_filter_module
HTTP_IMAGE_SRCS=src/http/modules/ngx_http_image_filter_module.c
HTTP_SUB_FILTER_MODULE=ngx_http_sub_filter_module
HTTP_SUB_SRCS=src/http/modules/ngx_http_sub_filter_module.c
HTTP_USERID_FILTER_MODULE=ngx_http_userid_filter_module
HTTP_USERID_SRCS=src/http/modules/ngx_http_userid_filter_module.c
HTTP_REALIP_MODULE=ngx_http_realip_module
HTTP_REALIP_SRCS=src/http/modules/ngx_http_realip_module.c
HTTP_ADDITION_FILTER_MODULE=ngx_http_addition_filter_module
HTTP_ADDITION_SRCS=src/http/modules/ngx_http_addition_filter_module.c
HTTP_DAV_MODULE=ngx_http_dav_module
HTTP_DAV_SRCS=src/http/modules/ngx_http_dav_module.c
HTTP_ACCESS_MODULE=ngx_http_access_module
HTTP_ACCESS_SRCS=src/http/modules/ngx_http_access_module.c
HTTP_AUTH_BASIC_MODULE=ngx_http_auth_basic_module
HTTP_AUTH_BASIC_SRCS=src/http/modules/ngx_http_auth_basic_module.c
HTTP_AUTOINDEX_MODULE=ngx_http_autoindex_module
HTTP_AUTOINDEX_SRCS=src/http/modules/ngx_http_autoindex_module.c
HTTP_RANDOM_INDEX_MODULE=ngx_http_random_index_module
HTTP_RANDOM_INDEX_SRCS=src/http/modules/ngx_http_random_index_module.c
HTTP_STATUS_MODULE=ngx_http_status_module
HTTP_STATUS_SRCS=src/http/modules/ngx_http_status_module.c
HTTP_GEO_MODULE=ngx_http_geo_module
HTTP_GEO_SRCS=src/http/modules/ngx_http_geo_module.c
HTTP_GEOIP_MODULE=ngx_http_geoip_module
HTTP_GEOIP_SRCS=src/http/modules/ngx_http_geoip_module.c
HTTP_MAP_MODULE=ngx_http_map_module
HTTP_MAP_SRCS=src/http/modules/ngx_http_map_module.c
HTTP_REFERER_MODULE=ngx_http_referer_module
HTTP_REFERER_SRCS=src/http/modules/ngx_http_referer_module.c
HTTP_REWRITE_MODULE=ngx_http_rewrite_module
HTTP_REWRITE_SRCS=src/http/modules/ngx_http_rewrite_module.c
HTTP_SSL_MODULE=ngx_http_ssl_module
HTTP_SSL_DEPS=src/http/modules/ngx_http_ssl_module.h
HTTP_SSL_SRCS=src/http/modules/ngx_http_ssl_module.c
HTTP_PROXY_MODULE=ngx_http_proxy_module
HTTP_PROXY_SRCS=src/http/modules/ngx_http_proxy_module.c
HTTP_FASTCGI_MODULE=ngx_http_fastcgi_module
HTTP_FASTCGI_SRCS=src/http/modules/ngx_http_fastcgi_module.c
HTTP_PERL_MODULE=ngx_http_perl_module
HTTP_PERL_INCS=src/http/modules/perl
HTTP_PERL_DEPS=src/http/modules/perl/ngx_http_perl_module.h
HTTP_PERL_SRCS=src/http/modules/perl/ngx_http_perl_module.c
HTTP_MEMCACHED_MODULE=ngx_http_memcached_module
HTTP_MEMCACHED_SRCS=src/http/modules/ngx_http_memcached_module.c
HTTP_LIMIT_ZONE_MODULE=ngx_http_limit_zone_module
HTTP_LIMIT_ZONE_SRCS=src/http/modules/ngx_http_limit_zone_module.c
HTTP_LIMIT_REQ_MODULE=ngx_http_limit_req_module
HTTP_LIMIT_REQ_SRCS=src/http/modules/ngx_http_limit_req_module.c
HTTP_EMPTY_GIF_MODULE=ngx_http_empty_gif_module
HTTP_EMPTY_GIF_SRCS=src/http/modules/ngx_http_empty_gif_module.c
HTTP_BROWSER_MODULE=ngx_http_browser_module
HTTP_BROWSER_SRCS=src/http/modules/ngx_http_browser_module.c
HTTP_SECURE_LINK_MODULE=ngx_http_secure_link_module
HTTP_SECURE_LINK_SRCS=src/http/modules/ngx_http_secure_link_module.c
HTTP_FLV_MODULE=ngx_http_flv_module
HTTP_FLV_SRCS=src/http/modules/ngx_http_flv_module.c
HTTP_GZIP_STATIC_MODULE=ngx_http_gzip_static_module
HTTP_GZIP_STATIC_SRCS=src/http/modules/ngx_http_gzip_static_module.c
HTTP_UPSTREAM_IP_HASH_MODULE=ngx_http_upstream_ip_hash_module
HTTP_UPSTREAM_IP_HASH_SRCS=src/http/modules/ngx_http_upstream_ip_hash_module.c
MAIL_INCS="src/mail"
MAIL_DEPS="src/mail/ngx_mail.h"
MAIL_MODULES="ngx_mail_module ngx_mail_core_module"
MAIL_SRCS="src/mail/ngx_mail.c \
src/mail/ngx_mail_core_module.c \
src/mail/ngx_mail_handler.c \
src/mail/ngx_mail_parse.c"
MAIL_POP3_MODULE="ngx_mail_pop3_module"
MAIL_POP3_DEPS="src/mail/ngx_mail_pop3_module.h"
MAIL_POP3_SRCS="src/mail/ngx_mail_pop3_module.c \
src/mail/ngx_mail_pop3_handler.c"
MAIL_IMAP_MODULE="ngx_mail_imap_module"
MAIL_IMAP_DEPS="src/mail/ngx_mail_imap_module.h"
MAIL_IMAP_SRCS="src/mail/ngx_mail_imap_module.c \
src/mail/ngx_mail_imap_handler.c"
MAIL_SMTP_MODULE="ngx_mail_smtp_module"
MAIL_SMTP_DEPS="src/mail/ngx_mail_smtp_module.h"
MAIL_SMTP_SRCS="src/mail/ngx_mail_smtp_module.c \
src/mail/ngx_mail_smtp_handler.c"
MAIL_SSL_MODULE="ngx_mail_ssl_module"
MAIL_SSL_DEPS="src/mail/ngx_mail_ssl_module.h"
MAIL_SSL_SRCS="src/mail/ngx_mail_ssl_module.c"
MAIL_AUTH_HTTP_MODULE="ngx_mail_auth_http_module"
MAIL_AUTH_HTTP_SRCS="src/mail/ngx_mail_auth_http_module.c"
MAIL_PROXY_MODULE="ngx_mail_proxy_module"
MAIL_PROXY_SRCS="src/mail/ngx_mail_proxy_module.c"
NGX_GOOGLE_PERFTOOLS_MODULE=ngx_google_perftools_module
NGX_GOOGLE_PERFTOOLS_SRCS=src/misc/ngx_google_perftools_module.c
NGX_CPP_TEST_SRCS=src/misc/ngx_cpp_test_module.cpp

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
have=NGX_SUPPRESS_WARN . auto/have have=NGX_SUPPRESS_WARN . auto/have

View file

@ -1,52 +1,82 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
### STUB
if [ $USE_THREADS != NO ]; then
cat << END
$0: error: the threads support is broken now.
END
exit 1
fi
###
echo echo
echo "Configuration summary" echo "Configuration summary"
if [ $USE_THREADS = YES ]; then #case $USE_THREADS in
echo " + using threads" # rfork) echo " + using rfork()ed threads" ;;
fi # pthreads) echo " + using libpthread threads library" ;;
# libthr) echo " + using FreeBSD libthr threads library" ;;
# libc_r) echo " + using FreeBSD libc_r threads library" ;;
# linuxthreads) echo " + using FreeBSD LinuxThreads port library" ;;
# NO) echo " + threads are not used" ;;
# *) echo " + using lib$USE_THREADS threads library" ;;
#esac
if [ $USE_PCRE = DISABLED ]; then if [ $USE_PCRE = DISABLED ]; then
echo " + PCRE library is disabled" echo " + PCRE library is disabled"
else else
case $PCRE in case $PCRE in
YES) echo " + using system $PCRE_LIBRARY library" ;; YES) echo " + using system PCRE library" ;;
NONE) echo " + PCRE library is not used" ;; NONE) echo " + PCRE library is not used" ;;
*) echo " + using $PCRE_LIBRARY library: $PCRE" ;; NO) echo " + PCRE library is not found" ;;
*) echo " + using PCRE library: $PCRE" ;;
esac esac
fi fi
case $OPENSSL in case $OPENSSL in
YES) echo " + using system OpenSSL library" ;; YES) echo " + using system OpenSSL library" ;;
NONE) echo " + OpenSSL library is not used" ;; NONE) echo " + OpenSSL library is not used" ;;
NO) echo " + OpenSSL library is not found" ;;
*) echo " + using OpenSSL library: $OPENSSL" ;; *) echo " + using OpenSSL library: $OPENSSL" ;;
esac esac
case $MD5 in
YES) echo " + md5: using $MD5_LIB library" ;;
NONE) echo " + md5 library is not used" ;;
NO) echo " + md5 library is not found" ;;
*) echo " + using md5 library: $MD5" ;;
esac
case $SHA1 in
YES) echo " + sha1: using $SHA1_LIB library" ;;
NONE) echo " + sha1 library is not used" ;;
NO) echo " + sha1 library is not found" ;;
*) echo " + using sha1 library: $SHA1" ;;
esac
case $ZLIB in case $ZLIB in
YES) echo " + using system zlib library" ;; YES) echo " + using system zlib library" ;;
NONE) echo " + zlib library is not used" ;; NONE) echo " + zlib library is not used" ;;
NO) echo " + zlib library is not found" ;;
*) echo " + using zlib library: $ZLIB" ;; *) echo " + using zlib library: $ZLIB" ;;
esac esac
case $NGX_LIBATOMIC in
YES) echo " + using system libatomic_ops library" ;;
NO) ;; # not used
*) echo " + using libatomic_ops library: $NGX_LIBATOMIC" ;;
esac
echo echo
cat << END cat << END
nginx path prefix: "$NGX_PREFIX" nginx path prefix: "$NGX_PREFIX"
nginx binary file: "$NGX_SBIN_PATH" nginx binary file: "$NGX_SBIN_PATH"
nginx modules path: "$NGX_MODULES_PATH"
nginx configuration prefix: "$NGX_CONF_PREFIX" nginx configuration prefix: "$NGX_CONF_PREFIX"
nginx configuration file: "$NGX_CONF_PATH" nginx configuration file: "$NGX_CONF_PATH"
nginx pid file: "$NGX_PID_PATH" nginx pid file: "$NGX_PID_PATH"
@ -61,22 +91,7 @@ fi
cat << END cat << END
nginx http access log file: "$NGX_HTTP_LOG_PATH" nginx http access log file: "$NGX_HTTP_LOG_PATH"
nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH" nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH"
nginx http proxy temporary files: "$NGX_HTTP_PROXY_TEMP_PATH"
nginx http fastcgi temporary files: "$NGX_HTTP_FASTCGI_TEMP_PATH"
END 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"

View file

@ -1,21 +1,70 @@
# Copyright (C) Nginx, Inc. # Copyright (C) Igor Sysoev
if [ $USE_THREADS = YES ]; then case $USE_THREADS in
rfork)
have=NGX_THREADS . auto/have
have=NGX_USE_RFORK . auto/have
CORE_DEPS="$CORE_DEPS $FREEBSD_RFORK_DEPS"
CORE_SRCS="$CORE_SRCS $FREEBSD_RFORK_SRCS"
if [ "$NGX_PLATFORM" = win32 ]; then case "$NGX_PLATFORM" in
cat << END *:i386)
if [ \( $version -gt 500000 -a $version -lt 501000 \) \
-o $version -lt 491000 ]
then
CORE_SRCS="$CORE_SRCS $FREEBSD_RFORK_THREAD_SRCS"
fi
;;
esac
;;
$0: --with-threads is not supported on Windows pthreads)
have=NGX_THREADS . auto/have
CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -lpthread"
;;
END libthr)
exit 1 have=NGX_THREADS . auto/have
fi CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -lthr"
;;
have=NGX_THREADS . auto/have linuxthreads)
CORE_DEPS="$CORE_DEPS $THREAD_POOL_DEPS" have=NGX_THREADS . auto/have
CORE_SRCS="$CORE_SRCS $THREAD_POOL_SRCS" have=NGX_LINUXTHREADS . auto/have
CORE_LIBS="$CORE_LIBS -lpthread" CFLAGS="$CFLAGS -D_THREAD_SAFE"
NGX_LIBPTHREAD="-lpthread" CFLAGS="$CFLAGS -I /usr/local/include/pthread/linuxthreads"
fi CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -L /usr/local/lib -llthread -llgcc_r"
;;
libc_r)
case "$NGX_PLATFORM" in
FreeBSD:[34]*)
have=NGX_THREADS . auto/have
CFLAGS="$CFLAGS -pthread"
CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -pthread"
;;
FreeBSD:[56]*)
have=NGX_THREADS . auto/have
CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -lc_r"
;;
esac
;;
NO)
;;
*)
have=NGX_THREADS . auto/have
CORE_SRCS="$CORE_SRCS $PTHREAD_SRCS"
CORE_LIBS="$CORE_LIBS -l$USE_THREADS"
;;
esac

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_type size ...$ngx_c" echo $ngx_n "checking for $ngx_type size ...$ngx_c"
@ -20,13 +19,12 @@ cat << END > $NGX_AUTOTEST.c
#include <sys/time.h> #include <sys/time.h>
$NGX_INCLUDE_UNISTD_H $NGX_INCLUDE_UNISTD_H
#include <signal.h> #include <signal.h>
#include <stdio.h>
#include <sys/resource.h> #include <sys/resource.h>
$NGX_INCLUDE_INTTYPES_H $NGX_INCLUDE_INTTYPES_H
$NGX_INCLUDE_AUTO_CONFIG_H $NGX_INCLUDE_AUTO_CONFIG_H
int main(void) { int main() {
printf("%d", (int) sizeof($ngx_type)); printf("%d", sizeof($ngx_type));
return 0; return 0;
} }
@ -45,14 +43,27 @@ if [ -x $NGX_AUTOTEST ]; then
fi fi
rm -f $NGX_AUTOTEST
case $ngx_size in case $ngx_size in
4) 4)
ngx_max_value=2147483647 if [ "$ngx_type"="long" ]; then
ngx_max_value=2147483647L
else
ngx_max_value=2147483647
fi
ngx_max_len='(sizeof("-2147483648") - 1)' ngx_max_len='(sizeof("-2147483648") - 1)'
;; ;;
8) 8)
ngx_max_value=9223372036854775807LL if [ "$ngx_type"="long long" ]; then
ngx_max_value=9223372036854775807LL
else
ngx_max_value=9223372036854775807L
fi
ngx_max_len='(sizeof("-9223372036854775808") - 1)' ngx_max_len='(sizeof("-9223372036854775808") - 1)'
;; ;;
@ -66,11 +77,6 @@ case $ngx_size in
echo $ngx_test >> $NGX_AUTOCONF_ERR echo $ngx_test >> $NGX_AUTOCONF_ERR
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
rm -rf $NGX_AUTOTEST*
exit 1 exit 1
esac esac
rm -rf $NGX_AUTOTEST*

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_type ...$ngx_c" echo $ngx_n "checking for $ngx_type ...$ngx_c"
@ -27,9 +26,9 @@ do
#include <netinet/in.h> #include <netinet/in.h>
$NGX_INCLUDE_INTTYPES_H $NGX_INCLUDE_INTTYPES_H
int main(void) { int main() {
$ngx_try i = 0; $ngx_try i = 0;
return (int) i; return 0;
} }
END END
@ -49,23 +48,18 @@ END
fi fi
fi fi
rm -f $NGX_AUTOTEST
if [ $ngx_found = no ]; then if [ $ngx_found = no ]; then
if [ $ngx_try = $ngx_type ]; then echo $ngx_n " $ngx_try not found$ngx_c"
echo $ngx_n " $ngx_try not found$ngx_c"
else
echo $ngx_n ", $ngx_try not found$ngx_c"
fi
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
echo $ngx_test >> $NGX_AUTOCONF_ERR echo $ngx_test >> $NGX_AUTOCONF_ERR
echo "----------" >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR
fi
rm -rf $NGX_AUTOTEST* else
if [ $ngx_found != no ]; then
break break
fi fi
done done

View file

@ -1,35 +1,26 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for uintptr_t ...$ngx_c" echo $ngx_n "checking for uintptr_t ...$ngx_c"
echo >> $NGX_ERR
cat << END >> $NGX_AUTOCONF_ERR echo "checking for uintptr_t" >> $NGX_ERR
----------------------------------------
checking for uintptr_t
END
found=no found=no
cat << END > $NGX_AUTOTEST.c cat << END > $NGX_AUTOTEST.c
#include <sys/types.h> #include <sys/types.h>
$NGX_INCLUDE_INTTYPES_H $NGX_INTTYPES_H
int main(void) { int main() {
uintptr_t i = 0; uintptr_t i = 0;
return (int) i; return 0;
} }
END END
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT"
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
if [ -x $NGX_AUTOTEST ]; then if [ -x $NGX_AUTOTEST ]; then
echo " uintptr_t found" echo " uintptr_t found"
@ -38,7 +29,7 @@ else
echo $ngx_n " uintptr_t not found" $ngx_c echo $ngx_n " uintptr_t not found" $ngx_c
fi fi
rm -rf $NGX_AUTOTEST* rm $NGX_AUTOTEST*
if [ $found = no ]; then if [ $found = no ]; then

View file

@ -1,6 +1,5 @@
# Copyright (C) Igor Sysoev # Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H cat << END >> $NGX_AUTO_CONFIG_H

856
auto/unix Normal file → Executable file
View file

@ -1,588 +1,5 @@
# Copyright (C) Igor Sysoev # 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="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
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
# OpenBSD 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 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
# 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
# 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
# BSD way to set IPv4 datagram source address
ngx_feature="IP_SENDSRCADDR"
ngx_feature_name="NGX_HAVE_IP_SENDSRCADDR"
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_SENDSRCADDR, 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="struct in_pktinfo pkt;
pkt.ipi_spec_dst.s_addr = INADDR_ANY;
(void) pkt;
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
fi
have=NGX_HAVE_UNIX_DOMAIN . auto/have have=NGX_HAVE_UNIX_DOMAIN . auto/have
@ -604,9 +21,15 @@ ngx_param=NGX_PTR_SIZE; ngx_value=$ngx_size; . auto/types/value
# POSIX types # POSIX types
NGX_INCLUDE_AUTO_CONFIG_H="#include \"ngx_auto_config.h\"" case "$NGX_AUTO_CONFIG_H" in
/*)
NGX_INCLUDE_AUTO_CONFIG_H="#include \"$NGX_AUTO_CONFIG_H\""
;;
*)
NGX_INCLUDE_AUTO_CONFIG_H="#include \"../$NGX_AUTO_CONFIG_H\""
;;
esac
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="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef
ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef
@ -615,7 +38,7 @@ 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="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_addr_t"; ngx_types="uint32_t"; . auto/types/typedef
ngx_type="in_port_t"; ngx_types="u_short"; . auto/types/typedef ngx_type="in_port_t"; ngx_types="u_short"; . auto/types/typedef
@ -623,7 +46,7 @@ ngx_type="rlim_t"; ngx_types="int"; . auto/types/typedef
. auto/types/uintptr_t . auto/types/uintptr_t
. auto/endianness . auto/endianess
ngx_type="size_t"; . auto/types/sizeof 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_MAX_SIZE_T_VALUE; ngx_value=$ngx_max_value; . auto/types/value
@ -636,30 +59,30 @@ ngx_param=NGX_OFF_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
ngx_type="time_t"; . auto/types/sizeof 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_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_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 # syscalls, libc calls and some features
ngx_feature="AF_INET6" if [ $NGX_IPV6 = YES ]; then
ngx_feature_name="NGX_HAVE_INET6" ngx_feature="AF_INET6"
ngx_feature_run=no ngx_feature_name="NGX_HAVE_INET6"
ngx_feature_incs="#include <sys/socket.h> ngx_feature_run=no
#include <netinet/in.h> ngx_feature_incs="#include <sys/socket.h>
#include <arpa/inet.h>" #include <netinet/in.h>
ngx_feature_path= #include <arpa/inet.h>"
ngx_feature_libs= ngx_feature_path=
ngx_feature_test="struct sockaddr_in6 sin6; ngx_feature_libs=
sin6.sin6_family = AF_INET6; ngx_feature_test="struct sockaddr_in6 sin6;
(void) sin6" sin6.sin6_family = AF_INET6;"
. auto/feature . auto/feature
fi
ngx_feature="setproctitle()" ngx_feature="setproctitle()"
ngx_feature_name="NGX_HAVE_SETPROCTITLE" ngx_feature_name="NGX_HAVE_SETPROCTITLE"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <stdlib.h>" ngx_feature_incs=
ngx_feature_path= ngx_feature_path=
ngx_feature_libs=$NGX_SETPROCTITLE_LIB ngx_feature_libs=$NGX_SETPROCTITLE_LIB
ngx_feature_test="setproctitle(\"test\");" ngx_feature_test="setproctitle(\"test\");"
@ -672,8 +95,7 @@ ngx_feature_run=no
ngx_feature_incs= ngx_feature_incs=
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0); ngx_feature_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0)"
if (n == -1) return 1"
. auto/feature . auto/feature
@ -683,67 +105,42 @@ ngx_feature_run=no
ngx_feature_incs= ngx_feature_incs=
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0); ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0)"
if (n == -1) return 1"
. auto/feature . auto/feature
# pwritev() was introduced in FreeBSD 6 and Linux 2.6.30, glibc 2.10 ngx_feature="strerror_r()"
ngx_feature_name="NGX_HAVE_STRERROR_R"
ngx_feature="pwritev()" ngx_feature_run=yes
ngx_feature_name="NGX_HAVE_PWRITEV" ngx_feature_incs="#include <string.h>"
ngx_feature_run=no
ngx_feature_incs='#include <sys/uio.h>'
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="char buf[1]; struct iovec vec[1]; ssize_t n; ngx_feature_test="char buf[1024]; long n; n = strerror_r(1, buf, 1024);
vec[0].iov_base = buf; if (n < 0 || n > 1024) return 1;"
vec[0].iov_len = 1;
n = pwritev(1, vec, 1, 0);
if (n == -1) return 1"
. auto/feature . auto/feature
# strerrordesc_np(), introduced in glibc 2.32 # GNU style strerror_r() returns not length, but pointer
ngx_feature="strerrordesc_np()" ngx_feature="gnu style strerror_r()"
ngx_feature_name="NGX_HAVE_STRERRORDESC_NP" ngx_feature_name="NGX_HAVE_GNU_STRERROR_R"
ngx_feature_run=no ngx_feature_run=yes
ngx_feature_incs='#include <string.h>' ngx_feature_incs="#include <string.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="char *p; p = strerrordesc_np(0); ngx_feature_test="char buf[1024]; long n; n = strerror_r(1, buf, 1024);
if (p == NULL) return 1" if (n >= 0 && n < 1024) return 1;"
. auto/feature . auto/feature
if [ $ngx_found = no ]; then ngx_feature="sys_errlist[]"
ngx_feature_name="NGX_HAVE_SYS_ERRLIST"
ngx_feature="sys_nerr" ngx_feature_run=yes
ngx_feature_name="NGX_SYS_NERR" ngx_feature_incs="#include <stdio.h>"
ngx_feature_run=value ngx_feature_path=
ngx_feature_incs='#include <errno.h> ngx_feature_libs=
#include <stdio.h>' ngx_feature_test="int n = sys_nerr; const char *p = sys_errlist[1];"
ngx_feature_path= . auto/feature
ngx_feature_libs=
ngx_feature_test='printf("%d", sys_nerr);'
. auto/feature
fi
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
ngx_feature="localtime_r()" ngx_feature="localtime_r()"
@ -756,50 +153,23 @@ ngx_feature_test="struct tm t; time_t c=0; localtime_r(&c, &t)"
. auto/feature . auto/feature
ngx_feature="clock_gettime(CLOCK_MONOTONIC)"
ngx_feature_name="NGX_HAVE_CLOCK_MONOTONIC"
ngx_feature_run=no
ngx_feature_incs="#include <time.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts)"
. auto/feature
if [ $ngx_found = no ]; then
# Linux before glibc 2.17, notably CentOS 6
ngx_feature="clock_gettime(CLOCK_MONOTONIC) in librt"
ngx_feature_libs="-lrt"
. auto/feature
if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS -lrt"
fi
fi
ngx_feature="posix_memalign()" ngx_feature="posix_memalign()"
ngx_feature_name="NGX_HAVE_POSIX_MEMALIGN" ngx_feature_name="NGX_HAVE_POSIX_MEMALIGN"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <stdlib.h>" ngx_feature_incs="#include <stdlib.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="void *p; int n; n = posix_memalign(&p, 4096, 4096); ngx_feature_test="void *p; int n; n = posix_memalign(&p, 4096, 4096)"
if (n != 0) return 1"
. auto/feature . auto/feature
ngx_feature="memalign()" ngx_feature="memalign()"
ngx_feature_name="NGX_HAVE_MEMALIGN" ngx_feature_name="NGX_HAVE_MEMALIGN"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <stdlib.h> ngx_feature_incs="#include <stdlib.h>"
#include <malloc.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="void *p; p = memalign(4096, 4096); ngx_feature_test="void *p; p = memalign(4096, 4096)"
if (p == NULL) return 1"
. auto/feature . auto/feature
@ -845,54 +215,13 @@ ngx_feature_test="int id;
. auto/feature . 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"
NGX_LIBPTHREAD="-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="struct msghdr.msg_control"
ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL" ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <sys/socket.h> ngx_feature_incs="#include <sys/socket.h>"
#include <stdio.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="struct msghdr msg; ngx_feature_test="struct msghdr msg; msg.msg_control = NULL"
printf(\"%d\", (int) sizeof(msg.msg_control))"
. auto/feature . auto/feature
@ -900,105 +229,38 @@ ngx_feature="ioctl(FIONBIO)"
ngx_feature_name="NGX_HAVE_FIONBIO" ngx_feature_name="NGX_HAVE_FIONBIO"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <sys/ioctl.h> ngx_feature_incs="#include <sys/ioctl.h>
#include <stdio.h>
$NGX_INCLUDE_SYS_FILIO_H" $NGX_INCLUDE_SYS_FILIO_H"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="int i = FIONBIO; printf(\"%d\", i)" ngx_feature_test="int i; i = FIONBIO"
. auto/feature
ngx_feature="ioctl(FIONREAD)"
ngx_feature_name="NGX_HAVE_FIONREAD"
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 = FIONREAD; printf(\"%d\", i)"
. auto/feature . auto/feature
ngx_feature="struct tm.tm_gmtoff" ngx_feature="struct tm.tm_gmtoff"
ngx_feature_name="NGX_HAVE_GMTOFF" ngx_feature_name="NGX_HAVE_GMTOFF"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <time.h> ngx_feature_incs="#include <time.h>"
#include <stdio.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="struct tm tm; tm.tm_gmtoff = 0; ngx_feature_test="struct tm tm; tm.tm_gmtoff = 0"
printf(\"%d\", (int) tm.tm_gmtoff)"
. auto/feature . auto/feature
ngx_feature="struct dirent.d_namlen" ngx_feature="struct dirent.d_namlen"
ngx_feature_name="NGX_HAVE_D_NAMLEN" ngx_feature_name="NGX_HAVE_D_NAMLEN"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <dirent.h> ngx_feature_incs="#include <dirent.h>"
#include <stdio.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="struct dirent dir; dir.d_namlen = 0; ngx_feature_test="struct dirent dir; dir.d_namlen = 0"
printf(\"%d\", (int) dir.d_namlen)"
. auto/feature . auto/feature
ngx_feature="struct dirent.d_type" ngx_feature="struct dirent.d_type"
ngx_feature_name="NGX_HAVE_D_TYPE" ngx_feature_name="NGX_HAVE_D_TYPE"
ngx_feature_run=no ngx_feature_run=no
ngx_feature_incs="#include <dirent.h> ngx_feature_incs="#include <dirent.h>"
#include <stdio.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
ngx_feature_test="struct dirent dir; dir.d_type = DT_REG; 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="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)"
ngx_feature_name="NGX_HAVE_LEVEL1_DCACHE_LINESIZE"
ngx_feature_run=no
ngx_feature_incs=
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)"
. 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 . auto/feature

View file

@ -10,8 +10,6 @@ fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol; 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 GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

View file

@ -9,8 +9,6 @@ fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol; 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 GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

View file

@ -1,99 +1,73 @@
types { types {
text/html html htm shtml; text/html html htm shtml;
text/css css; text/css css;
text/xml xml; text/xml xml;
image/gif gif; image/gif gif;
image/jpeg jpeg jpg; image/jpeg jpeg jpg;
application/javascript js; application/x-javascript js;
application/atom+xml atom; application/atom+xml atom;
application/rss+xml rss; application/rss+xml rss;
text/mathml mml; text/mathml mml;
text/plain txt; text/plain txt;
text/vnd.sun.j2me.app-descriptor jad; text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml; text/vnd.wap.wml wml;
text/x-component htc; text/x-component htc;
image/avif avif; image/png png;
image/png png; image/tiff tif tiff;
image/svg+xml svg svgz; image/vnd.wap.wbmp wbmp;
image/tiff tif tiff; image/x-icon ico;
image/vnd.wap.wbmp wbmp; image/x-jng jng;
image/webp webp; image/x-ms-bmp bmp;
image/x-icon ico; image/svg+xml svg;
image/x-jng jng;
image/x-ms-bmp bmp;
font/woff woff; application/java-archive jar war ear;
font/woff2 woff2; application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.ms-excel xls;
application/vnd.ms-powerpoint ppt;
application/vnd.wap.wmlc wmlc;
application/vnd.wap.xhtml+xml xhtml;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
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/zip zip;
application/java-archive jar war ear; application/octet-stream bin exe dll;
application/json json; application/octet-stream deb;
application/mac-binhex40 hqx; application/octet-stream dmg;
application/msword doc; application/octet-stream eot;
application/pdf pdf; application/octet-stream iso img;
application/postscript ps eps ai; application/octet-stream msi msp msm;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/wasm wasm;
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; audio/midi mid midi kar;
application/octet-stream deb; audio/mpeg mp3;
application/octet-stream dmg; audio/x-realaudio ra;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar; video/3gpp 3gpp 3gp;
audio/mpeg mp3; video/mpeg mpeg mpg;
audio/ogg ogg; video/quicktime mov;
audio/x-m4a m4a; video/x-flv flv;
audio/x-realaudio ra; video/x-mng mng;
video/x-ms-asf asx asf;
video/3gpp 3gpp 3gp; video/x-ms-wmv wmv;
video/mp2t ts; video/x-msvideo avi;
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;
} }

View file

@ -96,17 +96,18 @@ http {
# HTTPS server # HTTPS server
# #
#server { #server {
# listen 443 ssl; # listen 443;
# server_name localhost; # server_name localhost;
# ssl on;
# ssl_certificate cert.pem; # ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m; # ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5; # ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_prefer_server_ciphers on; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / { # location / {
# root html; # root html;

View file

@ -1,17 +0,0 @@
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;

View file

@ -1,17 +0,0 @@
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;

View file

@ -13,9 +13,3 @@ unicode2nginx by Maxim Dounin
configuration file format. configuration file format.
Two generated full maps for windows-1251 and koi8-r. 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/.

View file

@ -10,7 +10,7 @@
# Needs perl 5.6 or later. # Needs perl 5.6 or later.
# Written by Maxim Dounin, mdounin@mdounin.ru # Written by Maxim Dounin, mdounin@rambler-co.ru
############################################################################### ###############################################################################
@ -33,10 +33,7 @@ while (<>) {
# Produce UTF-8 sequence from character code; # Produce UTF-8 sequence from character code;
my $un_utf8 = join('', my $un_utf8 = join('', map { sprintf("%02X", $_) } unpack("C*", pack("U", hex($un_code))));
map { sprintf("%02X", $_) }
unpack("U0C*", pack("U", hex($un_code)))
);
print " $cs_code $un_utf8 ; $un_name\n"; print " $cs_code $un_utf8 ; $un_name\n";

View file

@ -1,4 +0,0 @@
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

View file

@ -1 +0,0 @@
setlocal commentstring=#\ %s

View file

@ -1,11 +0,0 @@
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#

File diff suppressed because it is too large Load diff

View file

@ -1,41 +1,53 @@
VER= $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ VER= $(shell grep 'define NGINX_VERSION' src/core/nginx.h \
| sed -e 's/^.*"\(.*\)".*/\1/') | sed -e 's/^.*\"\(.*\)\"/\1/')
NGINX= nginx-$(VER) NGINX= nginx-$(VER)
TEMP= tmp TEMP= tmp
XSLS?= xslscript.pl CP= $(HOME)/java
define XSLScript
javavm -cp $(CP)/xsls/saxon.jar:$(CP)/xsls/xsls.jar \
com.pault.StyleSheet \
-x com.pault.XX -y com.pault.XX \
$(1) docs/xsls/dump.xsls \
| awk 'BEGIN{e=0}/^\n*$$/{e=1;next}{if(e){print"";e=0};print}' > $(2)
if [ ! -s $(2) ]; then rm $(2); fi; test -s $(2)
endef
define XSLT
xsltproc $(shell echo $4 \
| sed -e "s/\([^= ]*\)=\([^= ]*\)/--param \1 \"'\2'\"/g") \
$3 $1 \
> $(HTML)/$(strip $(2))
endef
all: changes
changes: $(TEMP)/$(NGINX)/CHANGES.ru \ changes: $(TEMP)/$(NGINX)/CHANGES.ru \
$(TEMP)/$(NGINX)/CHANGES $(TEMP)/$(NGINX)/CHANGES
$(TEMP)/$(NGINX)/CHANGES.ru: docs/dtd/changes.dtd \ $(TEMP)/$(NGINX)/CHANGES.ru: docs/xml/nginx/changes.xml \
docs/xml/nginx/changes.xml \
docs/xml/change_log_conf.xml \
docs/xslt/changes.xslt docs/xslt/changes.xslt
mkdir -p $(TEMP)/$(NGINX) test -d $(TEMP)/$(NGINX) || mkdir -p $(TEMP)/$(NGINX)
xmllint --noout --valid docs/xml/nginx/changes.xml xsltproc --param lang "'ru'" \
xsltproc --stringparam lang ru \ -o $(TEMP)/$(NGINX)/CHANGES.ru \
-o $@ docs/xslt/changes.xslt docs/xml/nginx/changes.xml docs/xslt/changes.xslt docs/xml/nginx/changes.xml
$(TEMP)/$(NGINX)/CHANGES: docs/dtd/changes.dtd \ $(TEMP)/$(NGINX)/CHANGES: docs/xml/nginx/changes.xml \
docs/xml/nginx/changes.xml \
docs/xml/change_log_conf.xml \
docs/xslt/changes.xslt docs/xslt/changes.xslt
mkdir -p $(TEMP)/$(NGINX) test -d $(TEMP)/$(NGINX) || mkdir -p $(TEMP)/$(NGINX)
xmllint --noout --valid docs/xml/nginx/changes.xml xsltproc --param lang "'en'" \
xsltproc --stringparam lang en \ -o $(TEMP)/$(NGINX)/CHANGES \
-o $@ docs/xslt/changes.xslt docs/xml/nginx/changes.xml docs/xslt/changes.xslt docs/xml/nginx/changes.xml
docs/xslt/changes.xslt: docs/xsls/changes.xsls docs/xslt/changes.xslt: docs/xsls/changes.xsls
$(XSLS) -o $@ $< $(call XSLScript, docs/xsls/changes.xsls, $@)

View file

@ -12,10 +12,10 @@
> >
<!ELEMENT change (para)* > <!ELEMENT change (para)* >
<!ATTLIST change type (bugfix | feature | change | security | workaround) #IMPLIED > <!ATTLIST change type (bugfix | feature | change | workaround) #IMPLIED >
<!ELEMENT para (#PCDATA | at | br | nobr)* > <!ELEMENT para (#PCDATA | at | br | nobr)* >
<!ATTLIST para lang (ru | en) #REQUIRED > <!ATTLIST para lang (ru | en) #IMPLIED >
<!ELEMENT at EMPTY > <!ELEMENT at EMPTY >
<!ELEMENT br EMPTY > <!ELEMENT br EMPTY >

View file

@ -1,19 +1,18 @@
<!DOCTYPE html>
<html> <html>
<head> <head>
<title>Error</title> <title>The page is temporarily unavailable</title>
<style> <style>
html { color-scheme: light dark; } body { font-family: Tahoma, Verdana, Arial, sans-serif; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style> </style>
</head> </head>
<body> <body bgcolor="white" text="black">
<h1>An error occurred.</h1> <table width="100%" height="100%">
<p>Sorry, the page you are looking for is currently unavailable.<br/> <tr>
Please try again later.</p> <td align="center" valign="middle">
<p>If you are the system administrator of this resource then you should check The page you are looking for is temporarily unavailable.<br/>
the error log for details.</p> Please try again later.
<p><em>Faithfully yours, nginx.</em></p> </td>
</tr>
</table>
</body> </body>
</html> </html>

View file

@ -1,23 +1,8 @@
<!DOCTYPE html>
<html> <html>
<head> <head>
<title>Welcome to nginx!</title> <title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head> </head>
<body> <body bgcolor="white" text="black">
<h1>Welcome to nginx!</h1> <center><h1>Welcome to nginx!</h1></center>
<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> </body>
</html> </html>

View file

@ -1,214 +0,0 @@
.\"
.\" Copyright (C) 2010, 2019 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 November 5, 2020
.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 e 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, a mail proxy server, and a generic
TCP/UDP 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 e Ar file
Use an alternative error log
.Ar file .
Special value
.Cm stderr
indicates that the standard error output should be used.
.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
Same as
.Fl t ,
but additionally dump configuration files to standard output.
.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 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 Mt igor@sysoev.ru .
.Pp
This manual page was originally written by
.An Sergey A. Osokin Aq Mt osa@FreeBSD.org.ru
as a result of compiling many
.Nm
documents from all over the world.

View file

@ -1,7 +1,5 @@
/* /*
* Copyright (C) 2002-2021 Igor Sysoev * Copyright (C) 2002-2010 Igor Sysoev
* Copyright (C) 2011-2022 Nginx, Inc.
* All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -12,10 +10,10 @@
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

View file

@ -1,3 +1,4 @@
Documentation is available at http://nginx.org The Russian documentation is available at http://sysoev.ru/nginx/
The English documentation is available at http://nginx.net

View file

@ -1,4 +1,4 @@
<?xml version="1.0" ?> <?xml version="1.0" encoding="KOI8-R" ?>
<!DOCTYPE configuration SYSTEM "../dtd/change_log_conf.dtd" > <!DOCTYPE configuration SYSTEM "../dtd/change_log_conf.dtd" >
<configuration> <configuration>
@ -9,14 +9,14 @@
<indent> </indent> <indent> </indent>
<changes lang="ru"> <changes lang="ru">
<title>Изменения в </title> <title>Изменения в </title>
<length>66</length> <length>66</length>
<bugfix>Исправление</bugfix> <bugfix>Исправление</bugfix>
<feature>Добавление</feature> <feature>Добавление</feature>
<change>Изменение</change> <change>Изменение</change>
<security>Безопасность</security> <security>Безопасность</security>
<workaround>Изменение</workaround> <workaround>Изменение</workaround>
</changes> </changes>
<changes lang="en"> <changes lang="en">

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more