angie
This commit is contained in:
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
Tongsuo-8.4.0/
|
Tongsuo-8.4.0/
|
||||||
nginx-1.26.2/
|
nginx-1.26.2/
|
||||||
|
angie-Angie-1.11.8/
|
||||||
.git/
|
.git/
|
||||||
docs/
|
docs/
|
||||||
java-client/
|
java-client/
|
||||||
test/
|
test/
|
||||||
push.sh
|
push.sh
|
||||||
commit.sh
|
commit.sh
|
||||||
|
|||||||
+15
-12
@@ -1,5 +1,5 @@
|
|||||||
# gateway:v2 - GMSSL Gateway (Nginx 1.26.2 + Tongsuo 8.4.0)
|
# gateway:v2 - GMSSL Gateway (Angie 1.11.8 + Tongsuo 8.4.0)
|
||||||
# Builds TongsuoSSL (static) and links Nginx against it to provide SM2/SM3/SM4 GMSSL support.
|
# Builds TongsuoSSL (static) and links Angie against it to provide SM2/SM3/SM4 GMSSL + NTLS support.
|
||||||
FROM ubuntu:24.04 AS build
|
FROM ubuntu:24.04 AS build
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
@@ -23,20 +23,21 @@ RUN ./config --prefix=/opt/tongsuo-8.4.0 --libdir=lib64 no-shared no-zlib no-thr
|
|||||||
&& make -j$(nproc) \
|
&& make -j$(nproc) \
|
||||||
&& make install_sw
|
&& make install_sw
|
||||||
|
|
||||||
# ---- Nginx 1.26.2 (linked against Tongsuo) ----
|
# ---- Angie 1.11.8 (linked against Tongsuo, NTLS enabled) ----
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY nginx-1.26.2.tar.gz /build/
|
COPY angie-1.11.8.tar.gz /build/
|
||||||
COPY no-server-header.patch /build/
|
COPY no-server-header-angie.patch /build/
|
||||||
RUN tar -xzf nginx-1.26.2.tar.gz \
|
RUN tar -xzf angie-1.11.8.tar.gz \
|
||||||
&& patch -p1 -d nginx-1.26.2 < no-server-header.patch
|
&& patch -p1 -d angie-Angie-1.11.8 < no-server-header-angie.patch
|
||||||
WORKDIR /build/nginx-1.26.2
|
WORKDIR /build/angie-Angie-1.11.8
|
||||||
RUN ./configure \
|
RUN ./configure \
|
||||||
--prefix=/usr/local/nginx \
|
--prefix=/usr/local/nginx \
|
||||||
--with-http_ssl_module \
|
--with-http_ssl_module \
|
||||||
--with-stream \
|
|
||||||
--with-stream_ssl_module \
|
|
||||||
--with-http_v2_module \
|
--with-http_v2_module \
|
||||||
--with-http_realip_module \
|
--with-http_realip_module \
|
||||||
|
--with-stream \
|
||||||
|
--with-stream_ssl_module \
|
||||||
|
--with-ntls \
|
||||||
--with-cc-opt="-I/opt/tongsuo-8.4.0/include" \
|
--with-cc-opt="-I/opt/tongsuo-8.4.0/include" \
|
||||||
--with-ld-opt="-L/opt/tongsuo-8.4.0/lib64 -lssl -lcrypto -ldl -lpthread" \
|
--with-ld-opt="-L/opt/tongsuo-8.4.0/lib64 -lssl -lcrypto -ldl -lpthread" \
|
||||||
&& make -j$(nproc) \
|
&& make -j$(nproc) \
|
||||||
@@ -61,10 +62,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
COPY --from=build /usr/local/nginx /usr/local/nginx
|
COPY --from=build /usr/local/nginx /usr/local/nginx
|
||||||
|
|
||||||
# Rename the executable to "gateway"
|
# Rename the executable to "gateway"
|
||||||
RUN mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/gateway
|
RUN mv /usr/local/nginx/sbin/angie /usr/local/nginx/sbin/gateway
|
||||||
|
|
||||||
# Built-in main nginx config (project root nginx.conf)
|
# Built-in main config (project root nginx.conf). Angie reads angie.conf by
|
||||||
|
# default, so install the project config under that name as well.
|
||||||
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
|
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
|
||||||
|
RUN cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/angie.conf
|
||||||
|
|
||||||
# The config directory is mounted by the test startup script to /usr/local/nginx/conf/man.
|
# The config directory is mounted by the test startup script to /usr/local/nginx/conf/man.
|
||||||
# Pre-create a placeholder http include so the server starts when nothing is mounted.
|
# Pre-create a placeholder http include so the server starts when nothing is mounted.
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
|||||||
|
/Makefile
|
||||||
|
/objs/
|
||||||
|
/tmp/
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
^objs/
|
||||||
|
^Makefile$
|
||||||
@@ -0,0 +1,515 @@
|
|||||||
|
9b7f60d5a3f1aaf670f8582290d23cd94dee455c release-0.1.0
|
||||||
|
8d982b63835333671eef7328f3f22b7b94bae89f release-0.1.1
|
||||||
|
abb48d8901db003d882cd13da7cbc8157633cf90 release-0.1.2
|
||||||
|
6661b359ae7a6f52bf3f3361445a8a282bb7a2f3 release-0.1.3
|
||||||
|
eb3e6f4a71234746ec198bda68d1d2653a2ab3ae release-0.1.4
|
||||||
|
7bdcc2986461828a7bd4a84252a3d38e43a3c259 release-0.1.5
|
||||||
|
d64fb35d460c033ef1787d62066d52d6a96bb814 release-0.1.6
|
||||||
|
16bd9e404edbaf25cc87744f436de434311c9c67 release-0.1.7
|
||||||
|
80d1b8ac99938684514a0e7c19e5a3acc132d0e1 release-0.1.8
|
||||||
|
3c8a2d1b4a9f58460175ccea9047453f1fd26974 release-0.1.9
|
||||||
|
d4c65edf5641239bc01cd13e08e8ac9d48ca46f1 release-0.1.10
|
||||||
|
ea33690bb70d78679827147c7bc1f067e60706ab release-0.1.11
|
||||||
|
9c48a27a4c8db34043336e7974c2fa1fb4ecb411 release-0.1.12
|
||||||
|
c97382e23db422ad5583bbf3c97622cf638ac540 release-0.1.13
|
||||||
|
5a51f0faaec1b0b49f6111e76902356dea0f16e5 release-0.1.14
|
||||||
|
e614798b05624f3eef41b1a99185a9a3a716d4ad release-0.1.15
|
||||||
|
8c54eddd0d40d53b0d707b094fb383125661fe15 release-0.1.16
|
||||||
|
6d6d0a98dd7f1c707aa9e0e1d7936d3ffbcd926e release-0.1.17
|
||||||
|
bf7ea161a4162eae5e50e31df79380669d771b9b release-0.1.18
|
||||||
|
03f69de22a94c6160d7e39064adf92eff2d38ebc release-0.1.19
|
||||||
|
d83e877db3d11bfdee4f7d81495a8507dd4de7a2 release-0.1.20
|
||||||
|
74ca38fe6b0519232729ee0f89343dee1bd4030a release-0.1.21
|
||||||
|
2cd7dd3f4454441cf2686d5f9db332ac34b16871 release-0.1.22
|
||||||
|
53b1d3c0823607dac8986379abf180c69ef40543 release-0.1.23
|
||||||
|
2425122ce59a4aa20978b6fc1585ecfbb8fe95a4 release-0.1.24
|
||||||
|
f42fb555bfa8ebcdc8c3ba89ddc87a5404d50c79 release-0.1.25
|
||||||
|
2ccf83b0a58fe5395027d50d0e093f47ae4a30f6 release-0.1.26
|
||||||
|
f33a238c54b45b244e1170118cb47b00e0311509 release-0.1.27
|
||||||
|
c08f3b619f2d07403d96ef3e853d590ba6721bae release-0.1.28
|
||||||
|
78c5d0ca5534e6831648d8c665d84ccd25466963 release-0.1.29
|
||||||
|
f1de60e1d6e2a81d9dce8e52ad4e057e2fa727e1 release-0.1.30
|
||||||
|
7ac276ae23ee1f654bae682cf610702569dc18b1 release-0.1.31
|
||||||
|
f7a1e56cb028b81b4e8d2ad0b8624b79817c2ab4 release-0.1.32
|
||||||
|
f06915e7541e391f8d5de9d5c78f37cb7e0714d3 release-0.1.33
|
||||||
|
91ebac2b642ac87af9e373e49c95550cb32f275a release-0.1.34
|
||||||
|
8aff3da47a73d8472f752a8cb4afa865f506da38 release-0.1.35
|
||||||
|
bd61ae9824b86d3d08c19594f36ab285c37c8190 release-0.1.36
|
||||||
|
8d8cdeae63365c62d24c14a2f39f955a0a36a472 release-0.1.37
|
||||||
|
21e79799ccce302739d90f96d97469801d975ddf release-0.1.38
|
||||||
|
1b95ce14da143ad93913b370f6c3d4bcdb2d7e56 release-0.1.39
|
||||||
|
8c1e98a7887078b2be62248a00389f43a3981b1c release-0.1.40
|
||||||
|
e2afcd3c05080f09e4c3329cc70c642a806afacd release-0.1.41
|
||||||
|
05e7aac862dffec3da88758fb6292d12ebc65a09 release-0.1.42
|
||||||
|
e29e049583b7729e1bf6d6ef50f3c2c7b4c1d347 release-0.1.43
|
||||||
|
018e1680e63e67e3cb71d2873ebf4536cbe05bdb release-0.1.44
|
||||||
|
896421c957555fb48ea1e117ba5d08485a0d7e8f release-0.1.45
|
||||||
|
3d08ec707b903f7208a88c7d2e64628fbd65017c release-0.2.0
|
||||||
|
662f22e52359f37927a6d90d0fa1c99f1f1b0afb release-0.2.1
|
||||||
|
5d2efa6dcb243990fe996d6a943fa32b6f8d77be release-0.2.2
|
||||||
|
752281ea9baab0d1ab20b4902a1489e174e933dd release-0.2.3
|
||||||
|
66e30811238f74898ecc3af1217f59fa437f69ed release-0.2.4
|
||||||
|
9a9eb6db619d894bfa74504f1276e94b3af451c6 release-0.2.5
|
||||||
|
9f4c616543cfe000b83dce2a5aa91ffee79a6cbf release-0.2.6
|
||||||
|
d0edc7fbdd6818bee5ce9de76a0727f4b4834ac8 release-0.3.0
|
||||||
|
a30ba9a774820d7572ac3bb2b64f898f385ddc8a release-0.3.1
|
||||||
|
4a22404848dbc836922440272109a7fd1c66032c release-0.3.2
|
||||||
|
1b6ff983ff9023fda15ac65df64a879b5b4e9130 release-0.3.3
|
||||||
|
f429b0c1b0fcd6e17be3c982b968cfef12dd613b release-0.3.4
|
||||||
|
c5b3840f45f2be8f6f250f840ad5a5441bb2e213 release-0.3.5
|
||||||
|
1d60216d8a154c9fd11927b8ea44d52a428442ea release-0.3.6
|
||||||
|
63235d1251b09925d271ab7c4850128e46155e43 release-0.3.7
|
||||||
|
1c58129efd212982b58cc3b140eb0f33aa0ecaed release-0.3.8
|
||||||
|
1554e2715da7e0ae4f0517f93b256954f7187a78 release-0.3.9
|
||||||
|
45451e2bd4e569fa9a4a7e22873555c495458b40 release-0.3.10
|
||||||
|
a381dbfba89761dcfd937d96492c22bcf74b3f95 release-0.3.11
|
||||||
|
5c4722028c83b0aebd5570a3ad6c25ff3cc32dd1 release-0.3.12
|
||||||
|
b0ca936302a1f6e634aad258e8c0ad0b512508e0 release-0.3.13
|
||||||
|
b0588acc338236df432ec695096187f1cdb27bc0 release-0.3.14
|
||||||
|
ae9893a534f15d2e125c5e04ed0246b8bdfd1cd1 release-0.3.15
|
||||||
|
1eeccd8d84b9f0db1b30c57362aa15bb0ab6860b release-0.3.16
|
||||||
|
47692f24b6a9a3ece34ba73f606209a9e310af63 release-0.3.17
|
||||||
|
327649bcd1d1cd3ac8f82cbf2dcea4e9a6525965 release-0.3.18
|
||||||
|
53364e4bf13b082dea34d052ce3bad60241a07ee release-0.3.19
|
||||||
|
41ebe041e17ba6b1c1c35b4cd5a76ddaf66382ab release-0.3.20
|
||||||
|
2d9e2177241bea4ffe9995b45cf37c5f397a5637 release-0.3.21
|
||||||
|
e61ab125bb95845de6b6f0d121cc6676dccb15c1 release-0.3.22
|
||||||
|
f74196d95806b469112f578f0cfd256882a04edb release-0.3.23
|
||||||
|
b1a028cd0ef503e4b1afd4bea1345d8ed6019fbc release-0.3.24
|
||||||
|
d13a00e89232c8a9e9b0e9edf0ca636b46572e8a release-0.3.25
|
||||||
|
4f081e29a12feaab5003609630e18b1a9ea73d8c release-0.3.26
|
||||||
|
5ff221b557e7451b5a1610bd02dfa3114c040136 release-0.3.27
|
||||||
|
4c133e2579ae10bcf8107d8920cb0ac07e218bbb release-0.3.28
|
||||||
|
db9b94ece460e01b3c81430b56eabf3a790f21c0 release-0.3.29
|
||||||
|
12ba30a9a5df0b71227a5186c5df4f5d1de00211 release-0.3.30
|
||||||
|
59ff011799ad87ebe2a80cc64b7036856fff955e release-0.3.31
|
||||||
|
4fd59502695d24c4c6d2076950a5d681a8447f44 release-0.3.32
|
||||||
|
dda5ccc238181bd6a8a4d1430ebf9d2e7daa84eb release-0.3.33
|
||||||
|
4293d38f54a00c651fef3477f20ed19b13d0e711 release-0.3.34
|
||||||
|
4703d62dda11b8c662084bd2ec6cae8a19eb3cf7 release-0.3.35
|
||||||
|
b41f4751dcbb8ba1c49708b8790bfe74cc412f2b release-0.3.36
|
||||||
|
9ab4f0470376d881fd8445c19b6fd1c0e8eacfbb release-0.3.37
|
||||||
|
37a1846c4589f72a2cdacb7bc81c5d5a043bd2d9 release-0.3.38
|
||||||
|
46d074f23ebfb8b08e50a5b8057d5f83aa3d7b8a release-0.3.39
|
||||||
|
0d7180677d4e112551bff30faa6192ee914ae54f release-0.3.40
|
||||||
|
cefeda63be8406957fd5ab334cdb594cb8e82a2d release-0.3.41
|
||||||
|
517aed19ef8091d2861503c78dbe923419052bbe release-0.3.42
|
||||||
|
61b96c329ea8397461d06d8728cfcb41e77c96d9 release-0.3.43
|
||||||
|
6593ae847f330ed5c89e91cecf341d659f5d1798 release-0.3.44
|
||||||
|
1021e80aaad5f10ab00109509a6f6e09627396e4 release-0.3.45
|
||||||
|
4768b98103c8a01c037a7ff99ef3cbd523618f24 release-0.3.46
|
||||||
|
8a0ad4dd3bd11d08ee402b47c38235092d78d8bf release-0.3.47
|
||||||
|
0dcbd0b4c70744846dd879b342949f538ccd2d17 release-0.3.48
|
||||||
|
05fd192d4abd7b7fdeb1208c34a8496dcebebceb release-0.3.49
|
||||||
|
e07578447781e3bcc818d6e297157e6b6905f9d5 release-0.3.50
|
||||||
|
c39c7d8626eaa77ea0934324eab994069bdafbe5 release-0.3.51
|
||||||
|
82545b073ba3571d14772785ee0f8baa82827658 release-0.3.52
|
||||||
|
e8e98b5d27d05fc448677863b8dec92641e0c07e release-0.3.53
|
||||||
|
29c4fea08831d2c313ec344d1fc00ae8bdae9cdc release-0.3.54
|
||||||
|
363e66a707a51e600810d24c57642cfb32824edc release-0.3.55
|
||||||
|
81a7540cd42dfdaafd2b841f9a17e2333b5f16e7 release-0.3.56
|
||||||
|
34692a1b7664ae55369cd0cf0384aff2913fad5f release-0.3.57
|
||||||
|
873b6299108d68dee0cdf8002d9b286e0fc56c20 release-0.3.58
|
||||||
|
34f1f3d0a03661656a70d0f09b6c2e5da3718ad8 release-0.3.59
|
||||||
|
5a2d138e1f0c74f708a17b8e80a8f339f96a7c37 release-0.3.60
|
||||||
|
e4e5c23f6c567ca660591633c0e57e1d4b7813e1 release-0.3.61
|
||||||
|
41355ed79ad7eb311757aa8e2896e4b539e0f190 release-0.4.0
|
||||||
|
37e1309ccd4ffba84ef0ee86ab59bdc00473ea21 release-0.4.1
|
||||||
|
f3959d47b6fe451b555ef943bf22356968b71b59 release-0.4.2
|
||||||
|
7279f57d8da5cde41b44170359b6608477ffa9b6 release-0.4.3
|
||||||
|
ff8335a6a995b7624a7cae6a8de3db0f2db234d0 release-0.4.4
|
||||||
|
c6bc0affc6d499f992081e55a0b76907888c4e89 release-0.4.5
|
||||||
|
7becaef7e2feb4bbb12d1a1fc1181541ed9fbe14 release-0.4.6
|
||||||
|
c0adce196301d8278fd72310de817f3333131fe7 release-0.4.7
|
||||||
|
6a8d82b5d093a9ec2d52cd1b307bb2654d6d41ab release-0.4.8
|
||||||
|
44c8828a301483307586bed2f756ff0611da6df9 release-0.4.9
|
||||||
|
0304a44ed89183b9bbe5fade80d449c41ce142bf release-0.4.10
|
||||||
|
20b02ba6466e3e7b316fa1bcdac92727ed495570 release-0.4.11
|
||||||
|
7d949bb2401407ffde2c4bb27f34fe3e5647a7cd release-0.4.12
|
||||||
|
f59c2e913fc842f9150c19ed3b6ce7f82ae25594 release-0.4.13
|
||||||
|
ca0d866dc817287724ab02bd541b4eb69c36f96a release-0.4.14
|
||||||
|
602f0706bc73a5a479205e457d53f72df187d60d release-0.5.0
|
||||||
|
994c084c7d37f6bc626743ce022e02baee158e69 release-0.5.1
|
||||||
|
933d02b82e225875805cae1b2c0d210218bdd12e release-0.5.2
|
||||||
|
ac94a13b7f0a14584e5b26929c1e9547f9601a30 release-0.5.3
|
||||||
|
5c6eaa1e148693f6f389024d6d3e2dbe46dc7256 release-0.5.4
|
||||||
|
6fc85f6b70f1c7b0fecf50e35aa7ee796269655d release-0.5.5
|
||||||
|
700834917245cb5d65290f0c03666c37ed92de68 release-0.5.6
|
||||||
|
8a0ab763230c97b1abd5b60805b98da4627eeae7 release-0.5.7
|
||||||
|
2d2dc78a4f7e2d10b5e85605087029867e5c0a12 release-0.5.8
|
||||||
|
d6b105ea57cd221d3b2a9cd6ed519e8f3095a49e release-0.5.9
|
||||||
|
2a5fb51756b97d69ffebe53ebb939606fe9afdc2 release-0.5.10
|
||||||
|
7da2d4a8bbda9d3115fec3562ad635700f62a39f release-0.5.11
|
||||||
|
39334fa835811b191c0c17233a89b7256441d79b release-0.5.12
|
||||||
|
1490b47915332464a43c03248427f615d1e743a5 release-0.5.13
|
||||||
|
d0592f08fa277d054cd13fdc34231438af5a72f7 release-0.5.14
|
||||||
|
f24e66dd01887589f68a95dab6e906f4798edecb release-0.5.15
|
||||||
|
47c36e1621d1cda52370d48f51d685072eb6ce9c release-0.5.16
|
||||||
|
94f5f13e9ae11a88ed7a9a1d57b576fcd2bbfbdb release-0.5.17
|
||||||
|
cc3985761c18c2af0f075a0b27f56ff4a7fb54dc release-0.5.18
|
||||||
|
7619b920402ff23f9ffb0313f690f5d1b78b4461 release-0.5.19
|
||||||
|
fbb2e631b71b87d8f2cbf6213c2d5d81759adec0 release-0.5.20
|
||||||
|
b716ed8a4f17b0face7e9d9e43584860d47be297 release-0.5.21
|
||||||
|
0f28f824db7cff15abd4c625b71475073c0ab3d0 release-0.5.22
|
||||||
|
fc26f2ab9ed22c2ab0bc40e61a7de35312c165b5 release-0.5.23
|
||||||
|
ddff52ce41c3ea55564cbb7778cf0ff034d91064 release-0.5.24
|
||||||
|
807456cd02efc23f9dbffb4ef4b8470c9f42d60a release-0.5.25
|
||||||
|
453bb505f7b4a99a5d09fc0349171f67469069f4 release-0.6.0
|
||||||
|
44c9ef5cbdc55e494ffb6fcd9189a64c59eec125 release-0.6.1
|
||||||
|
2da539f4e4ddf6a3a043131732ae4843766c074b release-0.6.2
|
||||||
|
d67825b26c6f9d0c65d98ef48a94eb6dca47560c release-0.6.3
|
||||||
|
c7f6bee25a57afaae7423dd3f57396a6c6426bba release-0.6.4
|
||||||
|
abe8fa85fc4cfeba1d1f6c3299833fa1a24d8c64 release-0.6.5
|
||||||
|
005c3f0cfe5e358678938f52a72c497fc6d48f50 release-0.6.6
|
||||||
|
78795a172defcd4da8e7d8f9ba35d09f944a749d release-0.6.7
|
||||||
|
1d50f112c24bd6f9613ec58edb10baff3a0d4284 release-0.6.8
|
||||||
|
229ae8ae4dd81246757ee36db5d0342d1d4f50c8 release-0.6.9
|
||||||
|
2ee18cd843f67e5d3e255b5ff823a214e324ce23 release-0.6.10
|
||||||
|
837ca119472249a6e4aa7405f839236264e7d3bf release-0.6.11
|
||||||
|
d48b4aca26efb1383a2b4086cf875c593763bf72 release-0.6.12
|
||||||
|
a507443eaff6e336715c9f541b1603d2fb6c623f release-0.6.13
|
||||||
|
096c5d87e5cda3e033f3bf6a8b799e6ebeb65dd3 release-0.6.14
|
||||||
|
50441ec55429a3c046d5a3068e84c0a29a910fd4 release-0.6.15
|
||||||
|
fa230fea927440279a4d78d9fa196414549076ed release-0.6.16
|
||||||
|
39fe12a98a78cc81ae5088a3f4fb76695471252f release-0.6.17
|
||||||
|
f5380ef2acce1a260f89279bb9f3c2926b3751f8 release-0.6.18
|
||||||
|
24fd1e3f3aab131b6a73442fc4c25fc588c42e1b release-0.6.19
|
||||||
|
96dac651aa9790a8d7820c4743eafed466bf8a8e release-0.6.20
|
||||||
|
30d71691708275f0652262479d0ad59e4fc092f3 release-0.6.21
|
||||||
|
70a1a2f1278887c694fdb4774da2eafc751dc135 release-0.6.22
|
||||||
|
4d4bfb88fd80ca3970ac07e92fe64ce42fcc0ab4 release-0.6.23
|
||||||
|
3187f4d6b7ba4e91d0068363910cccc4db4db562 release-0.6.24
|
||||||
|
5b79b04af7885c6481a8dfaf8625debd44fcd315 release-0.6.25
|
||||||
|
76a554b8caefba7fc4ec64dea74f132d8e46f798 release-0.6.26
|
||||||
|
25664a3ebcfefa81ddccd92844d02ef429e5957c release-0.6.27
|
||||||
|
4febe4ab99618134dfe4799dd138b9589970d831 release-0.6.28
|
||||||
|
0e4cac34fdeacd6f3ee4ccab260cac8e05991dcb release-0.6.29
|
||||||
|
0e9cfdcc3297193fc6e3946903445026983f4e24 release-0.6.30
|
||||||
|
cd77efde51beccbc43571e2133fc9ff904bc904d release-0.6.31
|
||||||
|
bfc21bd03ee1ac2f567039a0f1e54b920bf41438 release-0.7.0
|
||||||
|
28d6145c2cc034ba5f0a6c99e89333a11c8e639a release-0.7.1
|
||||||
|
d92fcc449ea7ac63b3e2d5acf6b52cfdffb97b01 release-0.7.2
|
||||||
|
f98c073f4726d2c682537b7db487ff7981180c64 release-0.7.3
|
||||||
|
373f71eeae24c47a75aafcc7b4a70f608f6d64da release-0.7.4
|
||||||
|
2b553af2283e57ae1dcd5625bd0f0093029b0ead release-0.7.5
|
||||||
|
f3564115dcea2bfc23bb74386f35ebd053c3ebdf release-0.7.6
|
||||||
|
91804b7e8599bc293b726669a41bffedfb771c29 release-0.7.7
|
||||||
|
3718b87db31e149f3c707b13b1ea46b2d878af94 release-0.7.8
|
||||||
|
30f4b6ae25ebfae5269441d90dc9368e59439eb3 release-0.7.9
|
||||||
|
108a9dedac1c1ea07918cec26e5d4742054bdffc release-0.7.10
|
||||||
|
15eb5f24e77304dd5464a4fc127f8a9686253c95 release-0.7.11
|
||||||
|
8471b5b322472374d08888deefd7cbb8eea23f5f release-0.7.12
|
||||||
|
5c066c4111c4e6aa1a75e6e6b638b9463c63ffe5 release-0.7.13
|
||||||
|
4214e0d68283b6839d8dbcc0e6c2ed2ceb7ecf3c release-0.7.14
|
||||||
|
5f25dbefdfc460784bcd68b5e153cbfb52285bea release-0.7.15
|
||||||
|
3cb907dbe1ac78d5e90e25a7386b4d9275dec918 release-0.7.16
|
||||||
|
f89ecf6cce1f7e234930bfdec515f2b0dbc2104a release-0.7.17
|
||||||
|
617856e960e5f774ebea39daa8c8a9fa6c7971ef release-0.7.18
|
||||||
|
19d3d094074fa41b69fee8f4df4f625f786e56bf release-0.7.19
|
||||||
|
953916269a6bf5663b2b4487adcdba519e30972c release-0.7.20
|
||||||
|
161af6f3799ca5cafc6db3de7107a515ff45b02c release-0.7.21
|
||||||
|
c63554e156f35fa285cde4be0465406a9af8a470 release-0.7.22
|
||||||
|
a00b7cdfff139bcfeb7b6a149b914c3dc238bb03 release-0.7.23
|
||||||
|
55b66687364864fff43abe95b0076b08c34298cd release-0.7.24
|
||||||
|
d86064d065934d567ca1d5e6ed440afb4dc9f43d release-0.7.25
|
||||||
|
40845b8e74c1432be69e3dcbfa09c2fc0abfa6a2 release-0.7.26
|
||||||
|
eaa7ae0eabf2e8fb4c2a6eea6dbf7c7059bd2a1f release-0.7.27
|
||||||
|
c0e67047b28230753282197c908bd54b7622d0ca release-0.7.28
|
||||||
|
c100ea4dcb5a01f4e46aea056744da7936a647d0 release-0.7.29
|
||||||
|
6237d6d14d0836e531a5edb5676f5378102bed55 release-0.7.30
|
||||||
|
1d7b579cb2ef5ac97de07339a8d0110decb02e87 release-0.7.31
|
||||||
|
e4c45a6644b3fafd3ae6fb7a123994fbd063fa94 release-0.7.32
|
||||||
|
89879bd4842f9c41262046b4fcb5c6dfad44471b release-0.7.33
|
||||||
|
9b7073013fb4a7dbfb98566d6e51790c9856e684 release-0.7.34
|
||||||
|
dcb3e3b9e431c0b16ba07748e0e5f7588809fc74 release-0.7.35
|
||||||
|
a93d75e85444dbc7819695bb562f9ed0d0ada616 release-0.7.36
|
||||||
|
aa7cbe2274988dd061b9e7657c0aab0227b6f8a8 release-0.7.37
|
||||||
|
cbab7f1f0bd665a488b7e61977d34f784463127a release-0.7.38
|
||||||
|
9cc6c57f9e861ca6c2139cf7cc4149f9da4cfbc9 release-0.7.39
|
||||||
|
71f1def772a6a9bf191d3ba735dfff3015dca0b3 release-0.7.40
|
||||||
|
2d70f728ace407273b2ebe992a8e0108258e90fd release-0.7.41
|
||||||
|
1d834535ebbef99ab9d1bf3d73a4b8442dee5c59 release-0.7.42
|
||||||
|
6d3d9ec666f492955c49803bfb2297de8a194bb9 release-0.7.43
|
||||||
|
c1ad283574ffe40b907b3724b6ccd982da881238 release-0.7.44
|
||||||
|
6c136bc04fd6b42e3bcb6742702d41021ae45c2a release-0.7.45
|
||||||
|
703d8f1c0dc4cbbdacfb6ca8197fd57b9f469fee release-0.7.46
|
||||||
|
5defb7934366092e17c716247c6af4ff602acd81 release-0.7.47
|
||||||
|
fff21c2887a47de72508a113d1b200986ce7a02c release-0.7.48
|
||||||
|
5a1c090650100d8b61a565e8b6b02195bffbaa0b release-0.7.49
|
||||||
|
c94835265b861c4fbf244b23b8a653e3a7b2441f release-0.7.50
|
||||||
|
7d07b6f2f2bd8be3b2a2185a92ec98048f71041a release-0.7.51
|
||||||
|
1ada8e8c4d44b69dac6a5950cc7ae32671cb5986 release-0.7.52
|
||||||
|
7ca9078ba16e1b79087da9dd079f27c7fa9d6810 release-0.7.53
|
||||||
|
548d03ac479a1c25eeaa7f58c5fd00c04273b770 release-0.7.54
|
||||||
|
26716942c22c3633597a8f1b4d74e6d890fe489a release-0.7.55
|
||||||
|
cb9469f7514fe9dfef60d6ac6cd7cb97459a7c42 release-0.7.56
|
||||||
|
e5cebc06e03fbbea7cf781b88be39b8a05c8c3bd release-0.7.57
|
||||||
|
4410eb7ebe8595f7df92228ffbbb1d3302b9c762 release-0.7.58
|
||||||
|
f3b5bd1eb2ed58b0db34a19c8a457263c71b6a8c release-0.7.59
|
||||||
|
c5b3516cd03c1585260807897785a6cae6b5a381 release-0.8.0
|
||||||
|
d69978d8fdb6edab99ec2dbd7b025b898cd84aef release-0.8.1
|
||||||
|
9e4b460749c9e8cbebd7fdd78995d87eb5fd4280 release-0.8.2
|
||||||
|
64aa590e34a2c089415780a21a897910c6b01076 release-0.8.3
|
||||||
|
30aa2873b97655407f944dcfbd10474d2c6af186 release-0.8.4
|
||||||
|
bfc56bb1d020945f6b857784eb5482ae92c4ff56 release-0.8.5
|
||||||
|
dcaffce7372a4d0bf79f6397d37ce0f0e82c15cb release-0.8.6
|
||||||
|
e83f35583ce293ec385b1faa216d1ff0428250e4 release-0.8.7
|
||||||
|
e053e54913df0ac2ec983d3eac42ee3dc32f3525 release-0.8.8
|
||||||
|
2b05139c6ca28165bfa28d60401d4009f0b0adac release-0.8.9
|
||||||
|
990b09cbc1811ee18bd94ccec5249a07a446e89d release-0.8.10
|
||||||
|
e1b2a581721c4264a98e71aec8fd45cfa5ebb2f0 release-0.8.11
|
||||||
|
42989abb94a6d02a02602c19eb72cf02bb8e51f9 release-0.8.12
|
||||||
|
210cf9f53ff8991765a820dd30e3a6171f49fcb4 release-0.8.13
|
||||||
|
acaeb9bfa999b0ada7d52423495aaf7c25901bcc release-0.8.14
|
||||||
|
bb1cf15a25a813990f4fdd591ba99b0c82066f8a release-0.8.15
|
||||||
|
4e4befdc3f2346859924b78b8615a6e7314bb799 release-0.8.16
|
||||||
|
08cd0aea6be255b4c278ae0c97ef258880a6e463 release-0.8.17
|
||||||
|
f82c910bf3149dda404f7f34f8ac41842a6285ec release-0.8.18
|
||||||
|
46b524fb1ae9f1bcd5f9ac5e34538da212cf5d68 release-0.8.19
|
||||||
|
fdc18b48fed033b2b169f9aeeab7f32a8247221d release-0.8.20
|
||||||
|
b341912da5c01666fcdf3975d2dfba8683439452 release-0.8.21
|
||||||
|
55f633942f3ddae428afaf058b484695c16d5309 release-0.8.22
|
||||||
|
eeba05c9507acefa3af575cd218455c9fbfaa57d release-0.8.23
|
||||||
|
7460dcd00a409ee4705d935cc5a4d66ac95a3ff2 release-0.8.24
|
||||||
|
c60dfefcad06eb1f1400c4336846fe4420869958 release-0.8.25
|
||||||
|
7c5117199492a6477b1b8d8c8c32bb4cfe0bd37d release-0.8.26
|
||||||
|
16c41cf36c8539646bc693b9a4b4072b7dd4c154 release-0.8.27
|
||||||
|
979abf7d37fa588b50c82732fd9ee8abfead559d release-0.8.28
|
||||||
|
9f9de29f6a242cdbf713b4bd160bf66f661584c5 release-0.8.29
|
||||||
|
be7155b7cc54a7ca727302c025df0e02493548cd release-0.8.30
|
||||||
|
5978727dccecc7d273ed1a74c512bd175eae9ec2 release-0.8.31
|
||||||
|
50a070b0b7c7a6b4684a53f51c11c1610985e046 release-0.8.32
|
||||||
|
155c2647edd77ba02341b29c4e30905a89aa947c release-0.8.33
|
||||||
|
2a4c39bfc3ae6055252a018418574c48d2fedb5b release-0.8.34
|
||||||
|
ab6c124a714dab18724d1c45f39023e2d6bb1e04 release-0.8.35
|
||||||
|
fc8a0671c8c59d05e13e4bc484b596fd3e0d7ccb release-0.8.36
|
||||||
|
35f4cde71b48faa6354e203ffd466c2a10f1420f release-0.8.37
|
||||||
|
29afc3ca73d87d656d4fb07907d55d46579008c5 release-0.8.38
|
||||||
|
5c3ddb99709e0d0135619fe97f78c1c6d9100c58 release-0.8.39
|
||||||
|
095ea3656f648df57f306a61aa1796e9aac9fb1f release-0.8.40
|
||||||
|
b59565e74c4987b32bdbe00b834ee5c890097c20 release-0.8.41
|
||||||
|
bdeec7e6074238a7c2ac98a13d7c4f026b5b0658 release-0.8.42
|
||||||
|
6b876b560b3c907c84cfe1e669b07c4e0f3870e4 release-0.8.43
|
||||||
|
567cb7e6dbe7bbbc1dcc29c635e5fe097ea130fe release-0.8.44
|
||||||
|
f17a7ebc32155a217868d7c825ed241bd35d222c release-0.8.45
|
||||||
|
4858f6a3f7712335cf6c6b3967d0763fa7da800a release-0.8.46
|
||||||
|
604c1aba599612e9c25bdd974bca8a89f4bb0309 release-0.8.47
|
||||||
|
8a8d23b3eb1209a9d8334eced21b67a2fa515860 release-0.8.48
|
||||||
|
49cdce3661f68fc408d83004f8860bb8e6b477c7 release-0.8.49
|
||||||
|
1918e66cac8fa2e6860c62192ea4c3fa6a98b873 release-0.8.50
|
||||||
|
e1c7f4949cf9397b59e031888c6e2abe95a53837 release-0.8.51
|
||||||
|
12b530568148caef63e63af11f0ca9ded5a84792 release-0.8.52
|
||||||
|
84ad5148317c48155415571e70c207bde2162028 release-0.8.53
|
||||||
|
57f2e2afa7974129705733db7224721e07e17648 release-0.9.0
|
||||||
|
f9a5f23fa9f401138d3c9faad9bc9db6d3dca26f release-0.9.1
|
||||||
|
fe5a79dd12ec531478543a5406a1712d299898a5 release-0.9.2
|
||||||
|
d4086817abab6b355c950c40e9d324fb08ad55da release-0.9.3
|
||||||
|
0114959308acb1cb807509efcdc672538e4b5307 release-0.9.4
|
||||||
|
a85b9ea1d52e5349556c52ca874f852fc8b5080b release-0.9.5
|
||||||
|
4ac7008ec18234f2c2065e65801328d73c1f5a7a release-0.9.6
|
||||||
|
657899211b7b5a23b7a6e8f9134f5fb98e3c0471 release-0.9.7
|
||||||
|
e82feb4aca479c0bb56741e16d2da474d6a2d344 release-1.0.0
|
||||||
|
0ece3b72931d791265c12b32d3907dc1aa64ddbd release-1.0.1
|
||||||
|
e7c8008d2e4495d7cea95f294e85b156ed861001 release-1.0.2
|
||||||
|
8fc409ade414fc7cec5f92e67a6ecd0d461c7fdd release-1.0.3
|
||||||
|
938337801cad4d1c818dae6be82b71639d361194 release-1.0.4
|
||||||
|
ef077f9617674f1f09eaf8f7554d5eaafd78dc39 release-1.0.5
|
||||||
|
da3c8238bfde24645bb85605a13f10d645e39867 release-1.1.0
|
||||||
|
afe083154e9d03978db2c4e2b2662b1034ce4433 release-1.1.1
|
||||||
|
a16ea9fd63f57fa734b6d2368c1bf6bde4b91b84 release-1.1.2
|
||||||
|
43a53268f64bf962f035420cdfa527448a80b653 release-1.1.3
|
||||||
|
13610b50003c882ce217ccdd0195a6fbe5ca9443 release-1.1.4
|
||||||
|
8217872bb37f5fea7b4ea6ee8c27f42856d5118d release-1.1.5
|
||||||
|
db5981972fc2dd69037d25023728b1a2812f9781 release-1.1.6
|
||||||
|
eea4ac308872767f2d3f527c759826c9cfc63af7 release-1.1.7
|
||||||
|
56a571f17d25be1ef6f848edaeb4facaeb657979 release-1.1.8
|
||||||
|
557f182ad5109c6814a1c89006dc7b9e3cf7b08c release-1.1.9
|
||||||
|
47faa62970b62572e661b66734af87b357134dd7 release-1.1.10
|
||||||
|
b80b36fb85574515f82d9f2a023449b097d780d1 release-1.1.11
|
||||||
|
ebeff11d9846d3729fad88cc8f2a3f3f891967c4 release-1.1.12
|
||||||
|
e0a5ae2eaa42e5108c46f02852d34b3b89234d78 release-1.1.13
|
||||||
|
834966e8f798870a50af6d13466472613a1b70ed release-1.1.14
|
||||||
|
8ae0327fc35442100b422e5f4c82973b2679f669 release-1.1.15
|
||||||
|
62ac4de0d9ca6c5c3a7614f091f33936078d81fa release-1.1.16
|
||||||
|
9fc6acd6b93f73831d814738a7f6e92f2a8295c2 release-1.1.17
|
||||||
|
ce30f90ece840c682024e33f65deae6eee7bb65f release-1.1.18
|
||||||
|
98644bafd06d0285f037024f7834d93852137b0d release-1.1.19
|
||||||
|
1f15caed605d8ae1577123877c25b01af91f83d3 release-1.2.0
|
||||||
|
26c2eb601832c24b885d2cf73c58260ccdfc2a64 release-1.3.0
|
||||||
|
af283f7b31d8546639b2034d206a19ac6d73c829 release-1.3.1
|
||||||
|
91eeefd6fd11e3579fff7b6027d4f01cdd0bb0c2 release-1.2.1
|
||||||
|
0000000000000000000000000000000000000000 release-1.2.1
|
||||||
|
4617152dba9a996e3ef745502915284e586674b8 release-1.3.2
|
||||||
|
7b2ef7d7c23251fd4bfe529f32d9197d5d1297fa release-1.3.3
|
||||||
|
6d0b47b7000c3c1ac61a332f94b62a73608f18e6 release-1.3.4
|
||||||
|
77782a88527b43abb8d7958ea8ef6a68c77fd4e9 release-1.3.5
|
||||||
|
749c3c6a3b345356ada08e3563ec23dce1981ed6 release-1.3.6
|
||||||
|
05977b03f197b656dd6fe34353e801be798e7437 release-1.3.7
|
||||||
|
19994a295c6f993eaec0a8f7b5c981229694ea3e release-1.3.8
|
||||||
|
bb9f3d21b97e29536d23e4931ad40dde08fc1703 release-1.3.9
|
||||||
|
b8151e46626e5e2de3a9d10f2cae7406c634e64e release-1.3.10
|
||||||
|
85f60e5a1d12a45606dcfec81653e85b73d565ba release-1.3.11
|
||||||
|
ed3ee3d119ad4a6c892dbaca7c1be1fde6bff08d release-1.3.12
|
||||||
|
dae09e13026a586b056a8c87ffcf7abe22177ced release-1.3.13
|
||||||
|
7a563ef2a88681a77b06685de77c2f44ce728e68 release-1.3.14
|
||||||
|
b708d272d2e02c0eb80d71a2d4bd0afd36e84ea1 release-1.3.15
|
||||||
|
f25e9e857a92badbaf80034bd8ea2cad16fa47ac release-1.3.16
|
||||||
|
41ce2f7717b7651fa84c250581ff8744d8f1911e release-1.4.0
|
||||||
|
1c5232c55940bfc2e04862254cc93e1ed0b81477 release-1.5.0
|
||||||
|
5efcf9ce75d512bc384c753f93ae302c796f76c7 release-1.5.1
|
||||||
|
17bdb04679378e523f97ae2ed117de4dcab7b482 release-1.5.2
|
||||||
|
54ad7c958b7e7a998c4cf6c271b4da56ad4e6b22 release-1.5.3
|
||||||
|
faccb729d25d3664b916d102d4ce95eaaf4b8c79 release-1.5.4
|
||||||
|
8c6827294cef4060758ca8a813330f6be3f69f47 release-1.5.5
|
||||||
|
d3e826913009c8171967d6813c927f20a09b384b release-1.5.6
|
||||||
|
b595f5c2513902e692c419cd41ad69325039eb9e release-1.5.7
|
||||||
|
acb0856be28886f8b1b6f4151b6d5b173792489e release-1.5.8
|
||||||
|
c610e0461d11a04d26446cf34dcdac78d5c79df7 release-1.5.9
|
||||||
|
82205c230ffac9eac6474112f1de3c1186b0225d release-1.5.10
|
||||||
|
05b5013a948e37e102924ac7ce01ac412ef10c45 release-1.5.11
|
||||||
|
68cb5c6d35adc13613c1e0eda613aa1d8495b2c3 release-1.5.12
|
||||||
|
f58c01ae61e78e35dcd163596968d747fbcd746d release-1.5.13
|
||||||
|
facb7f4a4cdf4e7488f09b4a9f524c43a9bb046c release-1.7.0
|
||||||
|
87c79d263901119d34ec41c1904d9a97b1d0ae74 release-1.7.1
|
||||||
|
bf9941cca571162b529df318db0536252a98ec59 release-1.7.2
|
||||||
|
20f281f865497e6a39201c3fd971f39a2235c710 release-1.7.3
|
||||||
|
c43fa694c3d3feb912f99992299d0afebf29bb87 release-1.7.4
|
||||||
|
1c71a35dfc3a70fe6c548dde154914f47b56beb4 release-1.7.5
|
||||||
|
bd1a33750578c68b8184e204fb4a16db4b2c50e3 release-1.7.6
|
||||||
|
eaea9af87875c7535b28c4a5fd260a666e6af15c release-1.7.7
|
||||||
|
010d19031280e8c4b01f239d8c0b0737fdd46b51 release-1.7.8
|
||||||
|
d89839769dbe919c2edfe151694f775e490a41b5 release-1.7.9
|
||||||
|
d5869e77a3bc51edf9eb98324ad9caf06b9a3936 release-1.7.10
|
||||||
|
d88d74ed0846c20bfd87965d2b491343c0988eef release-1.7.11
|
||||||
|
9cedd9349462b5103dcb3abe7c8a2362db9c6609 release-1.7.12
|
||||||
|
8a7b01d14a0207fb4ed74c3567c4a6f9a68e3837 release-1.9.0
|
||||||
|
8e26961ddb544bddc3cff81dcb653404ead98b79 release-1.9.1
|
||||||
|
f870f943acf8e03f9f4550f083de6d1d8df2cf7b release-1.9.2
|
||||||
|
3dd67ba18e809f1269790161a81d0925c6c6027a release-1.9.3
|
||||||
|
d93c652181b533c843eab1f814c2ba573fa699ec release-1.9.4
|
||||||
|
8a1074241f999b186b78c38de8c3bddd784d6f86 release-1.9.5
|
||||||
|
7e05d153d444fcb2429f11d5aece35c3908985fe release-1.9.6
|
||||||
|
55479911044c680e7d06f62a3b078438fa4cfc0f release-1.9.7
|
||||||
|
492b12107fb7ff7705c8d0cdb8173f6b3677da55 release-1.9.8
|
||||||
|
ffa857d1e25aca55d6b7f948ea2f865393c7d520 release-1.9.9
|
||||||
|
2d5bcf8f0a08db3677446565d00dea284a3ea89b release-1.9.10
|
||||||
|
7294778941a6356dae829011e764748cc339a8bb release-1.9.11
|
||||||
|
38e6714a2571d06a3dc3eb086231d0f7a0c8217f release-1.9.12
|
||||||
|
bb840fdfa6d6743e592cbffead23b1718e96e138 release-1.9.13
|
||||||
|
b58df85359e8643a742bf4d7f4f5788f7ca51f51 release-1.9.14
|
||||||
|
4495e1b86df93b2f8bf81987e00696466b3dd03e release-1.9.15
|
||||||
|
aef8329f54fe1400e4c98ae15f654262e856a17a release-1.11.0
|
||||||
|
b0e9220196ee24505af329962e8d3e8f7f7d4ee1 release-1.11.1
|
||||||
|
2228016080d138a583b25d8d508d9af66d87f6a8 release-1.11.2
|
||||||
|
7ea6f10b7108fd31ba4a9100966b0675ff1bb6a5 release-1.11.3
|
||||||
|
735f51fe0826b24ffeed5cf02fe4898cc8fe4a8b release-1.11.4
|
||||||
|
e442d9e5ecae1575f4fb148c8caba62dc9027bae release-1.11.5
|
||||||
|
b0af7db6f1459b23552274f40582b5e5d3289072 release-1.11.6
|
||||||
|
d7e3e333c485f164c8e3c24f69564adfc5ee19a6 release-1.11.7
|
||||||
|
eafd10641c50b5719c90e73b8081c84c1c7ddfad release-1.11.8
|
||||||
|
13ca75ed823cd8aff45366813f05853c606d9e44 release-1.11.9
|
||||||
|
18d131be522e6de837575e3a0ec7cf7cfa90941e release-1.11.10
|
||||||
|
bc700e226f61576acbc8015b76571efd9417243a release-1.11.11
|
||||||
|
d2e9c5ecdaca55455d704086127222d0fe1780a0 release-1.11.12
|
||||||
|
42dbdca93c2d9da07d200816742271e5209f1fa2 release-1.11.13
|
||||||
|
b9a3206f7734192047323db7907d6b7169b36a71 release-1.13.0
|
||||||
|
7d3c7f84d9e75e1e1b92e899495595f71120753f release-1.13.1
|
||||||
|
9d176e0b7fa31d3e40db187edf35fe93e02dc3a7 release-1.13.2
|
||||||
|
c8d778a197612ac1e6bdbe33325bd517a01b302a release-1.13.3
|
||||||
|
c73d2a7322038b7e6a8a707a6428b2beb639fb3f release-1.13.4
|
||||||
|
9380ee1f0608c2ff151c943b0d7d0eb9f7d06857 release-1.13.5
|
||||||
|
473fab2b21eef991bf1a0ff643fd39a078006303 release-1.13.6
|
||||||
|
0f18f17e2dbe325f3868ac08f4ea3868d381eb9d release-1.13.7
|
||||||
|
430995802452f7327c2bfdd8265a0d5ce6ffbf18 release-1.13.8
|
||||||
|
84bbb6a0a35198bc88cef14cfd8118bc9ee60179 release-1.13.9
|
||||||
|
b8aab211ba7b071fee281b506d7c9160035c5714 release-1.13.10
|
||||||
|
b39255dfff6b4f8a1a1123e739b19ea84c765011 release-1.13.11
|
||||||
|
020f1abcaacdafcaf2e3e3259de08b18c20b4497 release-1.13.12
|
||||||
|
3a7cbc568ff635407c97ca2024325cb1f2d3f7cd release-1.15.0
|
||||||
|
cd932e47a0d067fb59820d572fcbabaa4ef92b7d release-1.15.1
|
||||||
|
4bc8bd1fbc26550380a6b6959d9186047c0bad35 release-1.15.2
|
||||||
|
2659ed1a3c5d9497faf3278756b68ca4b8349886 release-1.15.3
|
||||||
|
62ebb0552bc7153b1400196eceeaee2283d28185 release-1.15.4
|
||||||
|
29fd9fd14cf55dc92f390e3d21a397d3eea40ade release-1.15.5
|
||||||
|
7a4e08502c1250d3e2e7220c9a370082a8197ade release-1.15.6
|
||||||
|
9ce4a674e798fa6ca5ef0abee0fb1287330ba6a0 release-1.15.7
|
||||||
|
b670fb484c9d45c028d179e4980fe9e652265348 release-1.15.8
|
||||||
|
848f74b617081dc0e7dd7b41ea39691954a3b1f9 release-1.15.9
|
||||||
|
d934c326c83b9c0dd1f592edb3737b067ad76f67 release-1.15.10
|
||||||
|
1d48620fd45cfdda68ba743dd8026e6b67c6d6be release-1.15.11
|
||||||
|
56a7d6deba9e8d99c49f9719347d993c5609f207 release-1.15.12
|
||||||
|
b327f0cfa12f56e77e6d45a0cc63d00c9cf37c19 release-1.17.0
|
||||||
|
0aa77d630653bed221c9e827efc37da7ef6dc547 release-1.17.1
|
||||||
|
150e7a083923facb08705727fb715efcb6f999ff release-1.17.2
|
||||||
|
79dd087df4c619129cc1febd638c2c70f91bf58c release-1.17.3
|
||||||
|
a8bb565f8d6a7dd8a97eacd47829364f3dcb48eb release-1.17.4
|
||||||
|
92bd17daf8dd4205339584396c6931c0d2d24d44 release-1.17.5
|
||||||
|
b6118687efb48bd43b033a96ce7ea9a412f314ac release-1.17.6
|
||||||
|
36419b50d8ebdabba547d77efe3b36b39753fc28 release-1.17.7
|
||||||
|
20303155a7edcd5d8332326b1be3a9d9a16a3a32 release-1.17.8
|
||||||
|
1a8033e05adc2bf3efefba29e99755c8191015ae release-1.17.9
|
||||||
|
6335746ac31e40366454c42b887afeab835c2fb3 release-1.17.10
|
||||||
|
f920628559e590e85593b321b70654e38fb3b9a6 release-1.19.0
|
||||||
|
ccfcc5a36d7359dea90d9ff2f92c81c81cccd1c4 release-1.19.1
|
||||||
|
76e21ec946cc5bd84aec995100511bc3147546a4 release-1.19.2
|
||||||
|
518118db004e11b50af07f27a66907b36ee55b37 release-1.19.3
|
||||||
|
bb808f422a9d209ec14b9a9bb1e74d3d822325a9 release-1.19.4
|
||||||
|
d5b3fec54726f382dc99f274cbcc83c7e684ff5a release-1.19.5
|
||||||
|
9ec7e23d500814db97600cc4380e782469e90bac release-1.19.6
|
||||||
|
63bd400634cf068527ff4031de1442441deee540 release-1.19.7
|
||||||
|
ca8a3573b45a094b53349e2a7fdd1ae819d7eaa3 release-1.19.8
|
||||||
|
ed8fc921097007c54ce081bd1ff50a3790eea37d release-1.19.9
|
||||||
|
feccfb9356f61b0464c2e187c07fab21055b51f3 release-1.19.10
|
||||||
|
cd71fece2ac83784df5d42dd9d2d4b39f0ae2146 release-1.21.0
|
||||||
|
9e7429e03b8dd384099740e820ad540a00b1f50c release-1.21.1
|
||||||
|
66cf470ae714eb95e484b44418c685d774a31e9d release-1.21.2
|
||||||
|
ab2c9c1ac634276f015c2fa654680eec36dd8611 release-1.21.3
|
||||||
|
af7f090d05e0a239584e4a1c7dbe3045ead41249 release-1.21.4
|
||||||
|
68c3b668a533110d9b7e4343dc5a4ec4f25e4e54 release-1.21.5
|
||||||
|
624d6ef05304e3f716d0cd9e7ed75ff581669c53 release-1.21.6
|
||||||
|
c1f451db99e02b530be5b57337e7fe0aa72e2f95 release-1.23.0
|
||||||
|
8554f1471e8a3ad026fc18163b4d487d630d6fe9 release-1.23.1
|
||||||
|
1192c0305322dcea3e24b8e59a39d9ab3164f26b release-1.23.2
|
||||||
|
530a7e9a0f607411adab97ad1ef19ce3466ccf94 Angie-1.0.0
|
||||||
|
a7eefa48833cfdcdccd5cb72e73c949847d1e0b4 release-1.23.3
|
||||||
|
bc44ec602f9bf6db37346aa50a0575ab0ef3df53 Angie-1.1.0
|
||||||
|
1e5ad4c61344db5488d44752f50bad23295a9971 release-1.23.4
|
||||||
|
a3435eda521a70433990a2df3352eb6da1f9cb24 release-1.25.0
|
||||||
|
986958875cbfcabcccc8d49b844c4a923f515c49 Angie-1.2.0
|
||||||
|
09ca02eabde4a6a0032402487b914499df7fbf73 release-1.25.1
|
||||||
|
5b4430ef7e766110f8a35be6ada73fa6c2b37f8f release-1.25.2
|
||||||
|
c60d036998958332f215d9fda9fd5969c917a035 Angie-1.3.0
|
||||||
|
73d45c0fa6e8660dca60aff7d3c87c3368335e28 Angie-1.3.1
|
||||||
|
7dc902e2e9a5f49a6da7bdf6ebc98f61a292ad31 release-1.25.3
|
||||||
|
c5a5f02d77de8658e7a167a0dd4947da94a55c1d Angie-1.3.2
|
||||||
|
56114e88ec213af1be2c8e45e85fe01bcd3b8887 Angie-1.4.0
|
||||||
|
08234574943cd10f80818a9cd44d08859a70dbbe Angie-1.4.1
|
||||||
|
385cad5d8e768c3695143521ab3158ca867873b4 release-1.25.4
|
||||||
|
1f9a424b387049273f1135fa78a679106ef368dd Angie-1.5.0
|
||||||
|
5b06c3ecab5aad757aefc269d4ff9cb5e53db0b1 Angie-1.5.1
|
||||||
|
46eebef7d59aa105996432df8a07efd2e4c32b9e Angie-1.5.2
|
||||||
|
8b3297d1043a209893e39d8fa27d98657b06c43c release-1.25.5
|
||||||
|
3e6b4a9e397a8697b6bee44f1ee4b6cc0f5a0d34 release-1.27.0
|
||||||
|
d3a3d8e4ac44c1db1703e781ad93c69fc9ddea22 Angie-1.6.0
|
||||||
|
bc8b190000a1fa61c147ce8ba28083f92d28a9a7 Angie-1.6.1
|
||||||
|
7c13bce7b8f1d5eccf06f948578cead5f77faf18 release-1.27.1
|
||||||
|
d7400e826d177e20c206ec9167ae49e21eff0126 Angie-1.6.2
|
||||||
|
1d221edf8382ceb7110fad1dec8cf46aeb40abe1 Angie-1.7.0
|
||||||
|
55f585955d5d6548a0104b8e9227b6f6e73c501c Angie-1.8.0
|
||||||
|
7a56f952ff66f86bbb68dd5a2994b96f6b92bafe Angie-1.8.1
|
||||||
|
2c056d76f4ace53db22748abc0a97f48f594f719 Angie-1.8.2
|
||||||
|
1011d61aaa9b4d7542cfb4cf23a9f387f4a8444d Angie-1.8.3
|
||||||
|
6559400c9075e1924f0271da0710268237987aff Angie-1.9.0
|
||||||
|
33a2014e7eb7f77acd79ee32a68bb7bc458ae65c Angie-1.9.1
|
||||||
|
734f7161f2076139a6db6f6647727df73604fb4b Angie-1.10.0
|
||||||
|
59e374e18eaf8372092bff2ae1a0f098e0f36beb Angie-1.10.1
|
||||||
|
4386308a34cbcd05c57b355a45c1045d33b601ec Angie-1.10.2
|
||||||
|
d60829308e69d8c13f34522038134834a8428c1e Angie-1.10.3
|
||||||
|
4d9e32f5f58c5d2d1c1e3841197da4797e8f4ad2 Angie-1.11.0
|
||||||
|
5284c709e5b388bd5b22a02028d9ae2e0eb33e72 Angie-1.11.1
|
||||||
|
d083324a952d999b8e69b11f9683236146161dc2 Angie-1.11.2
|
||||||
|
07703ba2cf353186ecea1b3817189049ea911174 Angie-1.11.3
|
||||||
|
9ff028f730f9883140243cad5388c5e8a7801921 Angie-1.11.4
|
||||||
|
a882b018a4048367b382477ff2d44c07026be210 Angie-1.11.5
|
||||||
|
8bcde898b257f0c242024f3d726d0140fab5f8cd Angie-1.11.6
|
||||||
|
05904f3fc596f3570f047e9aac5518c93e13755a Angie-1.11.7
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,25 @@
|
|||||||
|
Copyright (C) 2022-2026 Web Server LLC
|
||||||
|
Copyright (C) 2002-2021 Igor Sysoev
|
||||||
|
Copyright (C) 2011-2026 Nginx, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGE.
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
.. image:: misc/logo.gif
|
||||||
|
:alt: Angie logo
|
||||||
|
:target: https://en.angie.software/
|
||||||
|
|
||||||
|
Angie
|
||||||
|
=====
|
||||||
|
|
||||||
|
**Angie** /ˈendʒi/
|
||||||
|
is an efficient, powerful, and scalable web server
|
||||||
|
that was forked from **nginx** to act as a drop-in replacement,
|
||||||
|
so you can use existing setups
|
||||||
|
without major changes to module layout or configuration.
|
||||||
|
|
||||||
|
The project was conceived by ex-devs from the original **nginx** team
|
||||||
|
to venture beyond the earlier vision.
|
||||||
|
|
||||||
|
|
||||||
|
Getting Started
|
||||||
|
---------------
|
||||||
|
|
||||||
|
To start using **Angie**, see the official documentation in
|
||||||
|
`English <https://en.angie.software/angie/docs/>`__,
|
||||||
|
`Russian <https://angie.software/angie/docs/>`__,
|
||||||
|
`Chinese <https://cn.angie.software/angie/docs/>`__,
|
||||||
|
`Spanish <https://es.angie.software/angie/docs/>`__, or
|
||||||
|
`Portuguese <https://pt.angie.software/angie/docs/>`__:
|
||||||
|
|
||||||
|
- `Installation <https://en.angie.software/angie/docs/installation/>`_
|
||||||
|
(`ru <https://angie.software/angie/docs/installation/>`__,
|
||||||
|
`cn <https://cn.angie.software/angie/docs/installation/>`__,
|
||||||
|
`es <https://es.angie.software/angie/docs/installation/>`__,
|
||||||
|
`pt <https://pt.angie.software/angie/docs/installation/>`__)
|
||||||
|
|
||||||
|
- `Runtime configuration <https://en.angie.software/angie/docs/configuration/>`_
|
||||||
|
(`ru <https://angie.software/angie/docs/configuration/>`__,
|
||||||
|
`cn <https://cn.angie.software/angie/docs/configuration/>`__,
|
||||||
|
`es <https://es.angie.software/angie/docs/configuration/>`__,
|
||||||
|
`pt <https://pt.angie.software/angie/docs/configuration/>`__)
|
||||||
|
|
||||||
|
- `Troubleshooting and feedback channels <https://en.angie.software/angie/docs/troubleshooting/>`_
|
||||||
|
(`ru <https://angie.software/angie/docs/troubleshooting/>`__,
|
||||||
|
`cn <https://cn.angie.software/angie/docs/troubleshooting/>`__,
|
||||||
|
`es <https://es.angie.software/angie/docs/troubleshooting/>`__,
|
||||||
|
`pt <https://pt.angie.software/angie/docs/troubleshooting/>`__)
|
||||||
|
|
||||||
|
- `Development and contribution <https://en.angie.software/angie/docs/development/>`_
|
||||||
|
(`ru <https://angie.software/angie/docs/development/>`__,
|
||||||
|
`cn <https://cn.angie.software/angie/docs/development/>`__,
|
||||||
|
`es <https://es.angie.software/angie/docs/development/>`__,
|
||||||
|
`pt <https://pt.angie.software/angie/docs/development/>`__)
|
||||||
|
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
|
||||||
|
On top of all the capabilities of
|
||||||
|
`nginx 1.27 <https://nginx.org/en/CHANGES>`_,
|
||||||
|
**Angie** adds a number of its own advantages, including these:
|
||||||
|
|
||||||
|
- Supporting `HTTP/3
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_v3/>`_
|
||||||
|
for client connections, as well as for `proxied server
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_proxy/#proxy-http-version>`_
|
||||||
|
connections, with the ability to independently use different protocol versions
|
||||||
|
(HTTP/1.x, HTTP/2, HTTP/3) on opposite sides.
|
||||||
|
|
||||||
|
- Automatic HTTPS provisions TLS certificates using built-in `ACME
|
||||||
|
<https://en.angie.software/angie/docs/configuration/acme/>`_ support.
|
||||||
|
|
||||||
|
- Simplifying configuration: the `location` directive can define several
|
||||||
|
matching expressions at once, which enables `combining
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/#combined-locations>`_
|
||||||
|
blocks with shared settings.
|
||||||
|
|
||||||
|
- Exposing basic information about the web server, its `configuration
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_api/#a-api-config-files>`_,
|
||||||
|
as well as `metrics
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_api/#metrics>`_
|
||||||
|
of proxied servers, client connections, shared memory zones, and many other
|
||||||
|
things via a RESTful `API
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_api/#a-api>`_
|
||||||
|
interface in JSON format.
|
||||||
|
|
||||||
|
- Exporting statistics in `Prometheus
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_prometheus/#prometheus>`_
|
||||||
|
format with `customizable templates
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_prometheus/#prometheus-template>`_.
|
||||||
|
|
||||||
|
- Monitoring the server through the browser with the `Console Light
|
||||||
|
<https://en.angie.software/angie/docs/configuration/monitoring/>`_ visual
|
||||||
|
monitoring tool. See the online demo: https://console.angie.software/
|
||||||
|
|
||||||
|
- Dynamic updating of upstream groups based on events and labels from `Docker containers
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_docker/#http-docker>`_
|
||||||
|
(or similar tools like Podman) without server reload.
|
||||||
|
|
||||||
|
- Flushing the shared memory zone in `proxy_cache_path
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_proxy/#proxy-cache-path>`_
|
||||||
|
on disk preserves the cache index contents between restarts and updates,
|
||||||
|
which eliminates the cache load delay and brings the server online even
|
||||||
|
faster.
|
||||||
|
|
||||||
|
- `Session binding
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_upstream/#u-sticky>`_
|
||||||
|
mode, which directs all requests within one session to the same proxied
|
||||||
|
server.
|
||||||
|
|
||||||
|
- Recommissioning upstream servers after a failure smoothly using the
|
||||||
|
`slow_start` option of the `server
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_upstream/#u-server>`_
|
||||||
|
directive.
|
||||||
|
|
||||||
|
- Limiting the `MP4 file transfer rate
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_mp4/#mp4-limit-rate>`_
|
||||||
|
proportionally to its bitrate, thus reducing the bandwidth load.
|
||||||
|
|
||||||
|
- Extending authorization and balancing capabilities for the MQTT protocol with
|
||||||
|
the `mqtt_preread
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/stream/stream_mqtt_preread/#s-mqtt-preread>`_
|
||||||
|
directive under `stream`.
|
||||||
|
|
||||||
|
- Informing balancing decisions with RDP protocol's session cookies via the
|
||||||
|
`rdp_preread
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/stream/stream_rdp_preread/#rdp-preread>`_
|
||||||
|
directive under `stream`.
|
||||||
|
|
||||||
|
- Pre-built `binary packages
|
||||||
|
<https://en.angie.software/angie/docs/installation/oss_packages/#install-thirdpartymodules-oss>`_
|
||||||
|
for many popular third-party modules.
|
||||||
|
|
||||||
|
- `Server
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_ssl/#ssl-ntls>`_-
|
||||||
|
and `client-side
|
||||||
|
<https://en.angie.software/angie/docs/configuration/modules/http/http_proxy/#proxy-ssl-ntls>`_
|
||||||
|
support for NTLS when using the `TongSuo
|
||||||
|
<https://github.com/Tongsuo-Project/Tongsuo>`_ TLS library, enabled `at build
|
||||||
|
time <https://en.angie.software/angie/docs/installation/sourcebuild/#install-source-features>`_.
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
|
||||||
|
echo $ngx_n "collecting build environment information...$ngx_c"
|
||||||
|
|
||||||
|
$CC -include $NGX_AUTO_CONFIG_H -E -dM - < /dev/null >/dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
cat <<EOF >> $NGX_MODULES_C
|
||||||
|
void
|
||||||
|
ngx_show_build_info()
|
||||||
|
{
|
||||||
|
ngx_write_stderr("environment information was disabled during build\n");
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "skipped, no support found in selected CC"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat <<EOF >> $NGX_MODULES_C
|
||||||
|
void
|
||||||
|
ngx_show_build_info()
|
||||||
|
{
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$CC -include $NGX_AUTO_CONFIG_H -E -dM - < /dev/null \
|
||||||
|
| grep NGX \
|
||||||
|
| sed 's/#define //g;s/"/\\"/g;s/NGX_HAVE_//g;s/NGX_//g' \
|
||||||
|
| sort \
|
||||||
|
| awk '
|
||||||
|
{
|
||||||
|
printf(" ngx_write_stderr(\"%s\" \": \"\"", $1);
|
||||||
|
for (i = 2; i <= NF; i++) {
|
||||||
|
printf("%s", $i);
|
||||||
|
if (i != NF && NF > 2) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\"\"\\n\");\n");
|
||||||
|
}' >> $NGX_MODULES_C
|
||||||
|
|
||||||
|
echo "}
|
||||||
|
" >> $NGX_MODULES_C
|
||||||
|
|
||||||
|
echo " ok"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = YES ]; then
|
||||||
|
NGX_FC_PATH=$NGX_OBJS
|
||||||
|
|
||||||
|
elif [ $NGX_FEATURE_CACHE != NO ]; then
|
||||||
|
|
||||||
|
NGX_FC_PATH=${NGX_FEATURE_CACHE}
|
||||||
|
mkdir -p $NGX_FC_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# tries to load cache for current autotest environment
|
||||||
|
check_cache()
|
||||||
|
{
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove chars non-suitable for filename and limit length to 64
|
||||||
|
|
||||||
|
OPTIND=1
|
||||||
|
ngx_uniq=
|
||||||
|
N=0
|
||||||
|
|
||||||
|
while getopts ":" opt "-$1"; do
|
||||||
|
case "$OPTARG" in
|
||||||
|
[A-Za-z0-9])
|
||||||
|
ngx_uniq=${ngx_uniq}$OPTARG
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ngx_uniq=${ngx_uniq}_
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
N=$(($N + 1))
|
||||||
|
|
||||||
|
if [ $N -gt 64 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
NGX_AUTOTEST_CACHE=$NGX_FC_PATH/$2.$ngx_uniq.cache
|
||||||
|
|
||||||
|
if [ -f $NGX_AUTOTEST_CACHE ]; then
|
||||||
|
|
||||||
|
. $NGX_AUTOTEST_CACHE
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
echo "using cached $1 ... found"
|
||||||
|
else
|
||||||
|
echo "using cached $1 ... not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cache_output_start()
|
||||||
|
{
|
||||||
|
exec 3>&1 1>$NGX_AUTOTEST_CACHE
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cache_output_end()
|
||||||
|
{
|
||||||
|
exec 1>&3 3>&-
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# aCC: HP ANSI C++ B3910B A.03.55.02
|
||||||
|
|
||||||
|
# C89 mode
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -Ae"
|
||||||
|
CC_TEST_FLAGS="-Ae"
|
||||||
|
|
||||||
|
PCRE_OPT="$PCRE_OPT -Ae"
|
||||||
|
ZLIB_OPT="$ZLIB_OPT -Ae"
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Borland C++ 5.5
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed
|
||||||
|
CFLAGS="$CFLAGS -O2"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-5"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-6"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# __stdcall
|
||||||
|
#CPU_OPT="$CPU_OPT -ps"
|
||||||
|
# __fastcall
|
||||||
|
#CPU_OPT="$CPU_OPT -pr"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
# multithreaded
|
||||||
|
CFLAGS="$CFLAGS -tWM"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -w!"
|
||||||
|
|
||||||
|
# disable logo
|
||||||
|
CFLAGS="$CFLAGS -q"
|
||||||
|
|
||||||
|
|
||||||
|
# precompiled headers
|
||||||
|
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_PCH="$NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_BUILD_PCH="-H=$NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_USE_PCH="-Hu -H=$NGX_OBJS/ngx_config.csm"
|
||||||
|
|
||||||
|
|
||||||
|
# Win32 GUI mode application
|
||||||
|
#LINK="\$(CC) -laa"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RES="$NGX_OBJS/nginx.res"
|
||||||
|
NGX_RCC="brcc32 -fo$NGX_OBJS/nginx.res \$(CORE_INCS) $NGX_WIN32_RC"
|
||||||
|
# the pragma allows to link the resource file using bcc32 and
|
||||||
|
# to avoid the direct ilink32 calling and the c0w32.obj's WinMain/main problem
|
||||||
|
NGX_PRAGMA="#pragma resource \"$NGX_OBJS/nginx.res\""
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
ngx_objout="-o"
|
||||||
|
ngx_binout="-e"
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_long_start='@&&|
|
||||||
|
'
|
||||||
|
ngx_long_end='|'
|
||||||
|
|
||||||
|
ngx_regex_dirsep='\\'
|
||||||
|
ngx_dirsep="\\"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_enable level6 -msg_fatal level6"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unknownmacro"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unusedincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unnecincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable nestincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable strctpadding"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable ansialiascast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable inlinestoclsmod"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable cxxkeyword"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable longlongsufx"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable valuepres"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
CFLAGS="$CFLAGS -msg_disable truncintcast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable trunclongcast"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable truncintasn"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable trunclongint"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable intconcastsgn"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable intconstsign"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable switchlong"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable subscrbounds2"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable hexoctunsign"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable ignorecallval"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable nonstandcast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable embedcomment"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unreachcode"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable questcompare2"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unusedtop"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unrefdecl"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable bitnotint"
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# clang
|
||||||
|
|
||||||
|
. auto/cc/clang.version
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="-pipe"
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
#NGX_CLANG_OPT="-O2"
|
||||||
|
#NGX_CLANG_OPT="-Oz"
|
||||||
|
NGX_CLANG_OPT="-O"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro | pentium3)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-march=pentiumpro"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
athlon)
|
||||||
|
# optimize for Athlon
|
||||||
|
CPU_OPT="-march=athlon"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron
|
||||||
|
CPU_OPT="-march=opteron"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -pipe $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O2 -pipe $CPU_OPT"
|
||||||
|
else
|
||||||
|
PCRE_OPT="$PCRE_OPT -pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O2 -pipe $CPU_OPT"
|
||||||
|
else
|
||||||
|
ZLIB_OPT="$ZLIB_OPT -pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $NGX_CLANG_OPT -Wall -Wextra -Wpointer-arith"
|
||||||
|
CFLAGS="$CFLAGS -Wconditional-uninitialized"
|
||||||
|
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
||||||
|
|
||||||
|
# we have a lot of unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
||||||
|
|
||||||
|
# deprecated system OpenSSL library on OS X
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
|
|
||||||
|
if [ ".$CPP" = "." ]; then
|
||||||
|
CPP="$CC -E"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "clang version" "cc"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "NGX_CLANG_VER=\"$NGX_CLANG_VER\""
|
||||||
|
echo 'have=NGX_COMPILER value="\"clang $NGX_CLANG_VER\"" . auto/define'
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,305 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2022 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
LINK="\$(CC)"
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-shared"
|
||||||
|
|
||||||
|
ngx_include_opt="-I "
|
||||||
|
ngx_compile_opt="-c"
|
||||||
|
ngx_pic_opt="-fPIC"
|
||||||
|
ngx_objout="-o "
|
||||||
|
ngx_binout="-o "
|
||||||
|
ngx_objext="o"
|
||||||
|
ngx_binext=
|
||||||
|
ngx_modext=".so"
|
||||||
|
|
||||||
|
ngx_long_start=
|
||||||
|
ngx_long_end=
|
||||||
|
|
||||||
|
ngx_regex_dirsep="\/"
|
||||||
|
ngx_dirsep='/'
|
||||||
|
|
||||||
|
ngx_regex_cont=' \\\
|
||||||
|
'
|
||||||
|
ngx_cont=' \
|
||||||
|
'
|
||||||
|
ngx_tab=' \
|
||||||
|
'
|
||||||
|
ngx_spacer=
|
||||||
|
|
||||||
|
ngx_long_regex_cont=$ngx_regex_cont
|
||||||
|
ngx_long_cont=$ngx_cont
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
ngx_feature="C compiler"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo
|
||||||
|
echo $0: error: C compiler $CC is not found
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/cc/name
|
||||||
|
|
||||||
|
if test -n "$CFLAGS"; then
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT"
|
||||||
|
|
||||||
|
case $NGX_CC_NAME in
|
||||||
|
|
||||||
|
ccc)
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sunc)
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-G"
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i86pc)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
|
||||||
|
amd64)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
case $NGX_CC_NAME in
|
||||||
|
gcc)
|
||||||
|
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
|
||||||
|
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2
|
||||||
|
# 4.0.0, 4.0.1, 4.1.0
|
||||||
|
|
||||||
|
. auto/cc/gcc
|
||||||
|
;;
|
||||||
|
|
||||||
|
clang)
|
||||||
|
# Clang C compiler
|
||||||
|
|
||||||
|
. auto/cc/clang
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
# Intel C++ compiler 7.1, 8.0, 8.1
|
||||||
|
|
||||||
|
. auto/cc/icc
|
||||||
|
;;
|
||||||
|
|
||||||
|
sunc)
|
||||||
|
# Sun C 5.7 Patch 117837-04 2005/05/11
|
||||||
|
|
||||||
|
. auto/cc/sunc
|
||||||
|
;;
|
||||||
|
|
||||||
|
ccc)
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
. auto/cc/ccc
|
||||||
|
;;
|
||||||
|
|
||||||
|
acc)
|
||||||
|
# aCC: HP ANSI C++ B3910B A.03.55.02
|
||||||
|
|
||||||
|
. auto/cc/acc
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc)
|
||||||
|
# MSVC++ 6.0 SP2, MSVC++ Toolkit 2003
|
||||||
|
|
||||||
|
. auto/cc/msvc
|
||||||
|
;;
|
||||||
|
|
||||||
|
owc)
|
||||||
|
# Open Watcom C 1.0, 1.2
|
||||||
|
|
||||||
|
. auto/cc/owc
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc)
|
||||||
|
# Borland C++ 5.5
|
||||||
|
|
||||||
|
. auto/cc/bcc
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $NGX_CC_OPT"
|
||||||
|
NGX_TEST_LD_OPT="$NGX_LD_OPT"
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_LD_OPT"; then
|
||||||
|
ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="-Wl,-E switch"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=-Wl,-E
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
MAIN_LINK="-Wl,-E"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
echo "checking for C99 variadic macros ... disabled"
|
||||||
|
else
|
||||||
|
ngx_feature="C99 variadic macros"
|
||||||
|
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#define var(dummy, ...) sprintf(__VA_ARGS__)"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="char buf[30]; buf[0] = '0';
|
||||||
|
var(0, buf, \"%d\", 1);
|
||||||
|
if (buf[0] != '1') return 1"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc variadic macros"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#define var(dummy, args...) sprintf(args)"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="char buf[30]; buf[0] = '0';
|
||||||
|
var(0, buf, \"%d\", 1);
|
||||||
|
if (buf[0] != '1') return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc builtin 64 bit byteswap"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_BSWAP64"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (__builtin_bswap64(0)) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc builtin 64 bit count leading zeros"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_CLZLL"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (__builtin_clzll(1ULL) != 63) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc builtin ceil"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_CEIL"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (__builtin_ceil(3.56) != 4.0) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc attribute packed"
|
||||||
|
ngx_feature_name=NGX_HAVE_GCC_ATTRIBUTE_PACKED
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="struct s { char c; int i; } __attribute__((__packed__))"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# ngx_feature="inline"
|
||||||
|
# ngx_feature_name=
|
||||||
|
# ngx_feature_run=no
|
||||||
|
# ngx_feature_incs="int inline f(void) { return 1 }"
|
||||||
|
# ngx_feature_path=
|
||||||
|
# ngx_feature_libs=
|
||||||
|
# ngx_feature_test=
|
||||||
|
# . auto/feature
|
||||||
|
#
|
||||||
|
# if [ $ngx_found = yes ]; then
|
||||||
|
# fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
. auto/cc/gcc.version
|
||||||
|
|
||||||
|
# Solaris 7's /usr/ccs/bin/as does not support "-pipe"
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="-pipe"
|
||||||
|
|
||||||
|
ngx_feature="gcc -pipe switch"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
CC_TEST_FLAGS=
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
PIPE="-pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
sun4u | sun4v | sparc | sparc64 )
|
||||||
|
# "-mcpu=v9" enables the "casa" assembler instruction
|
||||||
|
CFLAGS="$CFLAGS -mcpu=v9"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
#NGX_GCC_OPT="-O2"
|
||||||
|
#NGX_GCC_OPT="-Os"
|
||||||
|
NGX_GCC_OPT="-O"
|
||||||
|
|
||||||
|
#CFLAGS="$CFLAGS -fomit-frame-pointer"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro | pentium3)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-march=pentiumpro"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, gcc 3.x
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
athlon)
|
||||||
|
# optimize for Athlon, gcc 3.x
|
||||||
|
CPU_OPT="-march=athlon"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron, gcc 3.x
|
||||||
|
CPU_OPT="-march=opteron"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc32)
|
||||||
|
# build 32-bit UltraSparc binary
|
||||||
|
CPU_OPT="-m32"
|
||||||
|
CORE_LINK="$CORE_LINK -m32"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc64)
|
||||||
|
# build 64-bit UltraSparc binary
|
||||||
|
CPU_OPT="-m64"
|
||||||
|
CORE_LINK="$CORE_LINK -m64"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
ppc64)
|
||||||
|
# build 64-bit PowerPC binary
|
||||||
|
CPU_OPT="-m64"
|
||||||
|
CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32"
|
||||||
|
CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32"
|
||||||
|
CORE_LINK="$CORE_LINK -m64"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
case "$NGX_GCC_VER" in
|
||||||
|
2.7*)
|
||||||
|
# batch build
|
||||||
|
CPU_OPT=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $PIPE $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
|
||||||
|
else
|
||||||
|
PCRE_OPT="$PCRE_OPT $PIPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
|
||||||
|
else
|
||||||
|
ZLIB_OPT="$ZLIB_OPT $PIPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
# -W requires at least -O
|
||||||
|
CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -Wall -Wextra -Wpointer-arith"
|
||||||
|
#CFLAGS="$CFLAGS -Wconversion"
|
||||||
|
#CFLAGS="$CFLAGS -Winline"
|
||||||
|
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
||||||
|
|
||||||
|
case "$NGX_GCC_VER" in
|
||||||
|
2.*)
|
||||||
|
# we have a lot of the unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# we have a lot of the unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
||||||
|
# 4.2.1 shows the warning in wrong places
|
||||||
|
#CFLAGS="$CFLAGS -Wunreachable-code"
|
||||||
|
|
||||||
|
# deprecated system OpenSSL library on OS X
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
|
|
||||||
|
# DragonFly's gcc3 generates DWARF
|
||||||
|
#CFLAGS="$CFLAGS -g -gstabs"
|
||||||
|
|
||||||
|
if [ ".$CPP" = "." ]; then
|
||||||
|
CPP="$CC -E"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "gcc version" "cc"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
|
||||||
|
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2
|
||||||
|
# 4.0.0, 4.0.1, 4.1.0
|
||||||
|
|
||||||
|
|
||||||
|
NGX_GCC_VER=`$CC -v 2>&1 | grep 'gcc version' 2>&1 \
|
||||||
|
| sed -e 's/^.* version \(.*\)/\1/'`
|
||||||
|
|
||||||
|
echo " + gcc version: $NGX_GCC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "NGX_GCC_VER=\"$NGX_GCC_VER\""
|
||||||
|
echo 'have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define'
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1
|
||||||
|
|
||||||
|
NGX_ICC_VER=`$CC -V 2>&1 | grep 'Version' 2>&1 \
|
||||||
|
| sed -e 's/^.* Version \([^ ]*\) *Build.*$/\1/'`
|
||||||
|
|
||||||
|
echo " + icc version: $NGX_ICC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"Intel C Compiler $NGX_ICC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -O"
|
||||||
|
|
||||||
|
CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-mcpu=pentiumpro -march=pentiumpro"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, default
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -w2"
|
||||||
|
|
||||||
|
# disable some warnings
|
||||||
|
|
||||||
|
# invalid type conversion: "int" to "char *"
|
||||||
|
CFLAGS="$CFLAGS -wd171"
|
||||||
|
# argument is incompatible with corresponding format string conversion
|
||||||
|
CFLAGS="$CFLAGS -wd181"
|
||||||
|
# zero used for undefined preprocessing identifier
|
||||||
|
CFLAGS="$CFLAGS -wd193"
|
||||||
|
# the format string ends before this argument
|
||||||
|
CFLAGS="$CFLAGS -wd268"
|
||||||
|
# invalid format string conversion
|
||||||
|
CFLAGS="$CFLAGS -wd269"
|
||||||
|
# conversion from "long long" to "size_t" may lose significant bits
|
||||||
|
CFLAGS="$CFLAGS -wd810"
|
||||||
|
# parameter was never referenced
|
||||||
|
CFLAGS="$CFLAGS -wd869"
|
||||||
|
# attribute "unused" is only allowed in a function definition, warning on pTHX_
|
||||||
|
CFLAGS="$CFLAGS -wd1301"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
# enumerated type mixed with another type
|
||||||
|
CFLAGS="$CFLAGS -wd188"
|
||||||
|
# controlling expression is constant
|
||||||
|
CFLAGS="$CFLAGS -wd279"
|
||||||
|
# operands are evaluated in unspecified order
|
||||||
|
CFLAGS="$CFLAGS -wd981"
|
||||||
|
# external definition with no prior declaration
|
||||||
|
CFLAGS="$CFLAGS -wd1418"
|
||||||
|
# external declaration in primary source file
|
||||||
|
CFLAGS="$CFLAGS -wd1419"
|
||||||
|
|
||||||
|
case "$NGX_ICC_VER" in
|
||||||
|
9.*)
|
||||||
|
# "cc" clobber ignored, warnings for Linux's htonl()/htons()
|
||||||
|
CFLAGS="$CFLAGS -wd1469"
|
||||||
|
# explicit conversion of a 64-bit integral type to a smaller
|
||||||
|
# integral type
|
||||||
|
CFLAGS="$CFLAGS -wd1683"
|
||||||
|
# conversion from pointer to same-sized integral type,
|
||||||
|
# warning on offsetof()
|
||||||
|
CFLAGS="$CFLAGS -wd1684"
|
||||||
|
# floating-point equality and inequality comparisons are unreliable,
|
||||||
|
# warning on SvTRUE()
|
||||||
|
CFLAGS="$CFLAGS -wd1572"
|
||||||
|
;;
|
||||||
|
|
||||||
|
8.*)
|
||||||
|
# "cc" clobber ignored, warnings for Linux's htonl()/htons()
|
||||||
|
CFLAGS="$CFLAGS -wd1469"
|
||||||
|
# floating-point equality and inequality comparisons are unreliable,
|
||||||
|
# warning on SvTRUE()
|
||||||
|
CFLAGS="$CFLAGS -wd1572"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# MSVC 6.0 SP2 cl 12.00
|
||||||
|
# MSVC Toolkit 2003 (7.1) cl 13.10
|
||||||
|
# MSVC 2005 Express Edition SP1 (8.0) cl 14.00
|
||||||
|
# MSVC 2008 Express Edition (9.0) cl 15.00
|
||||||
|
# MSVC 2010 (10.0) cl 16.00
|
||||||
|
# MSVC 2015 (14.0) cl 19.00
|
||||||
|
|
||||||
|
|
||||||
|
NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep '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
|
||||||
|
|
||||||
|
*ARM64)
|
||||||
|
NGX_MACHINE=arm64
|
||||||
|
;;
|
||||||
|
|
||||||
|
*x64)
|
||||||
|
NGX_MACHINE=amd64
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_MACHINE=i386
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
|
||||||
|
CFLAGS="$CFLAGS -O2"
|
||||||
|
|
||||||
|
# enable global optimization
|
||||||
|
#CFLAGS="$CFLAGS -Og"
|
||||||
|
# enable intrinsic functions
|
||||||
|
#CFLAGS="$CFLAGS -Oi"
|
||||||
|
|
||||||
|
# disable inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob0"
|
||||||
|
# explicit inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob1"
|
||||||
|
# explicit and implicit inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob2"
|
||||||
|
|
||||||
|
# enable frame pointer omission
|
||||||
|
#CFLAGS="$CFLAGS -Oy"
|
||||||
|
# disable stack checking calls
|
||||||
|
#CFLAGS="$CFLAGS -Gs"
|
||||||
|
|
||||||
|
# pools strings as read/write
|
||||||
|
#CFLAGS="$CFLAGS -Gf"
|
||||||
|
# pools strings as read-only
|
||||||
|
#CFLAGS="$CFLAGS -GF"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-G5"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-G6"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, MSVC 7
|
||||||
|
CPU_OPT="-G7"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
|
||||||
|
#CPU_OPT="$CPU_OPT -Gd"
|
||||||
|
# __stdcall
|
||||||
|
#CPU_OPT="$CPU_OPT -Gz"
|
||||||
|
# __fastcall
|
||||||
|
#CPU_OPT="$CPU_OPT -Gr"
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -W4"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -WX"
|
||||||
|
|
||||||
|
# disable logo
|
||||||
|
CFLAGS="$CFLAGS -nologo"
|
||||||
|
|
||||||
|
# the link flags
|
||||||
|
CORE_LINK="$CORE_LINK -link -verbose:lib"
|
||||||
|
|
||||||
|
# link with libcmt.lib, multithreaded
|
||||||
|
LIBC="-MT"
|
||||||
|
# link with msvcrt.dll
|
||||||
|
# however, MSVC Toolkit 2003 has no MSVCRT.LIB
|
||||||
|
#LIBC="-MD"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $LIBC"
|
||||||
|
|
||||||
|
CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
|
||||||
|
|
||||||
|
# Win32 GUI mode application
|
||||||
|
#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
# msvc under Wine issues
|
||||||
|
# C1902: Program database manager mismatch; please check your installation
|
||||||
|
if [ -z "$NGX_WINE" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Zi -Fd$NGX_OBJS/nginx.pdb"
|
||||||
|
CORE_LINK="$CORE_LINK -debug"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# MSVC 2005 supports C99 variadic macros
|
||||||
|
if [ "$ngx_msvc_ver" -ge 14 ]; then
|
||||||
|
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# precompiled headers
|
||||||
|
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
|
||||||
|
CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
|
||||||
|
NGX_PCH="$NGX_OBJS/ngx_config.pch"
|
||||||
|
NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
||||||
|
NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RES="$NGX_OBJS/nginx.res"
|
||||||
|
NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
|
||||||
|
CORE_LINK="$NGX_RES $CORE_LINK"
|
||||||
|
|
||||||
|
|
||||||
|
# dynamic modules
|
||||||
|
#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
|
||||||
|
#MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
|
||||||
|
|
||||||
|
|
||||||
|
ngx_pic_opt=
|
||||||
|
ngx_objout="-Fo"
|
||||||
|
ngx_binout="-Fe"
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_long_start='@<<
|
||||||
|
'
|
||||||
|
ngx_long_end='<<'
|
||||||
|
ngx_long_regex_cont=' \
|
||||||
|
'
|
||||||
|
ngx_long_cont='
|
||||||
|
'
|
||||||
|
|
||||||
|
# MSVC understand / in path
|
||||||
|
#ngx_regex_dirsep='\\'
|
||||||
|
#ngx_dirsep="\\"
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "compiler name" "cc"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$CC" = cl ]; then
|
||||||
|
NGX_CC_NAME=msvc
|
||||||
|
echo " + using Microsoft Visual C++ compiler"
|
||||||
|
|
||||||
|
elif [ "$CC" = wcl386 ]; then
|
||||||
|
NGX_CC_NAME=owc
|
||||||
|
echo " + using Open Watcom C compiler"
|
||||||
|
|
||||||
|
elif [ "$CC" = bcc32 ]; then
|
||||||
|
NGX_CC_NAME=bcc
|
||||||
|
echo " + using Borland C++ compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=icc
|
||||||
|
echo " + using Intel C++ compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=gcc
|
||||||
|
echo " + using GNU C compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'clang version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=clang
|
||||||
|
echo " + using Clang C compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'LLVM version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=clang
|
||||||
|
echo " + using Clang C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=sunc
|
||||||
|
echo " + using Sun C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=ccc
|
||||||
|
echo " + using Compaq C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=acc
|
||||||
|
echo " + using HP aC++ compiler"
|
||||||
|
|
||||||
|
else
|
||||||
|
NGX_CC_NAME=unknown
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "NGX_CC_NAME=$NGX_CC_NAME"
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Open Watcom C 1.0, 1.2, 1.3
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed
|
||||||
|
CFLAGS="$CFLAGS -ot"
|
||||||
|
# reorder instructions for best pipeline usage
|
||||||
|
CFLAGS="$CFLAGS -op"
|
||||||
|
# inline intrinsic functions
|
||||||
|
CFLAGS="$CFLAGS -oi"
|
||||||
|
# inline expansion
|
||||||
|
CFLAGS="$CFLAGS -oe"
|
||||||
|
# disable stack checking calls
|
||||||
|
CFLAGS="$CFLAGS -s"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
# register-based arguments passing conventions
|
||||||
|
CPU_OPT="-5r"
|
||||||
|
# stack-based arguments passing conventions
|
||||||
|
#CPU_OPT="-5s"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
# register-based arguments passing conventions
|
||||||
|
CPU_OPT="-6r"
|
||||||
|
# stack-based arguments passing conventions
|
||||||
|
#CPU_OPT="-6s"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
# maximum level
|
||||||
|
CFLAGS="$CFLAGS -wx"
|
||||||
|
#CFLAGS="$CFLAGS -w3"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -we"
|
||||||
|
|
||||||
|
# built target is NT
|
||||||
|
CFLAGS="$CFLAGS -bt=nt"
|
||||||
|
|
||||||
|
# multithreaded
|
||||||
|
CFLAGS="$CFLAGS -bm"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -d2"
|
||||||
|
|
||||||
|
# quiet
|
||||||
|
CFLAGS="$CFLAGS -zq"
|
||||||
|
|
||||||
|
# Open Watcom C 1.2
|
||||||
|
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
|
||||||
|
|
||||||
|
|
||||||
|
# the precompiled headers
|
||||||
|
#CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_PCH="$NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_BUILD_PCH="-fhq=$NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_USE_PCH="-fh=$NGX_OBJS/ngx_config.pch"
|
||||||
|
|
||||||
|
|
||||||
|
# the link flags, built target is NT GUI mode application
|
||||||
|
#CORE_LINK="$CORE_LINK -l=nt_win"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RCC="wrc \$(CORE_INCS) -fo=$NGX_OBJS/nginx.res "
|
||||||
|
NGX_RCC="$NGX_RCC $NGX_WIN32_RC $NGX_OBJS/nginx.exe"
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include_opt="-i="
|
||||||
|
ngx_objout="-fo"
|
||||||
|
ngx_binout="-fe="
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_regex_dirsep='\\'
|
||||||
|
ngx_dirsep="\\"
|
||||||
|
|
||||||
|
ngx_long_start=' '
|
||||||
|
ngx_long_end=' '
|
||||||
|
ngx_long_regex_cont=' \&\
|
||||||
|
'
|
||||||
|
ngx_long_cont=' &
|
||||||
|
'
|
||||||
|
|
||||||
|
ngx_regex_cont=' \&\
|
||||||
|
'
|
||||||
|
ngx_cont=' &
|
||||||
|
'
|
||||||
|
ngx_tab=' &
|
||||||
|
'
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10
|
||||||
|
# Sun C 5.8 2005/10/13 Sun Studio 11
|
||||||
|
# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
|
||||||
|
# Sun C 5.9 SunOS_sparc 2007/05/03
|
||||||
|
# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1
|
||||||
|
# Sun C 5.11 SunOS_i386 2010/08/13 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 \
|
||||||
|
| sed -e 's/^.* Sun C \(.*\)/\1/'`
|
||||||
|
|
||||||
|
echo " + Sun C version: $NGX_SUNC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
printf("%d", __SUNPRO_C);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
ngx_sunc_ver=`$NGX_AUTOTEST`
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
# 1424 == 0x590, Sun Studio 12
|
||||||
|
|
||||||
|
if [ "$ngx_sunc_ver" -ge 1424 ]; then
|
||||||
|
ngx_sparc32="-m32"
|
||||||
|
ngx_sparc64="-m64"
|
||||||
|
ngx_amd64="-m64"
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_sparc32="-xarch=v8plus"
|
||||||
|
ngx_sparc64="-xarch=v9"
|
||||||
|
ngx_amd64="-xarch=amd64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i86pc)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-G"
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# 20736 == 0x5100, Sun Studio 12.1
|
||||||
|
|
||||||
|
if [ "$ngx_sunc_ver" -ge 20736 ]; then
|
||||||
|
ngx_fast="-fast"
|
||||||
|
|
||||||
|
else
|
||||||
|
# older versions had problems with bit-fields
|
||||||
|
ngx_fast="-fast -xalias_level=any"
|
||||||
|
fi
|
||||||
|
|
||||||
|
IPO=-xipo
|
||||||
|
CFLAGS="$CFLAGS $ngx_fast $IPO"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_fast $IPO"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-xchip=pentium"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II
|
||||||
|
CPU_OPT="-xchip=pentium_pro"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium3)
|
||||||
|
# optimize for Pentium III
|
||||||
|
CPU_OPT="-xchip=pentium3"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4
|
||||||
|
CPU_OPT="-xchip=pentium4"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse2"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8"
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron
|
||||||
|
CPU_OPT="-xchip=opteron"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse2"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc32)
|
||||||
|
# build 32-bit UltraSparc binary
|
||||||
|
CPU_OPT="$ngx_sparc32"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_sparc32"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc64)
|
||||||
|
# build 64-bit UltraSparc binary
|
||||||
|
CPU_OPT="$ngx_sparc64"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_sparc64"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
amd64)
|
||||||
|
# build 64-bit amd64 binary
|
||||||
|
CPU_OPT="$ngx_amd64"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_amd64"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -errwarn=%all"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
Executable
+60
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
|
||||||
|
# Example script for configuring cross-build targets
|
||||||
|
#
|
||||||
|
# Arguments are:
|
||||||
|
#
|
||||||
|
# $1 - autotest binary
|
||||||
|
# $2 - test type
|
||||||
|
# $3 - test arguments (for example, type name for sizeof)
|
||||||
|
|
||||||
|
# the real life scenarios will either invoke binary on remote/VM
|
||||||
|
# or provide platform-specific values for each test
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
|
||||||
|
"feature")
|
||||||
|
|
||||||
|
case "$3" in
|
||||||
|
"NGX_HAVE_SENDFILE")
|
||||||
|
# pretend feature is missing
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# pretend success
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
"sizeof")
|
||||||
|
|
||||||
|
# report platform-specific values
|
||||||
|
case "$3" in
|
||||||
|
"int") echo 4 ;;
|
||||||
|
"long") echo 8 ;;
|
||||||
|
"long long") echo 8;;
|
||||||
|
"void *") echo 8 ;;
|
||||||
|
"size_t") echo 8 ;;
|
||||||
|
"off_t") echo 8 ;;
|
||||||
|
"time_t") echo 8 ;;
|
||||||
|
"sig_atomic_t") echo 4 ;;
|
||||||
|
"*")
|
||||||
|
echo "unknown type"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
"endianness")
|
||||||
|
# 0 -> LE, 1 -> BE
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "unknown test"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have $value
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "little endian" "endianness"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for system byte ordering ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for system byte ordering
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int i = 0x11223344;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
p = (char *) &i;
|
||||||
|
if (*p == 0x44) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="($CC -c $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.o $NGX_LD_OPT $ngx_feature_libs)"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
if runtest "endianness" ""; then
|
||||||
|
echo " little endian"
|
||||||
|
have=NGX_HAVE_LITTLE_ENDIAN . auto/have
|
||||||
|
ngx_found=yes
|
||||||
|
else
|
||||||
|
echo " big endian"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
else
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "$0: error: cannot detect system byte ordering"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=$ngx_found"
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
echo "have=NGX_HAVE_LITTLE_ENDIAN . auto/have"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "$ngx_feature" "feature"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_feature ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_feature
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
ngx_add_have=no
|
||||||
|
ngx_add_value=no
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
name2macro "$ngx_feature_name"
|
||||||
|
ngx_have_feature="$res"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_path"; then
|
||||||
|
for ngx_temp in $ngx_feature_path; do
|
||||||
|
ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
$NGX_INCLUDE_UNISTD_H
|
||||||
|
$ngx_feature_incs
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
$ngx_feature_test;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="($CC -c $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
|
||||||
|
-o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.o $NGX_TEST_LD_OPT $ngx_feature_libs)"
|
||||||
|
|
||||||
|
ngx_feature_inc_path=
|
||||||
|
|
||||||
|
eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
|
||||||
|
case "$ngx_feature_run" in
|
||||||
|
|
||||||
|
yes)
|
||||||
|
if runtest "feature" "$ngx_feature_name"; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
ngx_add_have=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " found but is not working"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
value)
|
||||||
|
if runtest "feature" "$ngx_feature_name"; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
have="$ngx_feature_name" value="$ngx_rtval" . auto/define
|
||||||
|
ngx_add_value=$value
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " found but is not working"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bug)
|
||||||
|
if runtest "feature" "$ngx_feature_name"; then
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
ngx_add_have=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
ngx_add_have=yes
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=$ngx_found"
|
||||||
|
|
||||||
|
if [ $ngx_add_have = yes ]; then
|
||||||
|
echo "have=$ngx_have_feature . auto/have"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_add_value != no ]; then
|
||||||
|
echo "have=\"$ngx_feature_name\" value=\"$ngx_add_value\" . auto/define"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_HEADERS_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="unistd.h"; . auto/include
|
||||||
|
ngx_include="inttypes.h"; . auto/include
|
||||||
|
ngx_include="limits.h"; . auto/include
|
||||||
|
ngx_include="sys/filio.h"; . auto/include
|
||||||
|
ngx_include="sys/param.h"; . auto/include
|
||||||
|
ngx_include="sys/mount.h"; . auto/include
|
||||||
|
ngx_include="sys/statvfs.h"; . auto/include
|
||||||
|
ngx_include="crypt.h"; . auto/include
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "$ngx_include" "include"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_include ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_include
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
$NGX_INCLUDE_SYS_PARAM_H
|
||||||
|
#include <$ngx_include>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="($CC -c -o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.o)"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
echo " found"
|
||||||
|
|
||||||
|
name2macro "$ngx_include"
|
||||||
|
ngx_name="$res"
|
||||||
|
|
||||||
|
have=NGX_HAVE_$ngx_name . auto/have_headers
|
||||||
|
|
||||||
|
eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=$ngx_found"
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
echo "have=NGX_HAVE_$ngx_name . auto/have_headers"
|
||||||
|
echo "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
NGX_MAKEFILE=$NGX_OBJS/Makefile
|
||||||
|
NGX_MODULES_C=$NGX_OBJS/ngx_modules.c
|
||||||
|
|
||||||
|
NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h
|
||||||
|
NGX_AUTO_CONFIG_H=$NGX_OBJS/ngx_auto_config.h
|
||||||
|
|
||||||
|
NGX_AUTOTEST=$NGX_OBJS/autotest
|
||||||
|
NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err
|
||||||
|
|
||||||
|
# STUBs
|
||||||
|
NGX_ERR=$NGX_OBJS/autoconf.err
|
||||||
|
MAKEFILE=$NGX_OBJS/Makefile
|
||||||
|
|
||||||
|
|
||||||
|
NGX_PCH=
|
||||||
|
NGX_USE_PCH=
|
||||||
|
|
||||||
|
|
||||||
|
# check the echo's "-n" option and "\c" capability
|
||||||
|
|
||||||
|
if echo "test\c" | grep c >/dev/null; then
|
||||||
|
|
||||||
|
if echo -n test | grep n >/dev/null; then
|
||||||
|
ngx_n=
|
||||||
|
ngx_c=
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_n=-n
|
||||||
|
ngx_c=
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_n=
|
||||||
|
ngx_c='\c'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# create Makefile
|
||||||
|
|
||||||
|
cat << END > Makefile
|
||||||
|
|
||||||
|
default: build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf Makefile $NGX_OBJS
|
||||||
|
|
||||||
|
.PHONY: default clean
|
||||||
|
END
|
||||||
@@ -0,0 +1,228 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
install_perl_modules:
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) install
|
||||||
|
END
|
||||||
|
|
||||||
|
NGX_INSTALL_PERL_MODULES=install_perl_modules
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_SBIN_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_SBIN_PATH=$NGX_PREFIX/$NGX_SBIN_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_MODULES_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_MODULES_PATH=$NGX_PREFIX/$NGX_MODULES_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
NGX_MODULES_PATH=`dirname $NGX_MODULES_PATH/.`
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_CONF_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_CONF_PATH=$NGX_PREFIX/$NGX_CONF_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_PID_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_PID_PATH=$NGX_PREFIX/$NGX_PID_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_ERROR_LOG_PATH" in
|
||||||
|
./* | .)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_ERROR_LOG_PATH=$NGX_PREFIX/$NGX_ERROR_LOG_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_HTTP_LOG_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_HTTP_LOG_PATH=$NGX_PREFIX/$NGX_HTTP_LOG_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if test -f man/angie.8 ; then
|
||||||
|
NGX_MAN=man/angie.8
|
||||||
|
else
|
||||||
|
NGX_MAN=docs/man/angie.8
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -d html ; then
|
||||||
|
NGX_HTML=html
|
||||||
|
else
|
||||||
|
NGX_HTML=docs/html
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
manpage: $NGX_OBJS/angie.8
|
||||||
|
|
||||||
|
$NGX_OBJS/angie.8: $NGX_MAN $NGX_AUTO_CONFIG_H
|
||||||
|
sed -e "s|%%PREFIX%%|$NGX_PREFIX|" \\
|
||||||
|
-e "s|%%PID_PATH%%|$NGX_PID_PATH|" \\
|
||||||
|
-e "s|%%CONF_PATH%%|$NGX_CONF_PATH|" \\
|
||||||
|
-e "s|%%ERROR_LOG_PATH%%|${NGX_ERROR_LOG_PATH:-stderr}|" \\
|
||||||
|
< $NGX_MAN > \$@
|
||||||
|
|
||||||
|
install: build $NGX_INSTALL_PERL_MODULES
|
||||||
|
test -d '\$(DESTDIR)$NGX_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_PREFIX'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`'
|
||||||
|
test ! -f '\$(DESTDIR)$NGX_SBIN_PATH' \\
|
||||||
|
|| mv '\$(DESTDIR)$NGX_SBIN_PATH' \\
|
||||||
|
'\$(DESTDIR)$NGX_SBIN_PATH.old'
|
||||||
|
cp $NGX_OBJS/angie$ngx_binext '\$(DESTDIR)$NGX_SBIN_PATH'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_CONF_PREFIX' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
|
||||||
|
cp conf/koi-win '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/koi-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/win-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types' \\
|
||||||
|
|| cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params' \\
|
||||||
|
|| cp conf/fastcgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/fastcgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf' \\
|
||||||
|
|| cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params' \\
|
||||||
|
|| cp conf/uwsgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/uwsgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params' \\
|
||||||
|
|| cp conf/scgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/scgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/prometheus_all.conf' \\
|
||||||
|
|| cp conf/prometheus_all.conf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/prometheus_all.conf \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/prometheus_all.conf.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PATH' \\
|
||||||
|
|| cp conf/angie.conf '\$(DESTDIR)$NGX_CONF_PATH'
|
||||||
|
cp conf/angie.conf '\$(DESTDIR)$NGX_CONF_PREFIX/angie.conf.default'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_PID_PATH"`'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_PREFIX/html' \\
|
||||||
|
|| cp -R $NGX_HTML '\$(DESTDIR)$NGX_PREFIX'
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_ERROR_LOG_PATH"; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`'
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$DYNAMIC_MODULES"; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_MODULES_PATH' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)$NGX_MODULES_PATH'
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
for ngx_module in $DYNAMIC_MODULES
|
||||||
|
do
|
||||||
|
ngx_module=$ngx_module$ngx_modext
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test ! -f '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\
|
||||||
|
|| mv '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\
|
||||||
|
'\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module.old'
|
||||||
|
cp $NGX_OBJS/$ngx_module '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module'
|
||||||
|
END
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# create Makefile
|
||||||
|
|
||||||
|
cat << END >> Makefile
|
||||||
|
|
||||||
|
build:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE
|
||||||
|
|
||||||
|
install:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE install
|
||||||
|
|
||||||
|
modules:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE modules
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
$NGX_SBIN_PATH -t
|
||||||
|
|
||||||
|
kill -USR2 \`cat $NGX_PID_PATH\`
|
||||||
|
sleep 1
|
||||||
|
test -f $NGX_PID_PATH.oldbin
|
||||||
|
|
||||||
|
kill -QUIT \`cat $NGX_PID_PATH.oldbin\`
|
||||||
|
|
||||||
|
test:
|
||||||
|
\$(MAKE) -C tests/
|
||||||
|
|
||||||
|
.PHONY: build install modules upgrade test
|
||||||
|
END
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_PCRE = YES -o $PCRE != NONE ]; then
|
||||||
|
. auto/lib/pcre/conf
|
||||||
|
|
||||||
|
else
|
||||||
|
if [ $USE_PCRE = DISABLED -a $HTTP = YES -a $HTTP_REWRITE = YES ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP rewrite module requires the PCRE library.
|
||||||
|
You can either disable the module by using --without-http_rewrite_module
|
||||||
|
option or you have to enable the PCRE support.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_OPENSSL = YES ]; then
|
||||||
|
. auto/lib/openssl/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_ZLIB = YES ]; then
|
||||||
|
. auto/lib/zlib/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_LIBXSLT != NO ]; then
|
||||||
|
. auto/lib/libxslt/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_LIBGD != NO ]; then
|
||||||
|
. auto/lib/libgd/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
. auto/lib/perl/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_GEOIP != NO ]; then
|
||||||
|
. auto/lib/geoip/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then
|
||||||
|
. auto/lib/google-perftools/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != NO ]; then
|
||||||
|
. auto/lib/libatomic/conf
|
||||||
|
fi
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <GeoIP.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lGeoIP"
|
||||||
|
ngx_feature_test="GeoIP_open(NULL, 0)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# Homebrew on Apple Silicon
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /opt/homebrew/"
|
||||||
|
ngx_feature_path="/opt/homebrew/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/homebrew/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_GEOIP = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_GEOIP=$ngx_feature_libs
|
||||||
|
|
||||||
|
ngx_feature="GeoIP IPv6 support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GEOIP_V6"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#include <GeoIP.h>"
|
||||||
|
#ngx_feature_path=
|
||||||
|
#ngx_feature_libs=
|
||||||
|
ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the GeoIP module requires the GeoIP library.
|
||||||
|
You can either do not enable the module or install the library.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="Google perftools"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lprofiler"
|
||||||
|
ngx_feature_test="void ProfilerStop(void);
|
||||||
|
ProfilerStop()"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="Google perftools in /usr/local/"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lprofiler"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lprofiler"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="Google perftools in /opt/local/"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lprofiler"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lprofiler"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# Homebrew on Apple Silicon
|
||||||
|
|
||||||
|
ngx_feature="Google perftools in /opt/homebrew/"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lprofiler"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/homebrew/lib -lprofiler"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the Google perftools module requires the Google perftools
|
||||||
|
library. You can either do not enable the module or install the library.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != YES ]; then
|
||||||
|
|
||||||
|
have=NGX_HAVE_LIBATOMIC . auto/have
|
||||||
|
CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src"
|
||||||
|
LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/build/lib/libatomic_ops.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/build/lib/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="AO_t n = 0;
|
||||||
|
if (!AO_compare_and_swap(&n, 0, 1))
|
||||||
|
return 1;
|
||||||
|
if (AO_fetch_and_add(&n, 1) != 1)
|
||||||
|
return 1;
|
||||||
|
if (n != 2)
|
||||||
|
return 1;
|
||||||
|
AO_nop();"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: libatomic_ops library was not found.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case $NGX_LIBATOMIC in
|
||||||
|
/*) ngx_prefix="$NGX_LIBATOMIC/build" ;;
|
||||||
|
*) ngx_prefix="$PWD/$NGX_LIBATOMIC/build" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$NGX_LIBATOMIC/build/lib/libatomic_ops.a: $NGX_LIBATOMIC/Makefile
|
||||||
|
cd $NGX_LIBATOMIC && \$(MAKE) && \$(MAKE) install
|
||||||
|
|
||||||
|
$NGX_LIBATOMIC/Makefile: $NGX_MAKEFILE
|
||||||
|
cd $NGX_LIBATOMIC \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
||||||
|
&& ./configure --prefix=$ngx_prefix
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2025 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="GD library"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <gd.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lgd"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="GD library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="GD library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="GD library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# Homebrew on Apple Silicon
|
||||||
|
|
||||||
|
ngx_feature="GD library in /opt/homebrew/"
|
||||||
|
ngx_feature_path="/opt/homebrew/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/homebrew/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_LIBGD = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBGD=$ngx_feature_libs
|
||||||
|
|
||||||
|
ngx_feature="GD WebP support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GD_WEBP"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromWebpPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
ngx_feature="GD HEIC support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GD_HEIC"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromHeifPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
ngx_feature="GD AVIF support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GD_AVIF"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromAvifPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP image filter module requires the GD library.
|
||||||
|
You can either do not enable the module or install the libraries.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="libxslt"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libxml/parser.h>
|
||||||
|
#include <libxml/tree.h>
|
||||||
|
#include <libxslt/xslt.h>
|
||||||
|
#include <libxslt/xsltInternals.h>
|
||||||
|
#include <libxslt/transform.h>
|
||||||
|
#include <libxslt/xsltutils.h>"
|
||||||
|
ngx_feature_path="/usr/include/libxml2"
|
||||||
|
ngx_feature_libs="-lxml2 -lxslt"
|
||||||
|
ngx_feature_test="xmlParserCtxtPtr ctxt = NULL;
|
||||||
|
xsltStylesheetPtr sheet = NULL;
|
||||||
|
xmlDocPtr doc = NULL;
|
||||||
|
xmlParseChunk(ctxt, NULL, 0, 0);
|
||||||
|
xsltApplyStylesheet(sheet, doc, NULL);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include/libxml2 /usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_LIBXSLT = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBXSLT=$ngx_feature_libs
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP XSLT module requires the libxml2/libxslt
|
||||||
|
libraries. You can either do not enable the module or install the libraries.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="libexslt"
|
||||||
|
ngx_feature_name=NGX_HAVE_EXSLT
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libexslt/exslt.h>"
|
||||||
|
ngx_feature_path="/usr/include/libxml2"
|
||||||
|
ngx_feature_libs="-lexslt"
|
||||||
|
ngx_feature_test="exsltRegisterAll();"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
if [ $USE_LIBXSLT = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBXSLT="$NGX_LIB_LIBXSLT -lexslt"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then
|
||||||
|
. auto/lib/pcre/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then
|
||||||
|
. auto/lib/openssl/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ZLIB != NONE -a $ZLIB != NO -a $ZLIB != YES ]; then
|
||||||
|
. auto/lib/zlib/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != NO -a $NGX_LIBATOMIC != YES ]; then
|
||||||
|
. auto/lib/libatomic/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
. auto/lib/perl/make
|
||||||
|
fi
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $OPENSSL != NONE ]; then
|
||||||
|
|
||||||
|
have=NGX_OPENSSL . auto/have
|
||||||
|
have=NGX_SSL . auto/have
|
||||||
|
|
||||||
|
have=NGX_OPENSSL_NO_CONFIG . auto/have
|
||||||
|
|
||||||
|
if [ $USE_OPENSSL_QUIC = YES ]; then
|
||||||
|
have=NGX_QUIC . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$CC" in
|
||||||
|
|
||||||
|
cl | bcc32)
|
||||||
|
CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
|
||||||
|
CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
|
||||||
|
|
||||||
|
if [ -f $OPENSSL/ms/do_ms.bat ]; then
|
||||||
|
# before OpenSSL 1.1.0
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
|
||||||
|
else
|
||||||
|
# OpenSSL 1.1.0+
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# libeay32.lib requires gdi32.lib
|
||||||
|
CORE_LIBS="$CORE_LIBS gdi32.lib"
|
||||||
|
# OpenSSL 1.0.0 requires crypt32.lib
|
||||||
|
CORE_LIBS="$CORE_LIBS crypt32.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
|
||||||
|
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
OPENSSL=NO
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library"
|
||||||
|
ngx_feature_name="NGX_OPENSSL"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <openssl/ssl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL $NGX_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 = no ]; then
|
||||||
|
|
||||||
|
# Homebrew on Apple Silicon
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library in /opt/homebrew/"
|
||||||
|
ngx_feature_path="/opt/homebrew/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lssl -lcrypto"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/homebrew/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
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
OPENSSL=YES
|
||||||
|
|
||||||
|
if [ $USE_OPENSSL_QUIC = YES ]; then
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL QUIC API"
|
||||||
|
ngx_feature_name="NGX_QUIC"
|
||||||
|
ngx_feature_test="SSL_set_quic_tls_cbs(NULL, NULL, NULL)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
ngx_feature="BoringSSL-like QUIC API"
|
||||||
|
ngx_feature_test="SSL_set_quic_method(NULL, NULL)"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
ngx_feature="OpenSSL QUIC compatibility"
|
||||||
|
ngx_feature_test="SSL_CTX_add_custom_ext(NULL, 0, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL)"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: certain modules require OpenSSL QUIC support.
|
||||||
|
You can either do not enable the modules, or install the OpenSSL library with
|
||||||
|
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
|
||||||
|
|
||||||
|
if [ $HTTP_ACME = YES ]; then
|
||||||
|
ngx_feature="OpenSSL version for ACME support"
|
||||||
|
ngx_feature_name="NGX_HTTP_ACME"
|
||||||
|
ngx_feature_incs="#define OPENSSL_SUPPRESS_DEPRECATED
|
||||||
|
#include <openssl/x509v3.h>
|
||||||
|
#include <openssl/ssl.h>"
|
||||||
|
ngx_feature_test="EVP_PKEY_get0_EC_KEY(NULL);
|
||||||
|
EVP_PKEY_get0_RSA(NULL);
|
||||||
|
RSA_get0_key(NULL, NULL, NULL, NULL);
|
||||||
|
EC_POINT_get_affine_coordinates(NULL, NULL, NULL, NULL, NULL);
|
||||||
|
ECDSA_SIG_get0(NULL, NULL, NULL);
|
||||||
|
#if defined(OPENSSL_IS_BORINGSSL) || defined(OPENSSL_IS_AWSLC)
|
||||||
|
X509V3_EXT_nconf_nid(NULL, NULL, NID_server_auth, NULL);
|
||||||
|
#else
|
||||||
|
X509V3_EXT_conf_nid(NULL, NULL, NID_tlsfeature, NULL);
|
||||||
|
#endif
|
||||||
|
"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: your OpenSSL library is missing some functionality required for ACME support.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OPENSSL != YES ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: SSL modules require the OpenSSL library.
|
||||||
|
You can either do not enable the modules, or install the OpenSSL library
|
||||||
|
into the system, or build the OpenSSL library statically from the source
|
||||||
|
with Angie by using --with-openssl=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case "$CC" in
|
||||||
|
|
||||||
|
cl)
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
amd64)
|
||||||
|
OPENSSL_TARGET=VC-WIN64A
|
||||||
|
;;
|
||||||
|
|
||||||
|
arm64)
|
||||||
|
OPENSSL_TARGET=VC-WIN64-ARM
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
OPENSSL_TARGET=VC-WIN32
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE
|
||||||
|
\$(MAKE) -f auto/lib/openssl/makefile.msvc \
|
||||||
|
OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT" \
|
||||||
|
OPENSSL_TARGET="$OPENSSL_TARGET"
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc32)
|
||||||
|
|
||||||
|
ngx_opt=`echo "-DOPENSSL=\"$OPENSSL\" -DOPENSSL_OPT=\"$OPENSSL_OPT\"" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\lib\\libeay32.lib: \
|
||||||
|
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\lib\\ssleay32.lib: \
|
||||||
|
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\include\\openssl\\ssl.h: $NGX_MAKEFILE" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/openssl/makefile.bcc $ngx_opt
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
case $OPENSSL in
|
||||||
|
/*) ngx_prefix="$OPENSSL/.openssl" ;;
|
||||||
|
*) ngx_prefix="$PWD/$OPENSSL/.openssl" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE
|
||||||
|
cd $OPENSSL \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) clean; fi \\
|
||||||
|
&& ./config --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \\
|
||||||
|
&& \$(MAKE) \\
|
||||||
|
&& \$(MAKE) install_sw LIBDIR=lib
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
all:
|
||||||
|
cd $(OPENSSL)
|
||||||
|
|
||||||
|
perl Configure BC-32 no-shared --prefix=openssl $(OPENSSL_OPT)
|
||||||
|
|
||||||
|
ms\do_nasm
|
||||||
|
|
||||||
|
$(MAKE) -f ms\bcb.mak
|
||||||
|
$(MAKE) -f ms\bcb.mak install
|
||||||
|
|
||||||
|
# Borland's make does not expand "[ch]" in
|
||||||
|
# copy "inc32\openssl\*.[ch]" "openssl\include\openssl"
|
||||||
|
copy inc32\openssl\*.h openssl\include\openssl
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
all:
|
||||||
|
cd $(OPENSSL)
|
||||||
|
|
||||||
|
perl Configure $(OPENSSL_TARGET) no-shared no-threads \
|
||||||
|
--prefix="%cd%/openssl" \
|
||||||
|
--openssldir="%cd%/openssl/ssl" \
|
||||||
|
$(OPENSSL_OPT)
|
||||||
|
|
||||||
|
if exist ms\do_ms.bat ( \
|
||||||
|
ms\do_ms \
|
||||||
|
&& $(MAKE) -f ms\nt.mak \
|
||||||
|
&& $(MAKE) -f ms\nt.mak install \
|
||||||
|
) else ( \
|
||||||
|
$(MAKE) \
|
||||||
|
&& $(MAKE) install_sw \
|
||||||
|
)
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE != NONE ]; then
|
||||||
|
|
||||||
|
if [ -f $PCRE/src/pcre2.h.generic ]; then
|
||||||
|
|
||||||
|
PCRE_LIBRARY=PCRE2
|
||||||
|
|
||||||
|
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
|
||||||
|
fi
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $PCRE"
|
||||||
|
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc | owc | bcc)
|
||||||
|
LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $PCRE_JIT = YES ]; then
|
||||||
|
have=NGX_HAVE_PCRE_JIT . auto/have
|
||||||
|
PCRE_CONF_OPT="$PCRE_CONF_OPT --enable-jit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
PCRE=NO
|
||||||
|
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_name="NGX_PCRE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <pcre.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lpcre"
|
||||||
|
ngx_feature_test="pcre *re;
|
||||||
|
re = pcre_compile(NULL, 0, NULL, 0, NULL);
|
||||||
|
if (re == NULL) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# RedHat RPM, Solaris package
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/include/pcre/"
|
||||||
|
ngx_feature_path="/usr/include/pcre"
|
||||||
|
ngx_feature_libs="-lpcre"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# Homebrew on Apple Silicon
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /opt/homebrew/"
|
||||||
|
ngx_feature_path="/opt/homebrew/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/homebrew/lib -L/opt/homebrew/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/homebrew/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
PCRE=YES
|
||||||
|
PCRE_LIBRARY=PCRE
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $PCRE = YES ]; then
|
||||||
|
ngx_feature="PCRE JIT support"
|
||||||
|
ngx_feature_name="NGX_HAVE_PCRE_JIT"
|
||||||
|
ngx_feature_test="int jit = 0;
|
||||||
|
pcre_free_study(NULL);
|
||||||
|
pcre_config(PCRE_CONFIG_JIT, &jit);
|
||||||
|
if (jit != 1) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
PCRE_JIT=YES
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $PCRE != YES ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP rewrite module requires the PCRE library.
|
||||||
|
You can either disable the module by using --without-http_rewrite_module
|
||||||
|
option, or install the PCRE library into the system, or build the PCRE library
|
||||||
|
statically from the source with Angie by using --with-pcre=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE_LIBRARY = PCRE2 ]; then
|
||||||
|
|
||||||
|
# PCRE2
|
||||||
|
|
||||||
|
if [ $NGX_CC_NAME = msvc ]; then
|
||||||
|
|
||||||
|
# With PCRE2, it is not possible to compile all sources.
|
||||||
|
# Since list of source files changes between versions, we
|
||||||
|
# test files which might not be present.
|
||||||
|
|
||||||
|
ngx_pcre_srcs="pcre2_auto_possess.c \
|
||||||
|
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_chkdint.c \
|
||||||
|
pcre2_compile_class.c \
|
||||||
|
pcre2_convert.c \
|
||||||
|
pcre2_extuni.c \
|
||||||
|
pcre2_find_bracket.c \
|
||||||
|
pcre2_script_run.c \
|
||||||
|
pcre2_serialize.c"
|
||||||
|
|
||||||
|
for ngx_src in $ngx_pcre_test
|
||||||
|
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 \
|
||||||
|
| 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
|
||||||
|
|
||||||
|
PCRE_CFLAGS = -O2 -Ob1 -Oi -Gs $LIBC $CPU_OPT
|
||||||
|
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
|
||||||
|
|
||||||
|
`echo "$PCRE/pcre.h:" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre pcre.h
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$PCRE/pcre.h: $PCRE/Makefile
|
||||||
|
|
||||||
|
$PCRE/Makefile: $NGX_MAKEFILE
|
||||||
|
cd $PCRE \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
||||||
|
&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\
|
||||||
|
./configure --disable-shared $PCRE_CONF_OPT
|
||||||
|
|
||||||
|
$PCRE/.libs/libpcre.a: $PCRE/Makefile
|
||||||
|
cd $PCRE \\
|
||||||
|
&& \$(MAKE) libpcre.la
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
copy /y nul pcre.lst
|
||||||
|
for %n in (*.obj) do @echo +%n ^^& >> pcre.lst
|
||||||
|
echo + >> pcre.lst
|
||||||
|
|
||||||
|
tlib pcre.lib @pcre.lst
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
cl -nologo -c $(CFLAGS) -I . $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
link -lib -out:pcre.lib -verbose:lib pcre_*.obj
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 &
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
wcl386 $(CFLAGS) -i=. $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
dir /b *.obj > pcre.lst
|
||||||
|
|
||||||
|
wlib -n pcre.lib @pcre.lst
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo "checking for perl"
|
||||||
|
|
||||||
|
|
||||||
|
NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
|
||||||
|
| sed -e 's/^This is perl, \(.*\)/\1/'`
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_VER"; then
|
||||||
|
echo " + perl version: $NGX_PERL_VER"
|
||||||
|
|
||||||
|
if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl 5.8.6 or higher is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "`$NGX_PERL -MExtUtils::Embed -e 'print "OK"'`" != "OK" ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl module ExtUtils::Embed is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`
|
||||||
|
NGX_PM_LDFLAGS=`$NGX_PERL -MConfig -e 'print $Config{lddlflags}'`
|
||||||
|
|
||||||
|
NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
|
||||||
|
|
||||||
|
# gcc 4.1/4.2 warn about unused values in pTHX_
|
||||||
|
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
|
||||||
|
| sed -e 's/-Wunused-value/-Wno-unused-value/'`
|
||||||
|
# icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE
|
||||||
|
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
|
||||||
|
| sed -e 's/-wd171/-wd171 -wd1599/'`
|
||||||
|
|
||||||
|
ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`
|
||||||
|
|
||||||
|
ngx_perl_dlext=`$NGX_PERL -MConfig -e 'print $Config{dlext}'`
|
||||||
|
ngx_perl_libdir="src/http/modules/perl/blib/arch/auto"
|
||||||
|
ngx_perl_module="$ngx_perl_libdir/nginx/nginx.$ngx_perl_dlext"
|
||||||
|
|
||||||
|
if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
|
||||||
|
have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
|
||||||
|
echo " + perl interpreter multiplicity found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $NGX_PERL -V:useithreads | grep undef > /dev/null; then
|
||||||
|
# FreeBSD port wants to link with -pthread non-threaded perl
|
||||||
|
ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
# OS X system perl wants to link universal binaries
|
||||||
|
ngx_perl_ldopts=`echo $ngx_perl_ldopts \
|
||||||
|
| sed -e 's/-arch i386//' -e 's/-arch x86_64//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL = YES ]; then
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_PERL="$ngx_perl_ldopts"
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_MODULES"; then
|
||||||
|
have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
|
||||||
|
. auto/define
|
||||||
|
NGX_PERL_MODULES_MAN=$NGX_PERL_MODULES/man3
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl 5.8.6 or higher is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\
|
||||||
|
$NGX_OBJS/$ngx_perl_module
|
||||||
|
|
||||||
|
$NGX_OBJS/$ngx_perl_module: \\
|
||||||
|
\$(CORE_DEPS) \$(HTTP_DEPS) \\
|
||||||
|
src/http/modules/perl/ngx_http_perl_module.h \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/Makefile
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE)
|
||||||
|
|
||||||
|
rm -rf $NGX_OBJS/install_perl
|
||||||
|
|
||||||
|
|
||||||
|
$NGX_OBJS/src/http/modules/perl/Makefile: \\
|
||||||
|
$NGX_AUTO_CONFIG_H \\
|
||||||
|
src/core/nginx.h \\
|
||||||
|
src/http/modules/perl/Makefile.PL \\
|
||||||
|
src/http/modules/perl/nginx.pm \\
|
||||||
|
src/http/modules/perl/nginx.xs \\
|
||||||
|
src/http/modules/perl/typemap
|
||||||
|
grep 'define NGINX_VERSION' src/core/nginx.h \\
|
||||||
|
| sed -e 's/^.*"\(.*\)".*/\1/' > \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/version
|
||||||
|
sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\
|
||||||
|
src/http/modules/perl/nginx.pm > \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/nginx.pm
|
||||||
|
cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/
|
||||||
|
cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/
|
||||||
|
cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/
|
||||||
|
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl \\
|
||||||
|
&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\
|
||||||
|
NGX_PM_LDFLAGS="$NGX_LD_OPT \$(NGX_PM_LDFLAGS)" \\
|
||||||
|
NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\
|
||||||
|
NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\
|
||||||
|
$NGX_PERL Makefile.PL \\
|
||||||
|
LIB=$NGX_PERL_MODULES \\
|
||||||
|
INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ZLIB != NONE ]; then
|
||||||
|
CORE_INCS="$CORE_INCS $ZLIB"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc | owc | bcc)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
|
||||||
|
|
||||||
|
# to allow -ipo optimization we link with the *.o but not library
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/adler32.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/crc32.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/deflate.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/trees.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/zutil.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/compress.o"
|
||||||
|
|
||||||
|
if [ $ZLIB_ASM != NO ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/match.o"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/libz.a"
|
||||||
|
#CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
ZLIB=NO
|
||||||
|
|
||||||
|
# FreeBSD, Solaris, Linux
|
||||||
|
|
||||||
|
ngx_feature="zlib library"
|
||||||
|
ngx_feature_name="NGX_ZLIB"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <zlib.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lz"
|
||||||
|
ngx_feature_test="z_stream z; deflate(&z, Z_NO_FLUSH)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
ZLIB=YES
|
||||||
|
ngx_found=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ZLIB != YES ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP gzip module requires the zlib library.
|
||||||
|
You can either disable the module by using --without-http_gzip_module
|
||||||
|
option, or install the zlib library into the system, or build the zlib library
|
||||||
|
statically from the source with Angie by using --with-zlib=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc)
|
||||||
|
ngx_makefile=makefile.msvc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
|
||||||
|
ngx_zlib="ZLIB=\"$ZLIB\""
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
owc)
|
||||||
|
ngx_makefile=makefile.owc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc)
|
||||||
|
ngx_makefile=makefile.bcc
|
||||||
|
ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
ngx_makefile=
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
done=NO
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_PLATFORM" in
|
||||||
|
|
||||||
|
win32)
|
||||||
|
|
||||||
|
if [ -n "$ngx_makefile" ]; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
`echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& \$(MAKE) -f win32/Makefile.gcc \\
|
||||||
|
CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
||||||
|
libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
# FreeBSD: i386
|
||||||
|
# Linux: i686
|
||||||
|
|
||||||
|
*:i386 | *:i686)
|
||||||
|
case $ZLIB_ASM in
|
||||||
|
pentium)
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& cp contrib/asm586/match.S . \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) OBJA=match.o libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& cp contrib/asm686/match.S . \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) OBJA=match.o libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
NO)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0: error: invalid --with-zlib-asm=$ZLIB_ASM option."
|
||||||
|
echo "The valid values are \"pentium\" and \"pentiumpro\" only".
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ $done = NO ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
bcc32 -c $(CFLAGS) adler32.c crc32.c deflate.c \
|
||||||
|
trees.c zutil.c compress.c \
|
||||||
|
inflate.c inffast.c inftrees.c
|
||||||
|
|
||||||
|
tlib zlib.lib +adler32.obj +crc32.obj +deflate.obj \
|
||||||
|
+trees.obj +zutil.obj +compress.obj \
|
||||||
|
+inflate.obj +inffast.obj +inftrees.obj
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
cl -c $(CFLAGS) adler32.c crc32.c deflate.c \
|
||||||
|
trees.c zutil.c compress.c \
|
||||||
|
inflate.c inffast.c inftrees.c
|
||||||
|
|
||||||
|
link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
|
||||||
|
trees.obj zutil.obj compress.obj \
|
||||||
|
inflate.obj inffast.obj inftrees.obj
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
wcl386 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c &
|
||||||
|
compress.c inflate.c inffast.c inftrees.c
|
||||||
|
wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj &
|
||||||
|
zutil.obj compress.obj inflate.obj inffast.obj inftrees.obj
|
||||||
@@ -0,0 +1,717 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
dirsep()
|
||||||
|
{
|
||||||
|
if [ "$ngx_dirsep" = "/" ]; then
|
||||||
|
res="$@"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
res=$(echo "$@" | sed -e "s/\//$ngx_regex_dirsep/g")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fmt_link()
|
||||||
|
{
|
||||||
|
dirsep "$@"
|
||||||
|
res="$ngx_long_cont$res"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fmt_list()
|
||||||
|
{
|
||||||
|
first="$1"
|
||||||
|
shift
|
||||||
|
last=
|
||||||
|
|
||||||
|
for i in $@; do
|
||||||
|
last="$last$prefix$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
dirsep "$first$last"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fmt_incs()
|
||||||
|
{
|
||||||
|
prefix="$ngx_cont$ngx_include_opt" fmt_list "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fmt_deps()
|
||||||
|
{
|
||||||
|
prefix="$ngx_cont" fmt_list "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fmt_objs()
|
||||||
|
{
|
||||||
|
prefix="$ngx_long_cont" fmt_list "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
src2obj()
|
||||||
|
{
|
||||||
|
res=
|
||||||
|
case $1 in
|
||||||
|
*.c) res="${1%.c}.$ngx_objext" ;;
|
||||||
|
*.cc) res="${1%.cc}.$ngx_objext" ;;
|
||||||
|
*.cpp) res="${1%.cpp}.$ngx_objext";;
|
||||||
|
*.S) res="${1%.S}.$ngx_objext" ;;
|
||||||
|
*) res="$1" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
res="$NGX_OBJS$ngx_dirsep$res"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
srcs2objs()
|
||||||
|
{
|
||||||
|
res=
|
||||||
|
|
||||||
|
for i in $@; do
|
||||||
|
case $i in
|
||||||
|
*.c) i="${i%.c}.$ngx_objext" ;;
|
||||||
|
*.cc) i="${i%.cc}.$ngx_objext" ;;
|
||||||
|
*.cpp) i="${i%.cpp}.$ngx_objext";;
|
||||||
|
*.S) i="${i%.S}.$ngx_objext" ;;
|
||||||
|
*) i="$i" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$res" ]; then
|
||||||
|
res="$res $NGX_OBJS/$i"
|
||||||
|
else
|
||||||
|
res="$NGX_OBJS/$i"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "creating $NGX_MAKEFILE"
|
||||||
|
|
||||||
|
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/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/v3 \
|
||||||
|
$NGX_OBJS/src/http/modules $NGX_OBJS/src/http/modules/perl \
|
||||||
|
$NGX_OBJS/src/mail \
|
||||||
|
$NGX_OBJS/src/stream \
|
||||||
|
$NGX_OBJS/src/misc
|
||||||
|
|
||||||
|
|
||||||
|
dirsep "$NGX_USE_PCH"
|
||||||
|
ngx_use_pch=$res
|
||||||
|
|
||||||
|
|
||||||
|
cat << END > $NGX_MAKEFILE
|
||||||
|
|
||||||
|
CC = $CC
|
||||||
|
CFLAGS = $CFLAGS
|
||||||
|
CPP = $CPP
|
||||||
|
LINK = $LINK
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_CFLAGS"; then
|
||||||
|
echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE
|
||||||
|
echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE
|
||||||
|
echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers
|
||||||
|
|
||||||
|
fmt_incs $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS $STREAM_INCS
|
||||||
|
ngx_incs=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
ALL_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_all_srcs="$CORE_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
# the core dependencies and include paths
|
||||||
|
|
||||||
|
dirsep $CORE_BUILD_C
|
||||||
|
core_build_c=$res
|
||||||
|
src2obj $CORE_BUILD_C
|
||||||
|
core_build_obj=$res
|
||||||
|
|
||||||
|
fmt_deps $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_incs $CORE_INCS $NGX_OBJS
|
||||||
|
ngx_incs=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
CORE_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
CORE_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# the http dependencies and include paths
|
||||||
|
|
||||||
|
if [ $HTTP = YES ]; then
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS"
|
||||||
|
|
||||||
|
fmt_deps $HTTP_DEPS
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_incs $HTTP_INCS
|
||||||
|
ngx_incs=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
HTTP_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
HTTP_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the mail dependencies and include paths
|
||||||
|
|
||||||
|
if [ $MAIL != NO ]; then
|
||||||
|
|
||||||
|
if [ $MAIL = YES ]; then
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_deps $MAIL_DEPS
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_incs $MAIL_INCS
|
||||||
|
ngx_incs=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
MAIL_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
MAIL_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the stream dependencies and include paths
|
||||||
|
|
||||||
|
if [ $STREAM != NO ]; then
|
||||||
|
|
||||||
|
if [ $STREAM = YES ]; then
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $STREAM_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_deps $STREAM_DEPS
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_incs $STREAM_INCS
|
||||||
|
ngx_incs=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
STREAM_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
STREAM_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $MISC_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
ADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# angie
|
||||||
|
|
||||||
|
dirsep $ngx_all_srcs
|
||||||
|
ngx_all_srcs=$res
|
||||||
|
|
||||||
|
for ngx_src in $NGX_ADDON_SRCS
|
||||||
|
do
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_src\``"
|
||||||
|
|
||||||
|
test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj
|
||||||
|
|
||||||
|
dirsep $ngx_obj/`basename $ngx_src`; ngx_obj=$res
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $ngx_obj"
|
||||||
|
done
|
||||||
|
|
||||||
|
srcs2objs $ngx_all_srcs
|
||||||
|
ngx_all_objs=$res
|
||||||
|
|
||||||
|
dirsep $NGX_MODULES_C
|
||||||
|
ngx_modules_c=$res
|
||||||
|
|
||||||
|
ngx_modules_obj=${ngx_modules_c%.c}.$ngx_objext
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_RES"; then
|
||||||
|
ngx_res=$NGX_RES
|
||||||
|
else
|
||||||
|
ngx_res="$NGX_RC $NGX_ICONS"
|
||||||
|
dirsep $NGX_RCC
|
||||||
|
ngx_rcc=$res
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_deps $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_objs $ngx_all_objs $ngx_modules_obj
|
||||||
|
ngx_objs=$res
|
||||||
|
|
||||||
|
ngx_libs=
|
||||||
|
if test -n "$NGX_LD_OPT$CORE_LIBS"; then
|
||||||
|
fmt_link $NGX_LD_OPT $CORE_LIBS
|
||||||
|
ngx_libs=$res
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_link $CORE_LINK
|
||||||
|
ngx_link=${CORE_LINK:+$res}
|
||||||
|
|
||||||
|
fmt_link $MAIN_LINK
|
||||||
|
ngx_main_link=${MAIN_LINK:+$res}
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
build: binary modules manpage
|
||||||
|
|
||||||
|
binary: $NGX_OBJS${ngx_dirsep}angie$ngx_binext
|
||||||
|
|
||||||
|
$NGX_OBJS${ngx_dirsep}angie$ngx_binext: $core_build_c$ngx_cont$ngx_deps$ngx_spacer
|
||||||
|
$ngx_cc -DANGIE_BUILD_TIMESTAMP=\`date +%s\`$ngx_tab$ngx_objout$core_build_obj$ngx_tab$core_build_c$NGX_AUX
|
||||||
|
\$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}angie$ngx_binext$ngx_long_cont$core_build_obj$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link
|
||||||
|
$ngx_rcc
|
||||||
|
$ngx_long_end
|
||||||
|
|
||||||
|
modules:
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# ngx_modules.c
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# the core sources
|
||||||
|
|
||||||
|
for ngx_src in $CORE_SRCS
|
||||||
|
do
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
src2obj $ngx_src; ngx_obj=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# the http sources
|
||||||
|
|
||||||
|
if [ $HTTP = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
|
||||||
|
ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)"
|
||||||
|
ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_source in $HTTP_SRCS
|
||||||
|
do
|
||||||
|
dirsep $ngx_source; ngx_src=$res
|
||||||
|
src2obj $ngx_src; ngx_obj=$res
|
||||||
|
|
||||||
|
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the mail sources
|
||||||
|
|
||||||
|
if [ $MAIL = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_src in $MAIL_SRCS
|
||||||
|
do
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
src2obj $ngx_src; ngx_obj=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the stream sources
|
||||||
|
|
||||||
|
if [ $STREAM = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(STREAM_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_src in $STREAM_SRCS
|
||||||
|
do
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
src2obj $ngx_src; ngx_obj=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(STREAM_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the misc sources
|
||||||
|
|
||||||
|
if test -n "$MISC_SRCS"; then
|
||||||
|
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
|
||||||
|
for ngx_src in $MISC_SRCS
|
||||||
|
do
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
src2obj $ngx_src; ngx_obj=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) $ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the addons sources
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDON_SRCS"; then
|
||||||
|
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
|
||||||
|
for ngx_src in $NGX_ADDON_SRCS
|
||||||
|
do
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_src\``"
|
||||||
|
|
||||||
|
dirsep $ngx_obj/`basename $ngx_src`; ngx_obj=$res
|
||||||
|
src2obj $ngx_obj; ngx_obj=$res
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the addons config.make
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then
|
||||||
|
|
||||||
|
for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS
|
||||||
|
do
|
||||||
|
if test -f $ngx_addon_dir/config.make; then
|
||||||
|
. $ngx_addon_dir/config.make
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Win32 resource file
|
||||||
|
|
||||||
|
if test -n "$NGX_RES"; then
|
||||||
|
|
||||||
|
dirsep "$NGX_RES: $NGX_RC $NGX_ICONS"; ngx_res=$res
|
||||||
|
dirsep $NGX_RCC; ngx_rcc=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_res
|
||||||
|
$ngx_rcc
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the precompiled headers
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c
|
||||||
|
|
||||||
|
ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_OBJS/ngx_auto_config.h"
|
||||||
|
dirsep "$NGX_PCH: $ngx_pch"
|
||||||
|
ngx_pch=$res
|
||||||
|
|
||||||
|
ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)"
|
||||||
|
ngx_src="$ngx_src $ngx_objout$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c"
|
||||||
|
dirsep $ngx_src; ngx_src=$res
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_pch
|
||||||
|
$ngx_src
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# dynamic modules
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) \$(ALL_INCS)"
|
||||||
|
ngx_perl_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(NGX_PERL_CFLAGS)"
|
||||||
|
ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_module in $DYNAMIC_MODULES
|
||||||
|
do
|
||||||
|
eval ngx_module_srcs="\$${ngx_module}_SRCS"
|
||||||
|
eval 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
|
||||||
|
|
||||||
|
dirsep $ngx_modules_c; ngx_modules_c=$res
|
||||||
|
|
||||||
|
ngx_modules_obj=${ngx_modules_c%.c}.$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
|
||||||
|
|
||||||
|
srcs2objs $ngx_module_objs
|
||||||
|
ngx_module_objs=$res
|
||||||
|
|
||||||
|
fmt_deps $ngx_module_objs $ngx_modules_obj $LINK_DEPS
|
||||||
|
ngx_deps=$res
|
||||||
|
|
||||||
|
fmt_objs $ngx_module_objs $ngx_modules_obj
|
||||||
|
ngx_objs=$res
|
||||||
|
|
||||||
|
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
|
||||||
|
fmt_link $NGX_LD_OPT $ngx_module_libs
|
||||||
|
ngx_libs=$res
|
||||||
|
fi
|
||||||
|
|
||||||
|
fmt_link $CORE_LINK
|
||||||
|
ngx_link=${CORE_LINK:+$res}
|
||||||
|
|
||||||
|
fmt_link $MODULE_LINK
|
||||||
|
ngx_module_link=${MODULE_LINK:+$res}
|
||||||
|
|
||||||
|
|
||||||
|
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/*)
|
||||||
|
dirsep $ngx_source; ngx_obj=$res
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_source\``"
|
||||||
|
dirsep $ngx_obj/`basename $ngx_source`; ngx_obj=$res
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
src2obj $ngx_obj; ngx_obj=$res
|
||||||
|
dirsep $ngx_source; ngx_src=$res
|
||||||
|
|
||||||
|
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Ruslan Ermilov
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case $ngx_module_type in
|
||||||
|
HTTP_*) ngx_var=HTTP ;;
|
||||||
|
*) ngx_var=$ngx_module_type ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$ngx_module_link" = DYNAMIC ]; then
|
||||||
|
|
||||||
|
for ngx_module in $ngx_module_name; do
|
||||||
|
# extract the first name
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module"
|
||||||
|
|
||||||
|
eval ${ngx_module}_MODULES=\"$ngx_module_name\"
|
||||||
|
|
||||||
|
if [ -z "$ngx_module_order" -a \
|
||||||
|
\( "$ngx_module_type" = "HTTP_FILTER" \
|
||||||
|
-o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ]
|
||||||
|
then
|
||||||
|
eval ${ngx_module}_ORDER=\"$ngx_module_name \
|
||||||
|
ngx_http_copy_filter_module\"
|
||||||
|
else
|
||||||
|
eval ${ngx_module}_ORDER=\"$ngx_module_order\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
srcs=
|
||||||
|
shrd=
|
||||||
|
for src in $ngx_module_srcs
|
||||||
|
do
|
||||||
|
found=no
|
||||||
|
for old in $DYNAMIC_MODULES_SRCS
|
||||||
|
do
|
||||||
|
if [ $src = $old ]; then
|
||||||
|
found=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $found = no ]; then
|
||||||
|
srcs="$srcs $src"
|
||||||
|
else
|
||||||
|
shrd="$shrd $src"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
eval ${ngx_module}_SRCS=\"$srcs\"
|
||||||
|
eval ${ngx_module}_SHRD=\"$shrd\"
|
||||||
|
|
||||||
|
DYNAMIC_MODULES_SRCS="$DYNAMIC_MODULES_SRCS $srcs"
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_module_incs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
|
||||||
|
fi
|
||||||
|
|
||||||
|
libs=
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
LIBXSLT | LIBGD | GEOIP | PERL)
|
||||||
|
libs="$libs \$NGX_LIB_$lib"
|
||||||
|
|
||||||
|
if eval [ "\$USE_${lib}" = NO ] ; then
|
||||||
|
eval USE_${lib}=DYNAMIC
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
libs="$libs $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
eval ${ngx_module}_LIBS=\'$libs\'
|
||||||
|
|
||||||
|
elif [ "$ngx_module_link" = YES ]; then
|
||||||
|
|
||||||
|
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
|
||||||
|
$ngx_module_name\"
|
||||||
|
|
||||||
|
eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\"
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [ "$ngx_module_link" = ADDON ]; then
|
||||||
|
|
||||||
|
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
|
||||||
|
$ngx_module_name\"
|
||||||
|
|
||||||
|
srcs=
|
||||||
|
for src in $ngx_module_srcs
|
||||||
|
do
|
||||||
|
found=no
|
||||||
|
for old in $NGX_ADDON_SRCS
|
||||||
|
do
|
||||||
|
if [ $src = $old ]; then
|
||||||
|
found=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $found = no ]; then
|
||||||
|
srcs="$srcs $src"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $srcs"
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,713 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2022 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
help=no
|
||||||
|
|
||||||
|
NGX_PREFIX=
|
||||||
|
NGX_SBIN_PATH=
|
||||||
|
NGX_MODULES_PATH=
|
||||||
|
NGX_CONF_PREFIX=
|
||||||
|
NGX_CONF_PATH=
|
||||||
|
NGX_ERROR_LOG_PATH=
|
||||||
|
NGX_PID_PATH=
|
||||||
|
NGX_LOCK_PATH=
|
||||||
|
NGX_USER=
|
||||||
|
NGX_GROUP=
|
||||||
|
NGX_BUILD=
|
||||||
|
|
||||||
|
NGX_FEATURE_CACHE=NO
|
||||||
|
|
||||||
|
CC=${CC:-cc}
|
||||||
|
CPP=
|
||||||
|
NGX_OBJS=objs
|
||||||
|
|
||||||
|
NGX_DEBUG=NO
|
||||||
|
NGX_CC_OPT=
|
||||||
|
NGX_LD_OPT=
|
||||||
|
CPU=NO
|
||||||
|
|
||||||
|
NGX_RPATH=NO
|
||||||
|
|
||||||
|
NGX_TEST_BUILD_DEVPOLL=NO
|
||||||
|
NGX_TEST_BUILD_EVENTPORT=NO
|
||||||
|
NGX_TEST_BUILD_EPOLL=NO
|
||||||
|
NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO
|
||||||
|
|
||||||
|
NGX_PLATFORM=
|
||||||
|
NGX_WINE=
|
||||||
|
|
||||||
|
EVENT_FOUND=NO
|
||||||
|
|
||||||
|
EVENT_SELECT=NO
|
||||||
|
EVENT_POLL=NO
|
||||||
|
|
||||||
|
USE_THREADS=NO
|
||||||
|
|
||||||
|
NGX_FILE_AIO=NO
|
||||||
|
|
||||||
|
QUIC_BPF=NO
|
||||||
|
|
||||||
|
HTTP=YES
|
||||||
|
|
||||||
|
NGX_HTTP_LOG_PATH=
|
||||||
|
NGX_HTTP_CLIENT_TEMP_PATH=
|
||||||
|
NGX_HTTP_PROXY_TEMP_PATH=
|
||||||
|
NGX_HTTP_FASTCGI_TEMP_PATH=
|
||||||
|
NGX_HTTP_UWSGI_TEMP_PATH=
|
||||||
|
NGX_HTTP_SCGI_TEMP_PATH=
|
||||||
|
NGX_HTTP_ACME_CLIENT_PATH=
|
||||||
|
|
||||||
|
HTTP_CACHE=YES
|
||||||
|
HTTP_CHARSET=YES
|
||||||
|
HTTP_GZIP=YES
|
||||||
|
HTTP_SSL=NO
|
||||||
|
HTTP_V2=NO
|
||||||
|
HTTP_V3=NO
|
||||||
|
HTTP_SSI=YES
|
||||||
|
HTTP_REALIP=NO
|
||||||
|
HTTP_XSLT=NO
|
||||||
|
HTTP_IMAGE_FILTER=NO
|
||||||
|
HTTP_SUB=NO
|
||||||
|
HTTP_ADDITION=NO
|
||||||
|
HTTP_DAV=NO
|
||||||
|
HTTP_ACCESS=YES
|
||||||
|
HTTP_AUTH_BASIC=YES
|
||||||
|
HTTP_AUTH_REQUEST=NO
|
||||||
|
HTTP_MIRROR=YES
|
||||||
|
HTTP_USERID=YES
|
||||||
|
HTTP_SLICE=NO
|
||||||
|
HTTP_AUTOINDEX=YES
|
||||||
|
HTTP_RANDOM_INDEX=NO
|
||||||
|
HTTP_API=YES
|
||||||
|
HTTP_METRIC=YES
|
||||||
|
HTTP_PROMETHEUS=YES
|
||||||
|
HTTP_GEO=YES
|
||||||
|
HTTP_GEOIP=NO
|
||||||
|
HTTP_MAP=YES
|
||||||
|
HTTP_SPLIT_CLIENTS=YES
|
||||||
|
HTTP_REFERER=YES
|
||||||
|
HTTP_REWRITE=YES
|
||||||
|
HTTP_PROXY=YES
|
||||||
|
HTTP_FASTCGI=YES
|
||||||
|
HTTP_UWSGI=YES
|
||||||
|
HTTP_SCGI=YES
|
||||||
|
HTTP_GRPC=YES
|
||||||
|
HTTP_PERL=NO
|
||||||
|
HTTP_MEMCACHED=YES
|
||||||
|
HTTP_LIMIT_CONN=YES
|
||||||
|
HTTP_LIMIT_REQ=YES
|
||||||
|
HTTP_EMPTY_GIF=YES
|
||||||
|
HTTP_BROWSER=YES
|
||||||
|
HTTP_SECURE_LINK=NO
|
||||||
|
HTTP_DEGRADATION=NO
|
||||||
|
HTTP_FLV=NO
|
||||||
|
HTTP_MP4=NO
|
||||||
|
HTTP_GUNZIP=NO
|
||||||
|
HTTP_GZIP_STATIC=NO
|
||||||
|
HTTP_ACME=NO
|
||||||
|
HTTP_CLIENT=NO
|
||||||
|
HTTP_UPSTREAM_HASH=YES
|
||||||
|
HTTP_UPSTREAM_IP_HASH=YES
|
||||||
|
HTTP_UPSTREAM_LEAST_CONN=YES
|
||||||
|
HTTP_UPSTREAM_RANDOM=YES
|
||||||
|
HTTP_UPSTREAM_KEEPALIVE=YES
|
||||||
|
HTTP_UPSTREAM_ZONE=YES
|
||||||
|
HTTP_UPSTREAM_STICKY=YES
|
||||||
|
HTTP_DOCKER=YES
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
HTTP_STUB_STATUS=NO
|
||||||
|
|
||||||
|
MAIL=NO
|
||||||
|
MAIL_SSL=NO
|
||||||
|
MAIL_POP3=YES
|
||||||
|
MAIL_IMAP=YES
|
||||||
|
MAIL_SMTP=YES
|
||||||
|
|
||||||
|
STREAM=NO
|
||||||
|
STREAM_SSL=NO
|
||||||
|
STREAM_ACME=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_PASS=YES
|
||||||
|
STREAM_SET=YES
|
||||||
|
STREAM_UPSTREAM_HASH=YES
|
||||||
|
STREAM_UPSTREAM_LEAST_CONN=YES
|
||||||
|
STREAM_UPSTREAM_RANDOM=YES
|
||||||
|
STREAM_UPSTREAM_ZONE=YES
|
||||||
|
STREAM_UPSTREAM_STICKY=YES
|
||||||
|
STREAM_SSL_PREREAD=NO
|
||||||
|
STREAM_MQTT_PREREAD=NO
|
||||||
|
STREAM_RDP_PREREAD=NO
|
||||||
|
|
||||||
|
DYNAMIC_MODULES=
|
||||||
|
DYNAMIC_MODULES_SRCS=
|
||||||
|
|
||||||
|
NGX_ADDONS=
|
||||||
|
NGX_ADDON_SRCS=
|
||||||
|
NGX_ADDON_DEPS=
|
||||||
|
DYNAMIC_ADDONS=
|
||||||
|
|
||||||
|
USE_JSON=NO
|
||||||
|
|
||||||
|
USE_API=NO
|
||||||
|
|
||||||
|
USE_NTLS=NO
|
||||||
|
|
||||||
|
USE_DOCKER=NO
|
||||||
|
|
||||||
|
USE_ACME=NO
|
||||||
|
|
||||||
|
NGX_COMPAT=NO
|
||||||
|
|
||||||
|
USE_PCRE=NO
|
||||||
|
PCRE=NONE
|
||||||
|
PCRE_OPT=
|
||||||
|
PCRE_CONF_OPT=
|
||||||
|
PCRE_JIT=NO
|
||||||
|
PCRE2=YES
|
||||||
|
|
||||||
|
USE_OPENSSL=NO
|
||||||
|
USE_OPENSSL_QUIC=NO
|
||||||
|
OPENSSL=NONE
|
||||||
|
|
||||||
|
USE_ZLIB=NO
|
||||||
|
ZLIB=NONE
|
||||||
|
ZLIB_OPT=
|
||||||
|
ZLIB_ASM=NO
|
||||||
|
|
||||||
|
USE_PERL=NO
|
||||||
|
NGX_PERL=perl
|
||||||
|
|
||||||
|
USE_LIBXSLT=NO
|
||||||
|
USE_LIBGD=NO
|
||||||
|
USE_GEOIP=NO
|
||||||
|
|
||||||
|
NGX_GOOGLE_PERFTOOLS=NO
|
||||||
|
NGX_CPP_TEST=NO
|
||||||
|
|
||||||
|
NGX_LIBATOMIC=NO
|
||||||
|
|
||||||
|
NGX_CPU_CACHE_LINE=
|
||||||
|
|
||||||
|
NGX_POST_CONF_MSG=
|
||||||
|
|
||||||
|
NGX_TEST_RUNNER=no
|
||||||
|
|
||||||
|
opt=
|
||||||
|
|
||||||
|
for option
|
||||||
|
do
|
||||||
|
opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`"
|
||||||
|
|
||||||
|
case "$option" in
|
||||||
|
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||||
|
*) value="" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$option" in
|
||||||
|
--help) help=yes ;;
|
||||||
|
|
||||||
|
--prefix=) NGX_PREFIX="!" ;;
|
||||||
|
--prefix=*) NGX_PREFIX="$value" ;;
|
||||||
|
--sbin-path=*) NGX_SBIN_PATH="$value" ;;
|
||||||
|
--modules-path=*) NGX_MODULES_PATH="$value" ;;
|
||||||
|
--conf-path=*) NGX_CONF_PATH="$value" ;;
|
||||||
|
--error-log-path=*) NGX_ERROR_LOG_PATH="$value";;
|
||||||
|
--pid-path=*) NGX_PID_PATH="$value" ;;
|
||||||
|
--lock-path=*) NGX_LOCK_PATH="$value" ;;
|
||||||
|
--user=*) NGX_USER="$value" ;;
|
||||||
|
--group=*) NGX_GROUP="$value" ;;
|
||||||
|
|
||||||
|
--crossbuild=*) NGX_PLATFORM="$value" ;;
|
||||||
|
--test-runner=*) NGX_TEST_RUNNER="$value" ;;
|
||||||
|
|
||||||
|
--build=*) NGX_BUILD="$value" ;;
|
||||||
|
--builddir=*) NGX_OBJS="$value" ;;
|
||||||
|
|
||||||
|
--feature-cache) NGX_FEATURE_CACHE=YES ;;
|
||||||
|
--feature-cache=*) NGX_FEATURE_CACHE=$value ;;
|
||||||
|
|
||||||
|
--with-select_module) EVENT_SELECT=YES ;;
|
||||||
|
--without-select_module) EVENT_SELECT=NONE ;;
|
||||||
|
--with-poll_module) EVENT_POLL=YES ;;
|
||||||
|
--without-poll_module) EVENT_POLL=NONE ;;
|
||||||
|
|
||||||
|
--with-threads) USE_THREADS=YES ;;
|
||||||
|
|
||||||
|
--with-file-aio) NGX_FILE_AIO=YES ;;
|
||||||
|
|
||||||
|
--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-cache) HTTP_CACHE=NO ;;
|
||||||
|
|
||||||
|
--http-log-path=*) NGX_HTTP_LOG_PATH="$value" ;;
|
||||||
|
--http-client-body-temp-path=*) NGX_HTTP_CLIENT_TEMP_PATH="$value" ;;
|
||||||
|
--http-proxy-temp-path=*) NGX_HTTP_PROXY_TEMP_PATH="$value" ;;
|
||||||
|
--http-fastcgi-temp-path=*) NGX_HTTP_FASTCGI_TEMP_PATH="$value" ;;
|
||||||
|
--http-uwsgi-temp-path=*) NGX_HTTP_UWSGI_TEMP_PATH="$value" ;;
|
||||||
|
--http-scgi-temp-path=*) NGX_HTTP_SCGI_TEMP_PATH="$value" ;;
|
||||||
|
--http-acme-client-path=*) NGX_HTTP_ACME_CLIENT_PATH="$value" ;;
|
||||||
|
|
||||||
|
--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_addition_module) HTTP_ADDITION=YES ;;
|
||||||
|
--with-http_xslt_module) HTTP_XSLT=YES ;;
|
||||||
|
--with-http_xslt_module=dynamic) HTTP_XSLT=DYNAMIC ;;
|
||||||
|
--with-http_image_filter_module) HTTP_IMAGE_FILTER=YES ;;
|
||||||
|
--with-http_image_filter_module=dynamic)
|
||||||
|
HTTP_IMAGE_FILTER=DYNAMIC ;;
|
||||||
|
--with-http_geoip_module) HTTP_GEOIP=YES ;;
|
||||||
|
--with-http_geoip_module=dynamic)
|
||||||
|
HTTP_GEOIP=DYNAMIC ;;
|
||||||
|
--with-http_sub_module) HTTP_SUB=YES ;;
|
||||||
|
--with-http_dav_module) HTTP_DAV=YES ;;
|
||||||
|
--with-http_flv_module) HTTP_FLV=YES ;;
|
||||||
|
--with-http_mp4_module) HTTP_MP4=YES ;;
|
||||||
|
--with-http_gunzip_module) HTTP_GUNZIP=YES ;;
|
||||||
|
--with-http_gzip_static_module) HTTP_GZIP_STATIC=YES ;;
|
||||||
|
--with-http_auth_request_module) HTTP_AUTH_REQUEST=YES ;;
|
||||||
|
--with-http_random_index_module) HTTP_RANDOM_INDEX=YES ;;
|
||||||
|
--with-http_secure_link_module) HTTP_SECURE_LINK=YES ;;
|
||||||
|
--with-http_degradation_module) HTTP_DEGRADATION=YES ;;
|
||||||
|
--with-http_slice_module) HTTP_SLICE=YES ;;
|
||||||
|
--with-http_acme_module) HTTP_ACME=YES ;;
|
||||||
|
|
||||||
|
--without-http_docker_module) HTTP_DOCKER=NO ;;
|
||||||
|
--without-http_charset_module) HTTP_CHARSET=NO ;;
|
||||||
|
--without-http_gzip_module) HTTP_GZIP=NO ;;
|
||||||
|
--without-http_ssi_module) HTTP_SSI=NO ;;
|
||||||
|
--without-http_userid_module) HTTP_USERID=NO ;;
|
||||||
|
--without-http_access_module) HTTP_ACCESS=NO ;;
|
||||||
|
--without-http_auth_basic_module) HTTP_AUTH_BASIC=NO ;;
|
||||||
|
--without-http_mirror_module) HTTP_MIRROR=NO ;;
|
||||||
|
--without-http_autoindex_module) HTTP_AUTOINDEX=NO ;;
|
||||||
|
--without-http_api_module) HTTP_API=NO ;;
|
||||||
|
--without-http_metric_module) HTTP_METRIC=NO ;;
|
||||||
|
--without-http_prometheus_module) HTTP_PROMETHEUS=NO ;;
|
||||||
|
--without-http_geo_module) HTTP_GEO=NO ;;
|
||||||
|
--without-http_map_module) HTTP_MAP=NO ;;
|
||||||
|
--without-http_split_clients_module) HTTP_SPLIT_CLIENTS=NO ;;
|
||||||
|
--without-http_referer_module) HTTP_REFERER=NO ;;
|
||||||
|
--without-http_rewrite_module) HTTP_REWRITE=NO ;;
|
||||||
|
--without-http_proxy_module) HTTP_PROXY=NO ;;
|
||||||
|
--without-http_fastcgi_module) HTTP_FASTCGI=NO ;;
|
||||||
|
--without-http_uwsgi_module) HTTP_UWSGI=NO ;;
|
||||||
|
--without-http_scgi_module) HTTP_SCGI=NO ;;
|
||||||
|
--without-http_grpc_module) HTTP_GRPC=NO ;;
|
||||||
|
--without-http_memcached_module) HTTP_MEMCACHED=NO ;;
|
||||||
|
--without-http_limit_conn_module) HTTP_LIMIT_CONN=NO ;;
|
||||||
|
--without-http_limit_req_module) HTTP_LIMIT_REQ=NO ;;
|
||||||
|
--without-http_empty_gif_module) HTTP_EMPTY_GIF=NO ;;
|
||||||
|
--without-http_browser_module) HTTP_BROWSER=NO ;;
|
||||||
|
--without-http_upstream_hash_module) HTTP_UPSTREAM_HASH=NO ;;
|
||||||
|
--without-http_upstream_ip_hash_module) HTTP_UPSTREAM_IP_HASH=NO ;;
|
||||||
|
--without-http_upstream_least_conn_module)
|
||||||
|
HTTP_UPSTREAM_LEAST_CONN=NO ;;
|
||||||
|
--without-http_upstream_random_module)
|
||||||
|
HTTP_UPSTREAM_RANDOM=NO ;;
|
||||||
|
--without-http_upstream_keepalive_module) HTTP_UPSTREAM_KEEPALIVE=NO ;;
|
||||||
|
--without-http_upstream_zone_module) HTTP_UPSTREAM_ZONE=NO ;;
|
||||||
|
--without-http_upstream_sticky_module) HTTP_UPSTREAM_STICKY=NO ;;
|
||||||
|
|
||||||
|
--with-http_perl_module) HTTP_PERL=YES ;;
|
||||||
|
--with-http_perl_module=dynamic) HTTP_PERL=DYNAMIC ;;
|
||||||
|
--with-perl_modules_path=*) NGX_PERL_MODULES="$value" ;;
|
||||||
|
--with-perl=*) NGX_PERL="$value" ;;
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
--with-http_stub_status_module) HTTP_STUB_STATUS=YES ;;
|
||||||
|
|
||||||
|
--with-mail) MAIL=YES ;;
|
||||||
|
--with-mail=dynamic) MAIL=DYNAMIC ;;
|
||||||
|
--with-mail_ssl_module) MAIL_SSL=YES ;;
|
||||||
|
# STUB
|
||||||
|
--with-imap)
|
||||||
|
MAIL=YES
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-imap\" option is deprecated, \
|
||||||
|
use the \"--with-mail\" option instead"
|
||||||
|
;;
|
||||||
|
--with-imap_ssl_module)
|
||||||
|
MAIL_SSL=YES
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-imap_ssl_module\" option is deprecated, \
|
||||||
|
use the \"--with-mail_ssl_module\" option instead"
|
||||||
|
;;
|
||||||
|
--without-mail_pop3_module) MAIL_POP3=NO ;;
|
||||||
|
--without-mail_imap_module) MAIL_IMAP=NO ;;
|
||||||
|
--without-mail_smtp_module) MAIL_SMTP=NO ;;
|
||||||
|
|
||||||
|
--with-stream) STREAM=YES ;;
|
||||||
|
--with-stream=dynamic) STREAM=DYNAMIC ;;
|
||||||
|
--with-stream_ssl_module) STREAM_SSL=YES ;;
|
||||||
|
--with-stream_acme_module) STREAM_ACME=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 ;;
|
||||||
|
--with-stream_mqtt_preread_module)
|
||||||
|
STREAM_MQTT_PREREAD=YES ;;
|
||||||
|
--with-stream_rdp_preread_module)
|
||||||
|
STREAM_RDP_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_pass_module) STREAM_PASS=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 ;;
|
||||||
|
--without-stream_upstream_sticky_module)
|
||||||
|
STREAM_UPSTREAM_STICKY=NO ;;
|
||||||
|
|
||||||
|
--with-google_perftools_module) NGX_GOOGLE_PERFTOOLS=YES ;;
|
||||||
|
--with-cpp_test_module) NGX_CPP_TEST=YES ;;
|
||||||
|
|
||||||
|
--add-module=*) NGX_ADDONS="$NGX_ADDONS $value" ;;
|
||||||
|
--add-dynamic-module=*) DYNAMIC_ADDONS="$DYNAMIC_ADDONS $value" ;;
|
||||||
|
|
||||||
|
--with-compat) NGX_COMPAT=YES ;;
|
||||||
|
|
||||||
|
--with-ntls) USE_NTLS=YES ;;
|
||||||
|
|
||||||
|
--with-cc=*) CC="$value" ;;
|
||||||
|
--with-cpp=*) CPP="$value" ;;
|
||||||
|
--with-cc-opt=*) NGX_CC_OPT="$value" ;;
|
||||||
|
--with-ld-opt=*) NGX_LD_OPT="$value" ;;
|
||||||
|
--with-cpu-opt=*) CPU="$value" ;;
|
||||||
|
--with-debug) NGX_DEBUG=YES ;;
|
||||||
|
|
||||||
|
--without-pcre) USE_PCRE=DISABLED ;;
|
||||||
|
--with-pcre) USE_PCRE=YES ;;
|
||||||
|
--with-pcre=*) PCRE="$value" ;;
|
||||||
|
--with-pcre-opt=*) PCRE_OPT="$value" ;;
|
||||||
|
--with-pcre-jit) PCRE_JIT=YES ;;
|
||||||
|
--without-pcre2) PCRE2=DISABLED ;;
|
||||||
|
|
||||||
|
--with-openssl=*) OPENSSL="$value" ;;
|
||||||
|
--with-openssl-opt=*) OPENSSL_OPT="$value" ;;
|
||||||
|
|
||||||
|
--with-md5=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-md5-opt=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5-opt\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-md5-asm)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5-asm\" option is deprecated"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--with-sha1=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-sha1-opt=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1-opt\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-sha1-asm)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1-asm\" option is deprecated"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--with-zlib=*) ZLIB="$value" ;;
|
||||||
|
--with-zlib-opt=*) ZLIB_OPT="$value" ;;
|
||||||
|
--with-zlib-asm=*) ZLIB_ASM="$value" ;;
|
||||||
|
|
||||||
|
--with-libatomic) NGX_LIBATOMIC=YES ;;
|
||||||
|
--with-libatomic=*) NGX_LIBATOMIC="$value" ;;
|
||||||
|
|
||||||
|
--test-build-devpoll) NGX_TEST_BUILD_DEVPOLL=YES ;;
|
||||||
|
--test-build-eventport) NGX_TEST_BUILD_EVENTPORT=YES ;;
|
||||||
|
--test-build-epoll) NGX_TEST_BUILD_EPOLL=YES ;;
|
||||||
|
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0: error: invalid option \"$option\""
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
NGX_CONFIGURE="$opt"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $help = yes ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
--help print this message
|
||||||
|
|
||||||
|
--prefix=PATH set installation prefix
|
||||||
|
--sbin-path=PATH set Angie binary pathname
|
||||||
|
--modules-path=PATH set modules path
|
||||||
|
--conf-path=PATH set angie.conf pathname
|
||||||
|
--error-log-path=PATH set error log pathname
|
||||||
|
--pid-path=PATH set angie.pid pathname
|
||||||
|
--lock-path=PATH set angie.lock pathname
|
||||||
|
|
||||||
|
--user=USER set non-privileged user for
|
||||||
|
worker processes
|
||||||
|
--group=GROUP set non-privileged group for
|
||||||
|
worker processes
|
||||||
|
|
||||||
|
--feature-cache enable configure feature cache
|
||||||
|
--feature-cache=path use configure feature cache at given path
|
||||||
|
|
||||||
|
--test-runner=path set wrapper script to run autotests
|
||||||
|
|
||||||
|
--build=NAME set build name
|
||||||
|
--builddir=DIR set build directory
|
||||||
|
|
||||||
|
--with-select_module enable select module
|
||||||
|
--without-select_module disable select module
|
||||||
|
--with-poll_module enable poll module
|
||||||
|
--without-poll_module disable poll module
|
||||||
|
|
||||||
|
--with-threads enable thread pool support
|
||||||
|
|
||||||
|
--with-file-aio enable file AIO support
|
||||||
|
|
||||||
|
--without-quic_bpf_module disable ngx_quic_bpf_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_addition_module enable ngx_http_addition_module
|
||||||
|
--with-http_xslt_module enable ngx_http_xslt_module
|
||||||
|
--with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module
|
||||||
|
--with-http_image_filter_module enable ngx_http_image_filter_module
|
||||||
|
--with-http_image_filter_module=dynamic
|
||||||
|
enable dynamic ngx_http_image_filter_module
|
||||||
|
--with-http_geoip_module enable ngx_http_geoip_module
|
||||||
|
--with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module
|
||||||
|
--with-http_sub_module enable ngx_http_sub_module
|
||||||
|
--with-http_dav_module enable ngx_http_dav_module
|
||||||
|
--with-http_flv_module enable ngx_http_flv_module
|
||||||
|
--with-http_mp4_module enable ngx_http_mp4_module
|
||||||
|
--with-http_gunzip_module enable ngx_http_gunzip_module
|
||||||
|
--with-http_gzip_static_module enable ngx_http_gzip_static_module
|
||||||
|
--with-http_auth_request_module enable ngx_http_auth_request_module
|
||||||
|
--with-http_random_index_module enable ngx_http_random_index_module
|
||||||
|
--with-http_secure_link_module enable ngx_http_secure_link_module
|
||||||
|
--with-http_slice_module enable ngx_http_slice_module
|
||||||
|
--with-http_stub_status_module enable ngx_http_stub_status_module
|
||||||
|
--with-http_acme_module enable ngx_http_acme_module
|
||||||
|
|
||||||
|
--without-http_docker_module disable ngx_http_docker_module
|
||||||
|
--without-http_charset_module disable ngx_http_charset_module
|
||||||
|
--without-http_gzip_module disable ngx_http_gzip_module
|
||||||
|
--without-http_ssi_module disable ngx_http_ssi_module
|
||||||
|
--without-http_userid_module disable ngx_http_userid_module
|
||||||
|
--without-http_access_module disable ngx_http_access_module
|
||||||
|
--without-http_auth_basic_module disable ngx_http_auth_basic_module
|
||||||
|
--without-http_mirror_module disable ngx_http_mirror_module
|
||||||
|
--without-http_autoindex_module disable ngx_http_autoindex_module
|
||||||
|
--without-http_api_module disable ngx_http_api_module
|
||||||
|
--without-http_prometheus_module disable ngx_http_prometheus_module
|
||||||
|
--without-http_geo_module disable ngx_http_geo_module
|
||||||
|
--without-http_map_module disable ngx_http_map_module
|
||||||
|
--without-http_split_clients_module disable ngx_http_split_clients_module
|
||||||
|
--without-http_referer_module disable ngx_http_referer_module
|
||||||
|
--without-http_rewrite_module disable ngx_http_rewrite_module
|
||||||
|
--without-http_proxy_module disable ngx_http_proxy_module
|
||||||
|
--without-http_fastcgi_module disable ngx_http_fastcgi_module
|
||||||
|
--without-http_uwsgi_module disable ngx_http_uwsgi_module
|
||||||
|
--without-http_scgi_module disable ngx_http_scgi_module
|
||||||
|
--without-http_grpc_module disable ngx_http_grpc_module
|
||||||
|
--without-http_memcached_module disable ngx_http_memcached_module
|
||||||
|
--without-http_limit_conn_module disable ngx_http_limit_conn_module
|
||||||
|
--without-http_limit_req_module disable ngx_http_limit_req_module
|
||||||
|
--without-http_empty_gif_module disable ngx_http_empty_gif_module
|
||||||
|
--without-http_browser_module disable ngx_http_browser_module
|
||||||
|
--without-http_upstream_hash_module
|
||||||
|
disable ngx_http_upstream_hash_module
|
||||||
|
--without-http_upstream_ip_hash_module
|
||||||
|
disable ngx_http_upstream_ip_hash_module
|
||||||
|
--without-http_upstream_least_conn_module
|
||||||
|
disable ngx_http_upstream_least_conn_module
|
||||||
|
--without-http_upstream_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
|
||||||
|
--without-http_upstream_sticky_module
|
||||||
|
disable ngx_http_upstream_sticky_module
|
||||||
|
|
||||||
|
--with-http_perl_module enable ngx_http_perl_module
|
||||||
|
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module
|
||||||
|
--with-perl_modules_path=PATH set Perl modules path
|
||||||
|
--with-perl=PATH set perl binary pathname
|
||||||
|
|
||||||
|
--http-log-path=PATH set http access log pathname
|
||||||
|
--http-client-body-temp-path=PATH set path to store
|
||||||
|
http client request body temporary files
|
||||||
|
--http-proxy-temp-path=PATH set path to store
|
||||||
|
http proxy temporary files
|
||||||
|
--http-fastcgi-temp-path=PATH set path to store
|
||||||
|
http fastcgi temporary files
|
||||||
|
--http-uwsgi-temp-path=PATH set path to store
|
||||||
|
http uwsgi temporary files
|
||||||
|
--http-scgi-temp-path=PATH set path to store
|
||||||
|
http scgi temporary files
|
||||||
|
--http-acme-client-path=PATH set path to store
|
||||||
|
http acme client files
|
||||||
|
|
||||||
|
--without-http disable HTTP server
|
||||||
|
--without-http-cache disable HTTP cache
|
||||||
|
|
||||||
|
--with-mail enable POP3/IMAP4/SMTP proxy module
|
||||||
|
--with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module
|
||||||
|
--with-mail_ssl_module enable ngx_mail_ssl_module
|
||||||
|
--without-mail_pop3_module disable ngx_mail_pop3_module
|
||||||
|
--without-mail_imap_module disable ngx_mail_imap_module
|
||||||
|
--without-mail_smtp_module disable ngx_mail_smtp_module
|
||||||
|
|
||||||
|
--with-stream enable TCP/UDP proxy module
|
||||||
|
--with-stream=dynamic enable dynamic TCP/UDP proxy module
|
||||||
|
--with-stream_ssl_module enable ngx_stream_ssl_module
|
||||||
|
--with-stream_acme_module enable ngx_stream_acme_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
|
||||||
|
--with-stream_mqtt_preread_module enable ngx_stream_mqtt_preread_module
|
||||||
|
--with-stream_rdp_preread_module enable ngx_stream_rdp_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_pass_module disable ngx_stream_pass_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
|
||||||
|
--without-stream_upstream_sticky_module
|
||||||
|
disable ngx_stream_upstream_sticky_module
|
||||||
|
|
||||||
|
--with-google_perftools_module enable ngx_google_perftools_module
|
||||||
|
--with-cpp_test_module enable ngx_cpp_test_module
|
||||||
|
|
||||||
|
--add-module=PATH enable external module
|
||||||
|
--add-dynamic-module=PATH enable dynamic external module
|
||||||
|
|
||||||
|
--with-compat dynamic modules compatibility
|
||||||
|
|
||||||
|
--with-ntls enable NTLS support
|
||||||
|
|
||||||
|
--with-cc=PATH set C compiler pathname
|
||||||
|
--with-cpp=PATH set C preprocessor pathname
|
||||||
|
--with-cc-opt=OPTIONS set additional C compiler options
|
||||||
|
--with-ld-opt=OPTIONS set additional linker options
|
||||||
|
--with-cpu-opt=CPU build for the specified CPU, valid values:
|
||||||
|
pentium, pentiumpro, pentium3, pentium4,
|
||||||
|
athlon, opteron, sparc32, sparc64, ppc64
|
||||||
|
|
||||||
|
--without-pcre disable PCRE library usage
|
||||||
|
--with-pcre force PCRE library usage
|
||||||
|
--with-pcre=DIR set path to PCRE library sources
|
||||||
|
--with-pcre-opt=OPTIONS set additional build options for PCRE
|
||||||
|
--with-pcre-jit build PCRE with JIT compilation support
|
||||||
|
--without-pcre2 do not use PCRE2 library
|
||||||
|
|
||||||
|
--with-zlib=DIR set path to zlib library sources
|
||||||
|
--with-zlib-opt=OPTIONS set additional build options for zlib
|
||||||
|
--with-zlib-asm=CPU use zlib assembler sources optimized
|
||||||
|
for the specified CPU, valid values:
|
||||||
|
pentium, pentiumpro
|
||||||
|
|
||||||
|
--with-libatomic force libatomic_ops library usage
|
||||||
|
--with-libatomic=DIR set path to libatomic_ops library sources
|
||||||
|
|
||||||
|
--with-openssl=DIR set path to OpenSSL library sources
|
||||||
|
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
|
||||||
|
|
||||||
|
--with-debug enable debug logging
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ".$NGX_PLATFORM" = ".win32" ]; then
|
||||||
|
NGX_WINE=$WINE
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
NGX_SBIN_PATH=${NGX_SBIN_PATH:-sbin/angie}
|
||||||
|
NGX_MODULES_PATH=${NGX_MODULES_PATH:-modules}
|
||||||
|
NGX_CONF_PATH=${NGX_CONF_PATH:-conf/angie.conf}
|
||||||
|
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
|
||||||
|
NGX_PID_PATH=${NGX_PID_PATH:-logs/angie.pid}
|
||||||
|
NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/angie.lock}
|
||||||
|
|
||||||
|
if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then
|
||||||
|
NGX_ERROR_LOG_PATH=
|
||||||
|
else
|
||||||
|
NGX_ERROR_LOG_PATH=${NGX_ERROR_LOG_PATH:-logs/error.log}
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_HTTP_LOG_PATH=${NGX_HTTP_LOG_PATH:-logs/access.log}
|
||||||
|
NGX_HTTP_CLIENT_TEMP_PATH=${NGX_HTTP_CLIENT_TEMP_PATH:-client_body_temp}
|
||||||
|
NGX_HTTP_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp}
|
||||||
|
NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_temp}
|
||||||
|
NGX_HTTP_UWSGI_TEMP_PATH=${NGX_HTTP_UWSGI_TEMP_PATH:-uwsgi_temp}
|
||||||
|
NGX_HTTP_SCGI_TEMP_PATH=${NGX_HTTP_SCGI_TEMP_PATH:-scgi_temp}
|
||||||
|
NGX_HTTP_ACME_CLIENT_PATH=${NGX_HTTP_ACME_CLIENT_PATH:-acme_client}
|
||||||
|
|
||||||
|
case ".$NGX_PERL_MODULES" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
.)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_PERL_MODULES=$NGX_PREFIX/$NGX_PERL_MODULES
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2025 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
MAP_ANON_FOUND=NO
|
||||||
|
MAP_DEVZERO_FOUND=NO
|
||||||
|
MAP_FIXED_NOREPLACE_FOUND=NO
|
||||||
|
MAP_FIXED_EXCL_FOUND=NO
|
||||||
|
|
||||||
|
echo "checking for $NGX_SYSTEM specific features"
|
||||||
|
|
||||||
|
case "$NGX_PLATFORM" in
|
||||||
|
|
||||||
|
FreeBSD:*)
|
||||||
|
. auto/os/freebsd
|
||||||
|
;;
|
||||||
|
|
||||||
|
Linux:*)
|
||||||
|
. auto/os/linux
|
||||||
|
;;
|
||||||
|
|
||||||
|
SunOS:*)
|
||||||
|
. auto/os/solaris
|
||||||
|
;;
|
||||||
|
|
||||||
|
Darwin:*)
|
||||||
|
. auto/os/darwin
|
||||||
|
;;
|
||||||
|
|
||||||
|
win32)
|
||||||
|
. auto/os/win32
|
||||||
|
;;
|
||||||
|
|
||||||
|
DragonFly:*)
|
||||||
|
have=NGX_FREEBSD . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS"
|
||||||
|
|
||||||
|
echo " + sendfile() found"
|
||||||
|
have=NGX_HAVE_SENDFILE . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
;;
|
||||||
|
|
||||||
|
NetBSD:*)
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
|
||||||
|
NGX_RPATH=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
HP-UX:*)
|
||||||
|
# HP/UX
|
||||||
|
have=NGX_HPUX . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_HPUX_ALT_XOPEN_SOCKET_API"
|
||||||
|
;;
|
||||||
|
|
||||||
|
OSF1:*)
|
||||||
|
# Tru64 UNIX
|
||||||
|
have=NGX_TRU64 . auto/have_headers
|
||||||
|
have=NGX_HAVE_STRERROR_R . auto/nohave
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
;;
|
||||||
|
|
||||||
|
GNU:*)
|
||||||
|
# GNU Hurd
|
||||||
|
have=NGX_GNU_HURD . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i386 | i686 | i86pc)
|
||||||
|
have=NGX_HAVE_NONALIGNED . auto/have
|
||||||
|
NGX_MACH_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
amd64 | x86_64)
|
||||||
|
have=NGX_HAVE_NONALIGNED . auto/have
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v | sparc | sparc64)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
# TODO
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
ia64 )
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
# TODO
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
aarch64 | arm64)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
ppc64* | powerpc64*)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
riscv64)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
s390x)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=256
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$NGX_CPU_CACHE_LINE"; then
|
||||||
|
NGX_CPU_CACHE_LINE=$NGX_MACH_CACHE_LINE
|
||||||
|
fi
|
||||||
|
|
||||||
|
have=NGX_CPU_CACHE_LINE value=$NGX_CPU_CACHE_LINE . auto/define
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_DARWIN . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup"
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D__APPLE_USE_RFC_3542"
|
||||||
|
|
||||||
|
|
||||||
|
# kqueue
|
||||||
|
|
||||||
|
echo " + kqueue found"
|
||||||
|
have=NGX_HAVE_KQUEUE . auto/have
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
|
||||||
|
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
NGX_KQUEUE_CHECKED=YES
|
||||||
|
|
||||||
|
ngx_feature="kqueue's EVFILT_TIMER"
|
||||||
|
ngx_feature_name="NGX_HAVE_TIMER_EVENT"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/event.h>
|
||||||
|
#include <sys/time.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int kq;
|
||||||
|
struct kevent kev;
|
||||||
|
struct timespec ts;
|
||||||
|
|
||||||
|
if ((kq = kqueue()) == -1) return 1;
|
||||||
|
|
||||||
|
kev.ident = 0;
|
||||||
|
kev.filter = EVFILT_TIMER;
|
||||||
|
kev.flags = EV_ADD|EV_ENABLE;
|
||||||
|
kev.fflags = 0;
|
||||||
|
kev.data = 1000;
|
||||||
|
kev.udata = 0;
|
||||||
|
|
||||||
|
ts.tv_sec = 0;
|
||||||
|
ts.tv_nsec = 0;
|
||||||
|
|
||||||
|
if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1;
|
||||||
|
|
||||||
|
if (kev.flags & EV_ERROR) return 1;"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="Darwin 64-bit kqueue millisecond timeout bug"
|
||||||
|
ngx_feature_name=NGX_DARWIN_KEVENT_BUG
|
||||||
|
ngx_feature_run=bug
|
||||||
|
ngx_feature_incs="#include <sys/event.h>
|
||||||
|
#include <sys/time.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int kq;
|
||||||
|
struct kevent kev;
|
||||||
|
struct timespec ts;
|
||||||
|
struct timeval tv, tv0;
|
||||||
|
|
||||||
|
kq = kqueue();
|
||||||
|
|
||||||
|
ts.tv_sec = 0;
|
||||||
|
ts.tv_nsec = 999000000;
|
||||||
|
|
||||||
|
gettimeofday(&tv, 0);
|
||||||
|
kevent(kq, NULL, 0, &kev, 1, &ts);
|
||||||
|
gettimeofday(&tv0, 0);
|
||||||
|
timersub(&tv0, &tv, &tv);
|
||||||
|
|
||||||
|
if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile()
|
||||||
|
|
||||||
|
ngx_feature="sendfile()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
|
#include <sys/errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
off_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, off, &n, NULL, 0);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="atomic(3)"
|
||||||
|
ngx_feature_name=NGX_DARWIN_ATOMIC
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libkern/OSAtomic.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int32_t lock = 0;
|
||||||
|
if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="TCP_KEEPALIVE"
|
||||||
|
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_KEEPALIVE, NULL, 0);
|
||||||
|
setsockopt(0, IPPROTO_TCP, TCP_KEEPINTVL, NULL, 0);
|
||||||
|
setsockopt(0, IPPROTO_TCP, TCP_KEEPCNT, NULL, 0)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
NGX_KEEPALIVE_CHECKED=YES
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_FREEBSD . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
. auto/os/freebsd.version
|
||||||
|
|
||||||
|
# setproctitle() in libutil
|
||||||
|
|
||||||
|
if [ \( $version -ge 500000 -a $version -lt 500012 \) \
|
||||||
|
-o $version -lt 410002 ]
|
||||||
|
then
|
||||||
|
echo " + setproctitle() in libutil"
|
||||||
|
|
||||||
|
CORE_LIBS="$CORE_LIBS -lutil"
|
||||||
|
NGX_SETPROCTITLE_LIB="-lutil"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sendfile
|
||||||
|
|
||||||
|
if [ $osreldate -gt 300007 ]; then
|
||||||
|
echo " + sendfile() found"
|
||||||
|
|
||||||
|
have=NGX_HAVE_SENDFILE . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $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
|
||||||
|
|
||||||
|
if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \
|
||||||
|
-o $osreldate -ge 500011 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue found"
|
||||||
|
|
||||||
|
have=NGX_HAVE_KQUEUE . auto/have
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
|
||||||
|
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
NGX_KQUEUE_CHECKED=YES
|
||||||
|
|
||||||
|
|
||||||
|
# kqueue's NOTE_LOWAT
|
||||||
|
|
||||||
|
if [ \( $version -lt 500000 -a $version -ge 430000 \) \
|
||||||
|
-o $version -ge 500018 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue's NOTE_LOWAT found"
|
||||||
|
have=NGX_HAVE_LOWAT_EVENT . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
# kqueue's EVFILT_TIMER
|
||||||
|
|
||||||
|
if [ \( $version -lt 500000 -a $version -ge 440001 \) \
|
||||||
|
-o $version -ge 500023 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue's EVFILT_TIMER found"
|
||||||
|
have=NGX_HAVE_TIMER_EVENT . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# cpuset_setaffinity()
|
||||||
|
|
||||||
|
if [ $version -ge 701000 ]; then
|
||||||
|
echo " + cpuset_setaffinity() found"
|
||||||
|
have=NGX_HAVE_CPUSET_SETAFFINITY . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="mmap(MAP_FIXED|MAP_EXCL)"
|
||||||
|
ngx_feature_name="NGX_HAVE_MAP_FIXED_EXCL"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/mman.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="(void) mmap(NULL, 4096, PROT_READ|PROT_WRITE,
|
||||||
|
MAP_FIXED|MAP_EXCL, -1, 0);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
MAP_FIXED_EXCL_FOUND=YES
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "freebsd version" "os"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# __FreeBSD_version and sysctl kern.osreldate are the best ways
|
||||||
|
# to determine whether some capability exists and is safe to use.
|
||||||
|
# __FreeBSD_version is used for the testing of the build environment.
|
||||||
|
# sysctl kern.osreldate is used for the testing of the kernel capabilities.
|
||||||
|
|
||||||
|
version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \
|
||||||
|
| sed -e 's/^.* \(.*\)$/\1/'`
|
||||||
|
|
||||||
|
osreldate=`/sbin/sysctl -n kern.osreldate`
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "version=\"$version\""
|
||||||
|
echo "osreldate=\"$osreldate\""
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,301 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_LINUX . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
cc_aux_flags="$CC_AUX_FLAGS"
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
|
||||||
|
. auto/os/linux.kernel_version
|
||||||
|
|
||||||
|
# posix_fadvise64() had been implemented in 2.5.60
|
||||||
|
|
||||||
|
if [ $version -lt 132412 ]; then
|
||||||
|
have=NGX_HAVE_POSIX_FADVISE . auto/nohave
|
||||||
|
fi
|
||||||
|
|
||||||
|
# epoll, EPOLLET version
|
||||||
|
|
||||||
|
ngx_feature="epoll"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLL"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
(void) ee;
|
||||||
|
efd = epoll_create(100);
|
||||||
|
if (efd == -1) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
|
||||||
|
|
||||||
|
# EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8
|
||||||
|
|
||||||
|
ngx_feature="EPOLLRDHUP"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLLRDHUP"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0, fd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24
|
||||||
|
|
||||||
|
ngx_feature="EPOLLEXCLUSIVE"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0, fd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLEXCLUSIVE;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
# O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14
|
||||||
|
|
||||||
|
ngx_feature="O_PATH"
|
||||||
|
ngx_feature_name="NGX_HAVE_O_PATH"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int fd; struct stat sb;
|
||||||
|
fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW);
|
||||||
|
if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile()
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
|
||||||
|
ngx_feature="sendfile()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>
|
||||||
|
#include <errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
ssize_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, &off, 1);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile64()
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
ngx_feature="sendfile64()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE64"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>
|
||||||
|
#include <errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
ssize_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, &off, 1);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="sys/prctl.h"; . auto/include
|
||||||
|
|
||||||
|
# prctl(PR_SET_DUMPABLE)
|
||||||
|
|
||||||
|
ngx_feature="prctl(PR_SET_DUMPABLE)"
|
||||||
|
ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/prctl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# prctl(PR_SET_KEEPCAPS)
|
||||||
|
|
||||||
|
ngx_feature="prctl(PR_SET_KEEPCAPS)"
|
||||||
|
ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS"
|
||||||
|
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_incs="#include <linux/capability.h>
|
||||||
|
#include <sys/syscall.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="struct __user_cap_data_struct data;
|
||||||
|
struct __user_cap_header_struct header;
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
# crypt_r()
|
||||||
|
|
||||||
|
ngx_feature="crypt_r()"
|
||||||
|
ngx_feature_name="NGX_HAVE_GNU_CRYPT_R"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <crypt.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=-lcrypt
|
||||||
|
ngx_feature_test="struct crypt_data cd;
|
||||||
|
crypt_r(\"key\", \"salt\", &cd);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CRYPT_LIB="-lcrypt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="sys/vfs.h"; . auto/include
|
||||||
|
|
||||||
|
|
||||||
|
# BPF sockhash
|
||||||
|
|
||||||
|
ngx_feature="BPF maps"
|
||||||
|
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);
|
||||||
|
|
||||||
|
attr.map_flags = 0;
|
||||||
|
attr.map_type = BPF_MAP_TYPE_SOCKMAP;
|
||||||
|
syscall(__NR_bpf, 0, &attr, 0);
|
||||||
|
|
||||||
|
attr.map_flags = 0;
|
||||||
|
attr.map_type = BPF_MAP_TYPE_ARRAY_OF_MAPS;
|
||||||
|
syscall(__NR_bpf, 0, &attr, 0);
|
||||||
|
|
||||||
|
attr.map_flags = 0;
|
||||||
|
attr.map_type = BPF_MAP_TYPE_ARRAY;
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
|
||||||
|
# Linux 4.17+
|
||||||
|
ngx_feature="mmap(MAP_FIXED_NOREPLACE)"
|
||||||
|
ngx_feature_name="NGX_HAVE_MAP_FIXED_NOREPLACE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/mman.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="(void) mmap(NULL, 4096, PROT_READ|PROT_WRITE,
|
||||||
|
MAP_FIXED_NOREPLACE, -1, 0);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
MAP_FIXED_NOREPLACE_FOUND=YES
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "kernel version" "os"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Linux kernel version
|
||||||
|
|
||||||
|
version=$((`uname -r \
|
||||||
|
| sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \
|
||||||
|
\1*256*256+\2*256+\3/p' \
|
||||||
|
-e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`))
|
||||||
|
|
||||||
|
version=${version:-0}
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "version=\"$version\""
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_SOLARIS . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS "
|
||||||
|
CORE_LIBS="$CORE_LIBS -lsocket -lnsl"
|
||||||
|
|
||||||
|
NGX_RPATH=YES
|
||||||
|
|
||||||
|
# Solaris's make does not support a blank line between target and rules
|
||||||
|
ngx_spacer=
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_FILE_OFFSET_BITS=64 -lsocket -lnsl"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ZLIB_ASM != NO ]; then
|
||||||
|
echo "$0: error: the --with-zlib-asm=CPU option is not supported"
|
||||||
|
echo "on that platform"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="sendfilev()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lsendfile"
|
||||||
|
ngx_feature_test="int fd = 1; sendfilevec_t vec[1];
|
||||||
|
size_t sent; ssize_t n;
|
||||||
|
n = sendfilev(fd, vec, 1, &sent);
|
||||||
|
if (n == -1) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $SOLARIS_SENDFILEV_SRCS"
|
||||||
|
CORE_LIBS="$CORE_LIBS -lsendfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="event ports"
|
||||||
|
ngx_feature_name="NGX_HAVE_EVENTPORT"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <port.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="(void) port_create()"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $EVENTPORT_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $EVENTPORT_MODULE"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_WIN32 . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$WIN32_INCS"
|
||||||
|
CORE_DEPS="$WIN32_DEPS"
|
||||||
|
CORE_SRCS="$WIN32_SRCS $IOCP_SRCS"
|
||||||
|
OS_CONFIG="$WIN32_CONFIG"
|
||||||
|
NGX_ICONS="$NGX_WIN32_ICONS"
|
||||||
|
SELECT_SRCS=$WIN32_SELECT_SRCS
|
||||||
|
POLL_SRCS=$WIN32_POLL_SRCS
|
||||||
|
|
||||||
|
ngx_pic_opt=
|
||||||
|
ngx_binext=".exe"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
clang | gcc)
|
||||||
|
CORE_LIBS="$CORE_LIBS -ladvapi32 -lws2_32"
|
||||||
|
MAIN_LINK="$MAIN_LINK -Wl,--export-all-symbols"
|
||||||
|
MAIN_LINK="$MAIN_LINK -Wl,--out-implib=$NGX_OBJS/libnginx.a"
|
||||||
|
MODULE_LINK="-shared -L $NGX_OBJS -lnginx"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS advapi32.lib ws2_32.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $IOCP_MODULE"
|
||||||
|
#EVENT_FOUND=YES
|
||||||
|
|
||||||
|
have=NGX_HAVE_INET6 . auto/have
|
||||||
|
|
||||||
|
have=NGX_HAVE_IOCP . auto/have
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "OS info" "os"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "checking for OS"
|
||||||
|
|
||||||
|
NGX_SYSTEM=`uname -s 2>/dev/null`
|
||||||
|
NGX_RELEASE=`uname -r 2>/dev/null`
|
||||||
|
NGX_MACHINE=`uname -m 2>/dev/null`
|
||||||
|
|
||||||
|
echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE"
|
||||||
|
|
||||||
|
NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";
|
||||||
|
|
||||||
|
case "$NGX_SYSTEM" in
|
||||||
|
MINGW32_* | MINGW64_* | MSYS_*)
|
||||||
|
NGX_PLATFORM=win32
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "NGX_SYSTEM=\"$NGX_SYSTEM\""
|
||||||
|
echo "NGX_RELEASE=\"$NGX_RELEASE\""
|
||||||
|
echo "NGX_MACHINE=\"$NGX_MACHINE\""
|
||||||
|
echo "NGX_PLATFORM=\"$NGX_PLATFORM\""
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,270 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2022 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module \
|
||||||
|
ngx_resolver_module"
|
||||||
|
|
||||||
|
CORE_INCS="src/core"
|
||||||
|
|
||||||
|
CORE_DEPS="src/core/angie.h \
|
||||||
|
src/core/nginx.h \
|
||||||
|
src/core/ngx_config.h \
|
||||||
|
src/core/ngx_core.h \
|
||||||
|
src/core/ngx_log.h \
|
||||||
|
src/core/ngx_palloc.h \
|
||||||
|
src/core/ngx_array.h \
|
||||||
|
src/core/ngx_list.h \
|
||||||
|
src/core/ngx_hash.h \
|
||||||
|
src/core/ngx_buf.h \
|
||||||
|
src/core/ngx_queue.h \
|
||||||
|
src/core/ngx_string.h \
|
||||||
|
src/core/ngx_parse.h \
|
||||||
|
src/core/ngx_parse_time.h \
|
||||||
|
src/core/ngx_inet.h \
|
||||||
|
src/core/ngx_file.h \
|
||||||
|
src/core/ngx_crc.h \
|
||||||
|
src/core/ngx_crc32.h \
|
||||||
|
src/core/ngx_murmurhash.h \
|
||||||
|
src/core/ngx_md5.h \
|
||||||
|
src/core/ngx_sha1.h \
|
||||||
|
src/core/ngx_rbtree.h \
|
||||||
|
src/core/ngx_radix_tree.h \
|
||||||
|
src/core/ngx_rwlock.h \
|
||||||
|
src/core/ngx_slab.h \
|
||||||
|
src/core/ngx_times.h \
|
||||||
|
src/core/ngx_shmtx.h \
|
||||||
|
src/core/ngx_connection.h \
|
||||||
|
src/core/ngx_cycle.h \
|
||||||
|
src/core/ngx_conf_file.h \
|
||||||
|
src/core/ngx_module.h \
|
||||||
|
src/core/ngx_resolver.h \
|
||||||
|
src/core/ngx_open_file_cache.h \
|
||||||
|
src/core/ngx_crypt.h \
|
||||||
|
src/core/ngx_data.h \
|
||||||
|
src/core/ngx_dtoa.h \
|
||||||
|
src/core/ngx_proxy_protocol.h \
|
||||||
|
src/core/ngx_syslog.h"
|
||||||
|
|
||||||
|
|
||||||
|
CORE_SRCS="src/core/nginx.c \
|
||||||
|
src/core/ngx_log.c \
|
||||||
|
src/core/ngx_palloc.c \
|
||||||
|
src/core/ngx_array.c \
|
||||||
|
src/core/ngx_list.c \
|
||||||
|
src/core/ngx_hash.c \
|
||||||
|
src/core/ngx_buf.c \
|
||||||
|
src/core/ngx_queue.c \
|
||||||
|
src/core/ngx_output_chain.c \
|
||||||
|
src/core/ngx_string.c \
|
||||||
|
src/core/ngx_parse.c \
|
||||||
|
src/core/ngx_parse_time.c \
|
||||||
|
src/core/ngx_inet.c \
|
||||||
|
src/core/ngx_file.c \
|
||||||
|
src/core/ngx_crc32.c \
|
||||||
|
src/core/ngx_murmurhash.c \
|
||||||
|
src/core/ngx_md5.c \
|
||||||
|
src/core/ngx_sha1.c \
|
||||||
|
src/core/ngx_rbtree.c \
|
||||||
|
src/core/ngx_radix_tree.c \
|
||||||
|
src/core/ngx_slab.c \
|
||||||
|
src/core/ngx_times.c \
|
||||||
|
src/core/ngx_shmtx.c \
|
||||||
|
src/core/ngx_connection.c \
|
||||||
|
src/core/ngx_cycle.c \
|
||||||
|
src/core/ngx_spinlock.c \
|
||||||
|
src/core/ngx_rwlock.c \
|
||||||
|
src/core/ngx_cpuinfo.c \
|
||||||
|
src/core/ngx_conf_file.c \
|
||||||
|
src/core/ngx_module.c \
|
||||||
|
src/core/ngx_resolver.c \
|
||||||
|
src/core/ngx_open_file_cache.c \
|
||||||
|
src/core/ngx_crypt.c \
|
||||||
|
src/core/ngx_data.c \
|
||||||
|
src/core/ngx_dtoa.c \
|
||||||
|
src/core/ngx_proxy_protocol.c \
|
||||||
|
src/core/ngx_syslog.c"
|
||||||
|
|
||||||
|
CORE_BUILD_C="src/core/ngx_build.c"
|
||||||
|
|
||||||
|
|
||||||
|
EVENT_MODULES="ngx_events_module ngx_event_core_module"
|
||||||
|
|
||||||
|
EVENT_INCS="src/event src/event/modules src/event/quic"
|
||||||
|
|
||||||
|
EVENT_DEPS="src/event/ngx_event.h \
|
||||||
|
src/event/ngx_event_timer.h \
|
||||||
|
src/event/ngx_event_posted.h \
|
||||||
|
src/event/ngx_event_connect.h \
|
||||||
|
src/event/ngx_event_pipe.h \
|
||||||
|
src/event/ngx_event_udp.h"
|
||||||
|
|
||||||
|
EVENT_SRCS="src/event/ngx_event.c \
|
||||||
|
src/event/ngx_event_timer.c \
|
||||||
|
src/event/ngx_event_posted.c \
|
||||||
|
src/event/ngx_event_accept.c \
|
||||||
|
src/event/ngx_event_udp.c \
|
||||||
|
src/event/ngx_event_connect.c \
|
||||||
|
src/event/ngx_event_pipe.c"
|
||||||
|
|
||||||
|
|
||||||
|
SELECT_MODULE=ngx_select_module
|
||||||
|
SELECT_SRCS=src/event/modules/ngx_select_module.c
|
||||||
|
WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c
|
||||||
|
|
||||||
|
POLL_MODULE=ngx_poll_module
|
||||||
|
POLL_SRCS=src/event/modules/ngx_poll_module.c
|
||||||
|
WIN32_POLL_SRCS=src/event/modules/ngx_win32_poll_module.c
|
||||||
|
|
||||||
|
KQUEUE_MODULE=ngx_kqueue_module
|
||||||
|
KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
|
||||||
|
|
||||||
|
DEVPOLL_MODULE=ngx_devpoll_module
|
||||||
|
DEVPOLL_SRCS=src/event/modules/ngx_devpoll_module.c
|
||||||
|
|
||||||
|
EVENTPORT_MODULE=ngx_eventport_module
|
||||||
|
EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c
|
||||||
|
|
||||||
|
EPOLL_MODULE=ngx_epoll_module
|
||||||
|
EPOLL_SRCS=src/event/modules/ngx_epoll_module.c
|
||||||
|
|
||||||
|
IOCP_MODULE=ngx_iocp_module
|
||||||
|
IOCP_SRCS=src/event/modules/ngx_iocp_module.c
|
||||||
|
|
||||||
|
FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c"
|
||||||
|
LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c"
|
||||||
|
|
||||||
|
UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
|
||||||
|
|
||||||
|
UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
|
||||||
|
src/os/unix/ngx_time.h \
|
||||||
|
src/os/unix/ngx_errno.h \
|
||||||
|
src/os/unix/ngx_alloc.h \
|
||||||
|
src/os/unix/ngx_files.h \
|
||||||
|
src/os/unix/ngx_channel.h \
|
||||||
|
src/os/unix/ngx_shmem.h \
|
||||||
|
src/os/unix/ngx_process.h \
|
||||||
|
src/os/unix/ngx_setaffinity.h \
|
||||||
|
src/os/unix/ngx_setproctitle.h \
|
||||||
|
src/os/unix/ngx_atomic.h \
|
||||||
|
src/os/unix/ngx_gcc_atomic_x86.h \
|
||||||
|
src/os/unix/ngx_thread.h \
|
||||||
|
src/os/unix/ngx_socket.h \
|
||||||
|
src/os/unix/ngx_os.h \
|
||||||
|
src/os/unix/ngx_user.h \
|
||||||
|
src/os/unix/ngx_dlopen.h \
|
||||||
|
src/os/unix/ngx_process_cycle.h"
|
||||||
|
|
||||||
|
# add to UNIX_DEPS
|
||||||
|
# src/os/unix/ngx_gcc_atomic_amd64.h \
|
||||||
|
# src/os/unix/ngx_gcc_atomic_sparc64.h \
|
||||||
|
# src/os/unix/ngx_gcc_atomic_ppc.h \
|
||||||
|
# src/os/unix/ngx_sunpro_atomic_sparc64.h \
|
||||||
|
# src/os/unix/ngx_sunpro_x86.il \
|
||||||
|
# src/os/unix/ngx_sunpro_amd64.il \
|
||||||
|
# src/os/unix/ngx_sunpro_sparc64.il \
|
||||||
|
|
||||||
|
|
||||||
|
UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
|
||||||
|
src/os/unix/ngx_time.c \
|
||||||
|
src/os/unix/ngx_errno.c \
|
||||||
|
src/os/unix/ngx_alloc.c \
|
||||||
|
src/os/unix/ngx_files.c \
|
||||||
|
src/os/unix/ngx_socket.c \
|
||||||
|
src/os/unix/ngx_recv.c \
|
||||||
|
src/os/unix/ngx_readv_chain.c \
|
||||||
|
src/os/unix/ngx_udp_recv.c \
|
||||||
|
src/os/unix/ngx_send.c \
|
||||||
|
src/os/unix/ngx_writev_chain.c \
|
||||||
|
src/os/unix/ngx_udp_send.c \
|
||||||
|
src/os/unix/ngx_udp_sendmsg_chain.c \
|
||||||
|
src/os/unix/ngx_channel.c \
|
||||||
|
src/os/unix/ngx_shmem.c \
|
||||||
|
src/os/unix/ngx_process.c \
|
||||||
|
src/os/unix/ngx_daemon.c \
|
||||||
|
src/os/unix/ngx_setaffinity.c \
|
||||||
|
src/os/unix/ngx_setproctitle.c \
|
||||||
|
src/os/unix/ngx_posix_init.c \
|
||||||
|
src/os/unix/ngx_user.c \
|
||||||
|
src/os/unix/ngx_dlopen.c \
|
||||||
|
src/os/unix/ngx_process_cycle.c"
|
||||||
|
|
||||||
|
POSIX_DEPS=src/os/unix/ngx_posix_config.h
|
||||||
|
|
||||||
|
THREAD_POOL_MODULE=ngx_thread_pool_module
|
||||||
|
THREAD_POOL_DEPS=src/core/ngx_thread_pool.h
|
||||||
|
THREAD_POOL_SRCS="src/core/ngx_thread_pool.c
|
||||||
|
src/os/unix/ngx_thread_cond.c
|
||||||
|
src/os/unix/ngx_thread_mutex.c
|
||||||
|
src/os/unix/ngx_thread_id.c"
|
||||||
|
|
||||||
|
FREEBSD_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h"
|
||||||
|
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
|
||||||
|
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
|
||||||
|
|
||||||
|
LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h"
|
||||||
|
LINUX_SRCS=src/os/unix/ngx_linux_init.c
|
||||||
|
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
SOLARIS_DEPS="src/os/unix/ngx_solaris_config.h src/os/unix/ngx_solaris.h"
|
||||||
|
SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c
|
||||||
|
SOLARIS_SENDFILEV_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
DARWIN_DEPS="src/os/unix/ngx_darwin_config.h src/os/unix/ngx_darwin.h"
|
||||||
|
DARWIN_SRCS=src/os/unix/ngx_darwin_init.c
|
||||||
|
DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
WIN32_INCS="$CORE_INCS $EVENT_INCS src/os/win32"
|
||||||
|
|
||||||
|
WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
|
||||||
|
src/os/win32/ngx_win32_config.h \
|
||||||
|
src/os/win32/ngx_time.h \
|
||||||
|
src/os/win32/ngx_errno.h \
|
||||||
|
src/os/win32/ngx_alloc.h \
|
||||||
|
src/os/win32/ngx_files.h \
|
||||||
|
src/os/win32/ngx_shmem.h \
|
||||||
|
src/os/win32/ngx_process.h \
|
||||||
|
src/os/win32/ngx_atomic.h \
|
||||||
|
src/os/win32/ngx_thread.h \
|
||||||
|
src/os/win32/ngx_socket.h \
|
||||||
|
src/os/win32/ngx_os.h \
|
||||||
|
src/os/win32/ngx_user.h \
|
||||||
|
src/os/win32/ngx_dlopen.h \
|
||||||
|
src/os/win32/ngx_process_cycle.h"
|
||||||
|
|
||||||
|
WIN32_CONFIG=src/os/win32/ngx_win32_config.h
|
||||||
|
|
||||||
|
WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
|
||||||
|
src/os/win32/ngx_errno.c \
|
||||||
|
src/os/win32/ngx_alloc.c \
|
||||||
|
src/os/win32/ngx_files.c \
|
||||||
|
src/os/win32/ngx_shmem.c \
|
||||||
|
src/os/win32/ngx_time.c \
|
||||||
|
src/os/win32/ngx_process.c \
|
||||||
|
src/os/win32/ngx_thread.c \
|
||||||
|
src/os/win32/ngx_socket.c \
|
||||||
|
src/os/win32/ngx_wsarecv.c \
|
||||||
|
src/os/win32/ngx_wsarecv_chain.c \
|
||||||
|
src/os/win32/ngx_udp_wsarecv.c \
|
||||||
|
src/os/win32/ngx_wsasend.c \
|
||||||
|
src/os/win32/ngx_wsasend_chain.c \
|
||||||
|
src/os/win32/ngx_win32_init.c \
|
||||||
|
src/os/win32/ngx_user.c \
|
||||||
|
src/os/win32/ngx_dlopen.c \
|
||||||
|
src/os/win32/ngx_event_log.c \
|
||||||
|
src/os/win32/ngx_process_cycle.c \
|
||||||
|
src/event/ngx_event_acceptex.c"
|
||||||
|
|
||||||
|
NGX_WIN32_ICONS="src/os/win32/nginx.ico"
|
||||||
|
NGX_WIN32_RC="src/os/win32/nginx.rc"
|
||||||
|
|
||||||
|
|
||||||
|
HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
|
||||||
|
|
||||||
|
HTTP_HUFF_SRCS="src/http/ngx_http_huff_decode.c
|
||||||
|
src/http/ngx_http_huff_encode.c"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_SUPPRESS_WARN . auto/have
|
||||||
|
|
||||||
|
have=NGX_SMP . auto/have
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Configuration summary"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_THREADS = YES ]; then
|
||||||
|
echo " + using threads"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PCRE = DISABLED ]; then
|
||||||
|
echo " + PCRE library is disabled"
|
||||||
|
|
||||||
|
else
|
||||||
|
case $PCRE in
|
||||||
|
YES) echo " + using system $PCRE_LIBRARY library" ;;
|
||||||
|
NONE) echo " + PCRE library is not used" ;;
|
||||||
|
*) echo " + using $PCRE_LIBRARY library: $PCRE" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $OPENSSL in
|
||||||
|
YES) echo " + using system OpenSSL library" ;;
|
||||||
|
NONE) echo " + OpenSSL library is not used" ;;
|
||||||
|
*) echo " + using OpenSSL library: $OPENSSL" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $ZLIB in
|
||||||
|
YES) echo " + using system zlib library" ;;
|
||||||
|
NONE) echo " + zlib library is not used" ;;
|
||||||
|
*) echo " + using zlib library: $ZLIB" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $NGX_LIBATOMIC in
|
||||||
|
YES) echo " + using system libatomic_ops library" ;;
|
||||||
|
NO) ;; # not used
|
||||||
|
*) echo " + using libatomic_ops library: $NGX_LIBATOMIC" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
Angie path prefix: "$NGX_PREFIX"
|
||||||
|
Angie binary file: "$NGX_SBIN_PATH"
|
||||||
|
Angie modules path: "$NGX_MODULES_PATH"
|
||||||
|
Angie configuration prefix: "$NGX_CONF_PREFIX"
|
||||||
|
Angie configuration file: "$NGX_CONF_PATH"
|
||||||
|
Angie pid file: "$NGX_PID_PATH"
|
||||||
|
END
|
||||||
|
|
||||||
|
if test -n "$NGX_ERROR_LOG_PATH"; then
|
||||||
|
echo " Angie error log file: \"$NGX_ERROR_LOG_PATH\""
|
||||||
|
else
|
||||||
|
echo " Angie logs errors to stderr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
Angie http access log file: "$NGX_HTTP_LOG_PATH"
|
||||||
|
Angie http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH"
|
||||||
|
END
|
||||||
|
|
||||||
|
if [ $HTTP_PROXY = YES ]; then
|
||||||
|
echo " Angie http proxy temporary files: \"$NGX_HTTP_PROXY_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_FASTCGI = YES ]; then
|
||||||
|
echo " Angie http fastcgi temporary files: \"$NGX_HTTP_FASTCGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_UWSGI = YES ]; then
|
||||||
|
echo " Angie http uwsgi temporary files: \"$NGX_HTTP_UWSGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_SCGI = YES ]; then
|
||||||
|
echo " Angie http scgi temporary files: \"$NGX_HTTP_SCGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_ACME = YES ]; then
|
||||||
|
echo " Angie http acme client path: \"$NGX_HTTP_ACME_CLIENT_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$NGX_POST_CONF_MSG"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_THREADS = YES ]; then
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: --with-threads is not supported on Windows
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
have=NGX_THREADS . auto/have
|
||||||
|
CORE_DEPS="$CORE_DEPS $THREAD_POOL_DEPS"
|
||||||
|
CORE_SRCS="$CORE_SRCS $THREAD_POOL_SRCS"
|
||||||
|
CORE_LIBS="$CORE_LIBS -lpthread"
|
||||||
|
NGX_LIBPTHREAD="-lpthread"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "$ngx_type" "sizeof"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_type size ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_type size
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_size=
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
$NGX_INCLUDE_UNISTD_H
|
||||||
|
#include <signal.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
$NGX_INCLUDE_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
printf("%d", (int) sizeof($ngx_type));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="($CC -c $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.o $NGX_LD_OPT $ngx_feature_libs)"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
ngx_feature_run=value
|
||||||
|
if runtest "sizeof" "$ngx_type"; then
|
||||||
|
ngx_size="$ngx_rtval"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " $ngx_size bytes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case $ngx_size in
|
||||||
|
4)
|
||||||
|
ngx_max_value=2147483647
|
||||||
|
ngx_max_len='(sizeof("-2147483648") - 1)'
|
||||||
|
;;
|
||||||
|
|
||||||
|
8)
|
||||||
|
ngx_max_value=9223372036854775807LL
|
||||||
|
ngx_max_len='(sizeof("-9223372036854775808") - 1)'
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo
|
||||||
|
echo "$0: error: can not detect $ngx_type size"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "ngx_size=$ngx_size"
|
||||||
|
echo "ngx_max_value=$ngx_max_value"
|
||||||
|
echo "ngx_max_len='$ngx_max_len'"
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "$ngx_type" "typedef"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_type ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_type
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
for ngx_try in $ngx_type $ngx_types
|
||||||
|
do
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
$ngx_try i = 0;
|
||||||
|
return (int) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="($CC -c $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.o $NGX_LD_OPT $ngx_feature_libs)"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
if [ $ngx_try = $ngx_type ]; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
else
|
||||||
|
echo ", $ngx_try used"
|
||||||
|
ngx_found=$ngx_try
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
if [ $ngx_try = $ngx_type ]; then
|
||||||
|
echo $ngx_n " $ngx_try not found$ngx_c"
|
||||||
|
else
|
||||||
|
echo $ngx_n ", $ngx_try not found$ngx_c"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
if [ $ngx_found != no ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: can not define $ngx_type"
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found != yes ]; then
|
||||||
|
echo "typedef $ngx_found $ngx_type;" >> $NGX_AUTO_CONFIG_H
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
|
||||||
|
if [ $ngx_found != yes ]; then
|
||||||
|
echo "echo \"typedef $ngx_found $ngx_type;\" >> \$NGX_AUTO_CONFIG_H"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "uintptr_t type" "uintptr_t"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $ngx_n "checking for uintptr_t ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for uintptr_t
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
found=no
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
uintptr_t i = 0;
|
||||||
|
return (int) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="($CC -c $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST.o $NGX_AUTOTEST.c && \
|
||||||
|
$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.o $NGX_LD_OPT)"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
echo " uintptr_t found"
|
||||||
|
found=yes
|
||||||
|
else
|
||||||
|
echo $ngx_n " uintptr_t not found" $ngx_c
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
|
||||||
|
if [ $found = no ]; then
|
||||||
|
found="uint`expr 8 \* $ngx_ptr_size`_t"
|
||||||
|
echo ", $found used"
|
||||||
|
|
||||||
|
echo "typedef $found uintptr_t;" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "typedef $found intptr_t;" | sed -e 's/u//g' >> $NGX_AUTO_CONFIG_H
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
|
||||||
|
if [ $found = yes ]; then
|
||||||
|
cache_output_end
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
sfound=$(echo $found | sed -e 's/u//g')
|
||||||
|
|
||||||
|
echo "echo \"typedef $found uintptr_t;\" >> \$NGX_AUTO_CONFIG_H"
|
||||||
|
echo "echo \"typedef $sfound intptr_t;\" >> \$NGX_AUTO_CONFIG_H"
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $ngx_param
|
||||||
|
#define $ngx_param $ngx_value
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if check_cache "unix group" "os"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
if [ $NGX_FEATURE_CACHE = NO ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
cache_output_start
|
||||||
|
|
||||||
|
echo "ngx_found=yes"
|
||||||
|
echo "NGX_GROUP=$NGX_GROUP"
|
||||||
|
|
||||||
|
cache_output_end
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
|
||||||
|
|
||||||
|
name2macro()
|
||||||
|
{
|
||||||
|
case "$1" in
|
||||||
|
*[a-z/.]*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
res=$1
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
OPTIND=1
|
||||||
|
res=
|
||||||
|
|
||||||
|
while getopts ":" opt "-$1"; do
|
||||||
|
r=
|
||||||
|
case "$OPTARG" in
|
||||||
|
"a") r="A" ;; "b") r="B" ;; "c") r="C" ;; "d") r="D" ;;
|
||||||
|
"e") r="E" ;; "f") r="F" ;; "g") r="G" ;; "h") r="H" ;;
|
||||||
|
"i") r="I" ;; "j") r="J" ;; "k") r="K" ;; "l") r="L" ;;
|
||||||
|
"m") r="M" ;; "n") r="N" ;; "o") r="O" ;; "p") r="P" ;;
|
||||||
|
"q") r="Q" ;; "r") r="R" ;; "s") r="S" ;; "t") r="T" ;;
|
||||||
|
"u") r="U" ;; "v") r="V" ;; "w") r="W" ;; "x") r="X" ;;
|
||||||
|
"y") r="Y" ;; "z") r="Z" ;; "/") r="_" ;; ".") r="_" ;;
|
||||||
|
*) r="${OPTARG}" ;;
|
||||||
|
esac
|
||||||
|
res="$res$r"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
runtest()
|
||||||
|
{
|
||||||
|
if [ $NGX_TEST_RUNNER != no ]; then
|
||||||
|
$NGX_TEST_RUNNER "$NGX_AUTOTEST" "$1" "$2" >> $NGX_AUTOCONF_ERR 2>&1
|
||||||
|
else
|
||||||
|
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
|
||||||
|
/bin/sh -c "$NGX_AUTOTEST" >> $NGX_AUTOCONF_ERR 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_rt_res=$?
|
||||||
|
|
||||||
|
if [ $ngx_rt_res -eq 0 ] && [ "$ngx_feature_run" = "value" ] ; then
|
||||||
|
if [ $NGX_TEST_RUNNER != no ]; then
|
||||||
|
ngx_rtval=$($NGX_TEST_RUNNER "$NGX_AUTOTEST" "$1" "$2")
|
||||||
|
else
|
||||||
|
ngx_rtval=$($NGX_AUTOTEST)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $ngx_rt_res
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
|
||||||
|
#user nobody;
|
||||||
|
worker_processes 1;
|
||||||
|
|
||||||
|
#error_log logs/error.log;
|
||||||
|
#error_log logs/error.log notice;
|
||||||
|
#error_log logs/error.log info;
|
||||||
|
|
||||||
|
#pid logs/angie.pid;
|
||||||
|
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
# '$status $body_bytes_sent "$http_referer" '
|
||||||
|
# '"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
#access_log logs/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
#keepalive_timeout 0;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
#gzip on;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
#access_log logs/host.access.log main;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root html;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#error_page 404 /404.html;
|
||||||
|
|
||||||
|
# redirect server error pages to the static page /50x.html
|
||||||
|
#
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
||||||
|
#
|
||||||
|
#location ~ \.php$ {
|
||||||
|
# proxy_pass http://127.0.0.1;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||||
|
#
|
||||||
|
#location ~ \.php$ {
|
||||||
|
# root html;
|
||||||
|
# fastcgi_pass 127.0.0.1:9000;
|
||||||
|
# fastcgi_index index.php;
|
||||||
|
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
||||||
|
# include fastcgi_params;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# deny access to .htaccess files, if Apache's document root
|
||||||
|
# concurs with Angie's one
|
||||||
|
#
|
||||||
|
#location ~ /\.ht {
|
||||||
|
# deny all;
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# another virtual host using mix of IP-, name-, and port-based configuration
|
||||||
|
#
|
||||||
|
#server {
|
||||||
|
# listen 8000;
|
||||||
|
# listen somename:8080;
|
||||||
|
# server_name somename alias another.alias;
|
||||||
|
|
||||||
|
# location / {
|
||||||
|
# root html;
|
||||||
|
# index index.html index.htm;
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
|
||||||
|
# HTTPS server
|
||||||
|
#
|
||||||
|
#server {
|
||||||
|
# listen 443 ssl;
|
||||||
|
# server_name localhost;
|
||||||
|
|
||||||
|
# ssl_certificate cert.pem;
|
||||||
|
# ssl_certificate_key cert.key;
|
||||||
|
|
||||||
|
# ssl_session_cache shared:SSL:1m;
|
||||||
|
# ssl_session_timeout 5m;
|
||||||
|
|
||||||
|
# ssl_ciphers HIGH:!aNULL:!MD5;
|
||||||
|
# ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
# location / {
|
||||||
|
# root html;
|
||||||
|
# index index.html index.htm;
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param QUERY_STRING $query_string;
|
||||||
|
fastcgi_param REQUEST_METHOD $upstream_request_method;
|
||||||
|
fastcgi_param CONTENT_TYPE $content_type;
|
||||||
|
fastcgi_param CONTENT_LENGTH $content_length;
|
||||||
|
|
||||||
|
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||||
|
fastcgi_param REQUEST_URI $request_uri;
|
||||||
|
fastcgi_param DOCUMENT_URI $document_uri;
|
||||||
|
fastcgi_param DOCUMENT_ROOT $document_root;
|
||||||
|
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
||||||
|
fastcgi_param REQUEST_SCHEME $scheme;
|
||||||
|
fastcgi_param HTTPS $https if_not_empty;
|
||||||
|
|
||||||
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
||||||
|
fastcgi_param SERVER_SOFTWARE Angie/$angie_version;
|
||||||
|
|
||||||
|
fastcgi_param REMOTE_ADDR $remote_addr;
|
||||||
|
fastcgi_param REMOTE_PORT $remote_port;
|
||||||
|
fastcgi_param SERVER_ADDR $server_addr;
|
||||||
|
fastcgi_param SERVER_PORT $server_port;
|
||||||
|
fastcgi_param SERVER_NAME $server_name;
|
||||||
|
|
||||||
|
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
||||||
|
fastcgi_param REDIRECT_STATUS 200;
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
fastcgi_param QUERY_STRING $query_string;
|
||||||
|
fastcgi_param REQUEST_METHOD $upstream_request_method;
|
||||||
|
fastcgi_param CONTENT_TYPE $content_type;
|
||||||
|
fastcgi_param CONTENT_LENGTH $content_length;
|
||||||
|
|
||||||
|
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||||
|
fastcgi_param REQUEST_URI $request_uri;
|
||||||
|
fastcgi_param DOCUMENT_URI $document_uri;
|
||||||
|
fastcgi_param DOCUMENT_ROOT $document_root;
|
||||||
|
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
||||||
|
fastcgi_param REQUEST_SCHEME $scheme;
|
||||||
|
fastcgi_param HTTPS $https if_not_empty;
|
||||||
|
|
||||||
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
||||||
|
fastcgi_param SERVER_SOFTWARE Angie/$angie_version;
|
||||||
|
|
||||||
|
fastcgi_param REMOTE_ADDR $remote_addr;
|
||||||
|
fastcgi_param REMOTE_PORT $remote_port;
|
||||||
|
fastcgi_param SERVER_ADDR $server_addr;
|
||||||
|
fastcgi_param SERVER_PORT $server_port;
|
||||||
|
fastcgi_param SERVER_NAME $server_name;
|
||||||
|
|
||||||
|
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
||||||
|
fastcgi_param REDIRECT_STATUS 200;
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
|
||||||
|
# This map is not a full koi8-r <> utf8 map: it does not contain
|
||||||
|
# box-drawing and some other characters. Besides this map contains
|
||||||
|
# several koi8-u and Byelorussian letters which are not in koi8-r.
|
||||||
|
# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
|
||||||
|
# map instead.
|
||||||
|
|
||||||
|
charset_map koi8-r utf-8 {
|
||||||
|
|
||||||
|
80 E282AC ; # euro
|
||||||
|
|
||||||
|
95 E280A2 ; # bullet
|
||||||
|
|
||||||
|
9A C2A0 ; #
|
||||||
|
|
||||||
|
9E C2B7 ; # ·
|
||||||
|
|
||||||
|
A3 D191 ; # small yo
|
||||||
|
A4 D194 ; # small Ukrainian ye
|
||||||
|
|
||||||
|
A6 D196 ; # small Ukrainian i
|
||||||
|
A7 D197 ; # small Ukrainian yi
|
||||||
|
|
||||||
|
AD D291 ; # small Ukrainian soft g
|
||||||
|
AE D19E ; # small Byelorussian short u
|
||||||
|
|
||||||
|
B0 C2B0 ; # °
|
||||||
|
|
||||||
|
B3 D081 ; # capital YO
|
||||||
|
B4 D084 ; # capital Ukrainian YE
|
||||||
|
|
||||||
|
B6 D086 ; # capital Ukrainian I
|
||||||
|
B7 D087 ; # capital Ukrainian YI
|
||||||
|
|
||||||
|
B9 E28496 ; # numero sign
|
||||||
|
|
||||||
|
BD D290 ; # capital Ukrainian soft G
|
||||||
|
BE D18E ; # capital Byelorussian short U
|
||||||
|
|
||||||
|
BF C2A9 ; # (C)
|
||||||
|
|
||||||
|
C0 D18E ; # small yu
|
||||||
|
C1 D0B0 ; # small a
|
||||||
|
C2 D0B1 ; # small b
|
||||||
|
C3 D186 ; # small ts
|
||||||
|
C4 D0B4 ; # small d
|
||||||
|
C5 D0B5 ; # small ye
|
||||||
|
C6 D184 ; # small f
|
||||||
|
C7 D0B3 ; # small g
|
||||||
|
C8 D185 ; # small kh
|
||||||
|
C9 D0B8 ; # small i
|
||||||
|
CA D0B9 ; # small j
|
||||||
|
CB D0BA ; # small k
|
||||||
|
CC D0BB ; # small l
|
||||||
|
CD D0BC ; # small m
|
||||||
|
CE D0BD ; # small n
|
||||||
|
CF D0BE ; # small o
|
||||||
|
|
||||||
|
D0 D0BF ; # small p
|
||||||
|
D1 D18F ; # small ya
|
||||||
|
D2 D180 ; # small r
|
||||||
|
D3 D181 ; # small s
|
||||||
|
D4 D182 ; # small t
|
||||||
|
D5 D183 ; # small u
|
||||||
|
D6 D0B6 ; # small zh
|
||||||
|
D7 D0B2 ; # small v
|
||||||
|
D8 D18C ; # small soft sign
|
||||||
|
D9 D18B ; # small y
|
||||||
|
DA D0B7 ; # small z
|
||||||
|
DB D188 ; # small sh
|
||||||
|
DC D18D ; # small e
|
||||||
|
DD D189 ; # small shch
|
||||||
|
DE D187 ; # small ch
|
||||||
|
DF D18A ; # small hard sign
|
||||||
|
|
||||||
|
E0 D0AE ; # capital YU
|
||||||
|
E1 D090 ; # capital A
|
||||||
|
E2 D091 ; # capital B
|
||||||
|
E3 D0A6 ; # capital TS
|
||||||
|
E4 D094 ; # capital D
|
||||||
|
E5 D095 ; # capital YE
|
||||||
|
E6 D0A4 ; # capital F
|
||||||
|
E7 D093 ; # capital G
|
||||||
|
E8 D0A5 ; # capital KH
|
||||||
|
E9 D098 ; # capital I
|
||||||
|
EA D099 ; # capital J
|
||||||
|
EB D09A ; # capital K
|
||||||
|
EC D09B ; # capital L
|
||||||
|
ED D09C ; # capital M
|
||||||
|
EE D09D ; # capital N
|
||||||
|
EF D09E ; # capital O
|
||||||
|
|
||||||
|
F0 D09F ; # capital P
|
||||||
|
F1 D0AF ; # capital YA
|
||||||
|
F2 D0A0 ; # capital R
|
||||||
|
F3 D0A1 ; # capital S
|
||||||
|
F4 D0A2 ; # capital T
|
||||||
|
F5 D0A3 ; # capital U
|
||||||
|
F6 D096 ; # capital ZH
|
||||||
|
F7 D092 ; # capital V
|
||||||
|
F8 D0AC ; # capital soft sign
|
||||||
|
F9 D0AB ; # capital Y
|
||||||
|
FA D097 ; # capital Z
|
||||||
|
FB D0A8 ; # capital SH
|
||||||
|
FC D0AD ; # capital E
|
||||||
|
FD D0A9 ; # capital SHCH
|
||||||
|
FE D0A7 ; # capital CH
|
||||||
|
FF D0AA ; # capital hard sign
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
|
||||||
|
charset_map koi8-r windows-1251 {
|
||||||
|
|
||||||
|
80 88 ; # euro
|
||||||
|
|
||||||
|
95 95 ; # bullet
|
||||||
|
|
||||||
|
9A A0 ; #
|
||||||
|
|
||||||
|
9E B7 ; # ·
|
||||||
|
|
||||||
|
A3 B8 ; # small yo
|
||||||
|
A4 BA ; # small Ukrainian ye
|
||||||
|
|
||||||
|
A6 B3 ; # small Ukrainian i
|
||||||
|
A7 BF ; # small Ukrainian yi
|
||||||
|
|
||||||
|
AD B4 ; # small Ukrainian soft g
|
||||||
|
AE A2 ; # small Byelorussian short u
|
||||||
|
|
||||||
|
B0 B0 ; # °
|
||||||
|
|
||||||
|
B3 A8 ; # capital YO
|
||||||
|
B4 AA ; # capital Ukrainian YE
|
||||||
|
|
||||||
|
B6 B2 ; # capital Ukrainian I
|
||||||
|
B7 AF ; # capital Ukrainian YI
|
||||||
|
|
||||||
|
B9 B9 ; # numero sign
|
||||||
|
|
||||||
|
BD A5 ; # capital Ukrainian soft G
|
||||||
|
BE A1 ; # capital Byelorussian short U
|
||||||
|
|
||||||
|
BF A9 ; # (C)
|
||||||
|
|
||||||
|
C0 FE ; # small yu
|
||||||
|
C1 E0 ; # small a
|
||||||
|
C2 E1 ; # small b
|
||||||
|
C3 F6 ; # small ts
|
||||||
|
C4 E4 ; # small d
|
||||||
|
C5 E5 ; # small ye
|
||||||
|
C6 F4 ; # small f
|
||||||
|
C7 E3 ; # small g
|
||||||
|
C8 F5 ; # small kh
|
||||||
|
C9 E8 ; # small i
|
||||||
|
CA E9 ; # small j
|
||||||
|
CB EA ; # small k
|
||||||
|
CC EB ; # small l
|
||||||
|
CD EC ; # small m
|
||||||
|
CE ED ; # small n
|
||||||
|
CF EE ; # small o
|
||||||
|
|
||||||
|
D0 EF ; # small p
|
||||||
|
D1 FF ; # small ya
|
||||||
|
D2 F0 ; # small r
|
||||||
|
D3 F1 ; # small s
|
||||||
|
D4 F2 ; # small t
|
||||||
|
D5 F3 ; # small u
|
||||||
|
D6 E6 ; # small zh
|
||||||
|
D7 E2 ; # small v
|
||||||
|
D8 FC ; # small soft sign
|
||||||
|
D9 FB ; # small y
|
||||||
|
DA E7 ; # small z
|
||||||
|
DB F8 ; # small sh
|
||||||
|
DC FD ; # small e
|
||||||
|
DD F9 ; # small shch
|
||||||
|
DE F7 ; # small ch
|
||||||
|
DF FA ; # small hard sign
|
||||||
|
|
||||||
|
E0 DE ; # capital YU
|
||||||
|
E1 C0 ; # capital A
|
||||||
|
E2 C1 ; # capital B
|
||||||
|
E3 D6 ; # capital TS
|
||||||
|
E4 C4 ; # capital D
|
||||||
|
E5 C5 ; # capital YE
|
||||||
|
E6 D4 ; # capital F
|
||||||
|
E7 C3 ; # capital G
|
||||||
|
E8 D5 ; # capital KH
|
||||||
|
E9 C8 ; # capital I
|
||||||
|
EA C9 ; # capital J
|
||||||
|
EB CA ; # capital K
|
||||||
|
EC CB ; # capital L
|
||||||
|
ED CC ; # capital M
|
||||||
|
EE CD ; # capital N
|
||||||
|
EF CE ; # capital O
|
||||||
|
|
||||||
|
F0 CF ; # capital P
|
||||||
|
F1 DF ; # capital YA
|
||||||
|
F2 D0 ; # capital R
|
||||||
|
F3 D1 ; # capital S
|
||||||
|
F4 D2 ; # capital T
|
||||||
|
F5 D3 ; # capital U
|
||||||
|
F6 C6 ; # capital ZH
|
||||||
|
F7 C2 ; # capital V
|
||||||
|
F8 DC ; # capital soft sign
|
||||||
|
F9 DB ; # capital Y
|
||||||
|
FA C7 ; # capital Z
|
||||||
|
FB D8 ; # capital SH
|
||||||
|
FC DD ; # capital E
|
||||||
|
FD D9 ; # capital SHCH
|
||||||
|
FE D7 ; # capital CH
|
||||||
|
FF DA ; # capital hard sign
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
types {
|
||||||
|
text/html html htm shtml;
|
||||||
|
text/css css;
|
||||||
|
text/xml xml;
|
||||||
|
image/gif gif;
|
||||||
|
image/jpeg jpeg jpg;
|
||||||
|
application/javascript js;
|
||||||
|
application/atom+xml atom;
|
||||||
|
application/rss+xml rss;
|
||||||
|
|
||||||
|
text/mathml mml;
|
||||||
|
text/plain txt;
|
||||||
|
text/vnd.sun.j2me.app-descriptor jad;
|
||||||
|
text/vnd.wap.wml wml;
|
||||||
|
text/x-component htc;
|
||||||
|
|
||||||
|
image/avif avif;
|
||||||
|
image/bmp bmp;
|
||||||
|
image/png png;
|
||||||
|
image/svg+xml svg svgz;
|
||||||
|
image/tiff tif tiff;
|
||||||
|
image/vnd.wap.wbmp wbmp;
|
||||||
|
image/webp webp;
|
||||||
|
image/x-icon ico;
|
||||||
|
image/x-jng jng;
|
||||||
|
|
||||||
|
font/woff woff;
|
||||||
|
font/woff2 woff2;
|
||||||
|
|
||||||
|
application/java-archive jar war ear;
|
||||||
|
application/json json;
|
||||||
|
application/mac-binhex40 hqx;
|
||||||
|
application/msword doc;
|
||||||
|
application/pdf pdf;
|
||||||
|
application/postscript ps eps ai;
|
||||||
|
application/rtf rtf;
|
||||||
|
application/vnd.apple.mpegurl m3u8;
|
||||||
|
application/vnd.debian.binary-package deb udeb;
|
||||||
|
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.rar rar;
|
||||||
|
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-redhat-package-manager rpm;
|
||||||
|
application/x-sea sea;
|
||||||
|
application/x-shockwave-flash swf;
|
||||||
|
application/x-stuffit sit;
|
||||||
|
application/x-tcl tcl tk;
|
||||||
|
application/x-x509-ca-cert der pem crt;
|
||||||
|
application/x-xpinstall xpi;
|
||||||
|
application/xhtml+xml xhtml;
|
||||||
|
application/xspf+xml xspf;
|
||||||
|
application/zip zip;
|
||||||
|
|
||||||
|
application/octet-stream bin exe dll;
|
||||||
|
application/octet-stream dmg;
|
||||||
|
application/octet-stream iso img;
|
||||||
|
application/octet-stream msi msp msm;
|
||||||
|
|
||||||
|
audio/midi mid midi kar;
|
||||||
|
audio/mpeg mp3;
|
||||||
|
audio/ogg ogg;
|
||||||
|
audio/x-m4a m4a;
|
||||||
|
audio/x-realaudio ra;
|
||||||
|
|
||||||
|
video/3gpp 3gpp 3gp;
|
||||||
|
video/mp2t ts;
|
||||||
|
video/mp4 mp4;
|
||||||
|
video/mpeg mpeg mpg;
|
||||||
|
video/quicktime mov;
|
||||||
|
video/webm webm;
|
||||||
|
video/x-flv flv;
|
||||||
|
video/x-m4v m4v;
|
||||||
|
video/x-mng mng;
|
||||||
|
video/x-ms-asf asx asf;
|
||||||
|
video/x-ms-wmv wmv;
|
||||||
|
video/x-msvideo avi;
|
||||||
|
}
|
||||||
@@ -0,0 +1,402 @@
|
|||||||
|
|
||||||
|
prometheus_template all {
|
||||||
|
|
||||||
|
angie_connections_accepted $p8s_value
|
||||||
|
path=/connections/accepted
|
||||||
|
type=counter
|
||||||
|
'help=The total number of accepted client connections.';
|
||||||
|
|
||||||
|
angie_connections_dropped $p8s_value
|
||||||
|
path=/connections/dropped
|
||||||
|
type=counter
|
||||||
|
'help=The total number of dropped client connections.';
|
||||||
|
|
||||||
|
angie_connections_active $p8s_value
|
||||||
|
path=/connections/active
|
||||||
|
type=gauge
|
||||||
|
'help=The current number of active client connections.';
|
||||||
|
|
||||||
|
angie_connections_idle $p8s_value
|
||||||
|
path=/connections/idle
|
||||||
|
type=gauge
|
||||||
|
'help=The current number of idle client connections.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_slabs_pages_used{zone="$1"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/pages/used$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of currently used memory pages in a slab zone.';
|
||||||
|
|
||||||
|
'angie_slabs_pages_free{zone="$1"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/pages/free$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of currently free memory pages in a slab zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_slabs_pages_slots_used{zone="$1",size="$2"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/slots/([^/]+)/used$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of currently used memory slots of a specific size in a slab zone.';
|
||||||
|
|
||||||
|
'angie_slabs_pages_slots_free{zone="$1",size="$2"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/slots/([^/]+)/free$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of currently free memory slots of a specific size in a slab zone.';
|
||||||
|
|
||||||
|
'angie_slabs_pages_slots_reqs{zone="$1",size="$2"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/slots/([^/]+)/reqs$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of attempts to allocate a memory slot of a specific size in a slab zone.';
|
||||||
|
|
||||||
|
'angie_slabs_pages_slots_fails{zone="$1",size="$2"}' $p8s_value
|
||||||
|
path=~^/slabs/([^/]+)/slots/([^/]+)/fails$
|
||||||
|
type=counter
|
||||||
|
'help=The number of unsuccessful attempts to allocate a memory slot of a specific size in a slab zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_resolvers_queries{zone="$1",type="$2"}' $p8s_value
|
||||||
|
path=~^/resolvers/([^/]+)/queries/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of queries of a specific type to resolve in a resolver zone.';
|
||||||
|
|
||||||
|
'angie_resolvers_sent{zone="$1",type="$2"}' $p8s_value
|
||||||
|
path=~^/resolvers/([^/]+)/sent/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of sent DNS queries of a specific type to resolve in a resolver zone.';
|
||||||
|
|
||||||
|
'angie_resolvers_responses{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/resolvers/([^/]+)/responses/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of resolution results with a specific status in a resolver zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_server_zones_ssl_handshaked{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/ssl/handshaked$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of successful SSL handshakes in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_ssl_reuses{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/ssl/reuses$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of session reuses during SSL handshakes in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_ssl_timedout{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/ssl/timedout$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of timed-out SSL handshakes in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_ssl_failed{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/ssl/failed$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of failed SSL handshakes in an HTTP server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_server_zones_requests_total{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/requests/total$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client requests received in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_requests_processing{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/requests/processing$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of client requests currently being processed in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_requests_discarded{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/requests/discarded$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client requests completed in an HTTP server zone without sending a response.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_server_zones_responses{zone="$1",code="$2"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/responses/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of responses with a specific status in an HTTP server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_server_zones_data_received{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/data/received$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes received from clients in an HTTP server zone.';
|
||||||
|
|
||||||
|
'angie_http_server_zones_data_sent{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/server_zones/([^/]+)/data/sent$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes sent to clients in an HTTP server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_location_zones_requests_total{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/location_zones/([^/]+)/requests/total$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client requests in an HTTP location zone.';
|
||||||
|
|
||||||
|
'angie_http_location_zones_requests_discarded{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/location_zones/([^/]+)/requests/discarded$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client requests completed in an HTTP location zone without sending a response.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_location_zones_responses{zone="$1",code="$2"}' $p8s_value
|
||||||
|
path=~^/http/location_zones/([^/]+)/responses/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of responses with a specific status in an HTTP location zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_location_zones_data_received{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/location_zones/([^/]+)/data/received$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes received from clients in an HTTP location zone.';
|
||||||
|
|
||||||
|
'angie_http_location_zones_data_sent{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/location_zones/([^/]+)/data/sent$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes sent to clients in an HTTP location zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_state{upstream="$1",peer="$2"}' $p8st_all_ups_state
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/state$
|
||||||
|
type=gauge
|
||||||
|
'help=The current state of an upstream peer in "HTTP": 1 - up, 2 - down, 3 - unavailable, 4 - recovering, or 8 - busy.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_selected_current{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/selected/current$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of requests currently being processed by an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_selected_total{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/selected/total$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of attempts to use an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_responses{upstream="$1",peer="$2",code="$3"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/responses/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of responses with a specific status received from an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_data_sent{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/data/sent$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes sent to an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_data_received{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/data/received$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes received from an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_health_fails{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/health/fails$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of unsuccessful attempts to communicate with an upstream peer in "HTTP".';
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_health_unavailable{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/health/unavailable$
|
||||||
|
type=counter
|
||||||
|
'help=The number of times when an upstream peer in "HTTP" became "unavailable" due to reaching the max_fails limit.';
|
||||||
|
|
||||||
|
'angie_http_upstreams_peers_health_downtime{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/peers/([^/]+)/health/downtime$
|
||||||
|
type=counter
|
||||||
|
'help=The total time (in milliseconds) that an upstream peer in "HTTP" was "unavailable".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_upstreams_keepalive{upstream="$1"}' $p8s_value
|
||||||
|
path=~^/http/upstreams/([^/]+)/keepalive$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of currently cached keepalive connections for an HTTP upstream.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_caches_responses{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/([^/]+)/responses$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of responses processed in an HTTP cache zone with a specific cache status.';
|
||||||
|
|
||||||
|
'angie_http_caches_bytes{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/([^/]+)/bytes$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes processed in an HTTP cache zone with a specific cache status.';
|
||||||
|
|
||||||
|
'angie_http_caches_responses_written{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/([^/]+)/responses_written$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of responses written to an HTTP cache zone with a specific cache status.';
|
||||||
|
|
||||||
|
'angie_http_caches_bytes_written{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/([^/]+)/bytes_written$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes written to an HTTP cache zone with a specific cache status.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_caches_size{zone="$1"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/size$
|
||||||
|
type=gauge
|
||||||
|
'help=The current size (in bytes) of cached responses in an HTTP cache zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_caches_shards_size{zone="$1",path="$2"}' $p8s_value
|
||||||
|
path=~^/http/caches/([^/]+)/shards/([^/]+)/size$
|
||||||
|
type=gauge
|
||||||
|
'help=The current size (in bytes) of cached responses in a shard path of an HTTP cache zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_limit_conns{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/limit_conns/([^/]+)/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of requests processed by an HTTP limit_conn zone with a specific result.';
|
||||||
|
|
||||||
|
'angie_http_limit_reqs{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/http/limit_reqs/([^/]+)/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of requests processed by an HTTP limit_reqs zone with a specific result.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_http_acme_clients_state{client="$1"}' $p8st_acme_cert_state
|
||||||
|
path=~^/http/acme_clients/([^/]+)/state$
|
||||||
|
type=gauge
|
||||||
|
'help=The current state of an ACME client: 1 - ready, 2 - requesting, 3 - disabled, or 4 - failed.';
|
||||||
|
|
||||||
|
'angie_http_acme_certs_state{client="$1"}' $p8st_acme_cli_state
|
||||||
|
path=~^/http/acme_clients/([^/]+)/certificate$
|
||||||
|
type=gauge
|
||||||
|
'help=The current state of an ACME client certificate: 1 - valid, 2 - mismatch, 3 - expired, 4 - missing, or 5 - error.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_server_zones_ssl_handshaked{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/ssl/handshaked$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of successful SSL handshakes in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_ssl_reuses{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/ssl/reuses$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of session reuses during SSL handshakes in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_ssl_timedout{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/ssl/timedout$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of timed-out SSL handshakes in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_ssl_failed{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/ssl/failed$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of failed SSL handshakes in a stream server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_server_zones_connections_total{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/connections/total$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client connections received in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_connections_processing{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/connections/processing$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of client connections currently being processed in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_connections_discarded{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/connections/discarded$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client connections completed in a stream server zone without establishing a session.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_connections_passed{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/connections/passed$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of client connections in a stream server zone passed for handling to a different listening socket.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_server_zones_sessions{zone="$1",status="$2"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/sessions/([^/]+)$
|
||||||
|
type=counter
|
||||||
|
'help=The number of sessions finished with a specific status in a stream server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_server_zones_data_received{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/data/received$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes received from clients in a stream server zone.';
|
||||||
|
|
||||||
|
'angie_stream_server_zones_data_sent{zone="$1"}' $p8s_value
|
||||||
|
path=~^/stream/server_zones/([^/]+)/data/sent$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes sent to clients in a stream server zone.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_state{upstream="$1",peer="$2"}' $p8st_all_ups_state
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/state$
|
||||||
|
type=gauge
|
||||||
|
'help=The current state of an upstream peer in "stream": 1 - up, 2 - down, 3 - unavailable, 4 - recovering, or 8 - busy.';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_selected_current{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/selected/current$
|
||||||
|
type=gauge
|
||||||
|
'help=The number of sessions currently being processed by an upstream peer in "stream".';
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_selected_total{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/selected/total$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of attempts to use an upstream peer in "stream".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_data_sent{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/data/sent$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes sent to an upstream peer in "stream".';
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_data_received{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/data/received$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of bytes received from an upstream peer in "stream".';
|
||||||
|
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_health_fails{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/health/fails$
|
||||||
|
type=counter
|
||||||
|
'help=The total number of unsuccessful attempts to communicate with an upstream peer in "stream".';
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_health_unavailable{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/health/unavailable$
|
||||||
|
type=counter
|
||||||
|
'help=The number of times when an upstream peer in "stream" became "unavailable" due to reaching the max_fails limit.';
|
||||||
|
|
||||||
|
'angie_stream_upstreams_peers_health_downtime{upstream="$1",peer="$2"}' $p8s_value
|
||||||
|
path=~^/stream/upstreams/([^/]+)/peers/([^/]+)/health/downtime$
|
||||||
|
type=counter
|
||||||
|
'help=The total time (in milliseconds) that an upstream peer in "stream" was "unavailable".';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
map $p8s_value $p8st_all_ups_state {
|
||||||
|
volatile;
|
||||||
|
"up" 1;
|
||||||
|
"down" 2;
|
||||||
|
"unavailable" 3;
|
||||||
|
"recovering" 4;
|
||||||
|
# "unhealthy" 5;
|
||||||
|
# "checking" 6;
|
||||||
|
# "draining" 7;
|
||||||
|
"busy" 8;
|
||||||
|
default 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
map $p8s_value $p8st_acme_cli_state {
|
||||||
|
volatile;
|
||||||
|
"ready" 1;
|
||||||
|
"requesting" 2;
|
||||||
|
"disabled" 3;
|
||||||
|
"failed" 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
map $p8s_value $p8st_acme_cert_state {
|
||||||
|
volatile;
|
||||||
|
"valid" 1;
|
||||||
|
"mismatch" 2;
|
||||||
|
"expired" 3;
|
||||||
|
"missing" 4;
|
||||||
|
"error" 5;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
scgi_param REQUEST_METHOD $upstream_request_method;
|
||||||
|
scgi_param REQUEST_URI $request_uri;
|
||||||
|
scgi_param QUERY_STRING $query_string;
|
||||||
|
scgi_param CONTENT_TYPE $content_type;
|
||||||
|
|
||||||
|
scgi_param DOCUMENT_URI $document_uri;
|
||||||
|
scgi_param DOCUMENT_ROOT $document_root;
|
||||||
|
scgi_param SCGI 1;
|
||||||
|
scgi_param SERVER_PROTOCOL $server_protocol;
|
||||||
|
scgi_param REQUEST_SCHEME $scheme;
|
||||||
|
scgi_param HTTPS $https if_not_empty;
|
||||||
|
|
||||||
|
scgi_param REMOTE_ADDR $remote_addr;
|
||||||
|
scgi_param REMOTE_PORT $remote_port;
|
||||||
|
scgi_param SERVER_PORT $server_port;
|
||||||
|
scgi_param SERVER_NAME $server_name;
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
uwsgi_param QUERY_STRING $query_string;
|
||||||
|
uwsgi_param REQUEST_METHOD $upstream_request_method;
|
||||||
|
uwsgi_param CONTENT_TYPE $content_type;
|
||||||
|
uwsgi_param CONTENT_LENGTH $content_length;
|
||||||
|
|
||||||
|
uwsgi_param REQUEST_URI $request_uri;
|
||||||
|
uwsgi_param PATH_INFO $document_uri;
|
||||||
|
uwsgi_param DOCUMENT_ROOT $document_root;
|
||||||
|
uwsgi_param SERVER_PROTOCOL $server_protocol;
|
||||||
|
uwsgi_param REQUEST_SCHEME $scheme;
|
||||||
|
uwsgi_param HTTPS $https if_not_empty;
|
||||||
|
|
||||||
|
uwsgi_param REMOTE_ADDR $remote_addr;
|
||||||
|
uwsgi_param REMOTE_PORT $remote_port;
|
||||||
|
uwsgi_param SERVER_PORT $server_port;
|
||||||
|
uwsgi_param SERVER_NAME $server_name;
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
|
||||||
|
# This map is not a full windows-1251 <> utf8 map: it does not
|
||||||
|
# contain Serbian and Macedonian letters. If you need a full map,
|
||||||
|
# use contrib/unicode2nginx/win-utf map instead.
|
||||||
|
|
||||||
|
charset_map windows-1251 utf-8 {
|
||||||
|
|
||||||
|
82 E2809A ; # single low-9 quotation mark
|
||||||
|
|
||||||
|
84 E2809E ; # double low-9 quotation mark
|
||||||
|
85 E280A6 ; # ellipsis
|
||||||
|
86 E280A0 ; # dagger
|
||||||
|
87 E280A1 ; # double dagger
|
||||||
|
88 E282AC ; # euro
|
||||||
|
89 E280B0 ; # per mille
|
||||||
|
|
||||||
|
91 E28098 ; # left single quotation mark
|
||||||
|
92 E28099 ; # right single quotation mark
|
||||||
|
93 E2809C ; # left double quotation mark
|
||||||
|
94 E2809D ; # right double quotation mark
|
||||||
|
95 E280A2 ; # bullet
|
||||||
|
96 E28093 ; # en dash
|
||||||
|
97 E28094 ; # em dash
|
||||||
|
|
||||||
|
99 E284A2 ; # trade mark sign
|
||||||
|
|
||||||
|
A0 C2A0 ; #
|
||||||
|
A1 D18E ; # capital Byelorussian short U
|
||||||
|
A2 D19E ; # small Byelorussian short u
|
||||||
|
|
||||||
|
A4 C2A4 ; # currency sign
|
||||||
|
A5 D290 ; # capital Ukrainian soft G
|
||||||
|
A6 C2A6 ; # borken bar
|
||||||
|
A7 C2A7 ; # section sign
|
||||||
|
A8 D081 ; # capital YO
|
||||||
|
A9 C2A9 ; # (C)
|
||||||
|
AA D084 ; # capital Ukrainian YE
|
||||||
|
AB C2AB ; # left-pointing double angle quotation mark
|
||||||
|
AC C2AC ; # not sign
|
||||||
|
AD C2AD ; # soft hyphen
|
||||||
|
AE C2AE ; # (R)
|
||||||
|
AF D087 ; # capital Ukrainian YI
|
||||||
|
|
||||||
|
B0 C2B0 ; # °
|
||||||
|
B1 C2B1 ; # plus-minus sign
|
||||||
|
B2 D086 ; # capital Ukrainian I
|
||||||
|
B3 D196 ; # small Ukrainian i
|
||||||
|
B4 D291 ; # small Ukrainian soft g
|
||||||
|
B5 C2B5 ; # micro sign
|
||||||
|
B6 C2B6 ; # pilcrow sign
|
||||||
|
B7 C2B7 ; # ·
|
||||||
|
B8 D191 ; # small yo
|
||||||
|
B9 E28496 ; # numero sign
|
||||||
|
BA D194 ; # small Ukrainian ye
|
||||||
|
BB C2BB ; # right-pointing double angle quotation mark
|
||||||
|
|
||||||
|
BF D197 ; # small Ukrainian yi
|
||||||
|
|
||||||
|
C0 D090 ; # capital A
|
||||||
|
C1 D091 ; # capital B
|
||||||
|
C2 D092 ; # capital V
|
||||||
|
C3 D093 ; # capital G
|
||||||
|
C4 D094 ; # capital D
|
||||||
|
C5 D095 ; # capital YE
|
||||||
|
C6 D096 ; # capital ZH
|
||||||
|
C7 D097 ; # capital Z
|
||||||
|
C8 D098 ; # capital I
|
||||||
|
C9 D099 ; # capital J
|
||||||
|
CA D09A ; # capital K
|
||||||
|
CB D09B ; # capital L
|
||||||
|
CC D09C ; # capital M
|
||||||
|
CD D09D ; # capital N
|
||||||
|
CE D09E ; # capital O
|
||||||
|
CF D09F ; # capital P
|
||||||
|
|
||||||
|
D0 D0A0 ; # capital R
|
||||||
|
D1 D0A1 ; # capital S
|
||||||
|
D2 D0A2 ; # capital T
|
||||||
|
D3 D0A3 ; # capital U
|
||||||
|
D4 D0A4 ; # capital F
|
||||||
|
D5 D0A5 ; # capital KH
|
||||||
|
D6 D0A6 ; # capital TS
|
||||||
|
D7 D0A7 ; # capital CH
|
||||||
|
D8 D0A8 ; # capital SH
|
||||||
|
D9 D0A9 ; # capital SHCH
|
||||||
|
DA D0AA ; # capital hard sign
|
||||||
|
DB D0AB ; # capital Y
|
||||||
|
DC D0AC ; # capital soft sign
|
||||||
|
DD D0AD ; # capital E
|
||||||
|
DE D0AE ; # capital YU
|
||||||
|
DF D0AF ; # capital YA
|
||||||
|
|
||||||
|
E0 D0B0 ; # small a
|
||||||
|
E1 D0B1 ; # small b
|
||||||
|
E2 D0B2 ; # small v
|
||||||
|
E3 D0B3 ; # small g
|
||||||
|
E4 D0B4 ; # small d
|
||||||
|
E5 D0B5 ; # small ye
|
||||||
|
E6 D0B6 ; # small zh
|
||||||
|
E7 D0B7 ; # small z
|
||||||
|
E8 D0B8 ; # small i
|
||||||
|
E9 D0B9 ; # small j
|
||||||
|
EA D0BA ; # small k
|
||||||
|
EB D0BB ; # small l
|
||||||
|
EC D0BC ; # small m
|
||||||
|
ED D0BD ; # small n
|
||||||
|
EE D0BE ; # small o
|
||||||
|
EF D0BF ; # small p
|
||||||
|
|
||||||
|
F0 D180 ; # small r
|
||||||
|
F1 D181 ; # small s
|
||||||
|
F2 D182 ; # small t
|
||||||
|
F3 D183 ; # small u
|
||||||
|
F4 D184 ; # small f
|
||||||
|
F5 D185 ; # small kh
|
||||||
|
F6 D186 ; # small ts
|
||||||
|
F7 D187 ; # small ch
|
||||||
|
F8 D188 ; # small sh
|
||||||
|
F9 D189 ; # small shch
|
||||||
|
FA D18A ; # small hard sign
|
||||||
|
FB D18B ; # small y
|
||||||
|
FC D18C ; # small soft sign
|
||||||
|
FD D18D ; # small e
|
||||||
|
FE D18E ; # small yu
|
||||||
|
FF D18F ; # small ya
|
||||||
|
}
|
||||||
+114
@@ -0,0 +1,114 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2024 Web Server LLC
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
LC_ALL=C
|
||||||
|
export LC_ALL
|
||||||
|
|
||||||
|
. auto/options
|
||||||
|
. auto/init
|
||||||
|
. auto/utils
|
||||||
|
. auto/cache
|
||||||
|
. auto/sources
|
||||||
|
|
||||||
|
test -d $NGX_OBJS || mkdir -p $NGX_OBJS
|
||||||
|
|
||||||
|
echo > $NGX_AUTO_HEADERS_H
|
||||||
|
echo > $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
|
||||||
|
if [ $NGX_DEBUG = YES ]; then
|
||||||
|
have=NGX_DEBUG . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test -z "$NGX_PLATFORM"; then
|
||||||
|
. auto/platform
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "building for $NGX_PLATFORM"
|
||||||
|
NGX_SYSTEM=$NGX_PLATFORM
|
||||||
|
NGX_MACHINE=i386
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/cc/conf
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
. auto/headers
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/os/conf
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
. auto/unix
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/threads
|
||||||
|
. auto/modules
|
||||||
|
. auto/lib/conf
|
||||||
|
|
||||||
|
case ".$NGX_PREFIX" in
|
||||||
|
.)
|
||||||
|
NGX_PREFIX=${NGX_PREFIX:-/usr/local/angie}
|
||||||
|
have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
|
||||||
|
;;
|
||||||
|
|
||||||
|
.!)
|
||||||
|
NGX_PREFIX=
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ ".$NGX_CONF_PREFIX" != "." ]; then
|
||||||
|
have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define
|
||||||
|
fi
|
||||||
|
|
||||||
|
have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define
|
||||||
|
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
|
||||||
|
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
|
||||||
|
have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
|
||||||
|
have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define
|
||||||
|
|
||||||
|
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_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
|
||||||
|
. auto/define
|
||||||
|
have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\""
|
||||||
|
. auto/define
|
||||||
|
have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\""
|
||||||
|
. auto/define
|
||||||
|
have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\""
|
||||||
|
. auto/define
|
||||||
|
have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\""
|
||||||
|
. auto/define
|
||||||
|
have=NGX_HTTP_ACME_CLIENT_PATH value="\"$NGX_HTTP_ACME_CLIENT_PATH\""
|
||||||
|
. auto/define
|
||||||
|
|
||||||
|
. auto/make
|
||||||
|
. auto/lib/make
|
||||||
|
. auto/install
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
. auto/stubs
|
||||||
|
|
||||||
|
have=NGX_USER value="\"$NGX_USER\"" . auto/define
|
||||||
|
have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define
|
||||||
|
|
||||||
|
if [ ".$NGX_BUILD" != "." ]; then
|
||||||
|
have=NGX_BUILD value="\"$NGX_BUILD\"" . auto/define
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/build_info
|
||||||
|
|
||||||
|
. auto/summary
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
geo2nginx.pl by Andrei Nigmatulin
|
||||||
|
|
||||||
|
The perl script to convert CSV geoip database ( free download
|
||||||
|
at http://www.maxmind.com/app/geoip_country ) to format, suitable
|
||||||
|
for use by the ngx_http_geo_module.
|
||||||
|
|
||||||
|
|
||||||
|
unicode2nginx by Maxim Dounin
|
||||||
|
|
||||||
|
The perl script to convert unicode mappings ( available
|
||||||
|
at http://www.unicode.org/Public/MAPPINGS/ ) to the Angie
|
||||||
|
configuration file format.
|
||||||
|
Two generated full maps for windows-1251 and koi8-r.
|
||||||
|
|
||||||
|
|
||||||
|
vim by Evan Miller
|
||||||
|
|
||||||
|
Syntax highlighting of Angie configuration for vim, to be
|
||||||
|
placed into ~/.vim/.
|
||||||
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# (c) Andrei Nigmatulin, 2005
|
||||||
|
#
|
||||||
|
# this script provided "as is", without any warranties. use it at your own risk.
|
||||||
|
#
|
||||||
|
# special thanx to Andrew Sitnikov for perl port
|
||||||
|
#
|
||||||
|
# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country)
|
||||||
|
# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx)
|
||||||
|
#
|
||||||
|
# for example, line with ip range
|
||||||
|
#
|
||||||
|
# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation"
|
||||||
|
#
|
||||||
|
# will be converted to four subnetworks:
|
||||||
|
#
|
||||||
|
# 62.16.68.0/22 RU;
|
||||||
|
# 62.16.72.0/21 RU;
|
||||||
|
# 62.16.80.0/20 RU;
|
||||||
|
# 62.16.96.0/19 RU;
|
||||||
|
|
||||||
|
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
while( <STDIN> ){
|
||||||
|
if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){
|
||||||
|
print_subnets($1, $2, $3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_subnets {
|
||||||
|
my ($a1, $a2, $c) = @_;
|
||||||
|
my $l;
|
||||||
|
while ($a1 <= $a2) {
|
||||||
|
for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){};
|
||||||
|
print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n";
|
||||||
|
$a1 += (1 << $l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub long2ip {
|
||||||
|
my $ip = shift;
|
||||||
|
|
||||||
|
my $str = 0;
|
||||||
|
|
||||||
|
$str = ($ip & 255);
|
||||||
|
|
||||||
|
$ip >>= 8;
|
||||||
|
$str = ($ip & 255).".$str";
|
||||||
|
|
||||||
|
$ip >>= 8;
|
||||||
|
$str = ($ip & 255).".$str";
|
||||||
|
|
||||||
|
$ip >>= 8;
|
||||||
|
$str = ($ip & 255).".$str";
|
||||||
|
}
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
charset_map koi8-r utf-8 {
|
||||||
|
|
||||||
|
80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL
|
||||||
|
81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL
|
||||||
|
82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||||
|
83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||||
|
84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||||
|
85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT
|
||||||
|
86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||||
|
87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||||
|
88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||||
|
89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||||
|
8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||||
|
8B E29680 ; # UPPER HALF BLOCK
|
||||||
|
8C E29684 ; # LOWER HALF BLOCK
|
||||||
|
8D E29688 ; # FULL BLOCK
|
||||||
|
8E E2968C ; # LEFT HALF BLOCK
|
||||||
|
8F E29690 ; # RIGHT HALF BLOCK
|
||||||
|
90 E29691 ; # LIGHT SHADE
|
||||||
|
91 E29692 ; # MEDIUM SHADE
|
||||||
|
92 E29693 ; # DARK SHADE
|
||||||
|
93 E28CA0 ; # TOP HALF INTEGRAL
|
||||||
|
94 E296A0 ; # BLACK SQUARE
|
||||||
|
95 E28899 ; # BULLET OPERATOR
|
||||||
|
96 E2889A ; # SQUARE ROOT
|
||||||
|
97 E28988 ; # ALMOST EQUAL TO
|
||||||
|
98 E289A4 ; # LESS-THAN OR EQUAL TO
|
||||||
|
99 E289A5 ; # GREATER-THAN OR EQUAL TO
|
||||||
|
9A C2A0 ; # NO-BREAK SPACE
|
||||||
|
9B E28CA1 ; # BOTTOM HALF INTEGRAL
|
||||||
|
9C C2B0 ; # DEGREE SIGN
|
||||||
|
9D C2B2 ; # SUPERSCRIPT TWO
|
||||||
|
9E C2B7 ; # MIDDLE DOT
|
||||||
|
9F C3B7 ; # DIVISION SIGN
|
||||||
|
A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||||
|
A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL
|
||||||
|
A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||||
|
A3 D191 ; # CYRILLIC SMALL LETTER IO
|
||||||
|
A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||||
|
A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||||
|
A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||||
|
A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||||
|
A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||||
|
A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||||
|
AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||||
|
AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||||
|
AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||||
|
AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||||
|
AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||||
|
AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||||
|
B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||||
|
B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||||
|
B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||||
|
B3 D081 ; # CYRILLIC CAPITAL LETTER IO
|
||||||
|
B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||||
|
B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||||
|
B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||||
|
B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||||
|
B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||||
|
B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||||
|
BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||||
|
BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||||
|
BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||||
|
BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||||
|
BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||||
|
BF C2A9 ; # COPYRIGHT SIGN
|
||||||
|
C0 D18E ; # CYRILLIC SMALL LETTER YU
|
||||||
|
C1 D0B0 ; # CYRILLIC SMALL LETTER A
|
||||||
|
C2 D0B1 ; # CYRILLIC SMALL LETTER BE
|
||||||
|
C3 D186 ; # CYRILLIC SMALL LETTER TSE
|
||||||
|
C4 D0B4 ; # CYRILLIC SMALL LETTER DE
|
||||||
|
C5 D0B5 ; # CYRILLIC SMALL LETTER IE
|
||||||
|
C6 D184 ; # CYRILLIC SMALL LETTER EF
|
||||||
|
C7 D0B3 ; # CYRILLIC SMALL LETTER GHE
|
||||||
|
C8 D185 ; # CYRILLIC SMALL LETTER HA
|
||||||
|
C9 D0B8 ; # CYRILLIC SMALL LETTER I
|
||||||
|
CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I
|
||||||
|
CB D0BA ; # CYRILLIC SMALL LETTER KA
|
||||||
|
CC D0BB ; # CYRILLIC SMALL LETTER EL
|
||||||
|
CD D0BC ; # CYRILLIC SMALL LETTER EM
|
||||||
|
CE D0BD ; # CYRILLIC SMALL LETTER EN
|
||||||
|
CF D0BE ; # CYRILLIC SMALL LETTER O
|
||||||
|
D0 D0BF ; # CYRILLIC SMALL LETTER PE
|
||||||
|
D1 D18F ; # CYRILLIC SMALL LETTER YA
|
||||||
|
D2 D180 ; # CYRILLIC SMALL LETTER ER
|
||||||
|
D3 D181 ; # CYRILLIC SMALL LETTER ES
|
||||||
|
D4 D182 ; # CYRILLIC SMALL LETTER TE
|
||||||
|
D5 D183 ; # CYRILLIC SMALL LETTER U
|
||||||
|
D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE
|
||||||
|
D7 D0B2 ; # CYRILLIC SMALL LETTER VE
|
||||||
|
D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN
|
||||||
|
D9 D18B ; # CYRILLIC SMALL LETTER YERU
|
||||||
|
DA D0B7 ; # CYRILLIC SMALL LETTER ZE
|
||||||
|
DB D188 ; # CYRILLIC SMALL LETTER SHA
|
||||||
|
DC D18D ; # CYRILLIC SMALL LETTER E
|
||||||
|
DD D189 ; # CYRILLIC SMALL LETTER SHCHA
|
||||||
|
DE D187 ; # CYRILLIC SMALL LETTER CHE
|
||||||
|
DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN
|
||||||
|
E0 D0AE ; # CYRILLIC CAPITAL LETTER YU
|
||||||
|
E1 D090 ; # CYRILLIC CAPITAL LETTER A
|
||||||
|
E2 D091 ; # CYRILLIC CAPITAL LETTER BE
|
||||||
|
E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE
|
||||||
|
E4 D094 ; # CYRILLIC CAPITAL LETTER DE
|
||||||
|
E5 D095 ; # CYRILLIC CAPITAL LETTER IE
|
||||||
|
E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF
|
||||||
|
E7 D093 ; # CYRILLIC CAPITAL LETTER GHE
|
||||||
|
E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA
|
||||||
|
E9 D098 ; # CYRILLIC CAPITAL LETTER I
|
||||||
|
EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I
|
||||||
|
EB D09A ; # CYRILLIC CAPITAL LETTER KA
|
||||||
|
EC D09B ; # CYRILLIC CAPITAL LETTER EL
|
||||||
|
ED D09C ; # CYRILLIC CAPITAL LETTER EM
|
||||||
|
EE D09D ; # CYRILLIC CAPITAL LETTER EN
|
||||||
|
EF D09E ; # CYRILLIC CAPITAL LETTER O
|
||||||
|
F0 D09F ; # CYRILLIC CAPITAL LETTER PE
|
||||||
|
F1 D0AF ; # CYRILLIC CAPITAL LETTER YA
|
||||||
|
F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER
|
||||||
|
F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES
|
||||||
|
F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE
|
||||||
|
F5 D0A3 ; # CYRILLIC CAPITAL LETTER U
|
||||||
|
F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE
|
||||||
|
F7 D092 ; # CYRILLIC CAPITAL LETTER VE
|
||||||
|
F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||||
|
F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU
|
||||||
|
FA D097 ; # CYRILLIC CAPITAL LETTER ZE
|
||||||
|
FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA
|
||||||
|
FC D0AD ; # CYRILLIC CAPITAL LETTER E
|
||||||
|
FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA
|
||||||
|
FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE
|
||||||
|
FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# Convert unicode mappings to Angie configuration file format.
|
||||||
|
|
||||||
|
# You may find useful mappings in various places, including
|
||||||
|
# unicode.org official site:
|
||||||
|
#
|
||||||
|
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
|
||||||
|
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
|
||||||
|
|
||||||
|
# Needs perl 5.6 or later.
|
||||||
|
|
||||||
|
# Written by Maxim Dounin, mdounin@mdounin.ru
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
require 5.006;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
# Skip comments and empty lines
|
||||||
|
|
||||||
|
next if /^#/;
|
||||||
|
next if /^\s*$/;
|
||||||
|
chomp;
|
||||||
|
|
||||||
|
# Convert mappings
|
||||||
|
|
||||||
|
if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) {
|
||||||
|
# Mapping <from-code> <unicode-code> "#" <unicode-name>
|
||||||
|
my $cs_code = $1;
|
||||||
|
my $un_code = $2;
|
||||||
|
my $un_name = $3;
|
||||||
|
|
||||||
|
# Produce UTF-8 sequence from character code;
|
||||||
|
|
||||||
|
my $un_utf8 = join('',
|
||||||
|
map { sprintf("%02X", $_) }
|
||||||
|
unpack("U0C*", pack("U", hex($un_code)))
|
||||||
|
);
|
||||||
|
|
||||||
|
print " $cs_code $un_utf8 ; $un_name\n";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
warn "Unrecognized line: '$_'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
@@ -0,0 +1,130 @@
|
|||||||
|
charset_map windows-1251 utf-8 {
|
||||||
|
|
||||||
|
80 D082 ; #CYRILLIC CAPITAL LETTER DJE
|
||||||
|
81 D083 ; #CYRILLIC CAPITAL LETTER GJE
|
||||||
|
82 E2809A ; #SINGLE LOW-9 QUOTATION MARK
|
||||||
|
83 D193 ; #CYRILLIC SMALL LETTER GJE
|
||||||
|
84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
85 E280A6 ; #HORIZONTAL ELLIPSIS
|
||||||
|
86 E280A0 ; #DAGGER
|
||||||
|
87 E280A1 ; #DOUBLE DAGGER
|
||||||
|
88 E282AC ; #EURO SIGN
|
||||||
|
89 E280B0 ; #PER MILLE SIGN
|
||||||
|
8A D089 ; #CYRILLIC CAPITAL LETTER LJE
|
||||||
|
8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
8C D08A ; #CYRILLIC CAPITAL LETTER NJE
|
||||||
|
8D D08C ; #CYRILLIC CAPITAL LETTER KJE
|
||||||
|
8E D08B ; #CYRILLIC CAPITAL LETTER TSHE
|
||||||
|
8F D08F ; #CYRILLIC CAPITAL LETTER DZHE
|
||||||
|
90 D192 ; #CYRILLIC SMALL LETTER DJE
|
||||||
|
91 E28098 ; #LEFT SINGLE QUOTATION MARK
|
||||||
|
92 E28099 ; #RIGHT SINGLE QUOTATION MARK
|
||||||
|
93 E2809C ; #LEFT DOUBLE QUOTATION MARK
|
||||||
|
94 E2809D ; #RIGHT DOUBLE QUOTATION MARK
|
||||||
|
95 E280A2 ; #BULLET
|
||||||
|
96 E28093 ; #EN DASH
|
||||||
|
97 E28094 ; #EM DASH
|
||||||
|
99 E284A2 ; #TRADE MARK SIGN
|
||||||
|
9A D199 ; #CYRILLIC SMALL LETTER LJE
|
||||||
|
9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
9C D19A ; #CYRILLIC SMALL LETTER NJE
|
||||||
|
9D D19C ; #CYRILLIC SMALL LETTER KJE
|
||||||
|
9E D19B ; #CYRILLIC SMALL LETTER TSHE
|
||||||
|
9F D19F ; #CYRILLIC SMALL LETTER DZHE
|
||||||
|
A0 C2A0 ; #NO-BREAK SPACE
|
||||||
|
A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U
|
||||||
|
A2 D19E ; #CYRILLIC SMALL LETTER SHORT U
|
||||||
|
A3 D088 ; #CYRILLIC CAPITAL LETTER JE
|
||||||
|
A4 C2A4 ; #CURRENCY SIGN
|
||||||
|
A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||||
|
A6 C2A6 ; #BROKEN BAR
|
||||||
|
A7 C2A7 ; #SECTION SIGN
|
||||||
|
A8 D081 ; #CYRILLIC CAPITAL LETTER IO
|
||||||
|
A9 C2A9 ; #COPYRIGHT SIGN
|
||||||
|
AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||||
|
AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
AC C2AC ; #NOT SIGN
|
||||||
|
AD C2AD ; #SOFT HYPHEN
|
||||||
|
AE C2AE ; #REGISTERED SIGN
|
||||||
|
AF D087 ; #CYRILLIC CAPITAL LETTER YI
|
||||||
|
B0 C2B0 ; #DEGREE SIGN
|
||||||
|
B1 C2B1 ; #PLUS-MINUS SIGN
|
||||||
|
B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||||
|
B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||||
|
B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||||
|
B5 C2B5 ; #MICRO SIGN
|
||||||
|
B6 C2B6 ; #PILCROW SIGN
|
||||||
|
B7 C2B7 ; #MIDDLE DOT
|
||||||
|
B8 D191 ; #CYRILLIC SMALL LETTER IO
|
||||||
|
B9 E28496 ; #NUMERO SIGN
|
||||||
|
BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||||
|
BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
BC D198 ; #CYRILLIC SMALL LETTER JE
|
||||||
|
BD D085 ; #CYRILLIC CAPITAL LETTER DZE
|
||||||
|
BE D195 ; #CYRILLIC SMALL LETTER DZE
|
||||||
|
BF D197 ; #CYRILLIC SMALL LETTER YI
|
||||||
|
C0 D090 ; #CYRILLIC CAPITAL LETTER A
|
||||||
|
C1 D091 ; #CYRILLIC CAPITAL LETTER BE
|
||||||
|
C2 D092 ; #CYRILLIC CAPITAL LETTER VE
|
||||||
|
C3 D093 ; #CYRILLIC CAPITAL LETTER GHE
|
||||||
|
C4 D094 ; #CYRILLIC CAPITAL LETTER DE
|
||||||
|
C5 D095 ; #CYRILLIC CAPITAL LETTER IE
|
||||||
|
C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE
|
||||||
|
C7 D097 ; #CYRILLIC CAPITAL LETTER ZE
|
||||||
|
C8 D098 ; #CYRILLIC CAPITAL LETTER I
|
||||||
|
C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I
|
||||||
|
CA D09A ; #CYRILLIC CAPITAL LETTER KA
|
||||||
|
CB D09B ; #CYRILLIC CAPITAL LETTER EL
|
||||||
|
CC D09C ; #CYRILLIC CAPITAL LETTER EM
|
||||||
|
CD D09D ; #CYRILLIC CAPITAL LETTER EN
|
||||||
|
CE D09E ; #CYRILLIC CAPITAL LETTER O
|
||||||
|
CF D09F ; #CYRILLIC CAPITAL LETTER PE
|
||||||
|
D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER
|
||||||
|
D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES
|
||||||
|
D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE
|
||||||
|
D3 D0A3 ; #CYRILLIC CAPITAL LETTER U
|
||||||
|
D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF
|
||||||
|
D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA
|
||||||
|
D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE
|
||||||
|
D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE
|
||||||
|
D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA
|
||||||
|
D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA
|
||||||
|
DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||||
|
DB D0AB ; #CYRILLIC CAPITAL LETTER YERU
|
||||||
|
DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||||
|
DD D0AD ; #CYRILLIC CAPITAL LETTER E
|
||||||
|
DE D0AE ; #CYRILLIC CAPITAL LETTER YU
|
||||||
|
DF D0AF ; #CYRILLIC CAPITAL LETTER YA
|
||||||
|
E0 D0B0 ; #CYRILLIC SMALL LETTER A
|
||||||
|
E1 D0B1 ; #CYRILLIC SMALL LETTER BE
|
||||||
|
E2 D0B2 ; #CYRILLIC SMALL LETTER VE
|
||||||
|
E3 D0B3 ; #CYRILLIC SMALL LETTER GHE
|
||||||
|
E4 D0B4 ; #CYRILLIC SMALL LETTER DE
|
||||||
|
E5 D0B5 ; #CYRILLIC SMALL LETTER IE
|
||||||
|
E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE
|
||||||
|
E7 D0B7 ; #CYRILLIC SMALL LETTER ZE
|
||||||
|
E8 D0B8 ; #CYRILLIC SMALL LETTER I
|
||||||
|
E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I
|
||||||
|
EA D0BA ; #CYRILLIC SMALL LETTER KA
|
||||||
|
EB D0BB ; #CYRILLIC SMALL LETTER EL
|
||||||
|
EC D0BC ; #CYRILLIC SMALL LETTER EM
|
||||||
|
ED D0BD ; #CYRILLIC SMALL LETTER EN
|
||||||
|
EE D0BE ; #CYRILLIC SMALL LETTER O
|
||||||
|
EF D0BF ; #CYRILLIC SMALL LETTER PE
|
||||||
|
F0 D180 ; #CYRILLIC SMALL LETTER ER
|
||||||
|
F1 D181 ; #CYRILLIC SMALL LETTER ES
|
||||||
|
F2 D182 ; #CYRILLIC SMALL LETTER TE
|
||||||
|
F3 D183 ; #CYRILLIC SMALL LETTER U
|
||||||
|
F4 D184 ; #CYRILLIC SMALL LETTER EF
|
||||||
|
F5 D185 ; #CYRILLIC SMALL LETTER HA
|
||||||
|
F6 D186 ; #CYRILLIC SMALL LETTER TSE
|
||||||
|
F7 D187 ; #CYRILLIC SMALL LETTER CHE
|
||||||
|
F8 D188 ; #CYRILLIC SMALL LETTER SHA
|
||||||
|
F9 D189 ; #CYRILLIC SMALL LETTER SHCHA
|
||||||
|
FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN
|
||||||
|
FB D18B ; #CYRILLIC SMALL LETTER YERU
|
||||||
|
FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN
|
||||||
|
FD D18D ; #CYRILLIC SMALL LETTER E
|
||||||
|
FE D18E ; #CYRILLIC SMALL LETTER YU
|
||||||
|
FF D18F ; #CYRILLIC SMALL LETTER YA
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user