blob: 8027b980502e8b0b76c6474a6220898d41b16d8a [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
Igor Sysoevc0edbcc2004-10-21 15:34:38 +00008ngx_include_opt="-I "
9ngx_compile_opt="-c"
10ngx_objout="-o "
11ngx_binout="-o "
12ngx_objext="o"
13ngx_binext=
14
Igor Sysoev09c684b2005-11-09 17:25:55 +000015ngx_long_start=
16ngx_long_end=
17
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000018ngx_regex_dirsep="\/"
19ngx_dirsep='/'
20
21ngx_regex_cont=' \\\
22 '
23ngx_cont=' \
24 '
25ngx_tab=' \
26 '
27ngx_spacer=
28
Igor Sysoev09c684b2005-11-09 17:25:55 +000029ngx_long_regex_cont=$ngx_regex_cont
30ngx_long_cont=$ngx_cont
31
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000032. auto/cc/name
33
34if test -n "$CFLAGS"; then
35
36 CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT"
37
38 case $NGX_CC_NAME in
39
40 ccc)
41 # Compaq C V6.5-207
42
43 ngx_include_opt="-I"
44 ;;
45
46 esac
47
48else
49
50 case $NGX_CC_NAME in
51 gcc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +000052 # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
53 # 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 +000054 # 4.0.0, 4.0.1, 4.1.0
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000055
56 . auto/cc/gcc
57 ;;
58
Ruslan Ermilova6c9e092012-07-24 15:17:03 +000059 clang)
60 # Clang C compiler
61
62 . auto/cc/clang
63 ;;
64
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000065 icc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +000066 # Intel C++ compiler 7.1, 8.0, 8.1
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000067
68 . auto/cc/icc
69 ;;
70
Igor Sysoev78452232005-10-12 13:50:36 +000071 sunc)
72 # Sun C 5.7 Patch 117837-04 2005/05/11
73
74 . auto/cc/sunc
75 ;;
76
Igor Sysoevd43bee82004-11-20 19:52:20 +000077 ccc)
Igor Sysoeve31e90b2005-05-19 13:25:22 +000078 # Compaq C V6.5-207
79
80 . auto/cc/ccc
Igor Sysoevd43bee82004-11-20 19:52:20 +000081 ;;
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000082
Igor Sysoeve31e90b2005-05-19 13:25:22 +000083 acc)
84 # aCC: HP ANSI C++ B3910B A.03.55.02
85
86 . auto/cc/acc
87 ;;
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000088
Igor Sysoev1b735832004-11-11 14:07:14 +000089 msvc*)
90 # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003
Igor Sysoevc0edbcc2004-10-21 15:34:38 +000091
92 . auto/cc/msvc
93 ;;
94
95 owc)
96 # Open Watcom C 1.0, 1.2
97
98 . auto/cc/owc
99 ;;
100
101 bcc)
102 # Borland C++ 5.5
103
104 . auto/cc/bcc
105 ;;
106
107 esac
108
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000109 CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000110
111fi
112
113CFLAGS="$CFLAGS $NGX_CC_OPT"
Igor Sysoev9f34ebe2009-11-27 22:02:04 +0000114NGX_TEST_LD_OPT="$NGX_LD_OPT"
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000115
Igor Sysoevf6906042004-11-25 16:17:31 +0000116if [ "$NGX_PLATFORM" != win32 ]; then
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000117
Igor Sysoev1b735832004-11-11 14:07:14 +0000118 if test -n "$NGX_LD_OPT"; then
119 ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\"
Igor Sysoevf6906042004-11-25 16:17:31 +0000120 ngx_feature_name=
Igor Sysoev1b735832004-11-11 14:07:14 +0000121 ngx_feature_run=no
122 ngx_feature_incs=
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000123 ngx_feature_path=
Igor Sysoev1b735832004-11-11 14:07:14 +0000124 ngx_feature_libs=
125 ngx_feature_test=
126 . auto/feature
127
128 if [ $ngx_found = no ]; then
129 echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\"
130 echo
131 exit 1
132 fi
133 fi
134
Igor Sysoev89d635f2009-11-25 17:34:35 +0000135
136 ngx_feature="gcc builtin atomic operations"
137 ngx_feature_name=NGX_HAVE_GCC_ATOMIC
Igor Sysoev37835d92009-11-27 22:00:39 +0000138 ngx_feature_run=yes
Igor Sysoev89d635f2009-11-25 17:34:35 +0000139 ngx_feature_incs=
140 ngx_feature_path=
141 ngx_feature_libs=
Igor Sysoev37835d92009-11-27 22:00:39 +0000142 ngx_feature_test="long n = 0;
143 if (!__sync_bool_compare_and_swap(&n, 0, 1))
144 return 1;
145 if (__sync_fetch_and_add(&n, 1) != 1)
146 return 1;
147 if (n != 2)
148 return 1;
149 __sync_synchronize();"
Igor Sysoev89d635f2009-11-25 17:34:35 +0000150 . auto/feature
151
152
Igor Sysoev4959ec42005-05-23 12:07:45 +0000153 if [ "$NGX_CC_NAME" = "ccc" ]; then
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000154 echo "checking for C99 variadic macros ... disabled"
155 else
156 ngx_feature="C99 variadic macros"
157 ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
158 ngx_feature_run=yes
159 ngx_feature_incs="#include <stdio.h>
160#define var(dummy, ...) sprintf(__VA_ARGS__)"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000161 ngx_feature_path=
Igor Sysoeve31e90b2005-05-19 13:25:22 +0000162 ngx_feature_libs=
163 ngx_feature_test="char buf[30]; buf[0] = '0';
164 var(0, buf, \"%d\", 1);
165 if (buf[0] != '1') return 1"
166 . auto/feature
167 fi
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000168
Igor Sysoevd43bee82004-11-20 19:52:20 +0000169
Igor Sysoev802bc232010-07-05 13:02:25 +0000170 ngx_feature="gcc variadic macros"
171 ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
172 ngx_feature_run=yes
173 ngx_feature_incs="#include <stdio.h>
174#define var(dummy, args...) sprintf(args)"
175 ngx_feature_path=
176 ngx_feature_libs=
177 ngx_feature_test="char buf[30]; buf[0] = '0';
178 var(0, buf, \"%d\", 1);
179 if (buf[0] != '1') return 1"
180 . auto/feature
181
182
Igor Sysoevd43bee82004-11-20 19:52:20 +0000183# ngx_feature="inline"
Igor Sysoevf6906042004-11-25 16:17:31 +0000184# ngx_feature_name=
Igor Sysoevd43bee82004-11-20 19:52:20 +0000185# ngx_feature_run=no
186# ngx_feature_incs="int inline f(void) { return 1 }"
Igor Sysoev0ec09f92006-11-27 11:07:09 +0000187# ngx_feature_path=
Igor Sysoevd43bee82004-11-20 19:52:20 +0000188# ngx_feature_libs=
189# ngx_feature_test=
190# . auto/feature
191#
192# if [ $ngx_found = yes ]; then
193# fi
194
Igor Sysoevc0edbcc2004-10-21 15:34:38 +0000195fi