blob: b3b9f92eb0055fd6ce396b2833be540ab291cc08 [file] [log] [blame]
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00001
2# Copyright (C) Igor Sysoev
Maxim Konovalovf8d59e32012-01-18 15:07:43 +00003# Copyright (C) Nginx, Inc.
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00004
5
Igor Sysoevaa828612005-02-09 14:31:07 +00006LINK="\$(CC)"
7
Maxim Dounince1c3bd2016-02-04 20:25:29 +03008MAIN_LINK=
9MODULE_LINK="-shared"
10
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000011ngx_include_opt="-I "
12ngx_compile_opt="-c"
Maxim Dounince1c3bd2016-02-04 20:25:29 +030013ngx_pic_opt="-fPIC"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000014ngx_objout="-o "
15ngx_binout="-o "
16ngx_objext="o"
17ngx_binext=
Maxim Dounince1c3bd2016-02-04 20:25:29 +030018ngx_modext=".so"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000019
Igor Sysoev09c684b2005-11-09 17:25:55 +000020ngx_long_start=
21ngx_long_end=
22
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000023ngx_regex_dirsep="\/"
24ngx_dirsep='/'
25
26ngx_regex_cont=' \\\
27 '
28ngx_cont=' \
29 '
30ngx_tab=' \
31 '
32ngx_spacer=
33
Igor Sysoev09c684b2005-11-09 17:25:55 +000034ngx_long_regex_cont=$ngx_regex_cont
35ngx_long_cont=$ngx_cont
36
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000037. auto/cc/name
38
39if test -n "$CFLAGS"; then
40
41 CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT"
42
43 case $NGX_CC_NAME in
44
45 ccc)
46 # Compaq C V6.5-207
47
48 ngx_include_opt="-I"
49 ;;
50
Maxim Dounin49d58dd2013-09-04 21:17:03 +040051 sunc)
52
Maxim Dounince1c3bd2016-02-04 20:25:29 +030053 MAIN_LINK=
54 MODULE_LINK="-G"
55
Maxim Dounin49d58dd2013-09-04 21:17:03 +040056 case "$NGX_MACHINE" in
57
58 i86pc)
59 NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
60 ;;
61
62 sun4u | sun4v)
63 NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
64 ;;
65
66 esac
67
68 case $CPU in
69
70 amd64)
71 NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
72 ;;
73
74 esac
75 ;;
76
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000077 esac
78
79else
80
81 case $NGX_CC_NAME in
82 gcc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +000083 # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
84 # 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2
Igor Sysoev78452232005-10-12 13:50:36 +000085 # 4.0.0, 4.0.1, 4.1.0
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000086
87 . auto/cc/gcc
88 ;;
89
Ruslan Ermilova6c9e092012-07-24 15:17:03 +000090 clang)
91 # Clang C compiler
92
93 . auto/cc/clang
94 ;;
95
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000096 icc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +000097 # Intel C++ compiler 7.1, 8.0, 8.1
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000098
99 . auto/cc/icc
100 ;;
101
Igor Sysoev78452232005-10-12 13:50:36 +0000102 sunc)
103 # Sun C 5.7 Patch 117837-04 2005/05/11
104
105 . auto/cc/sunc
106 ;;
107
Igor Sysoevd43bee82004-11-20 19:52:20 +0000108 ccc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000109 # Compaq C V6.5-207
110
111 . auto/cc/ccc
Igor Sysoevd43bee82004-11-20 19:52:20 +0000112 ;;
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000113
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000114 acc)
115 # aCC: HP ANSI C++ B3910B A.03.55.02
116
117 . auto/cc/acc
118 ;;
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000119
Igor Sysoev1b735832004-11-11 14:07:14 +0000120 msvc*)
121 # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000122
123 . auto/cc/msvc
124 ;;
125
126 owc)
127 # Open Watcom C 1.0, 1.2
128
129 . auto/cc/owc
130 ;;
131
132 bcc)
133 # Borland C++ 5.5
134
135 . auto/cc/bcc
136 ;;
137
138 esac
139
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000140 CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000141
142fi
143
144CFLAGS="$CFLAGS $NGX_CC_OPT"
Igor Sysoev9f34ebe2009-11-27 22:02:04 +0000145NGX_TEST_LD_OPT="$NGX_LD_OPT"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000146
Igor Sysoevf6906042004-11-25 16:17:31 +0000147if [ "$NGX_PLATFORM" != win32 ]; then
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000148
Igor Sysoev1b735832004-11-11 14:07:14 +0000149 if test -n "$NGX_LD_OPT"; then
150 ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\"
Igor Sysoevf6906042004-11-25 16:17:31 +0000151 ngx_feature_name=
Igor Sysoev1b735832004-11-11 14:07:14 +0000152 ngx_feature_run=no
153 ngx_feature_incs=
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000154 ngx_feature_path=
Igor Sysoev1b735832004-11-11 14:07:14 +0000155 ngx_feature_libs=
156 ngx_feature_test=
157 . auto/feature
158
159 if [ $ngx_found = no ]; then
160 echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\"
161 echo
162 exit 1
163 fi
164 fi
165
Igor Sysoev89d635f2009-11-25 17:34:35 +0000166
Maxim Dounince1c3bd2016-02-04 20:25:29 +0300167 ngx_feature="-Wl,-E switch"
168 ngx_feature_name=
169 ngx_feature_run=no
170 ngx_feature_incs=
171 ngx_feature_path=
172 ngx_feature_libs=-Wl,-E
173 ngx_feature_test=
174 . auto/feature
175
176 if [ $ngx_found = yes ]; then
177 MAIN_LINK="-Wl,-E"
178 fi
179
180
Igor Sysoev89d635f2009-11-25 17:34:35 +0000181 ngx_feature="gcc builtin atomic operations"
182 ngx_feature_name=NGX_HAVE_GCC_ATOMIC
Igor Sysoev37835d92009-11-27 22:00:39 +0000183 ngx_feature_run=yes
Igor Sysoev89d635f2009-11-25 17:34:35 +0000184 ngx_feature_incs=
185 ngx_feature_path=
186 ngx_feature_libs=
Igor Sysoev37835d92009-11-27 22:00:39 +0000187 ngx_feature_test="long n = 0;
188 if (!__sync_bool_compare_and_swap(&n, 0, 1))
189 return 1;
190 if (__sync_fetch_and_add(&n, 1) != 1)
191 return 1;
192 if (n != 2)
193 return 1;
194 __sync_synchronize();"
Igor Sysoev89d635f2009-11-25 17:34:35 +0000195 . auto/feature
196
197
Igor Sysoev4959ec42005-05-23 12:07:45 +0000198 if [ "$NGX_CC_NAME" = "ccc" ]; then
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000199 echo "checking for C99 variadic macros ... disabled"
200 else
201 ngx_feature="C99 variadic macros"
202 ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
203 ngx_feature_run=yes
204 ngx_feature_incs="#include <stdio.h>
205#define var(dummy, ...) sprintf(__VA_ARGS__)"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000206 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000207 ngx_feature_libs=
208 ngx_feature_test="char buf[30]; buf[0] = '0';
209 var(0, buf, \"%d\", 1);
210 if (buf[0] != '1') return 1"
211 . auto/feature
212 fi
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000213
Igor Sysoevd43bee82004-11-20 19:52:20 +0000214
Igor Sysoev802bc232010-07-05 13:02:25 +0000215 ngx_feature="gcc variadic macros"
216 ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
217 ngx_feature_run=yes
218 ngx_feature_incs="#include <stdio.h>
219#define var(dummy, args...) sprintf(args)"
220 ngx_feature_path=
221 ngx_feature_libs=
222 ngx_feature_test="char buf[30]; buf[0] = '0';
223 var(0, buf, \"%d\", 1);
224 if (buf[0] != '1') return 1"
225 . auto/feature
226
227
Valentin Barteneva537a232016-02-11 15:35:36 +0300228 ngx_feature="gcc builtin 64 bit byteswap"
229 ngx_feature_name="NGX_HAVE_GCC_BSWAP64"
230 ngx_feature_run=no
231 ngx_feature_incs=
232 ngx_feature_path=
233 ngx_feature_libs=
Piotr Sikora31325cc2016-06-27 15:00:02 -0700234 ngx_feature_test="if (__builtin_bswap64(0)) return 1"
Valentin Barteneva537a232016-02-11 15:35:36 +0300235 . auto/feature
236
237
Igor Sysoevd43bee82004-11-20 19:52:20 +0000238# ngx_feature="inline"
Igor Sysoevf6906042004-11-25 16:17:31 +0000239# ngx_feature_name=
Igor Sysoevd43bee82004-11-20 19:52:20 +0000240# ngx_feature_run=no
241# ngx_feature_incs="int inline f(void) { return 1 }"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000242# ngx_feature_path=
Igor Sysoevd43bee82004-11-20 19:52:20 +0000243# ngx_feature_libs=
244# ngx_feature_test=
245# . auto/feature
246#
247# if [ $ngx_found = yes ]; then
248# fi
249
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000250fi