xref: /unit/auto/cc/test (revision 0:a63ceefd6ab0)
1
2# Copyright (C) Igor Sysoev
3# Copyright (C) NGINX, Inc.
4
5
6$echo checking for C compiler: $CC
7cat << END >> $NXT_AUTOCONF_ERR
8----------------------------------------
9checking for C compiler: $CC
10END
11
12
13# Allow error exit status.
14set +e
15
16if [ -z `which $CC` ]; then
17    $echo
18    $echo $0: error: $CC not found.
19    $echo
20    exit 1;
21fi
22
23
24if `/bin/sh -c "($CC -v)" 2>&1 | grep "gcc version" >> $NXT_AUTOCONF_ERR 2>&1`
25then
26    NXT_CC_NAME=gcc
27    $echo " + using GNU C compiler"
28    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "gcc version" 2>&1`
29    $echo " + $NXT_CC_VERSION"
30
31else
32if `/bin/sh -c "($CC -v)" 2>&1 | grep "clang version" >> $NXT_AUTOCONF_ERR 2>&1`
33then
34    NXT_CC_NAME=clang
35    $echo " + using Clang C compiler"
36    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "clang version" 2>&1`
37    $echo " + $NXT_CC_VERSION"
38
39else
40if `/bin/sh -c "($CC -v)" 2>&1 \
41                 | grep "Apple LLVM version" >> $NXT_AUTOCONF_ERR 2>&1`
42then
43    NXT_CC_NAME=clang
44    $echo " + using Clang C compiler"
45    NXT_CC_VERSION=`/bin/sh -c "($CC -v)" 2>&1 | grep "Apple LLVM version" 2>&1`
46    $echo " + $NXT_CC_VERSION"
47
48else
49if `/bin/sh -c "($CC -V)" 2>&1 | grep "Sun C" >> $NXT_AUTOCONF_ERR 2>&1`
50then
51    NXT_CC_NAME=SunC
52    $echo " + using Sun C compiler"
53    NXT_CC_VERSION=`/bin/sh -c "($CC -V)" 2>&1 | grep "Sun C" 2>&1`
54    $echo " + $NXT_CC_VERSION"
55
56else
57if `/bin/sh -c "($CC -qversion)" 2>&1 \
58                | grep "^IBM XL" >> $NXT_AUTOCONF_ERR 2>&1`
59then
60    NXT_CC_NAME=xlC
61    $echo " + using AIX xlC compiler"
62    NXT_CC_VERSION=`/bin/sh -c "($CC -qversion)" 2>&1 | grep "IBM XL" 2>&1`
63    $echo " + $NXT_CC_VERSION"
64
65else
66if `/bin/sh -c "($CC -V)" 2>&1 | grep "Intel(R) C" >> $NXT_AUTOCONF_ERR 2>&1`
67then
68    NXT_CC_NAME=ICC
69    $echo " + using Intel C++ compiler"
70    NXT_CC_VERSION=ICC
71
72else
73if `/bin/sh -c "($CC -v)" 2>&1 \
74                | grep "Microsoft (R) 32-bit C/C" >> $NXT_AUTOCONF_ERR 2>&1`
75then
76    NXT_CC_NAME=MSVC
77    $echo " + using MS Visual C++ compiler"
78    NXT_CC_VERSION=MSVC
79
80else
81    NXT_CC_NAME=cc
82    NXT_CC_VERSION=cc
83
84fi # MSVC
85fi # ICC
86fi # xlC
87fi # SunC
88fi # Apple LLVM clang
89fi # clang
90fi # gcc
91
92
93case $NXT_CC_NAME in
94
95    gcc)
96        nxt_have=NXT_GCC . auto/have
97
98        NXT_CFLAGS="$NXT_CFLAGS -pipe"
99        NXT_CFLAGS="$NXT_CFLAGS -fPIC"
100
101        # Do not export symbols except explicitly marked with NXT_EXPORT.
102        NXT_CFLAGS="$NXT_CFLAGS -fvisibility=hidden"
103
104        # c99/gnu99 conflict with Solaris XOPEN.
105        #NXT_CFLAGS="$NXT_CFLAGS -std=gnu99"
106
107        NXT_CFLAGS="$NXT_CFLAGS -O"
108        #NXT_CFLAGS="$NXT_CFLAGS -O0"
109        NXT_CFLAGS="$NXT_CFLAGS -W -Wall -Wextra"
110
111        #NXT_CFLAGS="$NXT_CFLAGS -Wunused-result"
112        NXT_CFLAGS="$NXT_CFLAGS -Wno-unused-parameter"
113        #NXT_CFLAGS="$NXT_CFLAGS -Wshorten-64-to-32"
114        NXT_CFLAGS="$NXT_CFLAGS -Wwrite-strings"
115
116        # -O2 enables -fstrict-aliasing and -fstrict-overflow.
117        #NXT_CFLAGS="$NXT_CFLAGS -O2"
118        #NXT_CFLAGS="$NXT_CFLAGS -Wno-strict-aliasing"
119
120        #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer"
121        #NXT_CFLAGS="$NXT_CFLAGS -momit-leaf-frame-pointer"
122
123        # -Wstrict-overflow is supported by GCC 4.2+.
124        #NXT_CFLAGS="$NXT_CFLAGS -Wstrict-overflow=5"
125
126        NXT_CFLAGS="$NXT_CFLAGS -Wmissing-prototypes"
127
128        # Stop on warning.
129        NXT_CFLAGS="$NXT_CFLAGS -Werror"
130
131        # Debug.
132        NXT_CFLAGS="$NXT_CFLAGS -g"
133    ;;
134
135    clang)
136        nxt_have=NXT_CLANG . auto/have
137
138        NXT_CFLAGS="$NXT_CFLAGS -pipe"
139        NXT_CFLAGS="$NXT_CFLAGS -fPIC"
140
141        # Do not export symbols except explicitly marked with NXT_EXPORT.
142        NXT_CFLAGS="$NXT_CFLAGS -fvisibility=hidden"
143
144        NXT_CFLAGS="$NXT_CFLAGS -O"
145        #NXT_CFLAGS="$NXT_CFLAGS -O0"
146        NXT_CFLAGS="$NXT_CFLAGS -W -Wall -Wextra"
147
148        #NXT_CFLAGS="$NXT_CFLAGS -Wunused-result"
149        NXT_CFLAGS="$NXT_CFLAGS -Wno-unused-parameter"
150        #NXT_CFLAGS="$NXT_CFLAGS -Wshorten-64-to-32"
151        NXT_CFLAGS="$NXT_CFLAGS -Wwrite-strings"
152        #NXT_CFLAGS="$NXT_CFLAGS -O2"
153        #NXT_CFLAGS="$NXT_CFLAGS -fomit-frame-pointer"
154        NXT_CFLAGS="$NXT_CFLAGS -fstrict-aliasing"
155        NXT_CFLAGS="$NXT_CFLAGS -Wstrict-overflow=5"
156
157        NXT_CFLAGS="$NXT_CFLAGS -Wmissing-prototypes"
158
159        # Stop on warning.
160        NXT_CFLAGS="$NXT_CFLAGS -Werror"
161
162        # Debug.
163
164        if [ "$NXT_SYSTEM_PLATFORM" != "powerpc" ]; then
165            # "-g" flag causes the "unknown pseudo-op: `.cfi_sections'"
166            # error on PowerPC Clang.
167            NXT_CFLAGS="$NXT_CFLAGS -g"
168        fi
169    ;;
170
171    SunC)
172        nxt_have=NXT_SUNC . auto/have
173
174        NXT_CFLAGS="$NXT_CFLAGS -fPIC"
175        # Optimization.
176        NXT_CFLAGS="$NXT_CFLAGS -O -fast"
177        # Stop on warning.
178        NXT_CFLAGS="$NXT_CFLAGS -errwarn=%all"
179        # Debug.
180        NXT_CFLAGS="$NXT_CFLAGS -g"
181    ;;
182
183    xlC)
184        nxt_have=NXT_XLC . auto/have
185
186        #NXT_CFLAGS="$NXT_CFLAGS -qalloca"
187        # alloca support.
188        NXT_CFLAGS="$NXT_CFLAGS -qlanglvl=extc99"
189        # __thread support.
190        NXT_CFLAGS="$NXT_CFLAGS -qtls"
191        # Suppress warning
192        #    1506-159 (E) Bit field type specified for XXX is not valid.
193        #    Type unsigned assumed.
194        NXT_CFLAGS="$NXT_CFLAGS -qsuppress=1506-159"
195    ;;
196
197    ICC)
198    ;;
199
200    MSVC)
201    ;;
202
203    *)
204    ;;
205
206esac
207
208# Stop on error exit status again.
209set -e
210