
mkdir -p $OBJS/src/core $OBJS/src/event $OBJS/src/event/modules \
         $OBJS/src/os/unix $OBJS/src/os/win32 \
         $OBJS/src/http $OBJS/src/http/modules $OBJS/src/http/modules/proxy


echo "CC = $CC"                                                   > $MAKEFILE
echo "CFLAGS = $CFLAGS"                                           >> $MAKEFILE
echo                                                              >> $MAKEFILE


# CORE_DEPS

if [ $MAKE_SL = YES ]; then
    echo $ngx_n "CORE_DEPS =" $ngx_c                              >> $MAKEFILE
else
    echo "CORE_DEPS = \\"                                         >> $MAKEFILE
fi

for dep in $CORE_DEPS
do
    if [ $MAKE_BS = YES ]; then
        dep=`echo $dep | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo $ngx_n " $dep" $ngx_c                                >> $MAKEFILE
    else
        echo "	$dep \\"                                          >> $MAKEFILE
    fi
done
echo                                                              >> $MAKEFILE


# CORE_INCS

if [ $MAKE_SL = YES ]; then
    echo                                                          >> $MAKEFILE
fi

inc="$CORE_INCS -I $OBJS"
if [ $INC_EQ = YES ]; then
    inc=`echo $inc | sed -e "s/-I /-i=/g"`
fi

if [ $MAKE_BS = YES ]; then
    inc=`echo $inc | sed -e "s/\//\\\\\\/g"`
fi

echo "CORE_INCS = $inc"                                           >> $MAKEFILE
echo                                                              >> $MAKEFILE


# HTTP_DEPS

if [ $MAKE_SL = YES ]; then
    echo $ngx_n "HTTP_DEPS =" $ngx_c                              >> $MAKEFILE
else
    echo "HTTP_DEPS = \\"                                         >> $MAKEFILE
fi

for dep in $HTTP_DEPS
do
    if [ $MAKE_BS = YES ]; then
        dep=`echo $dep | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo $ngx_n " $dep" $ngx_c                                >> $MAKEFILE
    else
        echo "	$dep \\"                                          >> $MAKEFILE
    fi
done
echo                                                              >> $MAKEFILE


# HTTP_INCS

if [ $MAKE_SL = YES ]; then
    echo                                                          >> $MAKEFILE
fi

inc="$HTTP_INCS -I $OBJS"
if [ $INC_EQ = YES ]; then
    inc=`echo $inc | sed -e "s/-I /-i=/g"`
fi

if [ $MAKE_BS = YES ]; then
    inc=`echo $inc | sed -e "s/\//\\\\\\/g"`
fi

echo "HTTP_INCS = $inc"                                           >> $MAKEFILE
echo                                                              >> $MAKEFILE


# nginx

if [ $MAKE_SL = YES ]; then
    echo $ngx_n "nginx:	" $ngx_c                                  >> $MAKEFILE
else
    echo "nginx: \\"                                              >> $MAKEFILE
fi


# nginx deps

for src in $CORE_SRCS $HTTP_SRCS
do
    obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"`
    obj="$OBJS/$obj"

    if [ $MAKE_BS = YES ]; then
        obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo $ngx_n " $obj" $ngx_c                                >> $MAKEFILE
    else
        echo "	$obj \\"                                          >> $MAKEFILE
    fi
done

for src in $NGX_MODULES_C $LINK_DEPS
do
    obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`

    if [ $MAKE_BS = YES ]; then
        obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo $ngx_n " $obj" $ngx_c                                >> $MAKEFILE
    else
        echo "	$obj \\"                                          >> $MAKEFILE
    fi
done
echo                                                              >> $MAKEFILE


# nginx build

if [ $MAKE_SL = YES ]; then
    echo $ngx_n "	\$(CC) ${BINOUT}nginx" $ngx_c             >> $MAKEFILE
else
    echo "	\$(CC) ${BINOUT}nginx \\"                         >> $MAKEFILE
fi


# nginx build sources

for src in $CORE_SRCS $HTTP_SRCS
do
    obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"`
    obj="$OBJS/$obj"

    if [ $MAKE_BS = YES ]; then
        obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo $ngx_n " $obj," $ngx_c                                >> $MAKEFILE
    else
        echo "	$obj \\"                                          >> $MAKEFILE
    fi
