
case $CC in

    *gcc)
         # gcc 2.95.4, 3.3.2

         # optimization
         #CFLAGS="$CFLAGS -O2 -fomit-frame-pointer"

         case $CPU in
             pentium)
                 # optimize for Pentium and Athlon
                 CPU_OPT="-march=pentium"
             ;;

             pentiumpro)
                 # optimize for Pentium Pro, Pentium II and Pentium III
                 CPU_OPT="-march=pentiumpro"
             ;;

             pentium4)
                 # optimize for Pentium 4, gcc 3.x
                 CPU_OPT="-march=pentium4"
             ;;
         esac

         CFLAGS="$CFLAGS $PIPE"
         CFLAGS="$CFLAGS $CPU_OPT"

         if [ ".$PCRE_OPT" = "." ]; then
             PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
         else
             PCRE_OPT="$PCRE_OPT $PIPE"
         fi

         if [ ".$MD5_OPT" = "." ]; then
             MD5_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
         else
             MD5_OPT="$MD5_OPT $PIPE"
         fi

         if [ ".$ZLIB_OPT" = "." ]; then
             ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
         else
             ZLIB_OPT="$ZLIB_OPT $PIPE"
         fi

         # warnings
         CFLAGS="$CFLAGS -O -W"
         CFLAGS="$CFLAGS -Wall -Wpointer-arith"
         #CFLAGS="$CFLAGS -Wconversion"
         #CFLAGS="$CFLAGS -Winline"

         # we have a lot of the unused function arguments
         CFLAGS="$CFLAGS -Wno-unused"

         # stop on warning
         CFLAGS="$CFLAGS -Werror"

         # ANSI C warnings
         #CFLAGS="$CFLAGS -pedantic"

         # debug
         CFLAGS="$CFLAGS -g"

         have=HAVE_GCC_VARIADIC_MACROS . auto/have

         if [ ".$CPP" = "." ]; then
             CPP="$CC -E"
         fi

         LINK="\$(CC)"

         OBJEXT=o
         COMPILEONLY="-c"
         OBJOUT="-o "
         BINOUT="-o "

         CC_STRONG="$CC -Wall -Werror"
    ;;


    *icc)
         # Intel C++ compiler 7.1

         # optimization
         CFLAGS="$CFLAGS -O"
         # inline functions declared with __inline
         #CFLAGS="$CFLAGS -Ob1"
         # inline any function, at the compiler's discretion
         CFLAGS="$CFLAGS -Ob2"

         # single-file IP optimizations
         #IPO="-ip"
         # multi-file IP optimizations 
         IPO="-ipo -ipo_obj"
         CFLAGS="$CFLAGS $IPO"
         CORE_LINK="$CORE_LINK $IPO"
         CORE_LINK="$CORE_LINK -opt_report_file=$OBJS/opt_report_file"

         case $CPU in
             pentium)
                 # optimize for Pentium and Athlon
                 CPU_OPT="-march=pentium"
             ;;

             pentiumpro)
                 # optimize for Pentium Pro, Pentium II and Pentium III
                 CPU_OPT="-mcpu=pentiumpro -march=pentiumpro"
             ;;

             pentium4)
                 # optimize for Pentium 4, default
                 CPU_OPT="-march=pentium4"
             ;;
         esac

         CFLAGS="$CFLAGS $CPU_OPT"

         if [ ".$PCRE_OPT" = "." ]; then
             PCRE_OPT="-O $IPO $CPU_OPT"
         fi

         if [ ".$MD5_OPT" = "." ]; then
             MD5_OPT="-O $IPO $CPU_OPT"
         fi

         if [ ".$ZLIB_OPT" = "." ]; then
             ZLIB_OPT="-O $IPO $CPU_OPT"
         fi

         # warnings
         CFLAGS="$CFLAGS -w1"

         # stop on warning
         CFLAGS="$CFLAGS -Werror"

         # debug
         CFLAGS="$CFLAGS -g"

         have=HAVE_C99_VARIADIC_MACROS . auto/have

         LINK="\$(CC)"

         OBJEXT=o
         COMPILEONLY="-c"
         OBJOUT="-o "
         BINOUT="-o "

         CC_STRONG="$CC -w1 -Werror"
    ;;


    cl)
         # MSVC 6.0 SP2

         # optimization

         # maximize speed
         CFLAGS="$CFLAGS -O2"
         # enable global optimization
         CFLAGS="$CFLAGS -Og"
         # enable intrinsic functions
         CFLAGS="$CFLAGS -Oi"
         # inline expansion
         CFLAGS="$CFLAGS -Ob1"
         # enable frame pointer omission
         CFLAGS="$CFLAGS -Oy"
         # disable stack checking calls
         CFLAGS="$CFLAGS -Gs"

         case $CPU in
             pentiumpro)
                 # optimize for Pentium and Athlon
                 CPU_OPT="-G5"
             ;;

             pentiumpro)
                 # optimize for Pentium Pro, Pentium II and Pentium III
                 CPU_OPT="-G6"
             ;;

             pentium4)
                 # optimize for Pentium 4
                 #CPU_OPT="-G7"
             ;;
         esac

         CFLAGS="$CFLAGS $CPU_OPT"

         # warnings
         CFLAGS="$CFLAGS -W3"
         #CFLAGS="$CFLAGS -W4"

         # stop on warning
         CFLAGS="$CFLAGS -WX"

         # link with libcmt.lib, multithreaded
         #LIBC="-MT"
         # link with msvcrt.dll
         LIBC="-MD"

         CFLAGS="$CFLAGS $LIBC"

         # disable logo
         CFLAGS="$CFLAGS -nologo"

         LINK="\$(CC)"

         # link flags
         CORE_LINK="$CORE_LINK -link -verbose:lib"

         # debug
         CFLAGS="$CFLAGS -Yd"
         CORE_LINK="$CORE_LINK -debug -debugtype:coff"

         # precompiled headers
         CORE_DEPS="$CORE_DEPS ngx_config.pch"
         PCH="ngx_config.pch"
         BUILDPCH="-Ycngx_config.h"
         USEPCH="-Yungx_config.h"

         OBJEXT=obj
         COMPILEONLY="-c"
         OBJOUT="-Fo"
         BINOUT="-Fe"
         BINEXT=.exe

         CC_STRONG="$CC -W3 -WX"
    ;;


    wcl386)
         # Open Watcom 1.0

         # optimization

         # maximize speed
         CFLAGS="$CFLAGS -ot"
         # reorder instructions for best pipeline usage
         CFLAGS="$CFLAGS -op"
         # inline intrinsic functions
         CFLAGS="$CFLAGS -oi"
         # inline expansion
         CFLAGS="$CFLAGS -oe"
         # disable stack checking calls
         CFLAGS="$CFLAGS -s"

         case $CPU in
             pentium)
                 # optimize for Pentium and Athlon
                 # register-based arguments passing conventions
                 CPU_OPT="-5r"
                 # stack-based arguments passing conventions
                 #CPU_OPT="-5s"
             ;;

             pentiumpro)
                 # optimize for Pentium Pro, Pentium II and Pentium III
                 # register-based arguments passing conventions
                 CPU_OPT="-6r"
                 # stack-based arguments passing conventions
                 #CPU_OPT="-6s"
             ;;
         esac

         CFLAGS="$CFLAGS $CPU_OPT"

         # warnings
         #CFLAGS="$CFLAGS -w3"
         CFLAGS="$CFLAGS -wx"

         # stop on warning
         CFLAGS="$CFLAGS -we"

         # built target is NT
         CFLAGS="$CFLAGS -bt=nt"

         # multithreaded
         CFLAGS="$CFLAGS -bm"

         # debug
         CFLAGS="$CFLAGS -d2"

         # quiet
         CFLAGS="$CFLAGS -zq"

         # precompiled headers
         CORE_DEPS="$CORE_DEPS $OBJS\\ngx_config.pch"
         PCH="$OBJS\\ngx_config.pch"
         BUILDPCH="-fhq=$OBJS\\ngx_config.pch"
         USEPCH="-fh=$OBJS\\ngx_config.pch"

         LINK="\$(CC)"

         # link flags
         CORE_LINK="$CORE_LINK -l=nt"

         OBJEXT=obj
         COMPILEONLY="-c"
         OBJOUT="-fo"
         BINOUT="-fe="
         BINEXT=.exe

         INC_EQ=YES
         MAKE_BS=YES
         MAKE_SL=YES
    ;;

esac
