mirror of
https://github.com/nginx/nginx.git
synced 2024-12-19 08:27:50 +08:00
4cfd9ba3c1
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.
158 lines
3.2 KiB
Plaintext
158 lines
3.2 KiB
Plaintext
|
|
# Copyright (C) Igor Sysoev
|
|
# Copyright (C) Nginx, Inc.
|
|
|
|
|
|
# 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
|
|
|
|
# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
|
|
CFLAGS="$CFLAGS -O2"
|
|
|
|
# enable global optimization
|
|
#CFLAGS="$CFLAGS -Og"
|
|
# enable intrinsic functions
|
|
#CFLAGS="$CFLAGS -Oi"
|
|
|
|
# disable inline expansion
|
|
#CFLAGS="$CFLAGS -Ob0"
|
|
# explicit inline expansion
|
|
#CFLAGS="$CFLAGS -Ob1"
|
|
# explicit and implicit inline expansion
|
|
#CFLAGS="$CFLAGS -Ob2"
|
|
|
|
# enable frame pointer omission
|
|
#CFLAGS="$CFLAGS -Oy"
|
|
# disable stack checking calls
|
|
#CFLAGS="$CFLAGS -Gs"
|
|
|
|
# pools strings as read/write
|
|
#CFLAGS="$CFLAGS -Gf"
|
|
# pools strings as read-only
|
|
#CFLAGS="$CFLAGS -GF"
|
|
|
|
|
|
case $CPU in
|
|
pentium)
|
|
# 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, MSVC 7
|
|
CPU_OPT="-G7"
|
|
;;
|
|
esac
|
|
|
|
# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
|
|
#CPU_OPT="$CPU_OPT -Gd"
|
|
# __stdcall
|
|
#CPU_OPT="$CPU_OPT -Gz"
|
|
# __fastcall
|
|
#CPU_OPT="$CPU_OPT -Gr"
|
|
|
|
|
|
CFLAGS="$CFLAGS $CPU_OPT"
|
|
|
|
|
|
# warnings
|
|
|
|
CFLAGS="$CFLAGS -W4"
|
|
|
|
# stop on warning
|
|
CFLAGS="$CFLAGS -WX"
|
|
|
|
# disable logo
|
|
CFLAGS="$CFLAGS -nologo"
|
|
|
|
# the link flags
|
|
CORE_LINK="$CORE_LINK -link -verbose:lib"
|
|
|
|
# link with libcmt.lib, multithreaded
|
|
LIBC="-MT"
|
|
# link with msvcrt.dll
|
|
# however, MSVC Toolkit 2003 has no MSVCRT.LIB
|
|
#LIBC="-MD"
|
|
|
|
CFLAGS="$CFLAGS $LIBC"
|
|
|
|
CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
|
|
|
|
# Win32 GUI mode application
|
|
#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
|
|
|
|
# debug
|
|
# 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_msvc_ver" -ge 14 ]; then
|
|
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
|
|
fi
|
|
|
|
|
|
# precompiled headers
|
|
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
|
|
CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
|
|
NGX_PCH="$NGX_OBJS/ngx_config.pch"
|
|
NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
|
NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
|
|
|
|
|
# the resource file
|
|
NGX_RES="$NGX_OBJS/nginx.res"
|
|
NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
|
|
CORE_LINK="$NGX_RES $CORE_LINK"
|
|
|
|
|
|
# dynamic modules
|
|
#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
|
|
#MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
|
|
|
|
|
|
ngx_pic_opt=
|
|
ngx_objout="-Fo"
|
|
ngx_binout="-Fe"
|
|
ngx_objext="obj"
|
|
ngx_binext=".exe"
|
|
|
|
ngx_long_start='@<<
|
|
'
|
|
ngx_long_end='<<'
|
|
ngx_long_regex_cont=' \
|
|
'
|
|
ngx_long_cont='
|
|
'
|
|
|
|
# MSVC understand / in path
|
|
#ngx_regex_dirsep='\\'
|
|
#ngx_dirsep="\\"
|