xref: /f-stack/app/nginx-1.16.1/auto/cc/gcc (revision 3da8d17d)
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