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