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