1 2# Copyright (C) Igor Sysoev 3# Copyright (C) Nginx, Inc. 4 5 6echo "creating $NGX_MAKEFILE" 7 8mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \ 9 $NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \ 10 $NGX_OBJS/src/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/modules \ 11 $NGX_OBJS/src/http/modules/perl \ 12 $NGX_OBJS/src/mail \ 13 $NGX_OBJS/src/stream \ 14 $NGX_OBJS/src/misc 15 16 17ngx_objs_dir=$NGX_OBJS$ngx_regex_dirsep 18ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` 19 20 21if [ ! $FF_PATH ]; then 22 FF_PATH=/usr/local 23 echo "FF_PATH environment variable not defined, default FF_PATH=$FF_PATH" 24fi 25 26if [ ! $(pkg-config --exists libdpdk && echo 1) ]; then 27 echo "error: no installation of DPDK found, maybe you shuld export environment variable \`PKG_CONFIG_PATH\`" 28 exit 1 29fi 30 31CORE_LIBS="$CORE_LIBS \$(shell pkg-config --static --libs libdpdk)" 32CORE_LIBS="$CORE_LIBS -L$FF_PATH/lib -Wl,--whole-archive,-lfstack,--no-whole-archive" 33CORE_LIBS="$CORE_LIBS -Wl,--no-whole-archive -lrt -lm -ldl -lcrypto -lpthread -lnuma" 34 35cat << END > $NGX_MAKEFILE 36 37CC = $CC 38CFLAGS = $CFLAGS 39CPP = $CPP 40LINK = $LINK 41 42CFLAGS += -I$FF_PATH/lib 43 44END 45 46 47if test -n "$NGX_PERL_CFLAGS"; then 48 echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE 49 echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE 50 echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE 51fi 52 53 54# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers 55 56ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS $STREAM_INCS\ 57 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 58 -e "s/\//$ngx_regex_dirsep/g"` 59 60cat << END >> $NGX_MAKEFILE 61 62ALL_INCS = $ngx_include_opt$ngx_incs 63 64END 65 66 67ngx_all_srcs="$CORE_SRCS" 68 69 70# the core dependencies and include paths 71 72ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \ 73 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 74 -e "s/\//$ngx_regex_dirsep/g"` 75 76ngx_incs=`echo $CORE_INCS $NGX_OBJS \ 77 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 78 -e "s/\//$ngx_regex_dirsep/g"` 79 80cat << END >> $NGX_MAKEFILE 81 82CORE_DEPS = $ngx_deps 83 84 85CORE_INCS = $ngx_include_opt$ngx_incs 86 87END 88 89 90# the http dependencies and include paths 91 92if [ $HTTP = YES ]; then 93 94 ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS" 95 96 ngx_deps=`echo $HTTP_DEPS \ 97 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 98 -e "s/\//$ngx_regex_dirsep/g"` 99 100 ngx_incs=`echo $HTTP_INCS \ 101 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 102 -e "s/\//$ngx_regex_dirsep/g"` 103 104 cat << END >> $NGX_MAKEFILE 105 106HTTP_DEPS = $ngx_deps 107 108 109HTTP_INCS = $ngx_include_opt$ngx_incs 110 111END 112 113fi 114 115 116# the mail dependencies and include paths 117 118if [ $MAIL != NO ]; then 119 120 if [ $MAIL = YES ]; then 121 ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS" 122 fi 123 124 ngx_deps=`echo $MAIL_DEPS \ 125 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 126 -e "s/\//$ngx_regex_dirsep/g"` 127 128 ngx_incs=`echo $MAIL_INCS \ 129 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 130 -e "s/\//$ngx_regex_dirsep/g"` 131 132 cat << END >> $NGX_MAKEFILE 133 134MAIL_DEPS = $ngx_deps 135 136 137MAIL_INCS = $ngx_include_opt$ngx_incs 138 139END 140 141fi 142 143 144# the stream dependencies and include paths 145 146if [ $STREAM != NO ]; then 147 148 if [ $STREAM = YES ]; then 149 ngx_all_srcs="$ngx_all_srcs $STREAM_SRCS" 150 fi 151 152 ngx_deps=`echo $STREAM_DEPS \ 153 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 154 -e "s/\//$ngx_regex_dirsep/g"` 155 156 ngx_incs=`echo $STREAM_INCS \ 157 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 158 -e "s/\//$ngx_regex_dirsep/g"` 159 160 cat << END >> $NGX_MAKEFILE 161 162STREAM_DEPS = $ngx_deps 163 164 165STREAM_INCS = $ngx_include_opt$ngx_incs 166 167END 168 169fi 170 171 172ngx_all_srcs="$ngx_all_srcs $MISC_SRCS" 173 174 175if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then 176 177cat << END >> $NGX_MAKEFILE 178 179ADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS 180 181END 182 183fi 184 185 186# nginx 187 188ngx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"` 189 190for ngx_src in $NGX_ADDON_SRCS 191do 192 ngx_obj="addon/`basename \`dirname $ngx_src\``" 193 194 test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj 195 196 ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ 197 | sed -e "s/\//$ngx_regex_dirsep/g"` 198 199 ngx_all_srcs="$ngx_all_srcs $ngx_obj" 200done 201 202ngx_all_objs=`echo $ngx_all_srcs \ 203 | sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \ 204 -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \ 205 -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \ 206 -e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"` 207 208ngx_modules_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"` 209 210ngx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` 211 212 213if test -n "$NGX_RES"; then 214 ngx_res=$NGX_RES 215else 216 ngx_res="$NGX_RC $NGX_ICONS" 217 ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` 218fi 219 220ngx_deps=`echo $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS \ 221 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 222 -e "s/\//$ngx_regex_dirsep/g"` 223 224ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \ 225 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ 226 -e "s/\//$ngx_regex_dirsep/g"` 227 228ngx_libs= 229if test -n "$NGX_LD_OPT$CORE_LIBS"; then 230 ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \ 231 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` 232fi 233 234ngx_link=${CORE_LINK:+`echo $CORE_LINK \ 235 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 236 237ngx_main_link=${MAIN_LINK:+`echo $MAIN_LINK \ 238 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 239 240 241cat << END >> $NGX_MAKEFILE 242 243build: binary modules manpage 244 245binary: $NGX_OBJS${ngx_dirsep}nginx$ngx_binext 246 247$NGX_OBJS${ngx_dirsep}nginx$ngx_binext: $ngx_deps$ngx_spacer 248 \$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}nginx$ngx_binext$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link 249 $ngx_rcc 250$ngx_long_end 251 252modules: 253END 254 255 256# ngx_modules.c 257 258if test -n "$NGX_PCH"; then 259 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 260else 261 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)" 262fi 263 264cat << END >> $NGX_MAKEFILE 265 266$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c 267 $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX 268 269END 270 271 272# the core sources 273 274for ngx_src in $CORE_SRCS 275do 276 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 277 ngx_obj=`echo $ngx_src \ 278 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 279 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 280 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 281 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 282 283 cat << END >> $NGX_MAKEFILE 284 285$ngx_obj: \$(CORE_DEPS)$ngx_cont$ngx_src 286 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 287 288END 289 290done 291 292 293# the http sources 294 295if [ $HTTP = YES ]; then 296 297 if test -n "$NGX_PCH"; then 298 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 299 else 300 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)" 301 ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)" 302 ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)" 303 fi 304 305 for ngx_source in $HTTP_SRCS 306 do 307 ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 308 ngx_obj=`echo $ngx_src \ 309 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 310 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 311 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 312 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 313 314 if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then 315 316 cat << END >> $NGX_MAKEFILE 317 318$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src 319 $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 320 321END 322 else 323 324 cat << END >> $NGX_MAKEFILE 325 326$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src 327 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 328 329END 330 331 fi 332 done 333 334fi 335 336 337# the mail sources 338 339if [ $MAIL = YES ]; then 340 341 if test -n "$NGX_PCH"; then 342 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 343 else 344 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)" 345 fi 346 347 for ngx_src in $MAIL_SRCS 348 do 349 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 350 ngx_obj=`echo $ngx_src \ 351 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 352 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 353 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 354 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 355 356 cat << END >> $NGX_MAKEFILE 357 358$ngx_obj: \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src 359 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 360 361END 362 done 363 364fi 365 366 367# the stream sources 368 369if [ $STREAM = YES ]; then 370 371 if test -n "$NGX_PCH"; then 372 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 373 else 374 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(STREAM_INCS)" 375 fi 376 377 for ngx_src in $STREAM_SRCS 378 do 379 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 380 ngx_obj=`echo $ngx_src \ 381 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 382 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 383 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 384 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 385 386 cat << END >> $NGX_MAKEFILE 387 388$ngx_obj: \$(CORE_DEPS) \$(STREAM_DEPS)$ngx_cont$ngx_src 389 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 390 391END 392 done 393 394fi 395 396 397# the misc sources 398 399if test -n "$MISC_SRCS"; then 400 401 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 402 403 for ngx_src in $MISC_SRCS 404 do 405 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 406 ngx_obj=`echo $ngx_src \ 407 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 408 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 409 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 410 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 411 412 cat << END >> $NGX_MAKEFILE 413 414$ngx_obj: \$(CORE_DEPS) $ngx_cont$ngx_src 415 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 416 417END 418 done 419 420fi 421 422 423# the addons sources 424 425if test -n "$NGX_ADDON_SRCS"; then 426 427 ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 428 429 for ngx_src in $NGX_ADDON_SRCS 430 do 431 ngx_obj="addon/`basename \`dirname $ngx_src\``" 432 433 ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ 434 | sed -e "s/\//$ngx_regex_dirsep/g"` 435 436 ngx_obj=`echo $ngx_obj \ 437 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 438 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 439 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 440 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 441 442 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 443 444 cat << END >> $NGX_MAKEFILE 445 446$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 447 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 448 449END 450 done 451 452fi 453 454 455# the addons config.make 456 457if test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then 458 459 for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS 460 do 461 if test -f $ngx_addon_dir/config.make; then 462 . $ngx_addon_dir/config.make 463 fi 464 done 465fi 466 467 468# Win32 resource file 469 470if test -n "$NGX_RES"; then 471 472 ngx_res=`echo "$NGX_RES: $NGX_RC $NGX_ICONS" \ 473 | sed -e "s/\//$ngx_regex_dirsep/g"` 474 ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` 475 476 cat << END >> $NGX_MAKEFILE 477 478$ngx_res 479 $ngx_rcc 480 481END 482 483fi 484 485 486# the precompiled headers 487 488if test -n "$NGX_PCH"; then 489 echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c 490 491 ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_OBJS/ngx_auto_config.h" 492 ngx_pch=`echo "$NGX_PCH: $ngx_pch" | sed -e "s/\//$ngx_regex_dirsep/g"` 493 494 ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)" 495 ngx_src="$ngx_src $ngx_objout$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c" 496 ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 497 498 cat << END >> $NGX_MAKEFILE 499 500$ngx_pch 501 $ngx_src 502 503END 504 505fi 506 507 508# dynamic modules 509 510if test -n "$NGX_PCH"; then 511 ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 512else 513 ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) \$(ALL_INCS)" 514 ngx_perl_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(NGX_PERL_CFLAGS)" 515 ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)" 516fi 517 518for ngx_module in $DYNAMIC_MODULES 519do 520 eval ngx_module_srcs="\$${ngx_module}_SRCS" 521 eval eval ngx_module_libs="\\\"\$${ngx_module}_LIBS\\\"" 522 523 eval ngx_module_modules="\$${ngx_module}_MODULES" 524 eval ngx_module_order="\$${ngx_module}_ORDER" 525 526 ngx_modules_c=$NGX_OBJS/${ngx_module}_modules.c 527 528 cat << END > $ngx_modules_c 529 530#include <ngx_config.h> 531#include <ngx_core.h> 532 533END 534 535 for mod in $ngx_module_modules 536 do 537 echo "extern ngx_module_t $mod;" >> $ngx_modules_c 538 done 539 540 echo >> $ngx_modules_c 541 echo 'ngx_module_t *ngx_modules[] = {' >> $ngx_modules_c 542 543 for mod in $ngx_module_modules 544 do 545 echo " &$mod," >> $ngx_modules_c 546 done 547 548 cat << END >> $ngx_modules_c 549 NULL 550}; 551 552END 553 554 echo 'char *ngx_module_names[] = {' >> $ngx_modules_c 555 556 for mod in $ngx_module_modules 557 do 558 echo " \"$mod\"," >> $ngx_modules_c 559 done 560 561 cat << END >> $ngx_modules_c 562 NULL 563}; 564 565END 566 567 echo 'char *ngx_module_order[] = {' >> $ngx_modules_c 568 569 for mod in $ngx_module_order 570 do 571 echo " \"$mod\"," >> $ngx_modules_c 572 done 573 574 cat << END >> $ngx_modules_c 575 NULL 576}; 577 578END 579 580 ngx_modules_c=`echo $ngx_modules_c | sed -e "s/\//$ngx_regex_dirsep/g"` 581 582 ngx_modules_obj=`echo $ngx_modules_c \ 583 | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` 584 585 ngx_module_objs= 586 for ngx_src in $ngx_module_srcs 587 do 588 case "$ngx_src" in 589 src/*) 590 ngx_obj=$ngx_src 591 ;; 592 *) 593 ngx_obj="addon/`basename \`dirname $ngx_src\``" 594 mkdir -p $NGX_OBJS/$ngx_obj 595 ngx_obj="$ngx_obj/`basename $ngx_src`" 596 ;; 597 esac 598 599 ngx_module_objs="$ngx_module_objs $ngx_obj" 600 done 601 602 ngx_module_objs=`echo $ngx_module_objs \ 603 | sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \ 604 -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \ 605 -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \ 606 -e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"` 607 608 ngx_deps=`echo $ngx_module_objs $ngx_modules_obj $LINK_DEPS \ 609 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 610 -e "s/\//$ngx_regex_dirsep/g"` 611 612 ngx_objs=`echo $ngx_module_objs $ngx_modules_obj \ 613 | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ 614 -e "s/\//$ngx_regex_dirsep/g"` 615 616 ngx_obj=$NGX_OBJS$ngx_dirsep$ngx_module$ngx_modext 617 618 if [ "$NGX_PLATFORM" = win32 ]; then 619 ngx_module_libs="$CORE_LIBS $ngx_module_libs" 620 fi 621 622 ngx_libs= 623 if test -n "$NGX_LD_OPT$ngx_module_libs"; then 624 ngx_libs=`echo $NGX_LD_OPT $ngx_module_libs \ 625 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` 626 fi 627 628 ngx_link=${CORE_LINK:+`echo $CORE_LINK \ 629 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 630 631 ngx_module_link=${MODULE_LINK:+`echo $MODULE_LINK \ 632 | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 633 634 635 cat << END >> $NGX_MAKEFILE 636 637modules: $ngx_obj 638 639$ngx_obj: $ngx_deps$ngx_spacer 640 \$(LINK) $ngx_long_start$ngx_binout$ngx_obj$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_module_link 641$ngx_long_end 642 643$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c 644 $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX 645 646END 647 648 for ngx_source in $ngx_module_srcs 649 do 650 case "$ngx_source" in 651 src/*) 652 ngx_obj=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 653 ;; 654 *) 655 ngx_obj="addon/`basename \`dirname $ngx_source\``" 656 ngx_obj=`echo $ngx_obj/\`basename $ngx_source\` \ 657 | sed -e "s/\//$ngx_regex_dirsep/g"` 658 ;; 659 esac 660 661 ngx_obj=`echo $ngx_obj \ 662 | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 663 -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 664 -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 665 -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 666 667 ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 668 669 if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then 670 671 cat << END >> $NGX_MAKEFILE 672 673$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 674 $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 675 676END 677 else 678 679 cat << END >> $NGX_MAKEFILE 680 681$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 682 $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 683 684END 685 686 fi 687 done 688done 689