xref: /f-stack/app/nginx-1.16.1/auto/modules (revision 3da8d17d)
1
2# Copyright (C) Igor Sysoev
3# Copyright (C) Nginx, Inc.
4
5
6if [ $EVENT_SELECT = NO -a $EVENT_FOUND = NO ]; then
7    EVENT_SELECT=YES
8fi
9
10if [ $EVENT_SELECT = YES ]; then
11    have=NGX_HAVE_SELECT . auto/have
12    CORE_SRCS="$CORE_SRCS $SELECT_SRCS"
13    EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE"
14fi
15
16
17if [ $EVENT_POLL = NO -a $EVENT_FOUND = NO ]; then
18    EVENT_POLL=YES
19fi
20
21if [ $EVENT_POLL = YES ]; then
22    have=NGX_HAVE_POLL . auto/have
23    CORE_SRCS="$CORE_SRCS $POLL_SRCS"
24    EVENT_MODULES="$EVENT_MODULES $POLL_MODULE"
25fi
26
27
28if [ $NGX_TEST_BUILD_DEVPOLL = YES ]; then
29    have=NGX_HAVE_DEVPOLL . auto/have
30    have=NGX_TEST_BUILD_DEVPOLL . auto/have
31    EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE"
32    CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS"
33fi
34
35
36if [ $NGX_TEST_BUILD_EVENTPORT = YES ]; then
37    have=NGX_HAVE_EVENTPORT . auto/have
38    have=NGX_TEST_BUILD_EVENTPORT . auto/have
39    EVENT_MODULES="$EVENT_MODULES $EVENTPORT_MODULE"
40    CORE_SRCS="$CORE_SRCS $EVENTPORT_SRCS"
41fi
42
43if [ $NGX_TEST_BUILD_EPOLL = YES ]; then
44    have=NGX_HAVE_EPOLL . auto/have
45    have=NGX_HAVE_EPOLLRDHUP . auto/have
46    have=NGX_HAVE_EPOLLEXCLUSIVE . auto/have
47    have=NGX_HAVE_EVENTFD . auto/have
48    have=NGX_TEST_BUILD_EPOLL . auto/have
49    EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
50    CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
51fi
52
53if [ $NGX_TEST_BUILD_SOLARIS_SENDFILEV = YES ]; then
54    have=NGX_TEST_BUILD_SOLARIS_SENDFILEV . auto/have
55    CORE_SRCS="$CORE_SRCS $SOLARIS_SENDFILEV_SRCS"
56fi
57
58if [ $USE_FSTACK = YES ]; then
59    have=NGX_HAVE_FSTACK . auto/have
60    have=NGX_HAVE_FSTACK . auto/have_headers
61    have=SOCK_FSTACK value=0x1000 . auto/define
62    CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
63    EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
64fi
65
66
67if [ $HTTP = YES ]; then
68    HTTP_MODULES=
69    HTTP_DEPS=
70    HTTP_INCS=
71
72    ngx_module_type=HTTP
73
74    if :; then
75        ngx_module_name="ngx_http_module \
76                         ngx_http_core_module \
77                         ngx_http_log_module \
78                         ngx_http_upstream_module"
79        ngx_module_incs="src/http src/http/modules"
80        ngx_module_deps="src/http/ngx_http.h \
81                         src/http/ngx_http_request.h \
82                         src/http/ngx_http_config.h \
83                         src/http/ngx_http_core_module.h \
84                         src/http/ngx_http_cache.h \
85                         src/http/ngx_http_variables.h \
86                         src/http/ngx_http_script.h \
87                         src/http/ngx_http_upstream.h \
88                         src/http/ngx_http_upstream_round_robin.h"
89        ngx_module_srcs="src/http/ngx_http.c \
90                         src/http/ngx_http_core_module.c \
91                         src/http/ngx_http_special_response.c \
92                         src/http/ngx_http_request.c \
93                         src/http/ngx_http_parse.c \
94                         src/http/modules/ngx_http_log_module.c \
95                         src/http/ngx_http_request_body.c \
96                         src/http/ngx_http_variables.c \
97                         src/http/ngx_http_script.c \
98                         src/http/ngx_http_upstream.c \
99                         src/http/ngx_http_upstream_round_robin.c"
100        ngx_module_libs=
101        ngx_module_link=YES
102
103        . auto/module
104    fi
105
106
107    if [ $HTTP_CACHE = YES ]; then
108        have=NGX_HTTP_CACHE . auto/have
109        HTTP_SRCS="$HTTP_SRCS $HTTP_FILE_CACHE_SRCS"
110    fi
111
112
113    if [ $HTTP_SSI = YES ]; then
114        HTTP_POSTPONE=YES
115    fi
116
117
118    if [ $HTTP_SLICE = YES ]; then
119        HTTP_POSTPONE=YES
120    fi
121
122
123    if [ $HTTP_ADDITION = YES ]; then
124        HTTP_POSTPONE=YES
125    fi
126
127
128    # the module order is important
129    #     ngx_http_static_module
130    #     ngx_http_gzip_static_module
131    #     ngx_http_dav_module
132    #     ngx_http_autoindex_module
133    #     ngx_http_index_module
134    #     ngx_http_random_index_module
135    #
136    #     ngx_http_access_module
137    #     ngx_http_realip_module
138    #
139    #
140    # the filter order is important
141    #     ngx_http_write_filter
142    #     ngx_http_header_filter
143    #     ngx_http_chunked_filter
144    #     ngx_http_v2_filter
145    #     ngx_http_range_header_filter
146    #     ngx_http_gzip_filter
147    #     ngx_http_postpone_filter
148    #     ngx_http_ssi_filter
149    #     ngx_http_charset_filter
150    #         ngx_http_xslt_filter
151    #         ngx_http_image_filter
152    #         ngx_http_sub_filter
153    #         ngx_http_addition_filter
154    #         ngx_http_gunzip_filter
155    #         ngx_http_userid_filter
156    #         ngx_http_headers_filter
157    #     ngx_http_copy_filter
158    #     ngx_http_range_body_filter
159    #     ngx_http_not_modified_filter
160    #     ngx_http_slice_filter
161
162    ngx_module_type=HTTP_FILTER
163    HTTP_FILTER_MODULES=
164
165    ngx_module_order="ngx_http_static_module \
166                      ngx_http_gzip_static_module \
167                      ngx_http_dav_module \
168                      ngx_http_autoindex_module \
169                      ngx_http_index_module \
170                      ngx_http_random_index_module \
171                      ngx_http_access_module \
172                      ngx_http_realip_module \
173                      ngx_http_write_filter_module \
174                      ngx_http_header_filter_module \
175                      ngx_http_chunked_filter_module \
176                      ngx_http_v2_filter_module \
177                      ngx_http_range_header_filter_module \
178                      ngx_http_gzip_filter_module \
179                      ngx_http_postpone_filter_module \
180                      ngx_http_ssi_filter_module \
181                      ngx_http_charset_filter_module \
182                      ngx_http_xslt_filter_module \
183                      ngx_http_image_filter_module \
184                      ngx_http_sub_filter_module \
185                      ngx_http_addition_filter_module \
186                      ngx_http_gunzip_filter_module \
187                      ngx_http_userid_filter_module \
188                      ngx_http_headers_filter_module \
189                      ngx_http_copy_filter_module \
190                      ngx_http_range_body_filter_module \
191                      ngx_http_not_modified_filter_module \
192                      ngx_http_slice_filter_module"
193
194    if :; then
195        ngx_module_name=ngx_http_write_filter_module
196        ngx_module_incs=
197        ngx_module_deps=
198        ngx_module_srcs=src/http/ngx_http_write_filter_module.c
199        ngx_module_libs=
200        ngx_module_link=YES
201
202        . auto/module
203    fi
204
205    if :; then
206        ngx_module_name=ngx_http_header_filter_module
207        ngx_module_incs=
208        ngx_module_deps=
209        ngx_module_srcs=src/http/ngx_http_header_filter_module.c
210        ngx_module_libs=
211        ngx_module_link=YES
212
213        . auto/module
214    fi
215
216    if :; then
217        ngx_module_name=ngx_http_chunked_filter_module
218        ngx_module_incs=
219        ngx_module_deps=
220        ngx_module_srcs=src/http/modules/ngx_http_chunked_filter_module.c
221        ngx_module_libs=
222        ngx_module_link=YES
223
224        . auto/module
225    fi
226
227    if [ $HTTP_V2 = YES ]; then
228        ngx_module_name=ngx_http_v2_filter_module
229        ngx_module_incs=
230        ngx_module_deps=
231        ngx_module_srcs=src/http/v2/ngx_http_v2_filter_module.c
232        ngx_module_libs=
233        ngx_module_link=$HTTP_V2
234
235        . auto/module
236    fi
237
238    if :; then
239        ngx_module_name=ngx_http_range_header_filter_module
240        ngx_module_incs=
241        ngx_module_deps=
242        ngx_module_srcs=src/http/modules/ngx_http_range_filter_module.c
243        ngx_module_libs=
244        ngx_module_link=YES
245
246        . auto/module
247    fi
248
249    if [ $HTTP_GZIP = YES ]; then
250        have=NGX_HTTP_GZIP . auto/have
251        USE_ZLIB=YES
252
253        ngx_module_name=ngx_http_gzip_filter_module
254        ngx_module_incs=
255        ngx_module_deps=
256        ngx_module_srcs=src/http/modules/ngx_http_gzip_filter_module.c
257        ngx_module_libs=
258        ngx_module_link=$HTTP_GZIP
259
260        . auto/module
261    fi
262
263    if [ $HTTP_POSTPONE = YES ]; then
264        ngx_module_name=ngx_http_postpone_filter_module
265        ngx_module_incs=
266        ngx_module_deps=
267        ngx_module_srcs=src/http/ngx_http_postpone_filter_module.c
268        ngx_module_libs=
269        ngx_module_link=$HTTP_POSTPONE
270
271        . auto/module
272    fi
273
274    if [ $HTTP_SSI = YES ]; then
275        have=NGX_HTTP_SSI . auto/have
276
277        ngx_module_name=ngx_http_ssi_filter_module
278        ngx_module_incs=
279        ngx_module_deps=src/http/modules/ngx_http_ssi_filter_module.h
280        ngx_module_srcs=src/http/modules/ngx_http_ssi_filter_module.c
281        ngx_module_libs=
282        ngx_module_link=$HTTP_SSI
283
284        . auto/module
285    fi
286
287    if [ $HTTP_CHARSET = YES ]; then
288        ngx_module_name=ngx_http_charset_filter_module
289        ngx_module_incs=
290        ngx_module_deps=
291        ngx_module_srcs=src/http/modules/ngx_http_charset_filter_module.c
292        ngx_module_libs=
293        ngx_module_link=$HTTP_CHARSET
294
295        . auto/module
296    fi
297
298    if [ $HTTP_XSLT != NO ]; then
299        ngx_module_name=ngx_http_xslt_filter_module
300        ngx_module_incs=
301        ngx_module_deps=
302        ngx_module_srcs=src/http/modules/ngx_http_xslt_filter_module.c
303        ngx_module_libs=LIBXSLT
304        ngx_module_link=$HTTP_XSLT
305
306        . auto/module
307    fi
308
309    if [ $HTTP_IMAGE_FILTER != NO ]; then
310        ngx_module_name=ngx_http_image_filter_module
311        ngx_module_incs=
312        ngx_module_deps=
313        ngx_module_srcs=src/http/modules/ngx_http_image_filter_module.c
314        ngx_module_libs=LIBGD
315        ngx_module_link=$HTTP_IMAGE_FILTER
316
317        . auto/module
318    fi
319
320    if [ $HTTP_SUB = YES ]; then
321        ngx_module_name=ngx_http_sub_filter_module
322        ngx_module_incs=
323        ngx_module_deps=
324        ngx_module_srcs=src/http/modules/ngx_http_sub_filter_module.c
325        ngx_module_libs=
326        ngx_module_link=$HTTP_SUB
327
328        . auto/module
329    fi
330
331    if [ $HTTP_ADDITION = YES ]; then
332        ngx_module_name=ngx_http_addition_filter_module
333        ngx_module_incs=
334        ngx_module_deps=
335        ngx_module_srcs=src/http/modules/ngx_http_addition_filter_module.c
336        ngx_module_libs=
337        ngx_module_link=$HTTP_ADDITION
338
339        . auto/module
340    fi
341
342    if [ $HTTP_GUNZIP = YES ]; then
343        have=NGX_HTTP_GZIP . auto/have
344        USE_ZLIB=YES
345
346        ngx_module_name=ngx_http_gunzip_filter_module
347        ngx_module_incs=
348        ngx_module_deps=
349        ngx_module_srcs=src/http/modules/ngx_http_gunzip_filter_module.c
350        ngx_module_libs=
351        ngx_module_link=$HTTP_GUNZIP
352
353        . auto/module
354    fi
355
356    if [ $HTTP_USERID = YES ]; then
357        ngx_module_name=ngx_http_userid_filter_module
358        ngx_module_incs=
359        ngx_module_deps=
360        ngx_module_srcs=src/http/modules/ngx_http_userid_filter_module.c
361        ngx_module_libs=
362        ngx_module_link=$HTTP_USERID
363
364        . auto/module
365    fi
366
367    if :; then
368        ngx_module_name=ngx_http_headers_filter_module
369        ngx_module_incs=
370        ngx_module_deps=
371        ngx_module_srcs=src/http/modules/ngx_http_headers_filter_module.c
372        ngx_module_libs=
373        ngx_module_link=YES
374
375        . auto/module
376    fi
377
378
379    ngx_module_type=HTTP_INIT_FILTER
380    HTTP_INIT_FILTER_MODULES=
381
382    if :; then
383        ngx_module_name=ngx_http_copy_filter_module
384        ngx_module_incs=
385        ngx_module_deps=
386        ngx_module_srcs=src/http/ngx_http_copy_filter_module.c
387        ngx_module_libs=
388        ngx_module_link=YES
389
390        . auto/module
391    fi
392
393    if :; then
394        ngx_module_name=ngx_http_range_body_filter_module
395        ngx_module_incs=
396        ngx_module_deps=
397        ngx_module_srcs=
398        ngx_module_libs=
399        ngx_module_link=YES
400
401        . auto/module
402    fi
403
404    if :; then
405        ngx_module_name=ngx_http_not_modified_filter_module
406        ngx_module_incs=
407        ngx_module_deps=
408        ngx_module_srcs=src/http/modules/ngx_http_not_modified_filter_module.c
409        ngx_module_libs=
410        ngx_module_link=YES
411
412        . auto/module
413    fi
414
415    if [ $HTTP_SLICE = YES ]; then
416        ngx_module_name=ngx_http_slice_filter_module
417        ngx_module_incs=
418        ngx_module_deps=
419        ngx_module_srcs=src/http/modules/ngx_http_slice_filter_module.c
420        ngx_module_libs=
421        ngx_module_link=$HTTP_SLICE
422
423        . auto/module
424    fi
425
426
427    ngx_module_type=HTTP
428
429    if [ $HTTP_V2 = YES ]; then
430        have=NGX_HTTP_V2 . auto/have
431        have=NGX_HTTP_HEADERS . auto/have
432
433        ngx_module_name=ngx_http_v2_module
434        ngx_module_incs=src/http/v2
435        ngx_module_deps="src/http/v2/ngx_http_v2.h \
436                         src/http/v2/ngx_http_v2_module.h"
437        ngx_module_srcs="src/http/v2/ngx_http_v2.c \
438                         src/http/v2/ngx_http_v2_table.c \
439                         src/http/v2/ngx_http_v2_encode.c \
440                         src/http/v2/ngx_http_v2_huff_decode.c \
441                         src/http/v2/ngx_http_v2_huff_encode.c \
442                         src/http/v2/ngx_http_v2_module.c"
443        ngx_module_libs=
444        ngx_module_link=$HTTP_V2
445
446        . auto/module
447    fi
448
449    if :; then
450        ngx_module_name=ngx_http_static_module
451        ngx_module_incs=
452        ngx_module_deps=
453        ngx_module_srcs=src/http/modules/ngx_http_static_module.c
454        ngx_module_libs=
455        ngx_module_link=YES
456
457        . auto/module
458    fi
459
460    if [ $HTTP_GZIP_STATIC = YES ]; then
461        have=NGX_HTTP_GZIP . auto/have
462
463        ngx_module_name=ngx_http_gzip_static_module
464        ngx_module_incs=
465        ngx_module_deps=
466        ngx_module_srcs=src/http/modules/ngx_http_gzip_static_module.c
467        ngx_module_libs=
468        ngx_module_link=$HTTP_GZIP_STATIC
469
470        . auto/module
471    fi
472
473    if [ $HTTP_DAV = YES ]; then
474        have=NGX_HTTP_DAV . auto/have
475
476        ngx_module_name=ngx_http_dav_module
477        ngx_module_incs=
478        ngx_module_deps=
479        ngx_module_srcs=src/http/modules/ngx_http_dav_module.c
480        ngx_module_libs=
481        ngx_module_link=$HTTP_DAV
482
483        . auto/module
484    fi
485
486    if [ $HTTP_AUTOINDEX = YES ]; then
487        ngx_module_name=ngx_http_autoindex_module
488        ngx_module_incs=
489        ngx_module_deps=
490        ngx_module_srcs=src/http/modules/ngx_http_autoindex_module.c
491        ngx_module_libs=
492        ngx_module_link=$HTTP_AUTOINDEX
493
494        . auto/module
495    fi
496
497    if :; then
498        ngx_module_name=ngx_http_index_module
499        ngx_module_incs=
500        ngx_module_deps=
501        ngx_module_srcs=src/http/modules/ngx_http_index_module.c
502        ngx_module_libs=
503        ngx_module_link=YES
504
505        . auto/module
506    fi
507
508    if [ $HTTP_RANDOM_INDEX = YES ]; then
509        ngx_module_name=ngx_http_random_index_module
510        ngx_module_incs=
511        ngx_module_deps=
512        ngx_module_srcs=src/http/modules/ngx_http_random_index_module.c
513        ngx_module_libs=
514        ngx_module_link=$HTTP_RANDOM_INDEX
515
516        . auto/module
517    fi
518
519    if [ $HTTP_MIRROR = YES ]; then
520        ngx_module_name=ngx_http_mirror_module
521        ngx_module_incs=
522        ngx_module_deps=
523        ngx_module_srcs=src/http/modules/ngx_http_mirror_module.c
524        ngx_module_libs=
525        ngx_module_link=$HTTP_MIRROR
526
527        . auto/module
528    fi
529
530    if :; then
531        ngx_module_name=ngx_http_try_files_module
532        ngx_module_incs=
533        ngx_module_deps=
534        ngx_module_srcs=src/http/modules/ngx_http_try_files_module.c
535        ngx_module_libs=
536        ngx_module_link=YES
537
538        . auto/module
539    fi
540
541    if [ $HTTP_AUTH_REQUEST = YES ]; then
542        ngx_module_name=ngx_http_auth_request_module
543        ngx_module_incs=
544        ngx_module_deps=
545        ngx_module_srcs=src/http/modules/ngx_http_auth_request_module.c
546        ngx_module_libs=
547        ngx_module_link=$HTTP_AUTH_REQUEST
548
549        . auto/module
550    fi
551
552    if [ $HTTP_AUTH_BASIC = YES ]; then
553        have=NGX_CRYPT . auto/have
554
555        ngx_module_name=ngx_http_auth_basic_module
556        ngx_module_incs=
557        ngx_module_deps=
558        ngx_module_srcs=src/http/modules/ngx_http_auth_basic_module.c
559        ngx_module_libs=$CRYPT_LIB
560        ngx_module_link=$HTTP_AUTH_BASIC
561
562        . auto/module
563    fi
564
565    if [ $HTTP_ACCESS = YES ]; then
566        ngx_module_name=ngx_http_access_module
567        ngx_module_incs=
568        ngx_module_deps=
569        ngx_module_srcs=src/http/modules/ngx_http_access_module.c
570        ngx_module_libs=
571        ngx_module_link=$HTTP_ACCESS
572
573        . auto/module
574    fi
575
576    if [ $HTTP_LIMIT_CONN = YES ]; then
577        ngx_module_name=ngx_http_limit_conn_module
578        ngx_module_incs=
579        ngx_module_deps=
580        ngx_module_srcs=src/http/modules/ngx_http_limit_conn_module.c
581        ngx_module_libs=
582        ngx_module_link=$HTTP_LIMIT_CONN
583
584        . auto/module
585    fi
586
587    if [ $HTTP_LIMIT_REQ = YES ]; then
588        ngx_module_name=ngx_http_limit_req_module
589        ngx_module_incs=
590        ngx_module_deps=
591        ngx_module_srcs=src/http/modules/ngx_http_limit_req_module.c
592        ngx_module_libs=
593        ngx_module_link=$HTTP_LIMIT_REQ
594
595        . auto/module
596    fi
597
598    if [ $HTTP_REALIP = YES ]; then
599        have=NGX_HTTP_REALIP . auto/have
600        have=NGX_HTTP_X_FORWARDED_FOR . auto/have
601
602        ngx_module_name=ngx_http_realip_module
603        ngx_module_incs=
604        ngx_module_deps=
605        ngx_module_srcs=src/http/modules/ngx_http_realip_module.c
606        ngx_module_libs=
607        ngx_module_link=$HTTP_REALIP
608
609        . auto/module
610    fi
611
612    if [ $HTTP_STATUS = YES ]; then
613        ngx_module_name=ngx_http_status_module
614        ngx_module_incs=
615        ngx_module_deps=
616        ngx_module_srcs=src/http/modules/ngx_http_status_module.c
617        ngx_module_libs=
618        ngx_module_link=$HTTP_STATUS
619
620        . auto/module
621    fi
622
623    if [ $HTTP_GEO = YES ]; then
624        have=NGX_HTTP_X_FORWARDED_FOR . auto/have
625
626        ngx_module_name=ngx_http_geo_module
627        ngx_module_incs=
628        ngx_module_deps=
629        ngx_module_srcs=src/http/modules/ngx_http_geo_module.c
630        ngx_module_libs=
631        ngx_module_link=$HTTP_GEO
632
633        . auto/module
634    fi
635
636    if [ $HTTP_GEOIP != NO ]; then
637        have=NGX_HTTP_X_FORWARDED_FOR . auto/have
638
639        ngx_module_name=ngx_http_geoip_module
640        ngx_module_incs=
641        ngx_module_deps=
642        ngx_module_srcs=src/http/modules/ngx_http_geoip_module.c
643        ngx_module_libs=GEOIP
644        ngx_module_link=$HTTP_GEOIP
645
646        . auto/module
647    fi
648
649    if [ $HTTP_MAP = YES ]; then
650        ngx_module_name=ngx_http_map_module
651        ngx_module_incs=
652        ngx_module_deps=
653        ngx_module_srcs=src/http/modules/ngx_http_map_module.c
654        ngx_module_libs=
655        ngx_module_link=$HTTP_MAP
656
657        . auto/module
658    fi
659
660    if [ $HTTP_SPLIT_CLIENTS = YES ]; then
661        ngx_module_name=ngx_http_split_clients_module
662        ngx_module_incs=
663        ngx_module_deps=
664        ngx_module_srcs=src/http/modules/ngx_http_split_clients_module.c
665        ngx_module_libs=
666        ngx_module_link=$HTTP_SPLIT_CLIENTS
667
668        . auto/module
669    fi
670
671    if [ $HTTP_REFERER = YES ]; then
672        ngx_module_name=ngx_http_referer_module
673        ngx_module_incs=
674        ngx_module_deps=
675        ngx_module_srcs=src/http/modules/ngx_http_referer_module.c
676        ngx_module_libs=
677        ngx_module_link=$HTTP_REFERER
678
679        . auto/module
680    fi
681
682    if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
683        USE_PCRE=YES
684
685        ngx_module_name=ngx_http_rewrite_module
686        ngx_module_incs=
687        ngx_module_deps=
688        ngx_module_srcs=src/http/modules/ngx_http_rewrite_module.c
689        ngx_module_libs=
690        ngx_module_link=$HTTP_REWRITE
691
692        . auto/module
693    fi
694
695    if [ $HTTP_SSL = YES ]; then
696        USE_OPENSSL=YES
697        have=NGX_HTTP_SSL . auto/have
698
699        ngx_module_name=ngx_http_ssl_module
700        ngx_module_incs=
701        ngx_module_deps=src/http/modules/ngx_http_ssl_module.h
702        ngx_module_srcs=src/http/modules/ngx_http_ssl_module.c
703        ngx_module_libs=
704        ngx_module_link=$HTTP_SSL
705
706        . auto/module
707    fi
708
709    if [ $HTTP_PROXY = YES ]; then
710        have=NGX_HTTP_X_FORWARDED_FOR . auto/have
711
712        ngx_module_name=ngx_http_proxy_module
713        ngx_module_incs=
714        ngx_module_deps=
715        ngx_module_srcs=src/http/modules/ngx_http_proxy_module.c
716        ngx_module_libs=
717        ngx_module_link=$HTTP_PROXY
718
719        . auto/module
720    fi
721
722    if [ $HTTP_FASTCGI = YES ]; then
723        ngx_module_name=ngx_http_fastcgi_module
724        ngx_module_incs=
725        ngx_module_deps=
726        ngx_module_srcs=src/http/modules/ngx_http_fastcgi_module.c
727        ngx_module_libs=
728        ngx_module_link=$HTTP_FASTCGI
729
730        . auto/module
731    fi
732
733    if [ $HTTP_UWSGI = YES ]; then
734        ngx_module_name=ngx_http_uwsgi_module
735        ngx_module_incs=
736        ngx_module_deps=
737        ngx_module_srcs=src/http/modules/ngx_http_uwsgi_module.c
738        ngx_module_libs=
739        ngx_module_link=$HTTP_UWSGI
740
741        . auto/module
742    fi
743
744    if [ $HTTP_SCGI = YES ]; then
745        ngx_module_name=ngx_http_scgi_module
746        ngx_module_incs=
747        ngx_module_deps=
748        ngx_module_srcs=src/http/modules/ngx_http_scgi_module.c
749        ngx_module_libs=
750        ngx_module_link=$HTTP_SCGI
751
752        . auto/module
753    fi
754
755    if [ $HTTP_GRPC = YES -a $HTTP_V2 = YES ]; then
756        ngx_module_name=ngx_http_grpc_module
757        ngx_module_incs=
758        ngx_module_deps=
759        ngx_module_srcs=src/http/modules/ngx_http_grpc_module.c
760        ngx_module_libs=
761        ngx_module_link=$HTTP_GRPC
762
763        . auto/module
764    fi
765
766    if [ $HTTP_PERL != NO ]; then
767        ngx_module_name=ngx_http_perl_module
768        ngx_module_incs=src/http/modules/perl
769        ngx_module_deps=src/http/modules/perl/ngx_http_perl_module.h
770        ngx_module_srcs=src/http/modules/perl/ngx_http_perl_module.c
771        ngx_module_libs=PERL
772        ngx_module_link=$HTTP_PERL
773
774        . auto/module
775    fi
776
777    if [ $HTTP_MEMCACHED = YES ]; then
778        ngx_module_name=ngx_http_memcached_module
779        ngx_module_incs=
780        ngx_module_deps=
781        ngx_module_srcs=src/http/modules/ngx_http_memcached_module.c
782        ngx_module_libs=
783        ngx_module_link=$HTTP_MEMCACHED
784
785        . auto/module
786    fi
787
788    if [ $HTTP_EMPTY_GIF = YES ]; then
789        ngx_module_name=ngx_http_empty_gif_module
790        ngx_module_incs=
791        ngx_module_deps=
792        ngx_module_srcs=src/http/modules/ngx_http_empty_gif_module.c
793        ngx_module_libs=
794        ngx_module_link=$HTTP_EMPTY_GIF
795
796        . auto/module
797    fi
798
799    if [ $HTTP_BROWSER = YES ]; then
800        ngx_module_name=ngx_http_browser_module
801        ngx_module_incs=
802        ngx_module_deps=
803        ngx_module_srcs=src/http/modules/ngx_http_browser_module.c
804        ngx_module_libs=
805        ngx_module_link=$HTTP_BROWSER
806
807        . auto/module
808    fi
809
810    if [ $HTTP_SECURE_LINK = YES ]; then
811        ngx_module_name=ngx_http_secure_link_module
812        ngx_module_incs=
813        ngx_module_deps=
814        ngx_module_srcs=src/http/modules/ngx_http_secure_link_module.c
815        ngx_module_libs=
816        ngx_module_link=$HTTP_SECURE_LINK
817
818        . auto/module
819    fi
820
821    if [ $HTTP_DEGRADATION = YES ]; then
822        have=NGX_HTTP_DEGRADATION . auto/have
823
824        ngx_module_name=ngx_http_degradation_module
825        ngx_module_incs=
826        ngx_module_deps=
827        ngx_module_srcs=src/http/modules/ngx_http_degradation_module.c
828        ngx_module_libs=
829        ngx_module_link=$HTTP_DEGRADATION
830
831        . auto/module
832    fi
833
834    if [ $HTTP_FLV = YES ]; then
835        ngx_module_name=ngx_http_flv_module
836        ngx_module_incs=
837        ngx_module_deps=
838        ngx_module_srcs=src/http/modules/ngx_http_flv_module.c
839        ngx_module_libs=
840        ngx_module_link=$HTTP_FLV
841
842        . auto/module
843    fi
844
845    if [ $HTTP_MP4 = YES ]; then
846        ngx_module_name=ngx_http_mp4_module
847        ngx_module_incs=
848        ngx_module_deps=
849        ngx_module_srcs=src/http/modules/ngx_http_mp4_module.c
850        ngx_module_libs=
851        ngx_module_link=$HTTP_MP4
852
853        . auto/module
854    fi
855
856    if [ $HTTP_UPSTREAM_HASH = YES ]; then
857        ngx_module_name=ngx_http_upstream_hash_module
858        ngx_module_incs=
859        ngx_module_deps=
860        ngx_module_srcs=src/http/modules/ngx_http_upstream_hash_module.c
861        ngx_module_libs=
862        ngx_module_link=$HTTP_UPSTREAM_HASH
863
864        . auto/module
865    fi
866
867    if [ $HTTP_UPSTREAM_IP_HASH = YES ]; then
868        ngx_module_name=ngx_http_upstream_ip_hash_module
869        ngx_module_incs=
870        ngx_module_deps=
871        ngx_module_srcs=src/http/modules/ngx_http_upstream_ip_hash_module.c
872        ngx_module_libs=
873        ngx_module_link=$HTTP_UPSTREAM_IP_HASH
874
875        . auto/module
876    fi
877
878    if [ $HTTP_UPSTREAM_LEAST_CONN = YES ]; then
879        ngx_module_name=ngx_http_upstream_least_conn_module
880        ngx_module_incs=
881        ngx_module_deps=
882        ngx_module_srcs=src/http/modules/ngx_http_upstream_least_conn_module.c
883        ngx_module_libs=
884        ngx_module_link=$HTTP_UPSTREAM_LEAST_CONN
885
886        . auto/module
887    fi
888
889    if [ $HTTP_UPSTREAM_RANDOM = YES ]; then
890        ngx_module_name=ngx_http_upstream_random_module
891        ngx_module_incs=
892        ngx_module_deps=
893        ngx_module_srcs=src/http/modules/ngx_http_upstream_random_module.c
894        ngx_module_libs=
895        ngx_module_link=$HTTP_UPSTREAM_RANDOM
896
897        . auto/module
898    fi
899
900    if [ $HTTP_UPSTREAM_KEEPALIVE = YES ]; then
901        ngx_module_name=ngx_http_upstream_keepalive_module
902        ngx_module_incs=
903        ngx_module_deps=
904        ngx_module_srcs=src/http/modules/ngx_http_upstream_keepalive_module.c
905        ngx_module_libs=
906        ngx_module_link=$HTTP_UPSTREAM_KEEPALIVE
907
908        . auto/module
909    fi
910
911    if [ $HTTP_UPSTREAM_ZONE = YES ]; then
912        have=NGX_HTTP_UPSTREAM_ZONE . auto/have
913
914        ngx_module_name=ngx_http_upstream_zone_module
915        ngx_module_incs=
916        ngx_module_deps=
917        ngx_module_srcs=src/http/modules/ngx_http_upstream_zone_module.c
918        ngx_module_libs=
919        ngx_module_link=$HTTP_UPSTREAM_ZONE
920
921        . auto/module
922    fi
923
924    if [ $HTTP_STUB_STATUS = YES ]; then
925        have=NGX_STAT_STUB . auto/have
926
927        ngx_module_name=ngx_http_stub_status_module
928        ngx_module_incs=
929        ngx_module_deps=
930        ngx_module_srcs=src/http/modules/ngx_http_stub_status_module.c
931        ngx_module_libs=
932        ngx_module_link=$HTTP_STUB_STATUS
933
934        . auto/module
935    fi
936fi
937
938
939if [ $MAIL != NO ]; then
940    MAIL_MODULES=
941    MAIL_DEPS=
942    MAIL_INCS=
943
944    ngx_module_type=MAIL
945    ngx_module_libs=
946    ngx_module_link=YES
947
948    ngx_module_order=
949
950    ngx_module_name="ngx_mail_module ngx_mail_core_module"
951    ngx_module_incs="src/mail"
952    ngx_module_deps="src/mail/ngx_mail.h"
953    ngx_module_srcs="src/mail/ngx_mail.c \
954                     src/mail/ngx_mail_core_module.c \
955                     src/mail/ngx_mail_handler.c \
956                     src/mail/ngx_mail_parse.c"
957
958    . auto/module
959
960    ngx_module_incs=
961
962    if [ $MAIL_SSL = YES ]; then
963        USE_OPENSSL=YES
964        have=NGX_MAIL_SSL . auto/have
965
966        ngx_module_name=ngx_mail_ssl_module
967        ngx_module_deps=src/mail/ngx_mail_ssl_module.h
968        ngx_module_srcs=src/mail/ngx_mail_ssl_module.c
969
970        . auto/module
971    fi
972
973    if [ $MAIL_POP3 = YES ]; then
974        ngx_module_name=ngx_mail_pop3_module
975        ngx_module_deps=src/mail/ngx_mail_pop3_module.h
976        ngx_module_srcs="src/mail/ngx_mail_pop3_module.c \
977                         src/mail/ngx_mail_pop3_handler.c"
978
979        . auto/module
980    fi
981
982    if [ $MAIL_IMAP = YES ]; then
983        ngx_module_name=ngx_mail_imap_module
984        ngx_module_deps=src/mail/ngx_mail_imap_module.h
985        ngx_module_srcs="src/mail/ngx_mail_imap_module.c \
986                         src/mail/ngx_mail_imap_handler.c"
987
988        . auto/module
989    fi
990
991    if [ $MAIL_SMTP = YES ]; then
992        ngx_module_name=ngx_mail_smtp_module
993        ngx_module_deps=src/mail/ngx_mail_smtp_module.h
994        ngx_module_srcs="src/mail/ngx_mail_smtp_module.c \
995                         src/mail/ngx_mail_smtp_handler.c"
996
997        . auto/module
998    fi
999
1000    ngx_module_name=ngx_mail_auth_http_module
1001    ngx_module_deps=
1002    ngx_module_srcs=src/mail/ngx_mail_auth_http_module.c
1003
1004    . auto/module
1005
1006    ngx_module_name=ngx_mail_proxy_module
1007    ngx_module_deps=
1008    ngx_module_srcs=src/mail/ngx_mail_proxy_module.c
1009
1010    . auto/module
1011fi
1012
1013
1014if [ $STREAM != NO ]; then
1015    STREAM_MODULES=
1016    STREAM_DEPS=
1017    STREAM_INCS=
1018
1019    ngx_module_type=STREAM
1020    ngx_module_libs=
1021    ngx_module_link=YES
1022
1023    ngx_module_order=
1024
1025    ngx_module_name="ngx_stream_module \
1026                     ngx_stream_core_module \
1027                     ngx_stream_log_module \
1028                     ngx_stream_proxy_module \
1029                     ngx_stream_upstream_module \
1030                     ngx_stream_write_filter_module"
1031    ngx_module_incs="src/stream"
1032    ngx_module_deps="src/stream/ngx_stream.h \
1033                     src/stream/ngx_stream_variables.h \
1034                     src/stream/ngx_stream_script.h \
1035                     src/stream/ngx_stream_upstream.h \
1036                     src/stream/ngx_stream_upstream_round_robin.h"
1037    ngx_module_srcs="src/stream/ngx_stream.c \
1038                     src/stream/ngx_stream_variables.c \
1039                     src/stream/ngx_stream_script.c \
1040                     src/stream/ngx_stream_handler.c \
1041                     src/stream/ngx_stream_core_module.c \
1042                     src/stream/ngx_stream_log_module.c \
1043                     src/stream/ngx_stream_proxy_module.c \
1044                     src/stream/ngx_stream_upstream.c \
1045                     src/stream/ngx_stream_upstream_round_robin.c \
1046                     src/stream/ngx_stream_write_filter_module.c"
1047
1048    . auto/module
1049
1050    ngx_module_incs=
1051
1052    if [ $STREAM_SSL = YES ]; then
1053        USE_OPENSSL=YES
1054        have=NGX_STREAM_SSL . auto/have
1055
1056        ngx_module_name=ngx_stream_ssl_module
1057        ngx_module_deps=src/stream/ngx_stream_ssl_module.h
1058        ngx_module_srcs=src/stream/ngx_stream_ssl_module.c
1059        ngx_module_libs=
1060        ngx_module_link=$STREAM_SSL
1061
1062        . auto/module
1063    fi
1064
1065    if [ $STREAM_REALIP = YES ]; then
1066        ngx_module_name=ngx_stream_realip_module
1067        ngx_module_deps=
1068        ngx_module_srcs=src/stream/ngx_stream_realip_module.c
1069        ngx_module_libs=
1070        ngx_module_link=$STREAM_REALIP
1071
1072        . auto/module
1073    fi
1074
1075    if [ $STREAM_LIMIT_CONN = YES ]; then
1076        ngx_module_name=ngx_stream_limit_conn_module
1077        ngx_module_deps=
1078        ngx_module_srcs=src/stream/ngx_stream_limit_conn_module.c
1079        ngx_module_libs=
1080        ngx_module_link=$STREAM_LIMIT_CONN
1081
1082        . auto/module
1083    fi
1084
1085    if [ $STREAM_ACCESS = YES ]; then
1086        ngx_module_name=ngx_stream_access_module
1087        ngx_module_deps=
1088        ngx_module_srcs=src/stream/ngx_stream_access_module.c
1089        ngx_module_libs=
1090        ngx_module_link=$STREAM_ACCESS
1091
1092        . auto/module
1093    fi
1094
1095    if [ $STREAM_GEO = YES ]; then
1096        ngx_module_name=ngx_stream_geo_module
1097        ngx_module_deps=
1098        ngx_module_srcs=src/stream/ngx_stream_geo_module.c
1099        ngx_module_libs=
1100        ngx_module_link=$STREAM_GEO
1101
1102        . auto/module
1103    fi
1104
1105    if [ $STREAM_GEOIP != NO ]; then
1106        ngx_module_name=ngx_stream_geoip_module
1107        ngx_module_deps=
1108        ngx_module_srcs=src/stream/ngx_stream_geoip_module.c
1109        ngx_module_libs=GEOIP
1110        ngx_module_link=$STREAM_GEOIP
1111
1112        . auto/module
1113    fi
1114
1115    if [ $STREAM_MAP = YES ]; then
1116        ngx_module_name=ngx_stream_map_module
1117        ngx_module_deps=
1118        ngx_module_srcs=src/stream/ngx_stream_map_module.c
1119        ngx_module_libs=
1120        ngx_module_link=$STREAM_MAP
1121
1122        . auto/module
1123    fi
1124
1125    if [ $STREAM_SPLIT_CLIENTS = YES ]; then
1126        ngx_module_name=ngx_stream_split_clients_module
1127        ngx_module_deps=
1128        ngx_module_srcs=src/stream/ngx_stream_split_clients_module.c
1129        ngx_module_libs=
1130        ngx_module_link=$STREAM_SPLIT_CLIENTS
1131
1132        . auto/module
1133    fi
1134
1135    if [ $STREAM_RETURN = YES ]; then
1136        ngx_module_name=ngx_stream_return_module
1137        ngx_module_deps=
1138        ngx_module_srcs=src/stream/ngx_stream_return_module.c
1139        ngx_module_libs=
1140        ngx_module_link=$STREAM_RETURN
1141
1142        . auto/module
1143    fi
1144
1145    if [ $STREAM_UPSTREAM_HASH = YES ]; then
1146        ngx_module_name=ngx_stream_upstream_hash_module
1147        ngx_module_deps=
1148        ngx_module_srcs=src/stream/ngx_stream_upstream_hash_module.c
1149        ngx_module_libs=
1150        ngx_module_link=$STREAM_UPSTREAM_HASH
1151
1152        . auto/module
1153    fi
1154
1155    if [ $STREAM_UPSTREAM_LEAST_CONN = YES ]; then
1156        ngx_module_name=ngx_stream_upstream_least_conn_module
1157        ngx_module_deps=
1158        ngx_module_srcs=src/stream/ngx_stream_upstream_least_conn_module.c
1159        ngx_module_libs=
1160        ngx_module_link=$STREAM_UPSTREAM_LEAST_CONN
1161
1162        . auto/module
1163    fi
1164
1165    if [ $STREAM_UPSTREAM_RANDOM = YES ]; then
1166        ngx_module_name=ngx_stream_upstream_random_module
1167        ngx_module_deps=
1168        ngx_module_srcs=src/stream/ngx_stream_upstream_random_module.c
1169        ngx_module_libs=
1170        ngx_module_link=$STREAM_UPSTREAM_RANDOM
1171
1172        . auto/module
1173    fi
1174
1175    if [ $STREAM_UPSTREAM_ZONE = YES ]; then
1176        have=NGX_STREAM_UPSTREAM_ZONE . auto/have
1177
1178        ngx_module_name=ngx_stream_upstream_zone_module
1179        ngx_module_deps=
1180        ngx_module_srcs=src/stream/ngx_stream_upstream_zone_module.c
1181        ngx_module_libs=
1182        ngx_module_link=$STREAM_UPSTREAM_ZONE
1183
1184        . auto/module
1185    fi
1186
1187    if [ $STREAM_SSL_PREREAD = YES ]; then
1188        ngx_module_name=ngx_stream_ssl_preread_module
1189        ngx_module_deps=
1190        ngx_module_srcs=src/stream/ngx_stream_ssl_preread_module.c
1191        ngx_module_libs=
1192        ngx_module_link=$STREAM_SSL_PREREAD
1193
1194        . auto/module
1195    fi
1196fi
1197
1198
1199#if [ -r $NGX_OBJS/auto ]; then
1200#    . $NGX_OBJS/auto
1201#fi
1202
1203
1204if test -n "$NGX_ADDONS"; then
1205
1206    echo configuring additional modules
1207
1208    for ngx_addon_dir in $NGX_ADDONS
1209    do
1210        echo "adding module in $ngx_addon_dir"
1211
1212        ngx_module_type=
1213        ngx_module_name=
1214        ngx_module_incs=
1215        ngx_module_deps=
1216        ngx_module_srcs=
1217        ngx_module_libs=
1218        ngx_module_order=
1219        ngx_module_link=ADDON
1220
1221        if test -f $ngx_addon_dir/config; then
1222            . $ngx_addon_dir/config
1223
1224            echo " + $ngx_addon_name was configured"
1225
1226        else
1227            echo "$0: error: no $ngx_addon_dir/config was found"
1228            exit 1
1229        fi
1230    done
1231fi
1232
1233
1234if test -n "$DYNAMIC_ADDONS"; then
1235
1236    echo configuring additional dynamic modules
1237
1238    for ngx_addon_dir in $DYNAMIC_ADDONS
1239    do
1240        echo "adding module in $ngx_addon_dir"
1241
1242        ngx_module_type=
1243        ngx_module_name=
1244        ngx_module_incs=
1245        ngx_module_deps=
1246        ngx_module_srcs=
1247        ngx_module_libs=
1248        ngx_module_order=
1249        ngx_module_link=DYNAMIC
1250
1251        if test -f $ngx_addon_dir/config; then
1252            . $ngx_addon_dir/config
1253
1254            echo " + $ngx_addon_name was configured"
1255
1256        else
1257            echo "$0: error: no $ngx_addon_dir/config was found"
1258            exit 1
1259        fi
1260    done
1261fi
1262
1263
1264if [ $USE_OPENSSL = YES ]; then
1265    ngx_module_type=CORE
1266    ngx_module_name=ngx_openssl_module
1267    ngx_module_incs=
1268    ngx_module_deps=src/event/ngx_event_openssl.h
1269    ngx_module_srcs="src/event/ngx_event_openssl.c
1270                     src/event/ngx_event_openssl_stapling.c"
1271    ngx_module_libs=
1272    ngx_module_link=YES
1273    ngx_module_order=
1274
1275    . auto/module
1276fi
1277
1278
1279if [ $USE_PCRE = YES ]; then
1280    ngx_module_type=CORE
1281    ngx_module_name=ngx_regex_module
1282    ngx_module_incs=
1283    ngx_module_deps=src/core/ngx_regex.h
1284    ngx_module_srcs=src/core/ngx_regex.c
1285    ngx_module_libs=
1286    ngx_module_link=YES
1287    ngx_module_order=
1288
1289    . auto/module
1290fi
1291
1292
1293modules="$CORE_MODULES $EVENT_MODULES"
1294
1295
1296# thread pool module should be initialized after events
1297if [ $USE_THREADS = YES ]; then
1298    modules="$modules $THREAD_POOL_MODULE"
1299fi
1300
1301
1302if [ $HTTP = YES ]; then
1303    modules="$modules $HTTP_MODULES $HTTP_FILTER_MODULES \
1304             $HTTP_AUX_FILTER_MODULES $HTTP_INIT_FILTER_MODULES"
1305
1306    NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(HTTP_DEPS)"
1307fi
1308
1309
1310if [ $MAIL != NO ]; then
1311
1312    if [ $MAIL = YES ]; then
1313        modules="$modules $MAIL_MODULES"
1314
1315    elif [ $MAIL = DYNAMIC ]; then
1316        ngx_module_name=$MAIL_MODULES
1317        ngx_module_incs=
1318        ngx_module_deps=
1319        ngx_module_srcs=$MAIL_SRCS
1320        ngx_module_libs=
1321        ngx_module_link=DYNAMIC
1322
1323        . auto/module
1324    fi
1325
1326    NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(MAIL_DEPS)"
1327fi
1328
1329
1330if [ $STREAM != NO ]; then
1331
1332    if [ $STREAM = YES ]; then
1333        modules="$modules $STREAM_MODULES"
1334
1335    elif [ $STREAM = DYNAMIC ]; then
1336        ngx_module_name=$STREAM_MODULES
1337        ngx_module_incs=
1338        ngx_module_deps=
1339        ngx_module_srcs=$STREAM_SRCS
1340        ngx_module_libs=
1341        ngx_module_link=DYNAMIC
1342
1343        . auto/module
1344    fi
1345
1346    NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(STREAM_DEPS)"
1347fi
1348
1349
1350ngx_module_type=MISC
1351MISC_MODULES=
1352
1353if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then
1354    ngx_module_name=ngx_google_perftools_module
1355    ngx_module_incs=
1356    ngx_module_deps=
1357    ngx_module_srcs=src/misc/ngx_google_perftools_module.c
1358    ngx_module_libs=
1359    ngx_module_link=$NGX_GOOGLE_PERFTOOLS
1360
1361    . auto/module
1362fi
1363
1364if [ $NGX_CPP_TEST = YES ]; then
1365    ngx_module_name=
1366    ngx_module_incs=
1367    ngx_module_deps=
1368    ngx_module_srcs=src/misc/ngx_cpp_test_module.cpp
1369    ngx_module_libs=-lstdc++
1370    ngx_module_link=$NGX_CPP_TEST
1371
1372    . auto/module
1373fi
1374
1375modules="$modules $MISC_MODULES"
1376
1377
1378if [ $NGX_COMPAT = YES ]; then
1379    have=NGX_COMPAT . auto/have
1380    have=NGX_HTTP_GZIP . auto/have
1381    have=NGX_HTTP_DAV . auto/have
1382    have=NGX_HTTP_REALIP . auto/have
1383    have=NGX_HTTP_X_FORWARDED_FOR . auto/have
1384    have=NGX_HTTP_HEADERS . auto/have
1385    have=NGX_HTTP_UPSTREAM_ZONE . auto/have
1386    have=NGX_STREAM_UPSTREAM_ZONE . auto/have
1387fi
1388
1389
1390cat << END                                    > $NGX_MODULES_C
1391
1392#include <ngx_config.h>
1393#include <ngx_core.h>
1394
1395$NGX_PRAGMA
1396
1397END
1398
1399for mod in $modules
1400do
1401    echo "extern ngx_module_t  $mod;"         >> $NGX_MODULES_C
1402done
1403
1404echo                                          >> $NGX_MODULES_C
1405echo 'ngx_module_t *ngx_modules[] = {'        >> $NGX_MODULES_C
1406
1407for mod in $modules
1408do
1409    echo "    &$mod,"                         >> $NGX_MODULES_C
1410done
1411
1412cat << END                                    >> $NGX_MODULES_C
1413    NULL
1414};
1415
1416END
1417
1418echo 'char *ngx_module_names[] = {'           >> $NGX_MODULES_C
1419
1420for mod in $modules
1421do
1422    echo "    \"$mod\","                      >> $NGX_MODULES_C
1423done
1424
1425cat << END                                    >> $NGX_MODULES_C
1426    NULL
1427};
1428
1429END
1430