Welcome! Log In Create A New Profile

Advanced

[nginx] Win32: simplified and improved handling of MSVC versions.

Maxim Dounin
February 13, 2016 12:02AM
details: http://hg.nginx.org/nginx/rev/78f8ac479735
branches:
changeset: 6397:78f8ac479735
user: Maxim Dounin <mdounin@mdounin.ru>
date: Sat Feb 13 06:47:34 2016 +0300
description:
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.

diffstat:

auto/cc/msvc | 31 +++++++++++++++++++++++--------
auto/cc/name | 27 ++-------------------------
auto/lib/md5/conf | 4 ++--
auto/lib/md5/make | 4 ++--
auto/lib/pcre/conf | 4 ++--
auto/lib/pcre/make | 4 ++--
auto/lib/sha1/conf | 4 ++--
auto/lib/sha1/make | 4 ++--
auto/lib/zlib/conf | 4 ++--
auto/lib/zlib/make | 4 ++--
10 files changed, 41 insertions(+), 49 deletions(-)

diffs (244 lines):

diff --git a/auto/cc/msvc b/auto/cc/msvc
--- 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 user3
#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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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"`

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Win32: simplified and improved handling of MSVC versions.

Maxim Dounin 831 February 13, 2016 12:02AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 138
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready