1*3da8d17dSfengbojiang(姜凤波) 2*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Igor Sysoev 3*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Nginx, Inc. 4*3da8d17dSfengbojiang(姜凤波) 5*3da8d17dSfengbojiang(姜凤波) 6*3da8d17dSfengbojiang(姜凤波)# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10 7*3da8d17dSfengbojiang(姜凤波)# Sun C 5.8 2005/10/13 Sun Studio 11 8*3da8d17dSfengbojiang(姜凤波)# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12 9*3da8d17dSfengbojiang(姜凤波)# Sun C 5.9 SunOS_sparc 2007/05/03 10*3da8d17dSfengbojiang(姜凤波)# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1 11*3da8d17dSfengbojiang(姜凤波)# Sun C 5.11 SunOS_i386 2010/08/13 Oracle Solaris Studio 12.2 12*3da8d17dSfengbojiang(姜凤波)# Sun C 5.12 SunOS_i386 2011/11/16 Oracle Solaris Studio 12.3 13*3da8d17dSfengbojiang(姜凤波)# Sun C 5.13 SunOS_i386 2014/10/20 Oracle Solaris Studio 12.4 14*3da8d17dSfengbojiang(姜凤波)# Sun C 5.14 SunOS_i386 2016/05/31 Oracle Developer Studio 12.5 15*3da8d17dSfengbojiang(姜凤波) 16*3da8d17dSfengbojiang(姜凤波)NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \ 17*3da8d17dSfengbojiang(姜凤波) | sed -e 's/^.* Sun C \(.*\)/\1/'` 18*3da8d17dSfengbojiang(姜凤波) 19*3da8d17dSfengbojiang(姜凤波)echo " + Sun C version: $NGX_SUNC_VER" 20*3da8d17dSfengbojiang(姜凤波) 21*3da8d17dSfengbojiang(姜凤波)have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define 22*3da8d17dSfengbojiang(姜凤波) 23*3da8d17dSfengbojiang(姜凤波) 24*3da8d17dSfengbojiang(姜凤波)cat << END > $NGX_AUTOTEST.c 25*3da8d17dSfengbojiang(姜凤波) 26*3da8d17dSfengbojiang(姜凤波)int main(void) { 27*3da8d17dSfengbojiang(姜凤波) printf("%d", __SUNPRO_C); 28*3da8d17dSfengbojiang(姜凤波) return 0; 29*3da8d17dSfengbojiang(姜凤波)} 30*3da8d17dSfengbojiang(姜凤波) 31*3da8d17dSfengbojiang(姜凤波)END 32*3da8d17dSfengbojiang(姜凤波) 33*3da8d17dSfengbojiang(姜凤波)eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1" 34*3da8d17dSfengbojiang(姜凤波) 35*3da8d17dSfengbojiang(姜凤波)if [ -x $NGX_AUTOTEST ]; then 36*3da8d17dSfengbojiang(姜凤波) ngx_sunc_ver=`$NGX_AUTOTEST` 37*3da8d17dSfengbojiang(姜凤波)fi 38*3da8d17dSfengbojiang(姜凤波) 39*3da8d17dSfengbojiang(姜凤波)rm -rf $NGX_AUTOTEST* 40*3da8d17dSfengbojiang(姜凤波) 41*3da8d17dSfengbojiang(姜凤波)# 1424 == 0x590, Sun Studio 12 42*3da8d17dSfengbojiang(姜凤波) 43*3da8d17dSfengbojiang(姜凤波)if [ "$ngx_sunc_ver" -ge 1424 ]; then 44*3da8d17dSfengbojiang(姜凤波) ngx_sparc32="-m32" 45*3da8d17dSfengbojiang(姜凤波) ngx_sparc64="-m64" 46*3da8d17dSfengbojiang(姜凤波) ngx_amd64="-m64" 47*3da8d17dSfengbojiang(姜凤波) 48*3da8d17dSfengbojiang(姜凤波)else 49*3da8d17dSfengbojiang(姜凤波) ngx_sparc32="-xarch=v8plus" 50*3da8d17dSfengbojiang(姜凤波) ngx_sparc64="-xarch=v9" 51*3da8d17dSfengbojiang(姜凤波) ngx_amd64="-xarch=amd64" 52*3da8d17dSfengbojiang(姜凤波)fi 53*3da8d17dSfengbojiang(姜凤波) 54*3da8d17dSfengbojiang(姜凤波)case "$NGX_MACHINE" in 55*3da8d17dSfengbojiang(姜凤波) 56*3da8d17dSfengbojiang(姜凤波) i86pc) 57*3da8d17dSfengbojiang(姜凤波) NGX_AUX=" src/os/unix/ngx_sunpro_x86.il" 58*3da8d17dSfengbojiang(姜凤波) ;; 59*3da8d17dSfengbojiang(姜凤波) 60*3da8d17dSfengbojiang(姜凤波) sun4u | sun4v) 61*3da8d17dSfengbojiang(姜凤波) NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il" 62*3da8d17dSfengbojiang(姜凤波) ;; 63*3da8d17dSfengbojiang(姜凤波) 64*3da8d17dSfengbojiang(姜凤波)esac 65*3da8d17dSfengbojiang(姜凤波) 66*3da8d17dSfengbojiang(姜凤波)MAIN_LINK= 67*3da8d17dSfengbojiang(姜凤波)MODULE_LINK="-G" 68*3da8d17dSfengbojiang(姜凤波) 69*3da8d17dSfengbojiang(姜凤波) 70*3da8d17dSfengbojiang(姜凤波)# optimizations 71*3da8d17dSfengbojiang(姜凤波) 72*3da8d17dSfengbojiang(姜凤波)# 20736 == 0x5100, Sun Studio 12.1 73*3da8d17dSfengbojiang(姜凤波) 74*3da8d17dSfengbojiang(姜凤波)if [ "$ngx_sunc_ver" -ge 20736 ]; then 75*3da8d17dSfengbojiang(姜凤波) ngx_fast="-fast" 76*3da8d17dSfengbojiang(姜凤波) 77*3da8d17dSfengbojiang(姜凤波)else 78*3da8d17dSfengbojiang(姜凤波) # older versions had problems with bit-fields 79*3da8d17dSfengbojiang(姜凤波) ngx_fast="-fast -xalias_level=any" 80*3da8d17dSfengbojiang(姜凤波)fi 81*3da8d17dSfengbojiang(姜凤波) 82*3da8d17dSfengbojiang(姜凤波)IPO=-xipo 83*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS $ngx_fast $IPO" 84*3da8d17dSfengbojiang(姜凤波)CORE_LINK="$CORE_LINK $ngx_fast $IPO" 85*3da8d17dSfengbojiang(姜凤波) 86*3da8d17dSfengbojiang(姜凤波) 87*3da8d17dSfengbojiang(姜凤波)case $CPU in 88*3da8d17dSfengbojiang(姜凤波) pentium) 89*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium and Athlon 90*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-xchip=pentium" 91*3da8d17dSfengbojiang(姜凤波) ;; 92*3da8d17dSfengbojiang(姜凤波) 93*3da8d17dSfengbojiang(姜凤波) pentiumpro) 94*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium Pro, Pentium II 95*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-xchip=pentium_pro" 96*3da8d17dSfengbojiang(姜凤波) ;; 97*3da8d17dSfengbojiang(姜凤波) 98*3da8d17dSfengbojiang(姜凤波) pentium3) 99*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium III 100*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-xchip=pentium3" 101*3da8d17dSfengbojiang(姜凤波) #CPU_OPT="$CPU_OPT -xarch=sse" 102*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4" 103*3da8d17dSfengbojiang(姜凤波) ;; 104*3da8d17dSfengbojiang(姜凤波) 105*3da8d17dSfengbojiang(姜凤波) pentium4) 106*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium 4 107*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-xchip=pentium4" 108*3da8d17dSfengbojiang(姜凤波) #CPU_OPT="$CPU_OPT -xarch=sse2" 109*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8" 110*3da8d17dSfengbojiang(姜凤波) ;; 111*3da8d17dSfengbojiang(姜凤波) 112*3da8d17dSfengbojiang(姜凤波) opteron) 113*3da8d17dSfengbojiang(姜凤波) # optimize for Opteron 114*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-xchip=opteron" 115*3da8d17dSfengbojiang(姜凤波) #CPU_OPT="$CPU_OPT -xarch=sse2" 116*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16" 117*3da8d17dSfengbojiang(姜凤波) ;; 118*3da8d17dSfengbojiang(姜凤波) 119*3da8d17dSfengbojiang(姜凤波) sparc32) 120*3da8d17dSfengbojiang(姜凤波) # build 32-bit UltraSparc binary 121*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$ngx_sparc32" 122*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK $ngx_sparc32" 123*3da8d17dSfengbojiang(姜凤波) CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32" 124*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 125*3da8d17dSfengbojiang(姜凤波) ;; 126*3da8d17dSfengbojiang(姜凤波) 127*3da8d17dSfengbojiang(姜凤波) sparc64) 128*3da8d17dSfengbojiang(姜凤波) # build 64-bit UltraSparc binary 129*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$ngx_sparc64" 130*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK $ngx_sparc64" 131*3da8d17dSfengbojiang(姜凤波) CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64" 132*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 133*3da8d17dSfengbojiang(姜凤波) ;; 134*3da8d17dSfengbojiang(姜凤波) 135*3da8d17dSfengbojiang(姜凤波) amd64) 136*3da8d17dSfengbojiang(姜凤波) # build 64-bit amd64 binary 137*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$ngx_amd64" 138*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK $ngx_amd64" 139*3da8d17dSfengbojiang(姜凤波) CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64" 140*3da8d17dSfengbojiang(姜凤波) NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il" 141*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 142*3da8d17dSfengbojiang(姜凤波) ;; 143*3da8d17dSfengbojiang(姜凤波) 144*3da8d17dSfengbojiang(姜凤波)esac 145*3da8d17dSfengbojiang(姜凤波) 146*3da8d17dSfengbojiang(姜凤波) 147*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS $CPU_OPT" 148*3da8d17dSfengbojiang(姜凤波) 149*3da8d17dSfengbojiang(姜凤波) 150*3da8d17dSfengbojiang(姜凤波)if [ ".$PCRE_OPT" = "." ]; then 151*3da8d17dSfengbojiang(姜凤波) PCRE_OPT="$ngx_fast $IPO $CPU_OPT" 152*3da8d17dSfengbojiang(姜凤波)fi 153*3da8d17dSfengbojiang(姜凤波) 154*3da8d17dSfengbojiang(姜凤波)if [ ".$ZLIB_OPT" = "." ]; then 155*3da8d17dSfengbojiang(姜凤波) ZLIB_OPT="$ngx_fast $IPO $CPU_OPT" 156*3da8d17dSfengbojiang(姜凤波)fi 157*3da8d17dSfengbojiang(姜凤波) 158*3da8d17dSfengbojiang(姜凤波) 159*3da8d17dSfengbojiang(姜凤波)# stop on warning 160*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -errwarn=%all" 161*3da8d17dSfengbojiang(姜凤波) 162*3da8d17dSfengbojiang(姜凤波)# debug 163*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -g" 164