xref: /f-stack/app/nginx-1.16.1/auto/make (revision 8d76b62e)
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