blob: 4eef101059390eb0797f482d30cd949c8eb33b58 [file] [log] [blame]
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00001
2# Copyright (C) Igor Sysoev
Maxim Konovalovf8d59e32012-01-18 15:07:43 +00003# Copyright (C) Nginx, Inc.
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00004
5
Maxim Dounine98db542016-02-13 06:47:34 +03006# MSVC 6.0 SP2 cl 12.00
7# MSVC Toolkit 2003 (7.1) cl 13.10
8# MSVC 2005 Express Edition SP1 (8.0) cl 14.00
9# MSVC 2008 Express Edition (9.0) cl 15.00
10# MSVC 2010 (10.0) cl 16.00
11# MSVC 2015 (14.0) cl 19.00
12
13
14NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \
15 | sed -e 's/^.* Version \(.*\)/\1/'`
16
17echo " + cl version: $NGX_MSVC_VER"
18
19have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define
20
21
22ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
23
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000024
25# optimizations
26
Igor Sysoev899b44e2005-05-12 14:58:06 +000027# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000028CFLAGS="$CFLAGS -O2"
Igor Sysoev899b44e2005-05-12 14:58:06 +000029
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000030# enable global optimization
Igor Sysoev899b44e2005-05-12 14:58:06 +000031#CFLAGS="$CFLAGS -Og"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000032# enable intrinsic functions
Igor Sysoev899b44e2005-05-12 14:58:06 +000033#CFLAGS="$CFLAGS -Oi"
34
35# disable inline expansion
36#CFLAGS="$CFLAGS -Ob0"
37# explicit inline expansion
38#CFLAGS="$CFLAGS -Ob1"
39# explicit and implicit inline expansion
40#CFLAGS="$CFLAGS -Ob2"
41
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000042# enable frame pointer omission
Igor Sysoev899b44e2005-05-12 14:58:06 +000043#CFLAGS="$CFLAGS -Oy"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000044# disable stack checking calls
Igor Sysoev899b44e2005-05-12 14:58:06 +000045#CFLAGS="$CFLAGS -Gs"
46
47# pools strings as read/write
48#CFLAGS="$CFLAGS -Gf"
49# pools strings as read-only
50#CFLAGS="$CFLAGS -GF"
51
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000052
53case $CPU in
54 pentium)
55 # optimize for Pentium and Athlon
56 CPU_OPT="-G5"
57 ;;
58
59 pentiumpro)
60 # optimize for Pentium Pro, Pentium II and Pentium III
61 CPU_OPT="-G6"
62 ;;
63
64 pentium4)
Igor Sysoev1b735832004-11-11 14:07:14 +000065 # optimize for Pentium 4, MSVC 7
66 CPU_OPT="-G7"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000067 ;;
68esac
69
Igor Sysoev60798fb2009-04-15 19:46:24 +000070# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
Igor Sysoevd3283ff2005-12-05 13:18:09 +000071#CPU_OPT="$CPU_OPT -Gd"
Igor Sysoev4d656dc2005-03-22 16:02:46 +000072# __stdcall
73#CPU_OPT="$CPU_OPT -Gz"
74# __fastcall
Igor Sysoev60798fb2009-04-15 19:46:24 +000075#CPU_OPT="$CPU_OPT -Gr"
Igor Sysoev4d656dc2005-03-22 16:02:46 +000076
77
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000078CFLAGS="$CFLAGS $CPU_OPT"
79
80
81# warnings
82
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000083CFLAGS="$CFLAGS -W4"
84
85# stop on warning
86CFLAGS="$CFLAGS -WX"
87
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000088# disable logo
89CFLAGS="$CFLAGS -nologo"
90
Igor Sysoev1b735832004-11-11 14:07:14 +000091# the link flags
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000092CORE_LINK="$CORE_LINK -link -verbose:lib"
93
Igor Sysoev32ab2f72009-04-01 12:58:31 +000094# link with libcmt.lib, multithreaded
95LIBC="-MT"
96# link with msvcrt.dll
97# however, MSVC Toolkit 2003 has no MSVCRT.LIB
98#LIBC="-MD"
Igor Sysoev1b735832004-11-11 14:07:14 +000099
100CFLAGS="$CFLAGS $LIBC"
101
Igor Sysoev1b735832004-11-11 14:07:14 +0000102CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
Igor Sysoevbd919992009-04-20 06:08:47 +0000103
104# Win32 GUI mode application
105#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
Igor Sysoev1b735832004-11-11 14:07:14 +0000106
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000107# debug
Maxim Dounine98db542016-02-13 06:47:34 +0300108# msvc under Wine issues
109# C1902: Program database manager mismatch; please check your installation
110if [ -z "$NGX_WINE" ]; then
Igor Sysoeva7e01da2007-11-15 14:22:12 +0000111 CFLAGS="$CFLAGS -Zi"
112 CORE_LINK="$CORE_LINK -debug"
113fi
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000114
Igor Sysoev1b735832004-11-11 14:07:14 +0000115
Igor Sysoev694bdea2009-04-19 16:25:02 +0000116# MSVC 2005 supports C99 variadic macros
Maxim Dounine98db542016-02-13 06:47:34 +0300117if [ "$ngx_msvc_ver" -ge 14 ]; then
118 have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
Igor Sysoev694bdea2009-04-19 16:25:02 +0000119fi
120
121
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000122# precompiled headers
Igor Sysoeva1010482007-11-15 10:25:30 +0000123CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
Maxim Dounin876a3c92014-04-07 18:29:05 +0400124CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
Igor Sysoeva1010482007-11-15 10:25:30 +0000125NGX_PCH="$NGX_OBJS/ngx_config.pch"
126NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
127NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
Igor Sysoev1b735832004-11-11 14:07:14 +0000128
129
130# the resource file
Igor Sysoevf6906042004-11-25 16:17:31 +0000131NGX_RES="$NGX_OBJS/nginx.res"
Igor Sysoev1b735832004-11-11 14:07:14 +0000132NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
133CORE_LINK="$NGX_RES $CORE_LINK"
134
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000135
Maxim Dounince1c3bd2016-02-04 20:25:29 +0300136# dynamic modules
137#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
138#MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
139
140
141ngx_pic_opt=
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000142ngx_objout="-Fo"
143ngx_binout="-Fe"
144ngx_objext="obj"
145ngx_binext=".exe"
146
Igor Sysoev98c4dd72009-05-10 18:35:08 +0000147ngx_long_start='@<<
Igor Sysoevd921c102009-05-28 14:33:37 +0000148 '
Igor Sysoev98c4dd72009-05-10 18:35:08 +0000149ngx_long_end='<<'
150ngx_long_regex_cont=' \
Igor Sysoev09c684b2005-11-09 17:25:55 +0000151 '
Igor Sysoev98c4dd72009-05-10 18:35:08 +0000152ngx_long_cont='
Igor Sysoev09c684b2005-11-09 17:25:55 +0000153 '
Igor Sysoev8a2b2fb2006-04-14 09:53:38 +0000154
Igor Sysoev94e32ce2006-04-07 14:08:04 +0000155# MSVC understand / in path
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000156#ngx_regex_dirsep='\\'
157#ngx_dirsep="\\"