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