1444Sigor@sysoev.ru 2444Sigor@sysoev.ru# Copyright (C) Igor Sysoev 34412Smaxim@nginx.com# Copyright (C) Nginx, Inc. 4444Sigor@sysoev.ru 5195Sigor@sysoev.ru 62827Sigor@sysoev.ruecho "creating $NGX_MAKEFILE" 72827Sigor@sysoev.ru 8469Sigor@sysoev.rumkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \ 9*8858Sru@nginx.com $NGX_OBJS/src/event/quic \ 10469Sigor@sysoev.ru $NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \ 118215Sarut@nginx.com $NGX_OBJS/src/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/v3 \ 128215Sarut@nginx.com $NGX_OBJS/src/http/modules $NGX_OBJS/src/http/modules/perl \ 131949Sigor@sysoev.ru $NGX_OBJS/src/mail \ 146115Sru@nginx.com $NGX_OBJS/src/stream \ 15*8858Sru@nginx.com $NGX_OBJS/src/misc 16195Sigor@sysoev.ru 17195Sigor@sysoev.ru 18455Sigor@sysoev.rungx_objs_dir=$NGX_OBJS$ngx_regex_dirsep 19455Sigor@sysoev.rungx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` 20280Sigor@sysoev.ru 21280Sigor@sysoev.ru 22467Sigor@sysoev.rucat << END > $NGX_MAKEFILE 23280Sigor@sysoev.ru 24455Sigor@sysoev.ruCC = $CC 25455Sigor@sysoev.ruCFLAGS = $CFLAGS 26455Sigor@sysoev.ruCPP = $CPP 27455Sigor@sysoev.ruLINK = $LINK 28195Sigor@sysoev.ru 29455Sigor@sysoev.ruEND 30417Sigor@sysoev.ru 312825Sigor@sysoev.ru 32681Sigor@sysoev.ruif test -n "$NGX_PERL_CFLAGS"; then 33681Sigor@sysoev.ru echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE 34681Sigor@sysoev.ru echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE 356700Sthresh@nginx.com echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE 36681Sigor@sysoev.rufi 37681Sigor@sysoev.ru 38280Sigor@sysoev.ru 39489Sigor@sysoev.ru# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers 40455Sigor@sysoev.ru 416118Spluknet@nginx.comngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS $STREAM_INCS\ 42455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 43455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 44455Sigor@sysoev.ru 45455Sigor@sysoev.rucat << END >> $NGX_MAKEFILE 46455Sigor@sysoev.ru 47455Sigor@sysoev.ruALL_INCS = $ngx_include_opt$ngx_incs 48455Sigor@sysoev.ru 49455Sigor@sysoev.ruEND 50455Sigor@sysoev.ru 51455Sigor@sysoev.ru 52455Sigor@sysoev.rungx_all_srcs="$CORE_SRCS" 53455Sigor@sysoev.ru 54455Sigor@sysoev.ru 556164Sru@nginx.com# the core dependencies and include paths 56455Sigor@sysoev.ru 57467Sigor@sysoev.rungx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \ 58455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 59455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 60455Sigor@sysoev.ru 61469Sigor@sysoev.rungx_incs=`echo $CORE_INCS $NGX_OBJS \ 62455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 63455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 64455Sigor@sysoev.ru 65455Sigor@sysoev.rucat << END >> $NGX_MAKEFILE 66455Sigor@sysoev.ru 67455Sigor@sysoev.ruCORE_DEPS = $ngx_deps 68455Sigor@sysoev.ru 69455Sigor@sysoev.ru 70455Sigor@sysoev.ruCORE_INCS = $ngx_include_opt$ngx_incs 71455Sigor@sysoev.ru 72455Sigor@sysoev.ruEND 73455Sigor@sysoev.ru 74455Sigor@sysoev.ru 756164Sru@nginx.com# the http dependencies and include paths 76455Sigor@sysoev.ru 77455Sigor@sysoev.ruif [ $HTTP = YES ]; then 78455Sigor@sysoev.ru 79455Sigor@sysoev.ru ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS" 80455Sigor@sysoev.ru 81455Sigor@sysoev.ru ngx_deps=`echo $HTTP_DEPS \ 82455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 83455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 84455Sigor@sysoev.ru 85455Sigor@sysoev.ru ngx_incs=`echo $HTTP_INCS \ 86455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 87455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 88455Sigor@sysoev.ru 89455Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 90455Sigor@sysoev.ru 91455Sigor@sysoev.ruHTTP_DEPS = $ngx_deps 92455Sigor@sysoev.ru 93455Sigor@sysoev.ru 94455Sigor@sysoev.ruHTTP_INCS = $ngx_include_opt$ngx_incs 95455Sigor@sysoev.ru 96455Sigor@sysoev.ruEND 97455Sigor@sysoev.ru 98455Sigor@sysoev.rufi 99455Sigor@sysoev.ru 100455Sigor@sysoev.ru 1016164Sru@nginx.com# the mail dependencies and include paths 102455Sigor@sysoev.ru 1036383Smdounin@mdounin.ruif [ $MAIL != NO ]; then 104417Sigor@sysoev.ru 1056383Smdounin@mdounin.ru if [ $MAIL = YES ]; then 1066383Smdounin@mdounin.ru ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS" 1076383Smdounin@mdounin.ru fi 108195Sigor@sysoev.ru 1091136Sigor@sysoev.ru ngx_deps=`echo $MAIL_DEPS \ 110455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 111455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 112417Sigor@sysoev.ru 1131136Sigor@sysoev.ru ngx_incs=`echo $MAIL_INCS \ 114455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 115455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 116280Sigor@sysoev.ru 117455Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 118455Sigor@sysoev.ru 1191136Sigor@sysoev.ruMAIL_DEPS = $ngx_deps 120417Sigor@sysoev.ru 121417Sigor@sysoev.ru 1221136Sigor@sysoev.ruMAIL_INCS = $ngx_include_opt$ngx_incs 123417Sigor@sysoev.ru 124455Sigor@sysoev.ruEND 125417Sigor@sysoev.ru 126417Sigor@sysoev.rufi 127195Sigor@sysoev.ru 128195Sigor@sysoev.ru 1296164Sru@nginx.com# the stream dependencies and include paths 1306115Sru@nginx.com 1316383Smdounin@mdounin.ruif [ $STREAM != NO ]; then 1326115Sru@nginx.com 1336383Smdounin@mdounin.ru if [ $STREAM = YES ]; then 1346383Smdounin@mdounin.ru ngx_all_srcs="$ngx_all_srcs $STREAM_SRCS" 1356383Smdounin@mdounin.ru fi 1366115Sru@nginx.com 1376115Sru@nginx.com ngx_deps=`echo $STREAM_DEPS \ 1386115Sru@nginx.com | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 1396115Sru@nginx.com -e "s/\//$ngx_regex_dirsep/g"` 1406115Sru@nginx.com 1416115Sru@nginx.com ngx_incs=`echo $STREAM_INCS \ 1426115Sru@nginx.com | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \ 1436115Sru@nginx.com -e "s/\//$ngx_regex_dirsep/g"` 1446115Sru@nginx.com 1456115Sru@nginx.com cat << END >> $NGX_MAKEFILE 1466115Sru@nginx.com 1476115Sru@nginx.comSTREAM_DEPS = $ngx_deps 1486115Sru@nginx.com 1496115Sru@nginx.com 1506115Sru@nginx.comSTREAM_INCS = $ngx_include_opt$ngx_incs 1516115Sru@nginx.com 1526115Sru@nginx.comEND 1536115Sru@nginx.com 1546115Sru@nginx.comfi 1556115Sru@nginx.com 1566115Sru@nginx.com 1576382Smdounin@mdounin.rungx_all_srcs="$ngx_all_srcs $MISC_SRCS" 1581949Sigor@sysoev.ru 1591949Sigor@sysoev.ru 1606804Smdounin@mdounin.ruif test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then 161489Sigor@sysoev.ru 162489Sigor@sysoev.rucat << END >> $NGX_MAKEFILE 163489Sigor@sysoev.ru 164541Sigor@sysoev.ruADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS 165489Sigor@sysoev.ru 166489Sigor@sysoev.ruEND 167489Sigor@sysoev.ru 168489Sigor@sysoev.rufi 169489Sigor@sysoev.ru 170489Sigor@sysoev.ru 171280Sigor@sysoev.ru# nginx 172195Sigor@sysoev.ru 173455Sigor@sysoev.rungx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"` 174489Sigor@sysoev.ru 175489Sigor@sysoev.rufor ngx_src in $NGX_ADDON_SRCS 176489Sigor@sysoev.rudo 177489Sigor@sysoev.ru ngx_obj="addon/`basename \`dirname $ngx_src\``" 178489Sigor@sysoev.ru 179489Sigor@sysoev.ru test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj 180489Sigor@sysoev.ru 181489Sigor@sysoev.ru ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ 182489Sigor@sysoev.ru | sed -e "s/\//$ngx_regex_dirsep/g"` 183489Sigor@sysoev.ru 184489Sigor@sysoev.ru ngx_all_srcs="$ngx_all_srcs $ngx_obj" 185489Sigor@sysoev.rudone 186278Sigor@sysoev.ru 187455Sigor@sysoev.rungx_all_objs=`echo $ngx_all_srcs \ 188665Sigor@sysoev.ru | sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \ 189665Sigor@sysoev.ru -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \ 190665Sigor@sysoev.ru -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \ 191665Sigor@sysoev.ru -e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"` 192195Sigor@sysoev.ru 193489Sigor@sysoev.rungx_modules_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"` 194489Sigor@sysoev.ru 195455Sigor@sysoev.rungx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` 196278Sigor@sysoev.ru 197461Sigor@sysoev.ru 198461Sigor@sysoev.ruif test -n "$NGX_RES"; then 199461Sigor@sysoev.ru ngx_res=$NGX_RES 200461Sigor@sysoev.ruelse 201461Sigor@sysoev.ru ngx_res="$NGX_RC $NGX_ICONS" 202461Sigor@sysoev.ru ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` 203461Sigor@sysoev.rufi 204461Sigor@sysoev.ru 205461Sigor@sysoev.rungx_deps=`echo $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS \ 206455Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 207455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 208280Sigor@sysoev.ru 209455Sigor@sysoev.rungx_objs=`echo $ngx_all_objs $ngx_modules_obj \ 210573Sigor@sysoev.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ 211455Sigor@sysoev.ru -e "s/\//$ngx_regex_dirsep/g"` 212280Sigor@sysoev.ru 2136383Smdounin@mdounin.rungx_libs= 214667Sigor@sysoev.ruif test -n "$NGX_LD_OPT$CORE_LIBS"; then 215667Sigor@sysoev.ru ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \ 216667Sigor@sysoev.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` 217667Sigor@sysoev.rufi 218278Sigor@sysoev.ru 219455Sigor@sysoev.rungx_link=${CORE_LINK:+`echo $CORE_LINK \ 220573Sigor@sysoev.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 221195Sigor@sysoev.ru 2226383Smdounin@mdounin.rungx_main_link=${MAIN_LINK:+`echo $MAIN_LINK \ 2236383Smdounin@mdounin.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 2246383Smdounin@mdounin.ru 225461Sigor@sysoev.ru 226455Sigor@sysoev.rucat << END >> $NGX_MAKEFILE 227280Sigor@sysoev.ru 2286408Smdounin@mdounin.rubuild: binary modules manpage 2296408Smdounin@mdounin.ru 2306424Sru@nginx.combinary: $NGX_OBJS${ngx_dirsep}nginx$ngx_binext 2316408Smdounin@mdounin.ru 2326424Sru@nginx.com$NGX_OBJS${ngx_dirsep}nginx$ngx_binext: $ngx_deps$ngx_spacer 2337450Spluknet@nginx.com \$(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 234461Sigor@sysoev.ru $ngx_rcc 2356424Sru@nginx.com$ngx_long_end 2366383Smdounin@mdounin.ru 2376383Smdounin@mdounin.rumodules: 238455Sigor@sysoev.ruEND 239280Sigor@sysoev.ru 240280Sigor@sysoev.ru 241280Sigor@sysoev.ru# ngx_modules.c 242195Sigor@sysoev.ru 243455Sigor@sysoev.ruif test -n "$NGX_PCH"; then 244455Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 245282Sigor@sysoev.ruelse 246455Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)" 247280Sigor@sysoev.rufi 248195Sigor@sysoev.ru 249455Sigor@sysoev.rucat << END >> $NGX_MAKEFILE 250195Sigor@sysoev.ru 251455Sigor@sysoev.ru$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c 252561Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX 253195Sigor@sysoev.ru 254455Sigor@sysoev.ruEND 255455Sigor@sysoev.ru 256455Sigor@sysoev.ru 257455Sigor@sysoev.ru# the core sources 258455Sigor@sysoev.ru 259455Sigor@sysoev.rufor ngx_src in $CORE_SRCS 260195Sigor@sysoev.rudo 261455Sigor@sysoev.ru ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 262455Sigor@sysoev.ru ngx_obj=`echo $ngx_src \ 263665Sigor@sysoev.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 264665Sigor@sysoev.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 265665Sigor@sysoev.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 266665Sigor@sysoev.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 267455Sigor@sysoev.ru 268455Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 269455Sigor@sysoev.ru 270455Sigor@sysoev.ru$ngx_obj: \$(CORE_DEPS)$ngx_cont$ngx_src 271561Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 272455Sigor@sysoev.ru 273455Sigor@sysoev.ruEND 274455Sigor@sysoev.ru 275195Sigor@sysoev.rudone 276195Sigor@sysoev.ru 277195Sigor@sysoev.ru 278455Sigor@sysoev.ru# the http sources 279280Sigor@sysoev.ru 280417Sigor@sysoev.ruif [ $HTTP = YES ]; then 281417Sigor@sysoev.ru 282455Sigor@sysoev.ru if test -n "$NGX_PCH"; then 283455Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 284417Sigor@sysoev.ru else 285455Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)" 2866419Sru@nginx.com ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)" 287681Sigor@sysoev.ru ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)" 288417Sigor@sysoev.ru fi 289282Sigor@sysoev.ru 290681Sigor@sysoev.ru for ngx_source in $HTTP_SRCS 291417Sigor@sysoev.ru do 292681Sigor@sysoev.ru ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 293455Sigor@sysoev.ru ngx_obj=`echo $ngx_src \ 294665Sigor@sysoev.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 295665Sigor@sysoev.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 296665Sigor@sysoev.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 297665Sigor@sysoev.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 298455Sigor@sysoev.ru 299681Sigor@sysoev.ru if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then 300681Sigor@sysoev.ru 301681Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 302681Sigor@sysoev.ru 303681Sigor@sysoev.ru$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src 304681Sigor@sysoev.ru $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 305681Sigor@sysoev.ru 306681Sigor@sysoev.ruEND 307681Sigor@sysoev.ru else 308681Sigor@sysoev.ru 309681Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 310455Sigor@sysoev.ru 311455Sigor@sysoev.ru$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src 312561Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 313455Sigor@sysoev.ru 314455Sigor@sysoev.ruEND 315681Sigor@sysoev.ru 316681Sigor@sysoev.ru fi 3177741Smdounin@mdounin.ru done 318417Sigor@sysoev.ru 319282Sigor@sysoev.rufi 320195Sigor@sysoev.ru 321417Sigor@sysoev.ru 3221136Sigor@sysoev.ru# the mail sources 323417Sigor@sysoev.ru 3241136Sigor@sysoev.ruif [ $MAIL = YES ]; then 325417Sigor@sysoev.ru 326455Sigor@sysoev.ru if test -n "$NGX_PCH"; then 327455Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 328417Sigor@sysoev.ru else 3291136Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)" 330417Sigor@sysoev.ru fi 331280Sigor@sysoev.ru 3321136Sigor@sysoev.ru for ngx_src in $MAIL_SRCS 333417Sigor@sysoev.ru do 334455Sigor@sysoev.ru ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 335455Sigor@sysoev.ru ngx_obj=`echo $ngx_src \ 336665Sigor@sysoev.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 337665Sigor@sysoev.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 338665Sigor@sysoev.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 339665Sigor@sysoev.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 340455Sigor@sysoev.ru 341455Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 342455Sigor@sysoev.ru 3431136Sigor@sysoev.ru$ngx_obj: \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src 344561Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 345455Sigor@sysoev.ru 346455Sigor@sysoev.ruEND 3477741Smdounin@mdounin.ru done 348455Sigor@sysoev.ru 349489Sigor@sysoev.rufi 350489Sigor@sysoev.ru 351489Sigor@sysoev.ru 3526115Sru@nginx.com# the stream sources 3536115Sru@nginx.com 3546115Sru@nginx.comif [ $STREAM = YES ]; then 3556115Sru@nginx.com 3566115Sru@nginx.com if test -n "$NGX_PCH"; then 3576115Sru@nginx.com ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 3586115Sru@nginx.com else 3596115Sru@nginx.com ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(STREAM_INCS)" 3606115Sru@nginx.com fi 3616115Sru@nginx.com 3626115Sru@nginx.com for ngx_src in $STREAM_SRCS 3636115Sru@nginx.com do 3646115Sru@nginx.com ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 3656115Sru@nginx.com ngx_obj=`echo $ngx_src \ 3666115Sru@nginx.com | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3676115Sru@nginx.com -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3686115Sru@nginx.com -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3696115Sru@nginx.com -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 3706115Sru@nginx.com 3716115Sru@nginx.com cat << END >> $NGX_MAKEFILE 3726115Sru@nginx.com 3736115Sru@nginx.com$ngx_obj: \$(CORE_DEPS) \$(STREAM_DEPS)$ngx_cont$ngx_src 3746115Sru@nginx.com $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 3756115Sru@nginx.com 3766115Sru@nginx.comEND 3777741Smdounin@mdounin.ru done 3786115Sru@nginx.com 3796115Sru@nginx.comfi 3806115Sru@nginx.com 3816115Sru@nginx.com 3821949Sigor@sysoev.ru# the misc sources 3831949Sigor@sysoev.ru 3846382Smdounin@mdounin.ruif test -n "$MISC_SRCS"; then 3851949Sigor@sysoev.ru 3861949Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 3871949Sigor@sysoev.ru 3886382Smdounin@mdounin.ru for ngx_src in $MISC_SRCS 3891949Sigor@sysoev.ru do 3901949Sigor@sysoev.ru ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 3911949Sigor@sysoev.ru ngx_obj=`echo $ngx_src \ 3921949Sigor@sysoev.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3931949Sigor@sysoev.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3941949Sigor@sysoev.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 3951949Sigor@sysoev.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 3961949Sigor@sysoev.ru 3971949Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 3981949Sigor@sysoev.ru 3991949Sigor@sysoev.ru$ngx_obj: \$(CORE_DEPS) $ngx_cont$ngx_src 4001949Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 4011949Sigor@sysoev.ru 4021949Sigor@sysoev.ruEND 4037741Smdounin@mdounin.ru done 4041949Sigor@sysoev.ru 4051949Sigor@sysoev.rufi 4061949Sigor@sysoev.ru 4071949Sigor@sysoev.ru 408489Sigor@sysoev.ru# the addons sources 409489Sigor@sysoev.ru 410489Sigor@sysoev.ruif test -n "$NGX_ADDON_SRCS"; then 411489Sigor@sysoev.ru 412489Sigor@sysoev.ru ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 413489Sigor@sysoev.ru 414489Sigor@sysoev.ru for ngx_src in $NGX_ADDON_SRCS 415489Sigor@sysoev.ru do 416489Sigor@sysoev.ru ngx_obj="addon/`basename \`dirname $ngx_src\``" 417489Sigor@sysoev.ru 418489Sigor@sysoev.ru ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \ 419489Sigor@sysoev.ru | sed -e "s/\//$ngx_regex_dirsep/g"` 420489Sigor@sysoev.ru 421489Sigor@sysoev.ru ngx_obj=`echo $ngx_obj \ 422665Sigor@sysoev.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 423665Sigor@sysoev.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 424665Sigor@sysoev.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 425665Sigor@sysoev.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 426489Sigor@sysoev.ru 427489Sigor@sysoev.ru ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 428489Sigor@sysoev.ru 429489Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 430489Sigor@sysoev.ru 431489Sigor@sysoev.ru$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 432561Sigor@sysoev.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 433489Sigor@sysoev.ru 434489Sigor@sysoev.ruEND 4357741Smdounin@mdounin.ru done 436417Sigor@sysoev.ru 437417Sigor@sysoev.rufi 438282Sigor@sysoev.ru 439282Sigor@sysoev.ru 440593Sigor@sysoev.ru# the addons config.make 441593Sigor@sysoev.ru 4426416Sru@nginx.comif test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then 443593Sigor@sysoev.ru 4446416Sru@nginx.com for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS 445593Sigor@sysoev.ru do 446593Sigor@sysoev.ru if test -f $ngx_addon_dir/config.make; then 447593Sigor@sysoev.ru . $ngx_addon_dir/config.make 448593Sigor@sysoev.ru fi 449593Sigor@sysoev.ru done 450593Sigor@sysoev.rufi 451593Sigor@sysoev.ru 452593Sigor@sysoev.ru 453461Sigor@sysoev.ru# Win32 resource file 454461Sigor@sysoev.ru 455461Sigor@sysoev.ruif test -n "$NGX_RES"; then 456461Sigor@sysoev.ru 457461Sigor@sysoev.ru ngx_res=`echo "$NGX_RES: $NGX_RC $NGX_ICONS" \ 458461Sigor@sysoev.ru | sed -e "s/\//$ngx_regex_dirsep/g"` 459461Sigor@sysoev.ru ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"` 460461Sigor@sysoev.ru 461461Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 462461Sigor@sysoev.ru 463461Sigor@sysoev.ru$ngx_res 464461Sigor@sysoev.ru $ngx_rcc 465461Sigor@sysoev.ru 466461Sigor@sysoev.ruEND 467461Sigor@sysoev.ru 468461Sigor@sysoev.rufi 469461Sigor@sysoev.ru 470461Sigor@sysoev.ru 471455Sigor@sysoev.ru# the precompiled headers 472282Sigor@sysoev.ru 473455Sigor@sysoev.ruif test -n "$NGX_PCH"; then 474469Sigor@sysoev.ru echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c 475455Sigor@sysoev.ru 476469Sigor@sysoev.ru ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_OBJS/ngx_auto_config.h" 477455Sigor@sysoev.ru ngx_pch=`echo "$NGX_PCH: $ngx_pch" | sed -e "s/\//$ngx_regex_dirsep/g"` 478282Sigor@sysoev.ru 479455Sigor@sysoev.ru ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)" 480469Sigor@sysoev.ru ngx_src="$ngx_src $ngx_objout$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c" 481455Sigor@sysoev.ru ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"` 482455Sigor@sysoev.ru 483455Sigor@sysoev.ru cat << END >> $NGX_MAKEFILE 484282Sigor@sysoev.ru 485455Sigor@sysoev.ru$ngx_pch 486455Sigor@sysoev.ru $ngx_src 487455Sigor@sysoev.ru 488455Sigor@sysoev.ruEND 489455Sigor@sysoev.ru 490282Sigor@sysoev.rufi 4916383Smdounin@mdounin.ru 4926383Smdounin@mdounin.ru 4936383Smdounin@mdounin.ru# dynamic modules 4946383Smdounin@mdounin.ru 4956383Smdounin@mdounin.ruif test -n "$NGX_PCH"; then 4966383Smdounin@mdounin.ru ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)" 4976383Smdounin@mdounin.ruelse 4986383Smdounin@mdounin.ru ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) \$(ALL_INCS)" 4996419Sru@nginx.com ngx_perl_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(NGX_PERL_CFLAGS)" 5006419Sru@nginx.com ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)" 5016383Smdounin@mdounin.rufi 5026383Smdounin@mdounin.ru 5036383Smdounin@mdounin.rufor ngx_module in $DYNAMIC_MODULES 5046383Smdounin@mdounin.rudo 5056383Smdounin@mdounin.ru eval ngx_module_srcs="\$${ngx_module}_SRCS" 5067743Smdounin@mdounin.ru eval ngx_module_shrd="\$${ngx_module}_SHRD" 5076383Smdounin@mdounin.ru eval eval ngx_module_libs="\\\"\$${ngx_module}_LIBS\\\"" 5086383Smdounin@mdounin.ru 5096383Smdounin@mdounin.ru eval ngx_module_modules="\$${ngx_module}_MODULES" 5106383Smdounin@mdounin.ru eval ngx_module_order="\$${ngx_module}_ORDER" 5116383Smdounin@mdounin.ru 5126383Smdounin@mdounin.ru ngx_modules_c=$NGX_OBJS/${ngx_module}_modules.c 5136383Smdounin@mdounin.ru 5146383Smdounin@mdounin.ru cat << END > $ngx_modules_c 5156383Smdounin@mdounin.ru 5166383Smdounin@mdounin.ru#include <ngx_config.h> 5176383Smdounin@mdounin.ru#include <ngx_core.h> 5186383Smdounin@mdounin.ru 5196383Smdounin@mdounin.ruEND 5206383Smdounin@mdounin.ru 5216383Smdounin@mdounin.ru for mod in $ngx_module_modules 5226383Smdounin@mdounin.ru do 5236383Smdounin@mdounin.ru echo "extern ngx_module_t $mod;" >> $ngx_modules_c 5246383Smdounin@mdounin.ru done 5256383Smdounin@mdounin.ru 5266383Smdounin@mdounin.ru echo >> $ngx_modules_c 5276383Smdounin@mdounin.ru echo 'ngx_module_t *ngx_modules[] = {' >> $ngx_modules_c 5286383Smdounin@mdounin.ru 5296383Smdounin@mdounin.ru for mod in $ngx_module_modules 5306383Smdounin@mdounin.ru do 5316383Smdounin@mdounin.ru echo " &$mod," >> $ngx_modules_c 5326383Smdounin@mdounin.ru done 5336383Smdounin@mdounin.ru 5346383Smdounin@mdounin.ru cat << END >> $ngx_modules_c 5356383Smdounin@mdounin.ru NULL 5366383Smdounin@mdounin.ru}; 5376383Smdounin@mdounin.ru 5386383Smdounin@mdounin.ruEND 5396383Smdounin@mdounin.ru 5406383Smdounin@mdounin.ru echo 'char *ngx_module_names[] = {' >> $ngx_modules_c 5416383Smdounin@mdounin.ru 5426383Smdounin@mdounin.ru for mod in $ngx_module_modules 5436383Smdounin@mdounin.ru do 5446383Smdounin@mdounin.ru echo " \"$mod\"," >> $ngx_modules_c 5456383Smdounin@mdounin.ru done 5466383Smdounin@mdounin.ru 5476383Smdounin@mdounin.ru cat << END >> $ngx_modules_c 5486383Smdounin@mdounin.ru NULL 5496383Smdounin@mdounin.ru}; 5506383Smdounin@mdounin.ru 5516383Smdounin@mdounin.ruEND 5526383Smdounin@mdounin.ru 5536383Smdounin@mdounin.ru echo 'char *ngx_module_order[] = {' >> $ngx_modules_c 5546383Smdounin@mdounin.ru 5556383Smdounin@mdounin.ru for mod in $ngx_module_order 5566383Smdounin@mdounin.ru do 5576383Smdounin@mdounin.ru echo " \"$mod\"," >> $ngx_modules_c 5586383Smdounin@mdounin.ru done 5596383Smdounin@mdounin.ru 5606383Smdounin@mdounin.ru cat << END >> $ngx_modules_c 5616383Smdounin@mdounin.ru NULL 5626383Smdounin@mdounin.ru}; 5636383Smdounin@mdounin.ru 5646383Smdounin@mdounin.ruEND 5656383Smdounin@mdounin.ru 5666383Smdounin@mdounin.ru ngx_modules_c=`echo $ngx_modules_c | sed -e "s/\//$ngx_regex_dirsep/g"` 5676383Smdounin@mdounin.ru 5686383Smdounin@mdounin.ru ngx_modules_obj=`echo $ngx_modules_c \ 5696383Smdounin@mdounin.ru | sed -e "s/\(.*\.\)c/\1$ngx_objext/"` 5706383Smdounin@mdounin.ru 5716383Smdounin@mdounin.ru ngx_module_objs= 5727743Smdounin@mdounin.ru for ngx_src in $ngx_module_srcs $ngx_module_shrd 5736383Smdounin@mdounin.ru do 5746383Smdounin@mdounin.ru case "$ngx_src" in 5756383Smdounin@mdounin.ru src/*) 5766383Smdounin@mdounin.ru ngx_obj=$ngx_src 5776383Smdounin@mdounin.ru ;; 5786383Smdounin@mdounin.ru *) 5796383Smdounin@mdounin.ru ngx_obj="addon/`basename \`dirname $ngx_src\``" 5806383Smdounin@mdounin.ru mkdir -p $NGX_OBJS/$ngx_obj 5816383Smdounin@mdounin.ru ngx_obj="$ngx_obj/`basename $ngx_src`" 5826383Smdounin@mdounin.ru ;; 5836383Smdounin@mdounin.ru esac 5846383Smdounin@mdounin.ru 5856383Smdounin@mdounin.ru ngx_module_objs="$ngx_module_objs $ngx_obj" 5866383Smdounin@mdounin.ru done 5876383Smdounin@mdounin.ru 5886383Smdounin@mdounin.ru ngx_module_objs=`echo $ngx_module_objs \ 5896383Smdounin@mdounin.ru | sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \ 5906383Smdounin@mdounin.ru -e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \ 5916383Smdounin@mdounin.ru -e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \ 5926383Smdounin@mdounin.ru -e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"` 5936383Smdounin@mdounin.ru 5946383Smdounin@mdounin.ru ngx_deps=`echo $ngx_module_objs $ngx_modules_obj $LINK_DEPS \ 5956383Smdounin@mdounin.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \ 5966383Smdounin@mdounin.ru -e "s/\//$ngx_regex_dirsep/g"` 5976383Smdounin@mdounin.ru 5986383Smdounin@mdounin.ru ngx_objs=`echo $ngx_module_objs $ngx_modules_obj \ 5996383Smdounin@mdounin.ru | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ 6006383Smdounin@mdounin.ru -e "s/\//$ngx_regex_dirsep/g"` 6016383Smdounin@mdounin.ru 6026424Sru@nginx.com ngx_obj=$NGX_OBJS$ngx_dirsep$ngx_module$ngx_modext 6036383Smdounin@mdounin.ru 6046383Smdounin@mdounin.ru if [ "$NGX_PLATFORM" = win32 ]; then 6056383Smdounin@mdounin.ru ngx_module_libs="$CORE_LIBS $ngx_module_libs" 6066383Smdounin@mdounin.ru fi 6076383Smdounin@mdounin.ru 6086383Smdounin@mdounin.ru ngx_libs= 6096383Smdounin@mdounin.ru if test -n "$NGX_LD_OPT$ngx_module_libs"; then 6106383Smdounin@mdounin.ru ngx_libs=`echo $NGX_LD_OPT $ngx_module_libs \ 6116383Smdounin@mdounin.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"` 6126383Smdounin@mdounin.ru fi 6136383Smdounin@mdounin.ru 6146383Smdounin@mdounin.ru ngx_link=${CORE_LINK:+`echo $CORE_LINK \ 6156383Smdounin@mdounin.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 6166383Smdounin@mdounin.ru 6176383Smdounin@mdounin.ru ngx_module_link=${MODULE_LINK:+`echo $MODULE_LINK \ 6186383Smdounin@mdounin.ru | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`} 6196383Smdounin@mdounin.ru 6206383Smdounin@mdounin.ru 6216383Smdounin@mdounin.ru cat << END >> $NGX_MAKEFILE 6226383Smdounin@mdounin.ru 6236383Smdounin@mdounin.rumodules: $ngx_obj 6246383Smdounin@mdounin.ru 6256383Smdounin@mdounin.ru$ngx_obj: $ngx_deps$ngx_spacer 6266383Smdounin@mdounin.ru \$(LINK) $ngx_long_start$ngx_binout$ngx_obj$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_module_link 6276383Smdounin@mdounin.ru$ngx_long_end 6286383Smdounin@mdounin.ru 6296383Smdounin@mdounin.ru$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c 6306383Smdounin@mdounin.ru $ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX 6316383Smdounin@mdounin.ru 6326383Smdounin@mdounin.ruEND 6336383Smdounin@mdounin.ru 6346419Sru@nginx.com for ngx_source in $ngx_module_srcs 6356383Smdounin@mdounin.ru do 6366419Sru@nginx.com case "$ngx_source" in 6376383Smdounin@mdounin.ru src/*) 6386419Sru@nginx.com ngx_obj=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 6396383Smdounin@mdounin.ru ;; 6406383Smdounin@mdounin.ru *) 6416419Sru@nginx.com ngx_obj="addon/`basename \`dirname $ngx_source\``" 6426419Sru@nginx.com ngx_obj=`echo $ngx_obj/\`basename $ngx_source\` \ 6436383Smdounin@mdounin.ru | sed -e "s/\//$ngx_regex_dirsep/g"` 6446383Smdounin@mdounin.ru ;; 6456383Smdounin@mdounin.ru esac 6466383Smdounin@mdounin.ru 6476383Smdounin@mdounin.ru ngx_obj=`echo $ngx_obj \ 6486383Smdounin@mdounin.ru | sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \ 6496383Smdounin@mdounin.ru -e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \ 6506383Smdounin@mdounin.ru -e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \ 6516383Smdounin@mdounin.ru -e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"` 6526383Smdounin@mdounin.ru 6536419Sru@nginx.com ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"` 6546419Sru@nginx.com 6556419Sru@nginx.com if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then 6566419Sru@nginx.com 6576419Sru@nginx.com cat << END >> $NGX_MAKEFILE 6586383Smdounin@mdounin.ru 6596804Smdounin@mdounin.ru$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 6606419Sru@nginx.com $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 6616419Sru@nginx.com 6626419Sru@nginx.comEND 6636419Sru@nginx.com else 6646419Sru@nginx.com 6656419Sru@nginx.com cat << END >> $NGX_MAKEFILE 6666383Smdounin@mdounin.ru 6676804Smdounin@mdounin.ru$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src 6686383Smdounin@mdounin.ru $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX 6696383Smdounin@mdounin.ru 6706383Smdounin@mdounin.ruEND 6716383Smdounin@mdounin.ru 6726419Sru@nginx.com fi 6736383Smdounin@mdounin.ru done 6746383Smdounin@mdounin.rudone 675