changeset 6397:78f8ac479735

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 13 Feb 2016 06:47:34 +0300
parents dcfe355dfda4
children c8491e096e13
files auto/cc/msvc auto/cc/name auto/lib/md5/conf auto/lib/md5/make auto/lib/pcre/conf auto/lib/pcre/make auto/lib/sha1/conf auto/lib/sha1/make auto/lib/zlib/conf auto/lib/zlib/make
diffstat 10 files changed, 41 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/auto/cc/msvc	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/cc/msvc	Sat Feb 13 06:47:34 2016 +0300
@@ -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
 
 
--- a/auto/cc/name	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/cc/name	Sat Feb 13 06:47:34 2016 +0300
@@ -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
--- a/auto/lib/md5/conf	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/md5/conf	Sat Feb 13 06:47:34 2016 +0300
@@ -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
--- a/auto/lib/md5/make	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/md5/make	Sat Feb 13 06:47:34 2016 +0300
@@ -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"`
--- a/auto/lib/pcre/conf	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/pcre/conf	Sat Feb 13 06:47:34 2016 +0300
@@ -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"
 
--- a/auto/lib/pcre/make	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/pcre/make	Sat Feb 13 06:47:34 2016 +0300
@@ -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"`
--- a/auto/lib/sha1/conf	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/sha1/conf	Sat Feb 13 06:47:34 2016 +0300
@@ -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
--- a/auto/lib/sha1/make	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/sha1/make	Sat Feb 13 06:47:34 2016 +0300
@@ -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"`
--- a/auto/lib/zlib/conf	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/zlib/conf	Sat Feb 13 06:47:34 2016 +0300
@@ -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"
 
--- a/auto/lib/zlib/make	Fri Feb 12 16:36:20 2016 +0300
+++ b/auto/lib/zlib/make	Sat Feb 13 06:47:34 2016 +0300
@@ -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"`