aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2016-02-13 06:47:34 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2016-02-13 06:47:34 +0300
commit4cfd9ba3c18932a47eca176a79da31455e444cc3 (patch)
tree62f3402c03581ee03d136d53aa31f8f9be0a0f43
parent822fc91b093b85a94ca54fc8c7e2d85fc5a4daf8 (diff)
downloadnginx-4cfd9ba3c18932a47eca176a79da31455e444cc3.tar.gz
nginx-4cfd9ba3c18932a47eca176a79da31455e444cc3.zip
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.
-rw-r--r--auto/cc/msvc31
-rw-r--r--auto/cc/name27
-rw-r--r--auto/lib/md5/conf4
-rw-r--r--auto/lib/md5/make4
-rw-r--r--auto/lib/pcre/conf4
-rw-r--r--auto/lib/pcre/make4
-rw-r--r--auto/lib/sha1/conf4
-rw-r--r--auto/lib/sha1/make4
-rw-r--r--auto/lib/zlib/conf4
-rw-r--r--auto/lib/zlib/make4
10 files changed, 41 insertions, 49 deletions
diff --git a/auto/cc/msvc b/auto/cc/msvc
index e588c487f..4eef10105 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_LIBS="$CORE_LIBS kernel32.lib user32.lib"
#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 51a7ed92e..35d319e61 100644
--- a/auto/cc/name
+++ b/auto/cc/name
@@ -25,31 +25,8 @@ fi
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 eb5dfd1f2..49c0ddfdd 100644
--- a/auto/lib/md5/conf
+++ b/auto/lib/md5/conf
@@ -20,12 +20,12 @@ if [ $MD5 != NONE ]; then
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 81f138ab6..7000b204f 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 939f01b77..5e3960fea 100644
--- a/auto/lib/pcre/conf
+++ b/auto/lib/pcre/conf
@@ -8,7 +8,7 @@ if [ $PCRE != NONE ]; then
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 @@ if [ $PCRE != NONE ]; then
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 0a27a112c..97c9f3ba0 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 fd69afda2..78f9efd98 100644
--- a/auto/lib/sha1/conf
+++ b/auto/lib/sha1/conf
@@ -10,12 +10,12 @@ if [ $SHA1 != NONE ]; then
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 fc10aaef3..fc3b340b2 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 26db642ac..239592e3c 100644
--- a/auto/lib/zlib/conf
+++ b/auto/lib/zlib/conf
@@ -8,13 +8,13 @@ if [ $ZLIB != NONE ]; then
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 7875ef67f..0082ad584 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"`