Win32: simplified and improved handling of MSVC versions.

Now we always set NGX_CC_NAME to "msvc", and additionally test compiler
version as reported by "cl" in auto/cc/msvc (the same version is also
available via the _MSC_VER define).  In particular, this approach allows
to properly check for C99 variadic macros support, which previously was
not used with MSVC versions not explicitly recognized.

Now unneeded wildcards in NGX_CC_NAME tests for msvc removed accordingly,
as well as unused wildcards for owc and icc.
diff --git a/auto/cc/msvc b/auto/cc/msvc
index e588c48..4eef101 100644
--- a/auto/cc/msvc
+++ b/auto/cc/msvc
@@ -3,9 +3,24 @@
 # Copyright (C) Nginx, Inc.
 
 
-# MSVC 6.0 SP2
-# MSVC Toolkit 2003 (7.1)
-# MSVC 2005 Express Edition SP1 (8.0)
+# MSVC 6.0 SP2                            cl 12.00
+# MSVC Toolkit 2003 (7.1)                 cl 13.10
+# MSVC 2005 Express Edition SP1 (8.0)     cl 14.00
+# MSVC 2008 Express Edition (9.0)         cl 15.00
+# MSVC 2010 (10.0)                        cl 16.00
+# MSVC 2015 (14.0)                        cl 19.00
+
+
+NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \
+                                 | sed -e 's/^.* Version \(.*\)/\1/'`
+
+echo " + cl version: $NGX_MSVC_VER"
+
+have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define
+
+
+ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
+
 
 # optimizations
 
@@ -90,17 +105,17 @@
 #CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
 
 # debug
-# msvc8 under Wine issues
-#     Program database manager mismatch; please check your installation
-if [ $NGX_CC_NAME != msvc8 ]; then
+# msvc under Wine issues
+# C1902: Program database manager mismatch; please check your installation
+if [ -z "$NGX_WINE" ]; then
    CFLAGS="$CFLAGS -Zi"
    CORE_LINK="$CORE_LINK -debug"
 fi
 
 
 # MSVC 2005 supports C99 variadic macros
-if [ $NGX_CC_NAME = msvc8 ]; then
-   have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
+if [ "$ngx_msvc_ver" -ge 14 ]; then
+    have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
 fi
 
 
diff --git a/auto/cc/name b/auto/cc/name
index 51a7ed9..35d319e 100644
--- a/auto/cc/name
+++ b/auto/cc/name
@@ -25,31 +25,8 @@
 
 
 if [ "$CC" = cl ]; then
-    if `$NGX_WINE $CC -v 2>&1 \
-        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \
-        >/dev/null 2>&1`; then
-
-        NGX_CC_NAME=msvc10
-        echo " + using Microsoft Visual C++ 10 compiler"
-
-    elif `$NGX_WINE $CC -v 2>&1 \
-        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
-        >/dev/null 2>&1`; then
-
-        NGX_CC_NAME=msvc8
-        echo " + using Microsoft Visual C++ 8 compiler"
-
-    elif `$NGX_WINE $CC -v 2>&1 \
-        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
-        >/dev/null 2>&1`; then
-
-        NGX_CC_NAME=msvc7
-        echo " + using Microsoft Visual C++ 7 compiler"
-
-    else
-        NGX_CC_NAME=msvc
-        echo " + using Microsoft Visual C++ compiler"
-    fi
+    NGX_CC_NAME=msvc
+    echo " + using Microsoft Visual C++ compiler"
 
 elif [ "$CC" = wcl386 ]; then
     NGX_CC_NAME=owc
diff --git a/auto/lib/md5/conf b/auto/lib/md5/conf
index eb5dfd1..49c0ddf 100644
--- a/auto/lib/md5/conf
+++ b/auto/lib/md5/conf
@@ -20,12 +20,12 @@
 
     case "$NGX_CC_NAME" in
 
-        msvc* | owc* | bcc)
+        msvc | owc | bcc)
             LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
             CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
         ;;
 
-        icc*)
+        icc)
             LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
 
             # to allow -ipo optimization we link with the *.o but not library
diff --git a/auto/lib/md5/make b/auto/lib/md5/make
index 81f138a..7000b20 100644
--- a/auto/lib/md5/make
+++ b/auto/lib/md5/make
@@ -5,13 +5,13 @@
 
 case "$NGX_CC_NAME" in
 
-    msvc*)
+    msvc)
         ngx_makefile=makefile.msvc
         ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC MD5_ASM=$MD5_ASM"
         ngx_md5="MD5=\"$MD5\""
     ;;
 
-    owc*)
+    owc)
         ngx_makefile=makefile.owc
         ngx_opt="CPU_OPT=\"$CPU_OPT\""
         ngx_md5=`echo MD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"`