done


# nginx build ngx_modules.c and libs

obj=`echo $NGX_MODULES_C | sed -e "s/\.c\$/.$OBJEXT/"`
libs=`echo $CORE_LIBS | sed -e "s/\.c\$/.$OBJEXT/"`
src=$NGX_MODULES_C
if [ $MAKE_BS = YES ]; then
    obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
    src=`echo $src | sed -e "s/\//\\\\\\/g"`
    libs=`echo $libs | sed -e "s/\//\\\\\\/g"`
fi

if [ $MAKE_SL = YES ]; then
    echo " $obj $libs $CORE_LINK"                                 >> $MAKEFILE
    echo                                                          >> $MAKEFILE
else
    echo "	$obj \\"                                          >> $MAKEFILE
    echo "	$CORE_LIBS \\"                                    >> $MAKEFILE
    echo "	$CORE_LINK"                                       >> $MAKEFILE
    echo                                                          >> $MAKEFILE
fi


# ngx_modules.c

deps="\$(CORE_DEPS)"
args="\$(CFLAGS) \$(CORE_INCS)"

if [ $MAKE_SL = YES ]; then
    echo "$obj: $NGX_MODULES_C $deps"                             >> $MAKEFILE
    echo $ngx_n "	\$(CC) $COMPILEONLY $args" $ngx_c         >> $MAKEFILE
    echo " $OBJOUT$obj $src"                                      >> $MAKEFILE
    echo                                                          >> $MAKEFILE
else
    echo "$obj: \\"                                               >> $MAKEFILE
    echo "	$NGX_MODULES_C $deps"                             >> $MAKEFILE
    echo "	\$(CC) $COMPILEONLY $args \\"                     >> $MAKEFILE
    echo "		$OBJOUT$obj \\"                           >> $MAKEFILE
    echo "		$src"                                     >> $MAKEFILE
    echo                                                          >> $MAKEFILE
fi


# core sources

for src in $CORE_SRCS
do
    obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/" -e "s/\.S\$/.$OBJEXT/"`
    obj="$OBJS/$obj"

    if [ $MAKE_BS = YES ]; then
        obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
        src=`echo $src | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo "$obj: $src $deps"                                   >> $MAKEFILE
        echo "	\$(CC) $COMPILEONLY $args $OBJOUT$obj $src"       >> $MAKEFILE
        echo                                                      >> $MAKEFILE
    else
        echo "$obj: \\"                                           >> $MAKEFILE
        echo "	$src $deps"                                       >> $MAKEFILE
        echo "	\$(CC) $COMPILEONLY $args \\"                     >> $MAKEFILE
        echo "		$OBJOUT$obj \\"                           >> $MAKEFILE
        echo "		$src"                                     >> $MAKEFILE
        echo                                                      >> $MAKEFILE
    fi
done


# http sources

deps="\$(CORE_DEPS) \$(HTTP_DEPS)"
args="\$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"

for src in $HTTP_SRCS
do
    obj=`echo $src | sed -e "s/\.c\$/.$OBJEXT/"`
    obj="$OBJS/$obj"

    if [ $MAKE_BS = YES ]; then
        obj=`echo $obj | sed -e "s/\//\\\\\\/g"`
        src=`echo $src | sed -e "s/\//\\\\\\/g"`
    fi

    if [ $MAKE_SL = YES ]; then
        echo "$obj: $src $deps"                                   >> $MAKEFILE
        echo "	\$(CC) $COMPILEONLY $args $OBJOUT$obj $src"       >> $MAKEFILE
        echo                                                      >> $MAKEFILE
    else
        echo "$obj: \\"                                           >> $MAKEFILE
        echo "	$src $deps"                                       >> $MAKEFILE
        echo "	\$(CC) $COMPILEONLY $args \\"                     >> $MAKEFILE
        echo "		$OBJOUT$obj \\"                           >> $MAKEFILE
        echo "		$src"                                     >> $MAKEFILE
        echo                                                      >> $MAKEFILE
    fi
done
