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