diff --git a/auto/lib/pcre/conf b/auto/lib/pcre/conf
index 939f01b..5e3960f 100644
--- a/auto/lib/pcre/conf
+++ b/auto/lib/pcre/conf
@@ -8,7 +8,7 @@
 
     case "$NGX_CC_NAME" in
 
-        msvc* | owc* | bcc)
+        msvc | owc | bcc)
             have=NGX_PCRE . auto/have
             have=PCRE_STATIC . auto/have
             CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
@@ -16,7 +16,7 @@
             CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
         ;;
 
-        icc* )
+        icc)
             have=NGX_PCRE . auto/have
             CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
 
diff --git a/auto/lib/pcre/make b/auto/lib/pcre/make
index 0a27a11..97c9f3b 100644
--- a/auto/lib/pcre/make
+++ b/auto/lib/pcre/make
@@ -5,13 +5,13 @@
 
 case "$NGX_CC_NAME" in
 
-    msvc*)
+    msvc)
         ngx_makefile=makefile.msvc
         ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
         ngx_pcre="PCRE=\"$PCRE\""
     ;;
 
-    owc*)
+    owc)
         ngx_makefile=makefile.owc
         ngx_opt="CPU_OPT=\"$CPU_OPT\""
         ngx_pcre=`echo PCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"`
diff --git a/auto/lib/sha1/conf b/auto/lib/sha1/conf
index fd69afd..78f9efd 100644
--- a/auto/lib/sha1/conf
+++ b/auto/lib/sha1/conf
@@ -10,12 +10,12 @@
 
     case "$NGX_CC_NAME" in
 
-        msvc* | owc* | bcc)
+        msvc | owc | bcc)
             LINK_DEPS="$LINK_DEPS $SHA1/sha1.lib"
             CORE_LIBS="$CORE_LIBS $SHA1/sha1.lib"
         ;;
 
-        icc*)
+        icc)
             LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
 
             # to allow -ipo optimization we link with the *.o but not library
diff --git a/auto/lib/sha1/make b/auto/lib/sha1/make
index fc10aae..fc3b340 100644
--- a/auto/lib/sha1/make
+++ b/auto/lib/sha1/make
@@ -5,13 +5,13 @@
 
 case "$NGX_CC_NAME" in
 
-    msvc*)
+    msvc)
         ngx_makefile=makefile.msvc
         ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC SHA1_ASM=$SHA1_ASM"
         ngx_sha1="SHA1=\"$SHA1\""
     ;;
 
-    owc*)
+    owc)
         ngx_makefile=makefile.owc
         ngx_opt="CPU_OPT=\"$CPU_OPT\""
         ngx_sha1=`echo SHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"`
diff --git a/auto/lib/zlib/conf b/auto/lib/zlib/conf
index 26db642..239592e 100644
--- a/auto/lib/zlib/conf
+++ b/auto/lib/zlib/conf
@@ -8,13 +8,13 @@
 
     case "$NGX_CC_NAME" in
 
-        msvc* | owc* | bcc)
+        msvc | owc | bcc)
             have=NGX_ZLIB . auto/have
             LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
             CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
         ;;
 
-        icc*)
+        icc)
             have=NGX_ZLIB . auto/have
             LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
 
diff --git a/auto/lib/zlib/make b/auto/lib/zlib/make
index 7875ef6..0082ad5 100644
--- a/auto/lib/zlib/make
+++ b/auto/lib/zlib/make
@@ -5,14 +5,14 @@
 
 case "$NGX_CC_NAME" in
 
-    msvc*)
+    msvc)
         ngx_makefile=makefile.msvc
         ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
         ngx_zlib="ZLIB=\"$ZLIB\""
 
     ;;
 
-    owc*)
+    owc)
         ngx_makefile=makefile.owc
         ngx_opt="CPU_OPT=\"$CPU_OPT\""
         ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`