Compare commits
134 commits
quic
...
stable-0.7
Author | SHA1 | Date | |
---|---|---|---|
|
ee22c0a33b | ||
|
2c80cff285 | ||
|
e673d7c5c9 | ||
|
0346321da5 | ||
|
364399a29c | ||
|
459ed367fc | ||
|
5e089f4eca | ||
|
1613129672 | ||
|
a9166b8255 | ||
|
bbc52b9b28 | ||
|
813d95d705 | ||
|
aad4528125 | ||
|
95c86bc8b4 | ||
|
d53c2ebaa3 | ||
|
0fa6d231bc | ||
|
87fc2486af | ||
|
86fa681d16 | ||
|
784e96770e | ||
|
31ada09e06 | ||
|
9e711c55b6 | ||
|
d8020e69f5 | ||
|
4bda43e5b9 | ||
|
7637e17aac | ||
|
f40f491092 | ||
|
8b6279ef16 | ||
|
8258c50bbb | ||
|
f93f77f431 | ||
|
64a572cb8c | ||
|
584e7aefb0 | ||
|
b61109cc00 | ||
|
fc9853f61c | ||
|
8b45b8d1b4 | ||
|
bb699ffdb2 | ||
|
9e81dfc1d4 | ||
|
54f0e8ae0a | ||
|
5ff6279efa | ||
|
8a0e2616c2 | ||
|
3baed8e663 | ||
|
f3a89a2cd3 | ||
|
e6365cd48e | ||
|
edebdd6404 | ||
|
b1a13a3501 | ||
|
974c49330c | ||
|
5427dc9ee5 | ||
|
d916bacca5 | ||
|
47762239ef | ||
|
68a58c361d | ||
|
838eb01a8b | ||
|
eee52d16e8 | ||
|
d13451937a | ||
|
6eb6500651 | ||
|
d1378313b6 | ||
|
ac11ecdcb2 | ||
|
6f400f8a46 | ||
|
9d87953f67 | ||
|
7ac538bd2a | ||
|
8059c8bb5c | ||
|
553388bca1 | ||
|
45ccf9336a | ||
|
f846765797 | ||
|
651ae60661 | ||
|
324484a59c | ||
|
70a7d24817 | ||
|
87706c49c3 | ||
|
313e559485 | ||
|
a5b05e329f | ||
|
841bb0752b | ||
|
3f326eb3b5 | ||
|
d53377900f | ||
|
b4d638cfe6 | ||
|
5b910b0880 | ||
|
b0842a2a7d | ||
|
09dd51fe1f | ||
|
d657043fe1 | ||
|
971e495c55 | ||
|
0980938054 | ||
|
e7d583d555 | ||
|
acd17d7b4b | ||
|
d0be36af24 | ||
|
332c854d50 | ||
|
a2939c14c8 | ||
|
648c01365f | ||
|
c2c30b26a2 | ||
|
ddfa019fc2 | ||
|
74007f8ed3 | ||
|
50e7dc1524 | ||
|
7119a20a10 | ||
|
aaf6f614ba | ||
|
9a7f7e4578 | ||
|
8d1d7b5aaa | ||
|
66e573174e | ||
|
55cec826e6 | ||
|
462ab8826d | ||
|
29db22923f | ||
|
12138838b6 | ||
|
8cec66ecd4 | ||
|
c11383c4f2 | ||
|
e87d9b3151 | ||
|
b75b08ef6b | ||
|
b6c39a5510 | ||
|
b47a13102d | ||
|
3b3894d6bf | ||
|
05c22e7b4b | ||
|
9973606ec4 | ||
|
a8b6c54f2c | ||
|
896d915479 | ||
|
26b4d3a7cb | ||
|
4758710b63 | ||
|
cec15be7b2 | ||
|
79d498074b | ||
|
4645fa7c02 | ||
|
d6b442b8d4 | ||
|
529827109f | ||
|
7e4621bfa3 | ||
|
7d0fecc6cb | ||
|
1ab7430cdb | ||
|
ae1a33254a | ||
|
aa6b2514cf | ||
|
36f31e9e5e | ||
|
0fd29f9f30 | ||
|
d15bfa03e6 | ||
|
fea94dde50 | ||
|
7e726e8111 | ||
|
0e385d96b7 | ||
|
6752d8734a | ||
|
4bf4a52828 | ||
|
ae6cd36c40 | ||
|
7a2e47f51d | ||
|
f72368522d | ||
|
4870682da7 | ||
|
2f2fb78ff8 | ||
|
8b3cfa8884 | ||
|
743ecf05b6 | ||
|
fc357e1f79 |
530 changed files with 28100 additions and 162134 deletions
389
README
389
README
|
@ -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
|
|
|
@ -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"
|
||||||
|
|
|
@ -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='@&&|
|
||||||
'
|
'
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
107
auto/cc/conf
107
auto/cc/conf
|
@ -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"
|
||||||
|
|
31
auto/cc/gcc
31
auto/cc/gcc
|
@ -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
|
||||||
|
|
||||||
|
|
40
auto/cc/icc
40
auto/cc/icc
|
@ -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()
|
||||||
|
|
60
auto/cc/msvc
60
auto/cc/msvc
|
@ -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='@<<
|
||||||
'
|
'
|
||||||
|
|
64
auto/cc/name
64
auto/cc/name
|
@ -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
|
||||||
|
|
10
auto/cc/owc
10
auto/cc/owc
|
@ -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="\\"
|
||||||
|
|
38
auto/cc/sunc
38
auto/cc/sunc
|
@ -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
29
auto/configure
vendored
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
27
auto/feature
27
auto/feature
|
@ -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*
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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*
|
||||||
|
|
|
@ -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
|
||||||
|
|
134
auto/install
134
auto/install
|
@ -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
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
113
auto/lib/md5/conf
Normal 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
95
auto/lib/md5/make
Normal 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
21
auto/lib/md5/makefile.bcc
Normal 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
|
21
auto/lib/md5/makefile.msvc
Normal file
21
auto/lib/md5/makefile.msvc
Normal 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
10
auto/lib/md5/makefile.owc
Normal 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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
|
|
||||||
# Copyright (C) Igor Sysoev
|
# Copyright (C) Igor Sysoev
|
||||||
# Copyright (C) Nginx, Inc.
|
|
||||||
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|
|
@ -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 \
|
|
||||||
)
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
77
auto/lib/sha1/conf
Normal 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
95
auto/lib/sha1/make
Normal 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
|
21
auto/lib/sha1/makefile.bcc
Normal file
21
auto/lib/sha1/makefile.bcc
Normal 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
|
21
auto/lib/sha1/makefile.msvc
Normal file
21
auto/lib/sha1/makefile.msvc
Normal 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
|
10
auto/lib/sha1/makefile.owc
Normal file
10
auto/lib/sha1/makefile.owc
Normal 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
39
auto/lib/test
Normal 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*
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
10
auto/lib/zlib/patch.zlib.h
Normal file
10
auto/lib/zlib/patch.zlib.h
Normal 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
302
auto/make
|
@ -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
|
|
||||||
|
|
178
auto/module
178
auto/module
|
@ -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
|
|
1703
auto/modules
1703
auto/modules
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||||
|
|
372
auto/options
372
auto/options
|
@ -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
|
||||||
./*)
|
./*)
|
||||||
|
|
25
auto/os/conf
25
auto/os/conf
|
@ -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
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
|
@ -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
276
auto/os/features
Normal 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
|
|
@ -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
|
||||||
|
|
187
auto/os/linux
187
auto/os/linux
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
315
auto/sources
315
auto/sources
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
77
auto/summary
77
auto/summary
|
@ -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"
|
|
||||||
|
|
77
auto/threads
77
auto/threads
|
@ -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
|
||||||
|
|
|
@ -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*
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
856
auto/unix
Normal file → Executable 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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
154
conf/mime.types
154
conf/mime.types
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
|
@ -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;
|
|
|
@ -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/.
|
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
|
@ -1 +0,0 @@
|
||||||
setlocal commentstring=#\ %s
|
|
|
@ -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
|
@ -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, $@)
|
||||||
|
|
||||||
|
|
|
@ -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 >
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
214
docs/man/nginx.8
214
docs/man/nginx.8
|
@ -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.
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
Loading…
Reference in a new issue