xref: /f-stack/app/nginx-1.16.1/auto/cc/msvc (revision 3da8d17d)
1*3da8d17dSfengbojiang(姜凤波)
2*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Igor Sysoev
3*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Nginx, Inc.
4*3da8d17dSfengbojiang(姜凤波)
5*3da8d17dSfengbojiang(姜凤波)
6*3da8d17dSfengbojiang(姜凤波)# MSVC 6.0 SP2                            cl 12.00
7*3da8d17dSfengbojiang(姜凤波)# MSVC Toolkit 2003 (7.1)                 cl 13.10
8*3da8d17dSfengbojiang(姜凤波)# MSVC 2005 Express Edition SP1 (8.0)     cl 14.00
9*3da8d17dSfengbojiang(姜凤波)# MSVC 2008 Express Edition (9.0)         cl 15.00
10*3da8d17dSfengbojiang(姜凤波)# MSVC 2010 (10.0)                        cl 16.00
11*3da8d17dSfengbojiang(姜凤波)# MSVC 2015 (14.0)                        cl 19.00
12*3da8d17dSfengbojiang(姜凤波)
13*3da8d17dSfengbojiang(姜凤波)
14*3da8d17dSfengbojiang(姜凤波)NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \
15*3da8d17dSfengbojiang(姜凤波)                                 | sed -e 's/^.* Version \(.*\)/\1/'`
16*3da8d17dSfengbojiang(姜凤波)
17*3da8d17dSfengbojiang(姜凤波)echo " + cl version: $NGX_MSVC_VER"
18*3da8d17dSfengbojiang(姜凤波)
19*3da8d17dSfengbojiang(姜凤波)have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define
20*3da8d17dSfengbojiang(姜凤波)
21*3da8d17dSfengbojiang(姜凤波)
22*3da8d17dSfengbojiang(姜凤波)ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
23*3da8d17dSfengbojiang(姜凤波)
24*3da8d17dSfengbojiang(姜凤波)
25*3da8d17dSfengbojiang(姜凤波)# optimizations
26*3da8d17dSfengbojiang(姜凤波)
27*3da8d17dSfengbojiang(姜凤波)# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
28*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -O2"
29*3da8d17dSfengbojiang(姜凤波)
30*3da8d17dSfengbojiang(姜凤波)# enable global optimization
31*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Og"
32*3da8d17dSfengbojiang(姜凤波)# enable intrinsic functions
33*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Oi"
34*3da8d17dSfengbojiang(姜凤波)
35*3da8d17dSfengbojiang(姜凤波)# disable inline expansion
36*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Ob0"
37*3da8d17dSfengbojiang(姜凤波)# explicit inline expansion
38*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Ob1"
39*3da8d17dSfengbojiang(姜凤波)# explicit and implicit inline expansion
40*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Ob2"
41*3da8d17dSfengbojiang(姜凤波)
42*3da8d17dSfengbojiang(姜凤波)# enable frame pointer omission
43*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Oy"
44*3da8d17dSfengbojiang(姜凤波)# disable stack checking calls
45*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Gs"
46*3da8d17dSfengbojiang(姜凤波)
47*3da8d17dSfengbojiang(姜凤波)# pools strings as read/write
48*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Gf"
49*3da8d17dSfengbojiang(姜凤波)# pools strings as read-only
50*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -GF"
51*3da8d17dSfengbojiang(姜凤波)
52*3da8d17dSfengbojiang(姜凤波)
53*3da8d17dSfengbojiang(姜凤波)case $CPU in
54*3da8d17dSfengbojiang(姜凤波)    pentium)
55*3da8d17dSfengbojiang(姜凤波)        # optimize for Pentium and Athlon
56*3da8d17dSfengbojiang(姜凤波)        CPU_OPT="-G5"
57*3da8d17dSfengbojiang(姜凤波)    ;;
58*3da8d17dSfengbojiang(姜凤波)
59*3da8d17dSfengbojiang(姜凤波)    pentiumpro)
60*3da8d17dSfengbojiang(姜凤波)        # optimize for Pentium Pro, Pentium II and Pentium III
61*3da8d17dSfengbojiang(姜凤波)        CPU_OPT="-G6"
62*3da8d17dSfengbojiang(姜凤波)    ;;
63*3da8d17dSfengbojiang(姜凤波)
64*3da8d17dSfengbojiang(姜凤波)    pentium4)
65*3da8d17dSfengbojiang(姜凤波)        # optimize for Pentium 4, MSVC 7
66*3da8d17dSfengbojiang(姜凤波)        CPU_OPT="-G7"
67*3da8d17dSfengbojiang(姜凤波)    ;;
68*3da8d17dSfengbojiang(姜凤波)esac
69*3da8d17dSfengbojiang(姜凤波)
70*3da8d17dSfengbojiang(姜凤波)# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
71*3da8d17dSfengbojiang(姜凤波)#CPU_OPT="$CPU_OPT -Gd"
72*3da8d17dSfengbojiang(姜凤波)# __stdcall
73*3da8d17dSfengbojiang(姜凤波)#CPU_OPT="$CPU_OPT -Gz"
74*3da8d17dSfengbojiang(姜凤波)# __fastcall
75*3da8d17dSfengbojiang(姜凤波)#CPU_OPT="$CPU_OPT -Gr"
76*3da8d17dSfengbojiang(姜凤波)
77*3da8d17dSfengbojiang(姜凤波)
78*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS $CPU_OPT"
79*3da8d17dSfengbojiang(姜凤波)
80*3da8d17dSfengbojiang(姜凤波)
81*3da8d17dSfengbojiang(姜凤波)# warnings
82*3da8d17dSfengbojiang(姜凤波)
83*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -W4"
84*3da8d17dSfengbojiang(姜凤波)
85*3da8d17dSfengbojiang(姜凤波)# stop on warning
86*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -WX"
87*3da8d17dSfengbojiang(姜凤波)
88*3da8d17dSfengbojiang(姜凤波)# disable logo
89*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -nologo"
90*3da8d17dSfengbojiang(姜凤波)
91*3da8d17dSfengbojiang(姜凤波)# the link flags
92*3da8d17dSfengbojiang(姜凤波)CORE_LINK="$CORE_LINK -link -verbose:lib"
93*3da8d17dSfengbojiang(姜凤波)
94*3da8d17dSfengbojiang(姜凤波)# link with libcmt.lib, multithreaded
95*3da8d17dSfengbojiang(姜凤波)LIBC="-MT"
96*3da8d17dSfengbojiang(姜凤波)# link with msvcrt.dll
97*3da8d17dSfengbojiang(姜凤波)# however, MSVC Toolkit 2003 has no MSVCRT.LIB
98*3da8d17dSfengbojiang(姜凤波)#LIBC="-MD"
99*3da8d17dSfengbojiang(姜凤波)
100*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS $LIBC"
101*3da8d17dSfengbojiang(姜凤波)
102*3da8d17dSfengbojiang(姜凤波)CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
103*3da8d17dSfengbojiang(姜凤波)
104*3da8d17dSfengbojiang(姜凤波)# Win32 GUI mode application
105*3da8d17dSfengbojiang(姜凤波)#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
106*3da8d17dSfengbojiang(姜凤波)
107*3da8d17dSfengbojiang(姜凤波)# debug
108*3da8d17dSfengbojiang(姜凤波)# msvc under Wine issues
109*3da8d17dSfengbojiang(姜凤波)# C1902: Program database manager mismatch; please check your installation
110*3da8d17dSfengbojiang(姜凤波)if [ -z "$NGX_WINE" ]; then
111*3da8d17dSfengbojiang(姜凤波)   CFLAGS="$CFLAGS -Zi -Fd$NGX_OBJS/nginx.pdb"
112*3da8d17dSfengbojiang(姜凤波)   CORE_LINK="$CORE_LINK -debug"
113*3da8d17dSfengbojiang(姜凤波)fi
114*3da8d17dSfengbojiang(姜凤波)
115*3da8d17dSfengbojiang(姜凤波)
116*3da8d17dSfengbojiang(姜凤波)# MSVC 2005 supports C99 variadic macros
117*3da8d17dSfengbojiang(姜凤波)if [ "$ngx_msvc_ver" -ge 14 ]; then
118*3da8d17dSfengbojiang(姜凤波)    have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
119*3da8d17dSfengbojiang(姜凤波)fi
120*3da8d17dSfengbojiang(姜凤波)
121*3da8d17dSfengbojiang(姜凤波)
122*3da8d17dSfengbojiang(姜凤波)# precompiled headers
123*3da8d17dSfengbojiang(姜凤波)CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
124*3da8d17dSfengbojiang(姜凤波)CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
125*3da8d17dSfengbojiang(姜凤波)NGX_PCH="$NGX_OBJS/ngx_config.pch"
126*3da8d17dSfengbojiang(姜凤波)NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
127*3da8d17dSfengbojiang(姜凤波)NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
128*3da8d17dSfengbojiang(姜凤波)
129*3da8d17dSfengbojiang(姜凤波)
130*3da8d17dSfengbojiang(姜凤波)# the resource file
131*3da8d17dSfengbojiang(姜凤波)NGX_RES="$NGX_OBJS/nginx.res"
132*3da8d17dSfengbojiang(姜凤波)NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
133*3da8d17dSfengbojiang(姜凤波)CORE_LINK="$NGX_RES $CORE_LINK"
134*3da8d17dSfengbojiang(姜凤波)
135*3da8d17dSfengbojiang(姜凤波)
136*3da8d17dSfengbojiang(姜凤波)# dynamic modules
137*3da8d17dSfengbojiang(姜凤波)#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
138*3da8d17dSfengbojiang(姜凤波)#MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
139*3da8d17dSfengbojiang(姜凤波)
140*3da8d17dSfengbojiang(姜凤波)
141*3da8d17dSfengbojiang(姜凤波)ngx_pic_opt=
142*3da8d17dSfengbojiang(姜凤波)ngx_objout="-Fo"
143*3da8d17dSfengbojiang(姜凤波)ngx_binout="-Fe"
144*3da8d17dSfengbojiang(姜凤波)ngx_objext="obj"
145*3da8d17dSfengbojiang(姜凤波)
146*3da8d17dSfengbojiang(姜凤波)ngx_long_start='@<<
147*3da8d17dSfengbojiang(姜凤波)	'
148*3da8d17dSfengbojiang(姜凤波)ngx_long_end='<<'
149*3da8d17dSfengbojiang(姜凤波)ngx_long_regex_cont=' \
150*3da8d17dSfengbojiang(姜凤波)	'
151*3da8d17dSfengbojiang(姜凤波)ngx_long_cont='
152*3da8d17dSfengbojiang(姜凤波)	'
153*3da8d17dSfengbojiang(姜凤波)
154*3da8d17dSfengbojiang(姜凤波)# MSVC understand / in path
155*3da8d17dSfengbojiang(姜凤波)#ngx_regex_dirsep='\\'
156*3da8d17dSfengbojiang(姜凤波)#ngx_dirsep="\\"
157