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