Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 1 | |
| 2 | # Copyright (C) Igor Sysoev |
Maxim Konovalov | f8d59e3 | 2012-01-18 15:07:43 +0000 | [diff] [blame] | 3 | # Copyright (C) Nginx, Inc. |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 4 | |
| 5 | |
Igor Sysoev | aa82861 | 2005-02-09 14:31:07 +0000 | [diff] [blame] | 6 | LINK="\$(CC)" |
| 7 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 8 | ngx_include_opt="-I " |
| 9 | ngx_compile_opt="-c" |
| 10 | ngx_objout="-o " |
| 11 | ngx_binout="-o " |
| 12 | ngx_objext="o" |
| 13 | ngx_binext= |
| 14 | |
Igor Sysoev | 09c684b | 2005-11-09 17:25:55 +0000 | [diff] [blame] | 15 | ngx_long_start= |
| 16 | ngx_long_end= |
| 17 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 18 | ngx_regex_dirsep="\/" |
| 19 | ngx_dirsep='/' |
| 20 | |
| 21 | ngx_regex_cont=' \\\ |
| 22 | ' |
| 23 | ngx_cont=' \ |
| 24 | ' |
| 25 | ngx_tab=' \ |
| 26 | ' |
| 27 | ngx_spacer= |
| 28 | |
Igor Sysoev | 09c684b | 2005-11-09 17:25:55 +0000 | [diff] [blame] | 29 | ngx_long_regex_cont=$ngx_regex_cont |
| 30 | ngx_long_cont=$ngx_cont |
| 31 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 32 | . auto/cc/name |
| 33 | |
| 34 | if 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 | |
| 48 | else |
| 49 | |
| 50 | case $NGX_CC_NAME in |
| 51 | gcc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 52 | # 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 Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 54 | # 4.0.0, 4.0.1, 4.1.0 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 55 | |
| 56 | . auto/cc/gcc |
| 57 | ;; |
| 58 | |
Ruslan Ermilov | a6c9e09 | 2012-07-24 15:17:03 +0000 | [diff] [blame] | 59 | clang) |
| 60 | # Clang C compiler |
| 61 | |
| 62 | . auto/cc/clang |
| 63 | ;; |
| 64 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 65 | icc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 66 | # Intel C++ compiler 7.1, 8.0, 8.1 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 67 | |
| 68 | . auto/cc/icc |
| 69 | ;; |
| 70 | |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 71 | sunc) |
| 72 | # Sun C 5.7 Patch 117837-04 2005/05/11 |
| 73 | |
| 74 | . auto/cc/sunc |
| 75 | ;; |
| 76 | |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 77 | ccc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 78 | # Compaq C V6.5-207 |
| 79 | |
| 80 | . auto/cc/ccc |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 81 | ;; |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 82 | |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 83 | acc) |
| 84 | # aCC: HP ANSI C++ B3910B A.03.55.02 |
| 85 | |
| 86 | . auto/cc/acc |
| 87 | ;; |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 88 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 89 | msvc*) |
| 90 | # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 91 | |
| 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 Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 109 | CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 110 | |
| 111 | fi |
| 112 | |
| 113 | CFLAGS="$CFLAGS $NGX_CC_OPT" |
Igor Sysoev | 9f34ebe | 2009-11-27 22:02:04 +0000 | [diff] [blame] | 114 | NGX_TEST_LD_OPT="$NGX_LD_OPT" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 115 | |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 116 | if [ "$NGX_PLATFORM" != win32 ]; then |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 117 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 118 | if test -n "$NGX_LD_OPT"; then |
| 119 | ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 120 | ngx_feature_name= |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 121 | ngx_feature_run=no |
| 122 | ngx_feature_incs= |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 123 | ngx_feature_path= |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 124 | 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 Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 135 | |
| 136 | ngx_feature="gcc builtin atomic operations" |
| 137 | ngx_feature_name=NGX_HAVE_GCC_ATOMIC |
Igor Sysoev | 37835d9 | 2009-11-27 22:00:39 +0000 | [diff] [blame] | 138 | ngx_feature_run=yes |
Igor Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 139 | ngx_feature_incs= |
| 140 | ngx_feature_path= |
| 141 | ngx_feature_libs= |
Igor Sysoev | 37835d9 | 2009-11-27 22:00:39 +0000 | [diff] [blame] | 142 | 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 Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 150 | . auto/feature |
| 151 | |
| 152 | |
Igor Sysoev | 4959ec4 | 2005-05-23 12:07:45 +0000 | [diff] [blame] | 153 | if [ "$NGX_CC_NAME" = "ccc" ]; then |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 154 | 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 Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 161 | ngx_feature_path= |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 162 | 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 Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 168 | |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 169 | |
Igor Sysoev | 802bc23 | 2010-07-05 13:02:25 +0000 | [diff] [blame] | 170 | 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 Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 183 | # ngx_feature="inline" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 184 | # ngx_feature_name= |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 185 | # ngx_feature_run=no |
| 186 | # ngx_feature_incs="int inline f(void) { return 1 }" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 187 | # ngx_feature_path= |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 188 | # ngx_feature_libs= |
| 189 | # ngx_feature_test= |
| 190 | # . auto/feature |
| 191 | # |
| 192 | # if [ $ngx_found = yes ]; then |
| 193 | # fi |
| 194 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 195 | fi |