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 | |
Maxim Dounin | ce1c3bd | 2016-02-04 20:25:29 +0300 | [diff] [blame] | 8 | MAIN_LINK= |
| 9 | MODULE_LINK="-shared" |
| 10 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 11 | ngx_include_opt="-I " |
| 12 | ngx_compile_opt="-c" |
Maxim Dounin | ce1c3bd | 2016-02-04 20:25:29 +0300 | [diff] [blame] | 13 | ngx_pic_opt="-fPIC" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 14 | ngx_objout="-o " |
| 15 | ngx_binout="-o " |
| 16 | ngx_objext="o" |
| 17 | ngx_binext= |
Maxim Dounin | ce1c3bd | 2016-02-04 20:25:29 +0300 | [diff] [blame] | 18 | ngx_modext=".so" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 19 | |
Igor Sysoev | 09c684b | 2005-11-09 17:25:55 +0000 | [diff] [blame] | 20 | ngx_long_start= |
| 21 | ngx_long_end= |
| 22 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 23 | ngx_regex_dirsep="\/" |
| 24 | ngx_dirsep='/' |
| 25 | |
| 26 | ngx_regex_cont=' \\\ |
| 27 | ' |
| 28 | ngx_cont=' \ |
| 29 | ' |
| 30 | ngx_tab=' \ |
| 31 | ' |
| 32 | ngx_spacer= |
| 33 | |
Igor Sysoev | 09c684b | 2005-11-09 17:25:55 +0000 | [diff] [blame] | 34 | ngx_long_regex_cont=$ngx_regex_cont |
| 35 | ngx_long_cont=$ngx_cont |
| 36 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 37 | . auto/cc/name |
| 38 | |
| 39 | if 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 Dounin | 49d58dd | 2013-09-04 21:17:03 +0400 | [diff] [blame] | 51 | sunc) |
| 52 | |
Maxim Dounin | ce1c3bd | 2016-02-04 20:25:29 +0300 | [diff] [blame] | 53 | MAIN_LINK= |
| 54 | MODULE_LINK="-G" |
| 55 | |
Maxim Dounin | 49d58dd | 2013-09-04 21:17:03 +0400 | [diff] [blame] | 56 | 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 Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 77 | esac |
| 78 | |
| 79 | else |
| 80 | |
| 81 | case $NGX_CC_NAME in |
| 82 | gcc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 83 | # 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 Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 85 | # 4.0.0, 4.0.1, 4.1.0 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 86 | |
| 87 | . auto/cc/gcc |
| 88 | ;; |
| 89 | |
Ruslan Ermilov | a6c9e09 | 2012-07-24 15:17:03 +0000 | [diff] [blame] | 90 | clang) |
| 91 | # Clang C compiler |
| 92 | |
| 93 | . auto/cc/clang |
| 94 | ;; |
| 95 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 96 | icc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 97 | # Intel C++ compiler 7.1, 8.0, 8.1 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 98 | |
| 99 | . auto/cc/icc |
| 100 | ;; |
| 101 | |
Igor Sysoev | 7845223 | 2005-10-12 13:50:36 +0000 | [diff] [blame] | 102 | sunc) |
| 103 | # Sun C 5.7 Patch 117837-04 2005/05/11 |
| 104 | |
| 105 | . auto/cc/sunc |
| 106 | ;; |
| 107 | |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 108 | ccc) |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 109 | # Compaq C V6.5-207 |
| 110 | |
| 111 | . auto/cc/ccc |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 112 | ;; |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 113 | |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 114 | acc) |
| 115 | # aCC: HP ANSI C++ B3910B A.03.55.02 |
| 116 | |
| 117 | . auto/cc/acc |
| 118 | ;; |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 119 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 120 | msvc*) |
| 121 | # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003 |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 122 | |
| 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 Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 140 | CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 141 | |
| 142 | fi |
| 143 | |
| 144 | CFLAGS="$CFLAGS $NGX_CC_OPT" |
Igor Sysoev | 9f34ebe | 2009-11-27 22:02:04 +0000 | [diff] [blame] | 145 | NGX_TEST_LD_OPT="$NGX_LD_OPT" |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 146 | |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 147 | if [ "$NGX_PLATFORM" != win32 ]; then |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 148 | |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 149 | if test -n "$NGX_LD_OPT"; then |
| 150 | ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 151 | ngx_feature_name= |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 152 | ngx_feature_run=no |
| 153 | ngx_feature_incs= |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 154 | ngx_feature_path= |
Igor Sysoev | 1b73583 | 2004-11-11 14:07:14 +0000 | [diff] [blame] | 155 | 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 Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 166 | |
Maxim Dounin | ce1c3bd | 2016-02-04 20:25:29 +0300 | [diff] [blame] | 167 | 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 Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 181 | ngx_feature="gcc builtin atomic operations" |
| 182 | ngx_feature_name=NGX_HAVE_GCC_ATOMIC |
Igor Sysoev | 37835d9 | 2009-11-27 22:00:39 +0000 | [diff] [blame] | 183 | ngx_feature_run=yes |
Igor Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 184 | ngx_feature_incs= |
| 185 | ngx_feature_path= |
| 186 | ngx_feature_libs= |
Igor Sysoev | 37835d9 | 2009-11-27 22:00:39 +0000 | [diff] [blame] | 187 | 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 Sysoev | 89d635f | 2009-11-25 17:34:35 +0000 | [diff] [blame] | 195 | . auto/feature |
| 196 | |
| 197 | |
Igor Sysoev | 4959ec4 | 2005-05-23 12:07:45 +0000 | [diff] [blame] | 198 | if [ "$NGX_CC_NAME" = "ccc" ]; then |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 199 | 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 Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 206 | ngx_feature_path= |
Igor Sysoev | e31e90b | 2005-05-19 13:25:22 +0000 | [diff] [blame] | 207 | 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 Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 213 | |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 214 | |
Igor Sysoev | 802bc23 | 2010-07-05 13:02:25 +0000 | [diff] [blame] | 215 | 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 Bartenev | a537a23 | 2016-02-11 15:35:36 +0300 | [diff] [blame] | 228 | 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 Sikora | 31325cc | 2016-06-27 15:00:02 -0700 | [diff] [blame] | 234 | ngx_feature_test="if (__builtin_bswap64(0)) return 1" |
Valentin Bartenev | a537a23 | 2016-02-11 15:35:36 +0300 | [diff] [blame] | 235 | . auto/feature |
| 236 | |
| 237 | |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 238 | # ngx_feature="inline" |
Igor Sysoev | f690604 | 2004-11-25 16:17:31 +0000 | [diff] [blame] | 239 | # ngx_feature_name= |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 240 | # ngx_feature_run=no |
| 241 | # ngx_feature_incs="int inline f(void) { return 1 }" |
Igor Sysoev | 0ec09f9 | 2006-11-27 11:07:09 +0000 | [diff] [blame] | 242 | # ngx_feature_path= |
Igor Sysoev | d43bee8 | 2004-11-20 19:52:20 +0000 | [diff] [blame] | 243 | # ngx_feature_libs= |
| 244 | # ngx_feature_test= |
| 245 | # . auto/feature |
| 246 | # |
| 247 | # if [ $ngx_found = yes ]; then |
| 248 | # fi |
| 249 | |
Igor Sysoev | c0edbcc | 2004-10-21 15:34:38 +0000 | [diff] [blame] | 250 | fi |