upstream nginx-0.7.43
[nginx.git] / nginx / auto / make
1
2 # Copyright (C) Igor Sysoev
3
4
5 mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \
6          $NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \
7          $NGX_OBJS/src/http $NGX_OBJS/src/http/modules \
8          $NGX_OBJS/src/http/modules/perl \
9          $NGX_OBJS/src/mail \
10          $NGX_OBJS/src/misc
11
12
13 ngx_objs_dir=$NGX_OBJS$ngx_regex_dirsep
14 ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"`
15
16
17 cat << END                                                     > $NGX_MAKEFILE
18
19 CC =    $CC
20 CFLAGS = $CFLAGS
21 CPP =   $CPP
22 LINK =  $LINK
23
24 END
25
26 if test -n "$NGX_PERL_CFLAGS"; then
27     echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS                   >> $NGX_MAKEFILE
28     echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS                       >> $NGX_MAKEFILE
29 fi
30
31 if [ "$BMAKE" = wmake ]; then
32     echo MAKE = wmake                                         >> $NGX_MAKEFILE
33
34     ngx_regex_cont=' '
35     ngx_long_regex_cont=' '
36     ngx_cont=' '
37     ngx_long_cont=' '
38     ngx_tab=' '
39
40 fi
41
42
43 # ALL_INCS, required by the addons and by OpenWatcom C precompiled headers
44
45 ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS\
46     | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
47           -e "s/\//$ngx_regex_dirsep/g"`
48
49 cat << END                                                    >> $NGX_MAKEFILE
50
51 ALL_INCS = $ngx_include_opt$ngx_incs
52
53 END
54
55
56 ngx_all_srcs="$CORE_SRCS"
57
58
59 # the core dependences and include pathes
60
61 ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \
62     | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
63           -e "s/\//$ngx_regex_dirsep/g"`
64
65 ngx_incs=`echo $CORE_INCS $NGX_OBJS \
66     | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
67           -e "s/\//$ngx_regex_dirsep/g"`
68
69 cat << END                                                    >> $NGX_MAKEFILE
70
71 CORE_DEPS = $ngx_deps
72
73
74 CORE_INCS = $ngx_include_opt$ngx_incs
75
76 END
77
78
79 # the http dependences and include pathes
80
81 if [ $HTTP = YES ]; then
82
83     ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS"
84
85     ngx_deps=`echo $HTTP_DEPS \
86         | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
87               -e "s/\//$ngx_regex_dirsep/g"`
88
89     ngx_incs=`echo $HTTP_INCS \
90         | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
91               -e "s/\//$ngx_regex_dirsep/g"`
92
93     cat << END                                                >> $NGX_MAKEFILE
94
95 HTTP_DEPS = $ngx_deps
96
97
98 HTTP_INCS = $ngx_include_opt$ngx_incs
99
100 END
101
102 fi
103
104
105 # the mail dependences and include pathes
106
107 if [ $MAIL = YES ]; then
108
109     ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS"
110
111     ngx_deps=`echo $MAIL_DEPS \
112         | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
113               -e "s/\//$ngx_regex_dirsep/g"`
114
115     ngx_incs=`echo $MAIL_INCS \
116         | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
117               -e "s/\//$ngx_regex_dirsep/g"`
118
119     cat << END                                                >> $NGX_MAKEFILE
120
121 MAIL_DEPS = $ngx_deps
122
123
124 MAIL_INCS = $ngx_include_opt$ngx_incs
125
126 END
127
128 fi
129
130
131 ngx_all_srcs="$ngx_all_srcs $NGX_MISC_SRCS"
132
133
134 if test -n "$NGX_ADDON_SRCS"; then
135
136 cat << END                                                >> $NGX_MAKEFILE
137
138 ADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS
139
140 END
141
142 fi
143
144
145 # nginx
146
147 ngx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"`
148
149 for ngx_src in $NGX_ADDON_SRCS
150 do
151     ngx_obj="addon/`basename \`dirname $ngx_src\``"
152
153     test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj
154
155     ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \
156         | sed -e "s/\//$ngx_regex_dirsep/g"`
157
158     ngx_all_srcs="$ngx_all_srcs $ngx_obj"
159 done
160
161 ngx_all_objs=`echo $ngx_all_srcs \
162     | sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \
163           -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \
164           -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \
165           -e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"`
166
167 ngx_modules_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"`
168
169 ngx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"`
170
171
172 if test -n "$NGX_RES"; then
173    ngx_res=$NGX_RES
174 else
175    ngx_res="$NGX_RC $NGX_ICONS"
176    ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"`
177 fi
178
179 ngx_deps=`echo $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS \
180     | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
181           -e "s/\//$ngx_regex_dirsep/g"`
182
183 ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \
184     | sed -e "s/  *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
185           -e "s/\//$ngx_regex_dirsep/g"`
186
187 if test -n "$NGX_LD_OPT$CORE_LIBS"; then
188     ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \
189         | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`
190 fi
191
192 ngx_link=${CORE_LINK:+`echo $CORE_LINK \
193     | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
194
195
196 cat << END                                                    >> $NGX_MAKEFILE
197
198 $NGX_OBJS${ngx_dirsep}nginx${ngx_binext}:       $ngx_deps$ngx_spacer
199         \$(LINK) ${ngx_long_start}${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link
200         $ngx_rcc
201 ${ngx_long_end}
202 END
203
204
205 # ngx_modules.c
206
207 if test -n "$NGX_PCH"; then
208     ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
209 else
210     ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)"
211 fi
212
213 cat << END                                                    >> $NGX_MAKEFILE
214
215 $ngx_modules_obj:       \$(CORE_DEPS)$ngx_cont$ngx_modules_c
216         $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX
217
218 END
219
220
221 # the core sources
222
223 for ngx_src in $CORE_SRCS
224 do
225     ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
226     ngx_obj=`echo $ngx_src \
227         | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
228               -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
229               -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
230               -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
231
232     cat << END                                                >> $NGX_MAKEFILE
233
234 $ngx_obj:       \$(CORE_DEPS)$ngx_cont$ngx_src
235         $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
236
237 END
238
239 done
240
241
242 # the http sources
243
244 if [ $HTTP = YES ]; then
245
246     if test -n "$NGX_PCH"; then
247         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
248     else
249         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
250         ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS) "
251         ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)"
252     fi
253
254     for ngx_source in $HTTP_SRCS
255     do
256         ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"`
257         ngx_obj=`echo $ngx_src \
258             | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
259                   -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
260                   -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
261                   -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
262
263         if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
264
265             cat << END                                        >> $NGX_MAKEFILE
266
267 $ngx_obj:       \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
268         $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
269
270 END
271         else
272
273             cat << END                                        >> $NGX_MAKEFILE
274
275 $ngx_obj:       \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
276         $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
277
278 END
279
280         fi
281      done
282
283 fi
284
285
286 # the mail sources
287
288 if [ $MAIL = YES ]; then
289
290     if test -n "$NGX_PCH"; then
291         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
292     else
293         ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)"
294     fi
295
296     for ngx_src in $MAIL_SRCS
297     do
298         ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
299         ngx_obj=`echo $ngx_src \
300             | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
301                   -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
302                   -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
303                   -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
304
305         cat << END                                            >> $NGX_MAKEFILE
306
307 $ngx_obj:       \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src
308         $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
309
310 END
311      done
312
313 fi
314
315
316 # the misc sources
317
318 if test -n "$NGX_MISC_SRCS"; then
319
320     ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
321
322     for ngx_src in $NGX_MISC_SRCS
323     do
324         ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
325         ngx_obj=`echo $ngx_src \
326             | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
327                   -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
328                   -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
329                   -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
330
331         cat << END                                            >> $NGX_MAKEFILE
332
333 $ngx_obj:       \$(CORE_DEPS) $ngx_cont$ngx_src
334         $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
335
336 END
337      done
338
339 fi
340
341
342 # the addons sources
343
344 if test -n "$NGX_ADDON_SRCS"; then
345
346     ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
347
348     for ngx_src in $NGX_ADDON_SRCS
349     do
350         ngx_obj="addon/`basename \`dirname $ngx_src\``"
351
352         ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \
353             | sed -e "s/\//$ngx_regex_dirsep/g"`
354
355         ngx_obj=`echo $ngx_obj \
356             | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
357                   -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
358                   -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
359                   -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
360
361         ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
362
363         cat << END                                            >> $NGX_MAKEFILE
364
365 $ngx_obj:       \$(ADDON_DEPS)$ngx_cont$ngx_src
366         $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
367
368 END
369      done
370
371 fi
372
373
374 # the addons config.make
375
376 if test -n "$NGX_ADDONS"; then
377
378     for ngx_addon_dir in $NGX_ADDONS
379     do
380         if test -f $ngx_addon_dir/config.make; then
381             . $ngx_addon_dir/config.make
382         fi
383     done
384 fi
385
386
387 # Win32 resource file
388
389 if test -n "$NGX_RES"; then
390
391     ngx_res=`echo "$NGX_RES:    $NGX_RC $NGX_ICONS" \
392                  | sed -e "s/\//$ngx_regex_dirsep/g"`
393     ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"`
394
395     cat << END                                                >> $NGX_MAKEFILE
396
397 $ngx_res
398         $ngx_rcc
399
400 END
401
402 fi
403
404
405 # the precompiled headers
406
407 if test -n "$NGX_PCH"; then
408     echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c
409
410     ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_OBJS/ngx_auto_config.h"
411     ngx_pch=`echo "$NGX_PCH:    $ngx_pch" | sed -e "s/\//$ngx_regex_dirsep/g"`
412
413     ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)"
414     ngx_src="$ngx_src $ngx_objout$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c"
415     ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
416
417     cat << END                                                >> $NGX_MAKEFILE
418
419 $ngx_pch
420         $ngx_src
421
422 END
423
424 fi