blob: 0d7e2b2a7b2ea0cf0d7fdd778879c9b93c7caf3d [file] [log] [blame]
Igor Sysoev78452232005-10-12 13:50:36 +00001
2# Copyright (C) Igor Sysoev
3
4
Igor Sysoevd3cdbc82007-07-16 08:54:04 +00005# 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
Igor Sysoev78452232005-10-12 13:50:36 +00009
10NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
Igor Sysoev2bdefc12006-09-18 12:27:33 +000011 | sed -e 's/^.* Sun C \(.*\)/\1/'`
Igor Sysoev78452232005-10-12 13:50:36 +000012
13echo " + Sun C version: $NGX_SUNC_VER"
14
15have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
16
17
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000018cat << END > $NGX_AUTOTEST.c
19
20int main() { printf("%d", __SUNPRO_C); }
21
22END
23
24eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
25
26if [ -x $NGX_AUTOTEST ]; then
27 ngx_sunc_ver=`$NGX_AUTOTEST`
28fi
29
30rm $NGX_AUTOTEST*
31
32# 1424 == 0x590, Sun Studio 12
33
34if [ "$ngx_sunc_ver" -ge 1424 ]; then
35 ngx_sparc32="-m32"
36 ngx_sparc64="-m64"
37 ngx_amd64="-m64"
38
39else
40 ngx_sparc32="-xarch=v8plus"
41 ngx_sparc64="-xarch=v9"
Igor Sysoev07c1f2f2007-07-28 08:48:12 +000042 ngx_amd64="-xarch=amd64"
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000043fi
44
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000045case "$NGX_MACHINE" in
Igor Sysoev78452232005-10-12 13:50:36 +000046
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000047 i86pc)
Igor Sysoev2bdefc12006-09-18 12:27:33 +000048 ngx_feature="PAUSE hardware capability bug"
49 ngx_feature_name=
50 ngx_feature_run=bug
51 ngx_feature_incs=
Igor Sysoev0ec09f92006-11-27 11:07:09 +000052 ngx_feature_path=
Igor Sysoev2bdefc12006-09-18 12:27:33 +000053 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
Igor Sysoev8f4a18f2006-09-15 19:33:55 +000062
Igor Sysoev78452232005-10-12 13:50:36 +000063 NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
64 ;;
65
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000066 sun4u | sun4v)
Igor Sysoev78452232005-10-12 13:50:36 +000067 NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
68 ;;
69
70esac
71
72
73# optimizations
74
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000075IPO=-xipo
76CFLAGS="$CFLAGS -fast $IPO"
Igor Sysoevaa5c0212007-07-21 06:23:58 +000077CORE_LINK="$CORE_LINK -fast $IPO"
Igor Sysoev78452232005-10-12 13:50:36 +000078
79
80case $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
Igor Sysoevde27bce2007-07-15 20:09:14 +0000112 sparc32)
113 # build 32-bit UltraSparc binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000114 CPU_OPT="$ngx_sparc32"
115 CORE_LINK="$CORE_LINK $ngx_sparc32"
116 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
Igor Sysoevde27bce2007-07-15 20:09:14 +0000117 NGX_CPU_CACHE_LINE=64
118 ;;
119
120 sparc64)
121 # build 64-bit UltraSparc binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000122 CPU_OPT="$ngx_sparc64"
123 CORE_LINK="$CORE_LINK $ngx_sparc64"
124 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
Igor Sysoevde27bce2007-07-15 20:09:14 +0000125 NGX_CPU_CACHE_LINE=64
126 ;;
127
Igor Sysoev78452232005-10-12 13:50:36 +0000128 amd64)
129 # build 64-bit amd64 binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000130 CPU_OPT="$ngx_amd64"
131 CORE_LINK="$CORE_LINK $ngx_amd64"
Igor Sysoevaa5c0212007-07-21 06:23:58 +0000132 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
Igor Sysoev78452232005-10-12 13:50:36 +0000133 NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000134 NGX_CPU_CACHE_LINE=64
Igor Sysoev78452232005-10-12 13:50:36 +0000135 ;;
136
137esac
138
139
140CFLAGS="$CFLAGS $CPU_OPT"
141
142
143if [ ".$PCRE_OPT" = "." ]; then
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000144 PCRE_OPT="-fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000145fi
146
147if [ ".$MD5_OPT" = "." ]; then
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000148 MD5_OPT="-fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000149fi
150
151if [ ".$ZLIB_OPT" = "." ]; then
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000152 ZLIB_OPT="-fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000153fi
154
155
156# stop on warning
157CFLAGS="$CFLAGS -errwarn=%all"
Igor Sysoevc92483b2007-08-07 10:56:45 +0000158
159# debug
160CFLAGS="$CFLAGS -g"