blob: 8f12d7cd7fe0c2df958581b7c6947436675e3adb [file] [log] [blame]
Igor Sysoev78452232005-10-12 13:50:36 +00001
2# Copyright (C) Igor Sysoev
Maxim Konovalovf8d59e32012-01-18 15:07:43 +00003# Copyright (C) Nginx, Inc.
Igor Sysoev78452232005-10-12 13:50:36 +00004
5
Igor Sysoevd3cdbc82007-07-16 08:54:04 +00006# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10
7# Sun C 5.8 2005/10/13 Sun Studio 11
8# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
9# Sun C 5.9 SunOS_sparc 2007/05/03
Maxim Dounin950b6682011-08-18 15:10:23 +000010# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1
11# Sun C 5.11 SunOS_i386 2010/08/13 Sun Studio 12.2
Igor Sysoev78452232005-10-12 13:50:36 +000012
13NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
Igor Sysoev2bdefc12006-09-18 12:27:33 +000014 | sed -e 's/^.* Sun C \(.*\)/\1/'`
Igor Sysoev78452232005-10-12 13:50:36 +000015
16echo " + Sun C version: $NGX_SUNC_VER"
17
18have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
19
20
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000021cat << END > $NGX_AUTOTEST.c
22
23int main() { printf("%d", __SUNPRO_C); }
24
25END
26
27eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
28
29if [ -x $NGX_AUTOTEST ]; then
30 ngx_sunc_ver=`$NGX_AUTOTEST`
31fi
32
Sergey Kandaurovce36edf2013-07-31 18:16:40 +040033rm -rf $NGX_AUTOTEST*
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000034
35# 1424 == 0x590, Sun Studio 12
36
37if [ "$ngx_sunc_ver" -ge 1424 ]; then
38 ngx_sparc32="-m32"
39 ngx_sparc64="-m64"
40 ngx_amd64="-m64"
41
42else
43 ngx_sparc32="-xarch=v8plus"
44 ngx_sparc64="-xarch=v9"
Igor Sysoev07c1f2f2007-07-28 08:48:12 +000045 ngx_amd64="-xarch=amd64"
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000046fi
47
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000048case "$NGX_MACHINE" in
Igor Sysoev78452232005-10-12 13:50:36 +000049
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000050 i86pc)
Igor Sysoev78452232005-10-12 13:50:36 +000051 NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
52 ;;
53
Igor Sysoev6c5c4d02006-10-05 20:06:03 +000054 sun4u | sun4v)
Igor Sysoev78452232005-10-12 13:50:36 +000055 NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
56 ;;
57
58esac
59
60
61# optimizations
62
Maxim Dounin950b6682011-08-18 15:10:23 +000063# 20736 == 0x5100, Sun Studio 12.1
64
65if [ "$ngx_sunc_ver" -ge 20736 ]; then
66 ngx_fast="-fast"
67
68else
69 # older versions had problems with bit-fields
70 ngx_fast="-fast -xalias_level=any"
71fi
72
Igor Sysoevd3cdbc82007-07-16 08:54:04 +000073IPO=-xipo
Maxim Dounin950b6682011-08-18 15:10:23 +000074CFLAGS="$CFLAGS $ngx_fast $IPO"
75CORE_LINK="$CORE_LINK $ngx_fast $IPO"
Igor Sysoev78452232005-10-12 13:50:36 +000076
77
78case $CPU in
79 pentium)
80 # optimize for Pentium and Athlon
81 CPU_OPT="-xchip=pentium"
82 ;;
83
84 pentiumpro)
85 # optimize for Pentium Pro, Pentium II
86 CPU_OPT="-xchip=pentium_pro"
87 ;;
88
89 pentium3)
90 # optimize for Pentium III
91 CPU_OPT="-xchip=pentium3"
92 #CPU_OPT="$CPU_OPT -xarch=sse"
93 CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4"
94 ;;
95
96 pentium4)
97 # optimize for Pentium 4
98 CPU_OPT="-xchip=pentium4"
99 #CPU_OPT="$CPU_OPT -xarch=sse2"
100 CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8"
101 ;;
102
103 opteron)
104 # optimize for Opteron
105 CPU_OPT="-xchip=opteron"
106 #CPU_OPT="$CPU_OPT -xarch=sse2"
107 CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16"
108 ;;
109
Igor Sysoevde27bce2007-07-15 20:09:14 +0000110 sparc32)
111 # build 32-bit UltraSparc binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000112 CPU_OPT="$ngx_sparc32"
113 CORE_LINK="$CORE_LINK $ngx_sparc32"
114 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
Igor Sysoevde27bce2007-07-15 20:09:14 +0000115 NGX_CPU_CACHE_LINE=64
116 ;;
117
118 sparc64)
119 # build 64-bit UltraSparc binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000120 CPU_OPT="$ngx_sparc64"
121 CORE_LINK="$CORE_LINK $ngx_sparc64"
122 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
Igor Sysoevde27bce2007-07-15 20:09:14 +0000123 NGX_CPU_CACHE_LINE=64
124 ;;
125
Igor Sysoev78452232005-10-12 13:50:36 +0000126 amd64)
127 # build 64-bit amd64 binary
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000128 CPU_OPT="$ngx_amd64"
129 CORE_LINK="$CORE_LINK $ngx_amd64"
Igor Sysoevaa5c0212007-07-21 06:23:58 +0000130 CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
Igor Sysoev78452232005-10-12 13:50:36 +0000131 NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
Igor Sysoevd3cdbc82007-07-16 08:54:04 +0000132 NGX_CPU_CACHE_LINE=64
Igor Sysoev78452232005-10-12 13:50:36 +0000133 ;;
134
135esac
136
137
138CFLAGS="$CFLAGS $CPU_OPT"
139
140
141if [ ".$PCRE_OPT" = "." ]; then
Maxim Dounin950b6682011-08-18 15:10:23 +0000142 PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000143fi
144
145if [ ".$MD5_OPT" = "." ]; then
Maxim Dounin950b6682011-08-18 15:10:23 +0000146 MD5_OPT="$ngx_fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000147fi
148
149if [ ".$ZLIB_OPT" = "." ]; then
Maxim Dounin950b6682011-08-18 15:10:23 +0000150 ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
Igor Sysoev78452232005-10-12 13:50:36 +0000151fi
152
153
154# stop on warning
155CFLAGS="$CFLAGS -errwarn=%all"
Igor Sysoevc92483b2007-08-07 10:56:45 +0000156
157# debug
158CFLAGS="$CFLAGS -g"