1*3da8d17dSfengbojiang(姜凤波) 2*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Igor Sysoev 3*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Nginx, Inc. 4*3da8d17dSfengbojiang(姜凤波) 5*3da8d17dSfengbojiang(姜凤波) 6*3da8d17dSfengbojiang(姜凤波)# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 7*3da8d17dSfengbojiang(姜凤波)# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2 8*3da8d17dSfengbojiang(姜凤波)# 4.0.0, 4.0.1, 4.1.0 9*3da8d17dSfengbojiang(姜凤波) 10*3da8d17dSfengbojiang(姜凤波) 11*3da8d17dSfengbojiang(姜凤波)NGX_GCC_VER=`$CC -v 2>&1 | grep 'gcc version' 2>&1 \ 12*3da8d17dSfengbojiang(姜凤波) | sed -e 's/^.* version \(.*\)/\1/'` 13*3da8d17dSfengbojiang(姜凤波) 14*3da8d17dSfengbojiang(姜凤波)echo " + gcc version: $NGX_GCC_VER" 15*3da8d17dSfengbojiang(姜凤波) 16*3da8d17dSfengbojiang(姜凤波)have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define 17*3da8d17dSfengbojiang(姜凤波) 18*3da8d17dSfengbojiang(姜凤波) 19*3da8d17dSfengbojiang(姜凤波)# Solaris 7's /usr/ccs/bin/as does not support "-pipe" 20*3da8d17dSfengbojiang(姜凤波) 21*3da8d17dSfengbojiang(姜凤波)CC_TEST_FLAGS="-pipe" 22*3da8d17dSfengbojiang(姜凤波) 23*3da8d17dSfengbojiang(姜凤波)ngx_feature="gcc -pipe switch" 24*3da8d17dSfengbojiang(姜凤波)ngx_feature_name= 25*3da8d17dSfengbojiang(姜凤波)ngx_feature_run=no 26*3da8d17dSfengbojiang(姜凤波)ngx_feature_incs= 27*3da8d17dSfengbojiang(姜凤波)ngx_feature_path= 28*3da8d17dSfengbojiang(姜凤波)ngx_feature_libs= 29*3da8d17dSfengbojiang(姜凤波)ngx_feature_test= 30*3da8d17dSfengbojiang(姜凤波). auto/feature 31*3da8d17dSfengbojiang(姜凤波) 32*3da8d17dSfengbojiang(姜凤波)CC_TEST_FLAGS= 33*3da8d17dSfengbojiang(姜凤波) 34*3da8d17dSfengbojiang(姜凤波)if [ $ngx_found = yes ]; then 35*3da8d17dSfengbojiang(姜凤波) PIPE="-pipe" 36*3da8d17dSfengbojiang(姜凤波)fi 37*3da8d17dSfengbojiang(姜凤波) 38*3da8d17dSfengbojiang(姜凤波) 39*3da8d17dSfengbojiang(姜凤波)case "$NGX_MACHINE" in 40*3da8d17dSfengbojiang(姜凤波) 41*3da8d17dSfengbojiang(姜凤波) sun4u | sun4v | sparc | sparc64 ) 42*3da8d17dSfengbojiang(姜凤波) # "-mcpu=v9" enables the "casa" assembler instruction 43*3da8d17dSfengbojiang(姜凤波) CFLAGS="$CFLAGS -mcpu=v9" 44*3da8d17dSfengbojiang(姜凤波) ;; 45*3da8d17dSfengbojiang(姜凤波) 46*3da8d17dSfengbojiang(姜凤波)esac 47*3da8d17dSfengbojiang(姜凤波) 48*3da8d17dSfengbojiang(姜凤波) 49*3da8d17dSfengbojiang(姜凤波)# optimizations 50*3da8d17dSfengbojiang(姜凤波) 51*3da8d17dSfengbojiang(姜凤波)#NGX_GCC_OPT="-O2" 52*3da8d17dSfengbojiang(姜凤波)NGX_GCC_OPT="-Os" 53*3da8d17dSfengbojiang(姜凤波)#NGX_GCC_OPT="-O" 54*3da8d17dSfengbojiang(姜凤波) 55*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -fomit-frame-pointer" 56*3da8d17dSfengbojiang(姜凤波) 57*3da8d17dSfengbojiang(姜凤波)case $CPU in 58*3da8d17dSfengbojiang(姜凤波) pentium) 59*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium and Athlon 60*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-march=pentium" 61*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=32 62*3da8d17dSfengbojiang(姜凤波) ;; 63*3da8d17dSfengbojiang(姜凤波) 64*3da8d17dSfengbojiang(姜凤波) pentiumpro | pentium3) 65*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium Pro, Pentium II and Pentium III 66*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-march=pentiumpro" 67*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=32 68*3da8d17dSfengbojiang(姜凤波) ;; 69*3da8d17dSfengbojiang(姜凤波) 70*3da8d17dSfengbojiang(姜凤波) pentium4) 71*3da8d17dSfengbojiang(姜凤波) # optimize for Pentium 4, gcc 3.x 72*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-march=pentium4" 73*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=128 74*3da8d17dSfengbojiang(姜凤波) ;; 75*3da8d17dSfengbojiang(姜凤波) 76*3da8d17dSfengbojiang(姜凤波) athlon) 77*3da8d17dSfengbojiang(姜凤波) # optimize for Athlon, gcc 3.x 78*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-march=athlon" 79*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 80*3da8d17dSfengbojiang(姜凤波) ;; 81*3da8d17dSfengbojiang(姜凤波) 82*3da8d17dSfengbojiang(姜凤波) opteron) 83*3da8d17dSfengbojiang(姜凤波) # optimize for Opteron, gcc 3.x 84*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-march=opteron" 85*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 86*3da8d17dSfengbojiang(姜凤波) ;; 87*3da8d17dSfengbojiang(姜凤波) 88*3da8d17dSfengbojiang(姜凤波) sparc32) 89*3da8d17dSfengbojiang(姜凤波) # build 32-bit UltraSparc binary 90*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-m32" 91*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK -m32" 92*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 93*3da8d17dSfengbojiang(姜凤波) ;; 94*3da8d17dSfengbojiang(姜凤波) 95*3da8d17dSfengbojiang(姜凤波) sparc64) 96*3da8d17dSfengbojiang(姜凤波) # build 64-bit UltraSparc binary 97*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-m64" 98*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK -m64" 99*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=64 100*3da8d17dSfengbojiang(姜凤波) ;; 101*3da8d17dSfengbojiang(姜凤波) 102*3da8d17dSfengbojiang(姜凤波) ppc64) 103*3da8d17dSfengbojiang(姜凤波) # build 64-bit PowerPC binary 104*3da8d17dSfengbojiang(姜凤波) CPU_OPT="-m64" 105*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32" 106*3da8d17dSfengbojiang(姜凤波) CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32" 107*3da8d17dSfengbojiang(姜凤波) CORE_LINK="$CORE_LINK -m64" 108*3da8d17dSfengbojiang(姜凤波) NGX_CPU_CACHE_LINE=128 109*3da8d17dSfengbojiang(姜凤波) ;; 110*3da8d17dSfengbojiang(姜凤波) 111*3da8d17dSfengbojiang(姜凤波)esac 112*3da8d17dSfengbojiang(姜凤波) 113*3da8d17dSfengbojiang(姜凤波)CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT" 114*3da8d17dSfengbojiang(姜凤波) 115*3da8d17dSfengbojiang(姜凤波)case "$NGX_GCC_VER" in 116*3da8d17dSfengbojiang(姜凤波) 2.7*) 117*3da8d17dSfengbojiang(姜凤波) # batch build 118*3da8d17dSfengbojiang(姜凤波) CPU_OPT= 119*3da8d17dSfengbojiang(姜凤波) ;; 120*3da8d17dSfengbojiang(姜凤波)esac 121*3da8d17dSfengbojiang(姜凤波) 122*3da8d17dSfengbojiang(姜凤波) 123*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS $PIPE $CPU_OPT" 124*3da8d17dSfengbojiang(姜凤波) 125*3da8d17dSfengbojiang(姜凤波)if [ ".$PCRE_OPT" = "." ]; then 126*3da8d17dSfengbojiang(姜凤波) PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" 127*3da8d17dSfengbojiang(姜凤波)else 128*3da8d17dSfengbojiang(姜凤波) PCRE_OPT="$PCRE_OPT $PIPE" 129*3da8d17dSfengbojiang(姜凤波)fi 130*3da8d17dSfengbojiang(姜凤波) 131*3da8d17dSfengbojiang(姜凤波)if [ ".$ZLIB_OPT" = "." ]; then 132*3da8d17dSfengbojiang(姜凤波) ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT" 133*3da8d17dSfengbojiang(姜凤波)else 134*3da8d17dSfengbojiang(姜凤波) ZLIB_OPT="$ZLIB_OPT $PIPE" 135*3da8d17dSfengbojiang(姜凤波)fi 136*3da8d17dSfengbojiang(姜凤波) 137*3da8d17dSfengbojiang(姜凤波) 138*3da8d17dSfengbojiang(姜凤波)# warnings 139*3da8d17dSfengbojiang(姜凤波) 140*3da8d17dSfengbojiang(姜凤波)# -W requires at least -O 141*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W" 142*3da8d17dSfengbojiang(姜凤波) 143*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -Wall -Wpointer-arith" 144*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Wconversion" 145*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Winline" 146*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -Wmissing-prototypes" 147*3da8d17dSfengbojiang(姜凤波) 148*3da8d17dSfengbojiang(姜凤波)case "$NGX_GCC_VER" in 149*3da8d17dSfengbojiang(姜凤波) 2.*) 150*3da8d17dSfengbojiang(姜凤波) # we have a lot of the unused function arguments 151*3da8d17dSfengbojiang(姜凤波) CFLAGS="$CFLAGS -Wno-unused" 152*3da8d17dSfengbojiang(姜凤波) ;; 153*3da8d17dSfengbojiang(姜凤波) 154*3da8d17dSfengbojiang(姜凤波) *) 155*3da8d17dSfengbojiang(姜凤波) # we have a lot of the unused function arguments 156*3da8d17dSfengbojiang(姜凤波) CFLAGS="$CFLAGS -Wno-unused-parameter" 157*3da8d17dSfengbojiang(姜凤波) # 4.2.1 shows the warning in wrong places 158*3da8d17dSfengbojiang(姜凤波) #CFLAGS="$CFLAGS -Wunreachable-code" 159*3da8d17dSfengbojiang(姜凤波) 160*3da8d17dSfengbojiang(姜凤波) # deprecated system OpenSSL library on OS X 161*3da8d17dSfengbojiang(姜凤波) if [ "$NGX_SYSTEM" = "Darwin" ]; then 162*3da8d17dSfengbojiang(姜凤波) CFLAGS="$CFLAGS -Wno-deprecated-declarations" 163*3da8d17dSfengbojiang(姜凤波) fi 164*3da8d17dSfengbojiang(姜凤波) ;; 165*3da8d17dSfengbojiang(姜凤波)esac 166*3da8d17dSfengbojiang(姜凤波) 167*3da8d17dSfengbojiang(姜凤波) 168*3da8d17dSfengbojiang(姜凤波)# stop on warning 169*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -Werror" 170*3da8d17dSfengbojiang(姜凤波) 171*3da8d17dSfengbojiang(姜凤波)# debug 172*3da8d17dSfengbojiang(姜凤波)CFLAGS="$CFLAGS -g" 173*3da8d17dSfengbojiang(姜凤波) 174*3da8d17dSfengbojiang(姜凤波)# DragonFly's gcc3 generates DWARF 175*3da8d17dSfengbojiang(姜凤波)#CFLAGS="$CFLAGS -g -gstabs" 176*3da8d17dSfengbojiang(姜凤波) 177*3da8d17dSfengbojiang(姜凤波)if [ ".$CPP" = "." ]; then 178*3da8d17dSfengbojiang(姜凤波) CPP="$CC -E" 179*3da8d17dSfengbojiang(姜凤波)fi 180