xref: /f-stack/app/nginx-1.16.1/auto/cc/sunc (revision 3da8d17d)
1
2# Copyright (C) Igor Sysoev
3# Copyright (C) Nginx, Inc.
4
5
6# 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
10# Sun C 5.10 SunOS_i386 2009/06/03        Sun Studio 12.1
11# Sun C 5.11 SunOS_i386 2010/08/13        Oracle Solaris Studio 12.2
12# Sun C 5.12 SunOS_i386 2011/11/16        Oracle Solaris Studio 12.3
13# Sun C 5.13 SunOS_i386 2014/10/20        Oracle Solaris Studio 12.4
14# Sun C 5.14 SunOS_i386 2016/05/31        Oracle Developer Studio 12.5
15
16NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
17                          | sed -e 's/^.* Sun C \(.*\)/\1/'`
18
19echo " + Sun C version: $NGX_SUNC_VER"
20
21have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
22
23
24cat << END > $NGX_AUTOTEST.c
25
26int main(void) {
27    printf("%d", __SUNPRO_C);
28    return 0;
29}
30
31END
32
33eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
34
35if [ -x $NGX_AUTOTEST ]; then
36    ngx_sunc_ver=`$NGX_AUTOTEST`
37fi
38
39rm -rf $NGX_AUTOTEST*
40
41# 1424 == 0x590, Sun Studio 12
42
43if [ "$ngx_sunc_ver" -ge 1424 ]; then
44    ngx_sparc32="-m32"
45    ngx_sparc64="-m64"
46    ngx_amd64="-m64"
47
48else
49    ngx_sparc32="-xarch=v8plus"
50    ngx_sparc64="-xarch=v9"
51    ngx_amd64="-xarch=amd64"
52fi
53
54case "$NGX_MACHINE" in
55
56    i86pc)
57        NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
58    ;;
59
60    sun4u | sun4v)
61        NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
62    ;;
63
64esac
65
66MAIN_LINK=
67MODULE_LINK="-G"
68
69
70# optimizations
71
72# 20736 == 0x5100, Sun Studio 12.1
73
74if [ "$ngx_sunc_ver" -ge 20736 ]; then
75    ngx_fast="-fast"
76
77else
78    # older versions had problems with bit-fields
79    ngx_fast="-fast -xalias_level=any"
80fi
81
82IPO=-xipo
83CFLAGS="$CFLAGS $ngx_fast $IPO"
84CORE_LINK="$CORE_LINK $ngx_fast $IPO"
85
86
87case $CPU in
88    pentium)
89        # optimize for Pentium and Athlon
90        CPU_OPT="-xchip=pentium"
91    ;;
92
93    pentiumpro)
94        # optimize for Pentium Pro, Pentium II
95        CPU_OPT="-xchip=pentium_pro"
96    ;;
97
98    pentium3)
99        # optimize for Pentium III
100        CPU_OPT="-xchip=pentium3"
101        #CPU_OPT="$CPU_OPT -xarch=sse"
102        CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4"
103    ;;
104
105    pentium4)
106        # optimize for Pentium 4
107        CPU_OPT="-xchip=pentium4"
108        #CPU_OPT="$CPU_OPT -xarch=sse2"
109        CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8"
110    ;;
111
112    opteron)
113        # optimize for Opteron
114        CPU_OPT="-xchip=opteron"
115        #CPU_OPT="$CPU_OPT -xarch=sse2"
116        CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16"
117    ;;
118
119    sparc32)
120        # build 32-bit UltraSparc binary
121        CPU_OPT="$ngx_sparc32"
122        CORE_LINK="$CORE_LINK $ngx_sparc32"
123        CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
124        NGX_CPU_CACHE_LINE=64
125    ;;
126
127    sparc64)
128        # build 64-bit UltraSparc binary
129        CPU_OPT="$ngx_sparc64"
130        CORE_LINK="$CORE_LINK $ngx_sparc64"
131        CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
132        NGX_CPU_CACHE_LINE=64
133    ;;
134
135    amd64)
136        # build 64-bit amd64 binary
137        CPU_OPT="$ngx_amd64"
138        CORE_LINK="$CORE_LINK $ngx_amd64"
139        CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
140        NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
141        NGX_CPU_CACHE_LINE=64
142    ;;
143
144esac
145
146
147CFLAGS="$CFLAGS $CPU_OPT"
148
149
150if [ ".$PCRE_OPT" = "." ]; then
151    PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
152fi
153
154if [ ".$ZLIB_OPT" = "." ]; then
155    ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
156fi
157
158
159# stop on warning
160CFLAGS="$CFLAGS -errwarn=%all"
161
162# debug
163CFLAGS="$CFLAGS -g"
164