Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/m4/curl-compilers.m4 @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 #*************************************************************************** | |
| 2 # _ _ ____ _ | |
| 3 # Project ___| | | | _ \| | | |
| 4 # / __| | | | |_) | | | |
| 5 # | (__| |_| | _ <| |___ | |
| 6 # \___|\___/|_| \_\_____| | |
| 7 # | |
| 8 # Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. | |
| 9 # | |
| 10 # This software is licensed as described in the file COPYING, which | |
| 11 # you should have received as part of this distribution. The terms | |
| 12 # are also available at https://curl.haxx.se/docs/copyright.html. | |
| 13 # | |
| 14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell | |
| 15 # copies of the Software, and permit persons to whom the Software is | |
| 16 # furnished to do so, under the terms of the COPYING file. | |
| 17 # | |
| 18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | |
| 19 # KIND, either express or implied. | |
| 20 # | |
| 21 #*************************************************************************** | |
| 22 | |
| 23 # File version for 'aclocal' use. Keep it a single number. | |
| 24 # serial 67 | |
| 25 | |
| 26 | |
| 27 dnl CURL_CHECK_COMPILER | |
| 28 dnl ------------------------------------------------- | |
| 29 dnl Verify if the C compiler being used is known. | |
| 30 | |
| 31 AC_DEFUN([CURL_CHECK_COMPILER], [ | |
| 32 # | |
| 33 compiler_id="unknown" | |
| 34 compiler_num="0" | |
| 35 # | |
| 36 flags_dbg_all="unknown" | |
| 37 flags_dbg_yes="unknown" | |
| 38 flags_dbg_off="unknown" | |
| 39 flags_opt_all="unknown" | |
| 40 flags_opt_yes="unknown" | |
| 41 flags_opt_off="unknown" | |
| 42 # | |
| 43 flags_prefer_cppflags="no" | |
| 44 # | |
| 45 CURL_CHECK_COMPILER_DEC_C | |
| 46 CURL_CHECK_COMPILER_HPUX_C | |
| 47 CURL_CHECK_COMPILER_IBM_C | |
| 48 CURL_CHECK_COMPILER_INTEL_C | |
| 49 CURL_CHECK_COMPILER_CLANG | |
| 50 CURL_CHECK_COMPILER_GNU_C | |
| 51 CURL_CHECK_COMPILER_LCC | |
| 52 CURL_CHECK_COMPILER_SGI_MIPSPRO_C | |
| 53 CURL_CHECK_COMPILER_SGI_MIPS_C | |
| 54 CURL_CHECK_COMPILER_SUNPRO_C | |
| 55 CURL_CHECK_COMPILER_TINY_C | |
| 56 CURL_CHECK_COMPILER_WATCOM_C | |
| 57 # | |
| 58 if test "$compiler_id" = "unknown"; then | |
| 59 cat <<_EOF 1>&2 | |
| 60 *** | |
| 61 *** Warning: This configure script does not have information about the | |
| 62 *** compiler you are using, relative to the flags required to enable or | |
| 63 *** disable generation of debug info, optimization options or warnings. | |
| 64 *** | |
| 65 *** Whatever settings are present in CFLAGS will be used for this run. | |
| 66 *** | |
| 67 *** If you wish to help the curl project to better support your compiler | |
| 68 *** you can report this and the required info on the libcurl development | |
| 69 *** mailing list: https://cool.haxx.se/mailman/listinfo/curl-library/ | |
| 70 *** | |
| 71 _EOF | |
| 72 fi | |
| 73 ]) | |
| 74 | |
| 75 | |
| 76 dnl CURL_CHECK_COMPILER_CLANG | |
| 77 dnl ------------------------------------------------- | |
| 78 dnl Verify if compiler being used is clang. | |
| 79 | |
| 80 AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [ | |
| 81 AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU_C])dnl | |
| 82 AC_MSG_CHECKING([if compiler is clang]) | |
| 83 CURL_CHECK_DEF([__clang__], [], [silent]) | |
| 84 if test "$curl_cv_have_def___clang__" = "yes"; then | |
| 85 AC_MSG_RESULT([yes]) | |
| 86 AC_MSG_CHECKING([if compiler is xlclang]) | |
| 87 CURL_CHECK_DEF([__ibmxl__], [], [silent]) | |
| 88 if test "$curl_cv_have_def___ibmxl__" = "yes" ; then | |
| 89 dnl IBM's almost-compatible clang version | |
| 90 AC_MSG_RESULT([yes]) | |
| 91 compiler_id="XLCLANG" | |
| 92 else | |
| 93 AC_MSG_RESULT([no]) | |
| 94 compiler_id="CLANG" | |
| 95 fi | |
| 96 fullclangver=`$CC -v 2>&1 | grep version` | |
| 97 clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*)/\1/'` | |
| 98 if test -z "$clangver"; then | |
| 99 if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then | |
| 100 dnl Starting with XCode 7 / clang 3.7, Apple clang won't tell its upstream version | |
| 101 clangver="3.7" | |
| 102 else | |
| 103 clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'` | |
| 104 fi | |
| 105 fi | |
| 106 clangvhi=`echo $clangver | cut -d . -f1` | |
| 107 clangvlo=`echo $clangver | cut -d . -f2` | |
| 108 compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null` | |
| 109 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 110 flags_dbg_all="$flags_dbg_all -ggdb" | |
| 111 flags_dbg_all="$flags_dbg_all -gstabs" | |
| 112 flags_dbg_all="$flags_dbg_all -gstabs+" | |
| 113 flags_dbg_all="$flags_dbg_all -gcoff" | |
| 114 flags_dbg_all="$flags_dbg_all -gxcoff" | |
| 115 flags_dbg_all="$flags_dbg_all -gdwarf-2" | |
| 116 flags_dbg_all="$flags_dbg_all -gvms" | |
| 117 flags_dbg_yes="-g" | |
| 118 flags_dbg_off="" | |
| 119 flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4" | |
| 120 flags_opt_yes="-Os" | |
| 121 flags_opt_off="-O0" | |
| 122 else | |
| 123 AC_MSG_RESULT([no]) | |
| 124 fi | |
| 125 ]) | |
| 126 | |
| 127 | |
| 128 dnl CURL_CHECK_COMPILER_DEC_C | |
| 129 dnl ------------------------------------------------- | |
| 130 dnl Verify if compiler being used is DEC C. | |
| 131 | |
| 132 AC_DEFUN([CURL_CHECK_COMPILER_DEC_C], [ | |
| 133 AC_MSG_CHECKING([if compiler is DEC/Compaq/HP C]) | |
| 134 CURL_CHECK_DEF([__DECC], [], [silent]) | |
| 135 CURL_CHECK_DEF([__DECC_VER], [], [silent]) | |
| 136 if test "$curl_cv_have_def___DECC" = "yes" && | |
| 137 test "$curl_cv_have_def___DECC_VER" = "yes"; then | |
| 138 AC_MSG_RESULT([yes]) | |
| 139 compiler_id="DEC_C" | |
| 140 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 141 flags_dbg_yes="-g2" | |
| 142 flags_dbg_off="" | |
| 143 flags_opt_all="-O -O0 -O1 -O2 -O3 -O4" | |
| 144 flags_opt_yes="-O1" | |
| 145 flags_opt_off="-O0" | |
| 146 else | |
| 147 AC_MSG_RESULT([no]) | |
| 148 fi | |
| 149 ]) | |
| 150 | |
| 151 | |
| 152 dnl CURL_CHECK_COMPILER_GNU_C | |
| 153 dnl ------------------------------------------------- | |
| 154 dnl Verify if compiler being used is GNU C. | |
| 155 | |
| 156 AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [ | |
| 157 AC_REQUIRE([CURL_CHECK_COMPILER_INTEL_C])dnl | |
| 158 AC_REQUIRE([CURL_CHECK_COMPILER_CLANG])dnl | |
| 159 AC_MSG_CHECKING([if compiler is GNU C]) | |
| 160 CURL_CHECK_DEF([__GNUC__], [], [silent]) | |
| 161 if test "$curl_cv_have_def___GNUC__" = "yes" && | |
| 162 test "$compiler_id" = "unknown"; then | |
| 163 AC_MSG_RESULT([yes]) | |
| 164 compiler_id="GNU_C" | |
| 165 gccver=`$CC -dumpversion` | |
| 166 gccvhi=`echo $gccver | cut -d . -f1` | |
| 167 gccvlo=`echo $gccver | cut -d . -f2` | |
| 168 compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` | |
| 169 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 170 flags_dbg_all="$flags_dbg_all -ggdb" | |
| 171 flags_dbg_all="$flags_dbg_all -gstabs" | |
| 172 flags_dbg_all="$flags_dbg_all -gstabs+" | |
| 173 flags_dbg_all="$flags_dbg_all -gcoff" | |
| 174 flags_dbg_all="$flags_dbg_all -gxcoff" | |
| 175 flags_dbg_all="$flags_dbg_all -gdwarf-2" | |
| 176 flags_dbg_all="$flags_dbg_all -gvms" | |
| 177 flags_dbg_yes="-g" | |
| 178 flags_dbg_off="" | |
| 179 flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast" | |
| 180 flags_opt_yes="-O2" | |
| 181 flags_opt_off="-O0" | |
| 182 CURL_CHECK_DEF([_WIN32], [], [silent]) | |
| 183 else | |
| 184 AC_MSG_RESULT([no]) | |
| 185 fi | |
| 186 ]) | |
| 187 | |
| 188 | |
| 189 dnl CURL_CHECK_COMPILER_HPUX_C | |
| 190 dnl ------------------------------------------------- | |
| 191 dnl Verify if compiler being used is HP-UX C. | |
| 192 | |
| 193 AC_DEFUN([CURL_CHECK_COMPILER_HPUX_C], [ | |
| 194 AC_MSG_CHECKING([if compiler is HP-UX C]) | |
| 195 CURL_CHECK_DEF([__HP_cc], [], [silent]) | |
| 196 if test "$curl_cv_have_def___HP_cc" = "yes"; then | |
| 197 AC_MSG_RESULT([yes]) | |
| 198 compiler_id="HP_UX_C" | |
| 199 flags_dbg_all="-g -s" | |
| 200 flags_dbg_yes="-g" | |
| 201 flags_dbg_off="-s" | |
| 202 flags_opt_all="-O +O0 +O1 +O2 +O3 +O4" | |
| 203 flags_opt_yes="+O2" | |
| 204 flags_opt_off="+O0" | |
| 205 else | |
| 206 AC_MSG_RESULT([no]) | |
| 207 fi | |
| 208 ]) | |
| 209 | |
| 210 | |
| 211 dnl CURL_CHECK_COMPILER_IBM_C | |
| 212 dnl ------------------------------------------------- | |
| 213 dnl Verify if compiler being used is IBM C. | |
| 214 | |
| 215 AC_DEFUN([CURL_CHECK_COMPILER_IBM_C], [ | |
| 216 AC_MSG_CHECKING([if compiler is IBM C]) | |
| 217 CURL_CHECK_DEF([__IBMC__], [], [silent]) | |
| 218 if test "$curl_cv_have_def___IBMC__" = "yes"; then | |
| 219 AC_MSG_RESULT([yes]) | |
| 220 compiler_id="IBM_C" | |
| 221 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 222 flags_dbg_yes="-g" | |
| 223 flags_dbg_off="" | |
| 224 flags_opt_all="-O -O0 -O1 -O2 -O3 -O4 -O5" | |
| 225 flags_opt_all="$flags_opt_all -qnooptimize" | |
| 226 flags_opt_all="$flags_opt_all -qoptimize=0" | |
| 227 flags_opt_all="$flags_opt_all -qoptimize=1" | |
| 228 flags_opt_all="$flags_opt_all -qoptimize=2" | |
| 229 flags_opt_all="$flags_opt_all -qoptimize=3" | |
| 230 flags_opt_all="$flags_opt_all -qoptimize=4" | |
| 231 flags_opt_all="$flags_opt_all -qoptimize=5" | |
| 232 flags_opt_yes="-O2" | |
| 233 flags_opt_off="-qnooptimize" | |
| 234 flags_prefer_cppflags="yes" | |
| 235 else | |
| 236 AC_MSG_RESULT([no]) | |
| 237 fi | |
| 238 ]) | |
| 239 | |
| 240 | |
| 241 dnl CURL_CHECK_COMPILER_INTEL_C | |
| 242 dnl ------------------------------------------------- | |
| 243 dnl Verify if compiler being used is Intel C. | |
| 244 | |
| 245 AC_DEFUN([CURL_CHECK_COMPILER_INTEL_C], [ | |
| 246 AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU_C])dnl | |
| 247 AC_MSG_CHECKING([if compiler is Intel C]) | |
| 248 CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) | |
| 249 if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then | |
| 250 AC_MSG_RESULT([yes]) | |
| 251 compiler_num="$curl_cv_def___INTEL_COMPILER" | |
| 252 CURL_CHECK_DEF([__unix__], [], [silent]) | |
| 253 if test "$curl_cv_have_def___unix__" = "yes"; then | |
| 254 compiler_id="INTEL_UNIX_C" | |
| 255 flags_dbg_all="-g -g0" | |
| 256 flags_dbg_yes="-g" | |
| 257 flags_dbg_off="" | |
| 258 flags_opt_all="-O -O0 -O1 -O2 -O3 -Os" | |
| 259 flags_opt_yes="-O2" | |
| 260 flags_opt_off="-O0" | |
| 261 else | |
| 262 compiler_id="INTEL_WINDOWS_C" | |
| 263 flags_dbg_all="/ZI /Zi /zI /zi /ZD /Zd /zD /zd /Z7 /z7 /Oy /Oy-" | |
| 264 flags_dbg_all="$flags_dbg_all /debug" | |
| 265 flags_dbg_all="$flags_dbg_all /debug:none" | |
| 266 flags_dbg_all="$flags_dbg_all /debug:minimal" | |
| 267 flags_dbg_all="$flags_dbg_all /debug:partial" | |
| 268 flags_dbg_all="$flags_dbg_all /debug:full" | |
| 269 flags_dbg_all="$flags_dbg_all /debug:semantic_stepping" | |
| 270 flags_dbg_all="$flags_dbg_all /debug:extended" | |
| 271 flags_dbg_yes="/Zi /Oy-" | |
| 272 flags_dbg_off="/debug:none /Oy-" | |
| 273 flags_opt_all="/O /O0 /O1 /O2 /O3 /Od /Og /Og- /Oi /Oi-" | |
| 274 flags_opt_yes="/O2" | |
| 275 flags_opt_off="/Od" | |
| 276 fi | |
| 277 else | |
| 278 AC_MSG_RESULT([no]) | |
| 279 fi | |
| 280 ]) | |
| 281 | |
| 282 | |
| 283 dnl CURL_CHECK_COMPILER_LCC | |
| 284 dnl ------------------------------------------------- | |
| 285 dnl Verify if compiler being used is LCC. | |
| 286 | |
| 287 AC_DEFUN([CURL_CHECK_COMPILER_LCC], [ | |
| 288 AC_MSG_CHECKING([if compiler is LCC]) | |
| 289 CURL_CHECK_DEF([__LCC__], [], [silent]) | |
| 290 if test "$curl_cv_have_def___LCC__" = "yes"; then | |
| 291 AC_MSG_RESULT([yes]) | |
| 292 compiler_id="LCC" | |
| 293 flags_dbg_all="-g" | |
| 294 flags_dbg_yes="-g" | |
| 295 flags_dbg_off="" | |
| 296 flags_opt_all="" | |
| 297 flags_opt_yes="" | |
| 298 flags_opt_off="" | |
| 299 else | |
| 300 AC_MSG_RESULT([no]) | |
| 301 fi | |
| 302 ]) | |
| 303 | |
| 304 | |
| 305 dnl CURL_CHECK_COMPILER_SGI_MIPS_C | |
| 306 dnl ------------------------------------------------- | |
| 307 dnl Verify if compiler being used is SGI MIPS C. | |
| 308 | |
| 309 AC_DEFUN([CURL_CHECK_COMPILER_SGI_MIPS_C], [ | |
| 310 AC_REQUIRE([CURL_CHECK_COMPILER_SGI_MIPSPRO_C])dnl | |
| 311 AC_MSG_CHECKING([if compiler is SGI MIPS C]) | |
| 312 CURL_CHECK_DEF([__GNUC__], [], [silent]) | |
| 313 CURL_CHECK_DEF([__sgi], [], [silent]) | |
| 314 if test "$curl_cv_have_def___GNUC__" = "no" && | |
| 315 test "$curl_cv_have_def___sgi" = "yes" && | |
| 316 test "$compiler_id" = "unknown"; then | |
| 317 AC_MSG_RESULT([yes]) | |
| 318 compiler_id="SGI_MIPS_C" | |
| 319 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 320 flags_dbg_yes="-g" | |
| 321 flags_dbg_off="" | |
| 322 flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" | |
| 323 flags_opt_yes="-O2" | |
| 324 flags_opt_off="-O0" | |
| 325 else | |
| 326 AC_MSG_RESULT([no]) | |
| 327 fi | |
| 328 ]) | |
| 329 | |
| 330 | |
| 331 dnl CURL_CHECK_COMPILER_SGI_MIPSPRO_C | |
| 332 dnl ------------------------------------------------- | |
| 333 dnl Verify if compiler being used is SGI MIPSpro C. | |
| 334 | |
| 335 AC_DEFUN([CURL_CHECK_COMPILER_SGI_MIPSPRO_C], [ | |
| 336 AC_BEFORE([$0],[CURL_CHECK_COMPILER_SGI_MIPS_C])dnl | |
| 337 AC_MSG_CHECKING([if compiler is SGI MIPSpro C]) | |
| 338 CURL_CHECK_DEF([__GNUC__], [], [silent]) | |
| 339 CURL_CHECK_DEF([_COMPILER_VERSION], [], [silent]) | |
| 340 CURL_CHECK_DEF([_SGI_COMPILER_VERSION], [], [silent]) | |
| 341 if test "$curl_cv_have_def___GNUC__" = "no" && | |
| 342 (test "$curl_cv_have_def__SGI_COMPILER_VERSION" = "yes" || | |
| 343 test "$curl_cv_have_def__COMPILER_VERSION" = "yes"); then | |
| 344 AC_MSG_RESULT([yes]) | |
| 345 compiler_id="SGI_MIPSPRO_C" | |
| 346 flags_dbg_all="-g -g0 -g1 -g2 -g3" | |
| 347 flags_dbg_yes="-g" | |
| 348 flags_dbg_off="" | |
| 349 flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" | |
| 350 flags_opt_yes="-O2" | |
| 351 flags_opt_off="-O0" | |
| 352 else | |
| 353 AC_MSG_RESULT([no]) | |
| 354 fi | |
| 355 ]) | |
| 356 | |
| 357 | |
| 358 dnl CURL_CHECK_COMPILER_SUNPRO_C | |
| 359 dnl ------------------------------------------------- | |
| 360 dnl Verify if compiler being used is SunPro C. | |
| 361 | |
| 362 AC_DEFUN([CURL_CHECK_COMPILER_SUNPRO_C], [ | |
| 363 AC_MSG_CHECKING([if compiler is SunPro C]) | |
| 364 CURL_CHECK_DEF([__SUNPRO_C], [], [silent]) | |
| 365 if test "$curl_cv_have_def___SUNPRO_C" = "yes"; then | |
| 366 AC_MSG_RESULT([yes]) | |
| 367 compiler_id="SUNPRO_C" | |
| 368 flags_dbg_all="-g -s" | |
| 369 flags_dbg_yes="-g" | |
| 370 flags_dbg_off="-s" | |
| 371 flags_opt_all="-O -xO -xO1 -xO2 -xO3 -xO4 -xO5" | |
| 372 flags_opt_yes="-xO2" | |
| 373 flags_opt_off="" | |
| 374 else | |
| 375 AC_MSG_RESULT([no]) | |
| 376 fi | |
| 377 ]) | |
| 378 | |
| 379 | |
| 380 dnl CURL_CHECK_COMPILER_TINY_C | |
| 381 dnl ------------------------------------------------- | |
| 382 dnl Verify if compiler being used is Tiny C. | |
| 383 | |
| 384 AC_DEFUN([CURL_CHECK_COMPILER_TINY_C], [ | |
| 385 AC_MSG_CHECKING([if compiler is Tiny C]) | |
| 386 CURL_CHECK_DEF([__TINYC__], [], [silent]) | |
| 387 if test "$curl_cv_have_def___TINYC__" = "yes"; then | |
| 388 AC_MSG_RESULT([yes]) | |
| 389 compiler_id="TINY_C" | |
| 390 flags_dbg_all="-g -b" | |
| 391 flags_dbg_yes="-g" | |
| 392 flags_dbg_off="" | |
| 393 flags_opt_all="" | |
| 394 flags_opt_yes="" | |
| 395 flags_opt_off="" | |
| 396 else | |
| 397 AC_MSG_RESULT([no]) | |
| 398 fi | |
| 399 ]) | |
| 400 | |
| 401 | |
| 402 dnl CURL_CHECK_COMPILER_WATCOM_C | |
| 403 dnl ------------------------------------------------- | |
| 404 dnl Verify if compiler being used is Watcom C. | |
| 405 | |
| 406 AC_DEFUN([CURL_CHECK_COMPILER_WATCOM_C], [ | |
| 407 AC_MSG_CHECKING([if compiler is Watcom C]) | |
| 408 CURL_CHECK_DEF([__WATCOMC__], [], [silent]) | |
| 409 if test "$curl_cv_have_def___WATCOMC__" = "yes"; then | |
| 410 AC_MSG_RESULT([yes]) | |
| 411 CURL_CHECK_DEF([__UNIX__], [], [silent]) | |
| 412 if test "$curl_cv_have_def___UNIX__" = "yes"; then | |
| 413 compiler_id="WATCOM_UNIX_C" | |
| 414 flags_dbg_all="-g1 -g1+ -g2 -g3" | |
| 415 flags_dbg_yes="-g2" | |
| 416 flags_dbg_off="" | |
| 417 flags_opt_all="-O0 -O1 -O2 -O3" | |
| 418 flags_opt_yes="-O2" | |
| 419 flags_opt_off="-O0" | |
| 420 else | |
| 421 compiler_id="WATCOM_WINDOWS_C" | |
| 422 flags_dbg_all="" | |
| 423 flags_dbg_yes="" | |
| 424 flags_dbg_off="" | |
| 425 flags_opt_all="" | |
| 426 flags_opt_yes="" | |
| 427 flags_opt_off="" | |
| 428 fi | |
| 429 else | |
| 430 AC_MSG_RESULT([no]) | |
| 431 fi | |
| 432 ]) | |
| 433 | |
| 434 | |
| 435 dnl CURL_CONVERT_INCLUDE_TO_ISYSTEM | |
| 436 dnl ------------------------------------------------- | |
| 437 dnl Changes standard include paths present in CFLAGS | |
| 438 dnl and CPPFLAGS into isystem include paths. This is | |
| 439 dnl done to prevent GNUC from generating warnings on | |
| 440 dnl headers from these locations, although on ancient | |
| 441 dnl GNUC versions these warnings are not silenced. | |
| 442 | |
| 443 AC_DEFUN([CURL_CONVERT_INCLUDE_TO_ISYSTEM], [ | |
| 444 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 445 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 446 if test "$compiler_id" = "GNU_C" || | |
| 447 test "$compiler_id" = "CLANG"; then | |
| 448 tmp_has_include="no" | |
| 449 tmp_chg_FLAGS="$CFLAGS" | |
| 450 for word1 in $tmp_chg_FLAGS; do | |
| 451 case "$word1" in | |
| 452 -I*) | |
| 453 tmp_has_include="yes" | |
| 454 ;; | |
| 455 esac | |
| 456 done | |
| 457 if test "$tmp_has_include" = "yes"; then | |
| 458 tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` | |
| 459 tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` | |
| 460 CFLAGS="$tmp_chg_FLAGS" | |
| 461 squeeze CFLAGS | |
| 462 fi | |
| 463 tmp_has_include="no" | |
| 464 tmp_chg_FLAGS="$CPPFLAGS" | |
| 465 for word1 in $tmp_chg_FLAGS; do | |
| 466 case "$word1" in | |
| 467 -I*) | |
| 468 tmp_has_include="yes" | |
| 469 ;; | |
| 470 esac | |
| 471 done | |
| 472 if test "$tmp_has_include" = "yes"; then | |
| 473 tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` | |
| 474 tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` | |
| 475 CPPFLAGS="$tmp_chg_FLAGS" | |
| 476 squeeze CPPFLAGS | |
| 477 fi | |
| 478 fi | |
| 479 ]) | |
| 480 | |
| 481 | |
| 482 dnl CURL_COMPILER_WORKS_IFELSE ([ACTION-IF-WORKS], [ACTION-IF-NOT-WORKS]) | |
| 483 dnl ------------------------------------------------- | |
| 484 dnl Verify if the C compiler seems to work with the | |
| 485 dnl settings that are 'active' at the time the test | |
| 486 dnl is performed. | |
| 487 | |
| 488 AC_DEFUN([CURL_COMPILER_WORKS_IFELSE], [ | |
| 489 dnl compilation capability verification | |
| 490 tmp_compiler_works="unknown" | |
| 491 AC_COMPILE_IFELSE([ | |
| 492 AC_LANG_PROGRAM([[ | |
| 493 ]],[[ | |
| 494 int i = 1; | |
| 495 return i; | |
| 496 ]]) | |
| 497 ],[ | |
| 498 tmp_compiler_works="yes" | |
| 499 ],[ | |
| 500 tmp_compiler_works="no" | |
| 501 echo " " >&6 | |
| 502 sed 's/^/cc-fail: /' conftest.err >&6 | |
| 503 echo " " >&6 | |
| 504 ]) | |
| 505 dnl linking capability verification | |
| 506 if test "$tmp_compiler_works" = "yes"; then | |
| 507 AC_LINK_IFELSE([ | |
| 508 AC_LANG_PROGRAM([[ | |
| 509 ]],[[ | |
| 510 int i = 1; | |
| 511 return i; | |
| 512 ]]) | |
| 513 ],[ | |
| 514 tmp_compiler_works="yes" | |
| 515 ],[ | |
| 516 tmp_compiler_works="no" | |
| 517 echo " " >&6 | |
| 518 sed 's/^/link-fail: /' conftest.err >&6 | |
| 519 echo " " >&6 | |
| 520 ]) | |
| 521 fi | |
| 522 dnl only do runtime verification when not cross-compiling | |
| 523 if test "x$cross_compiling" != "xyes" && | |
| 524 test "$tmp_compiler_works" = "yes"; then | |
| 525 CURL_RUN_IFELSE([ | |
| 526 AC_LANG_PROGRAM([[ | |
| 527 # ifdef __STDC__ | |
| 528 # include <stdlib.h> | |
| 529 # endif | |
| 530 ]],[[ | |
| 531 int i = 0; | |
| 532 exit(i); | |
| 533 ]]) | |
| 534 ],[ | |
| 535 tmp_compiler_works="yes" | |
| 536 ],[ | |
| 537 tmp_compiler_works="no" | |
| 538 echo " " >&6 | |
| 539 echo "run-fail: test program exited with status $ac_status" >&6 | |
| 540 echo " " >&6 | |
| 541 ]) | |
| 542 fi | |
| 543 dnl branch upon test result | |
| 544 if test "$tmp_compiler_works" = "yes"; then | |
| 545 ifelse($1,,:,[$1]) | |
| 546 ifelse($2,,,[else | |
| 547 $2]) | |
| 548 fi | |
| 549 ]) | |
| 550 | |
| 551 | |
| 552 dnl CURL_SET_COMPILER_BASIC_OPTS | |
| 553 dnl ------------------------------------------------- | |
| 554 dnl Sets compiler specific options/flags which do not | |
| 555 dnl depend on configure's debug, optimize or warnings | |
| 556 dnl options. | |
| 557 | |
| 558 AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [ | |
| 559 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 560 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 561 # | |
| 562 if test "$compiler_id" != "unknown"; then | |
| 563 # | |
| 564 if test "$compiler_id" = "GNU_C" || | |
| 565 test "$compiler_id" = "CLANG"; then | |
| 566 CURL_CONVERT_INCLUDE_TO_ISYSTEM | |
| 567 fi | |
| 568 # | |
| 569 tmp_save_CPPFLAGS="$CPPFLAGS" | |
| 570 tmp_save_CFLAGS="$CFLAGS" | |
| 571 tmp_CPPFLAGS="" | |
| 572 tmp_CFLAGS="" | |
| 573 # | |
| 574 case "$compiler_id" in | |
| 575 # | |
| 576 CLANG) | |
| 577 # | |
| 578 dnl Disable warnings for unused arguments, otherwise clang will | |
| 579 dnl warn about compile-time arguments used during link-time, like | |
| 580 dnl -O and -g and -pedantic. | |
| 581 tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments" | |
| 582 ;; | |
| 583 # | |
| 584 DEC_C) | |
| 585 # | |
| 586 dnl Select strict ANSI C compiler mode | |
| 587 tmp_CFLAGS="$tmp_CFLAGS -std1" | |
| 588 dnl Turn off optimizer ANSI C aliasing rules | |
| 589 tmp_CFLAGS="$tmp_CFLAGS -noansi_alias" | |
| 590 dnl Generate warnings for missing function prototypes | |
| 591 tmp_CFLAGS="$tmp_CFLAGS -warnprotos" | |
| 592 dnl Change some warnings into fatal errors | |
| 593 tmp_CFLAGS="$tmp_CFLAGS -msg_fatal toofewargs,toomanyargs" | |
| 594 ;; | |
| 595 # | |
| 596 GNU_C) | |
| 597 # | |
| 598 dnl turn implicit-function-declaration warning into error, | |
| 599 dnl at least gcc 2.95 and later support this | |
| 600 if test "$compiler_num" -ge "295"; then | |
| 601 tmp_CFLAGS="$tmp_CFLAGS -Werror-implicit-function-declaration" | |
| 602 fi | |
| 603 ;; | |
| 604 # | |
| 605 HP_UX_C) | |
| 606 # | |
| 607 dnl Disallow run-time dereferencing of null pointers | |
| 608 tmp_CFLAGS="$tmp_CFLAGS -z" | |
| 609 dnl Disable some remarks | |
| 610 dnl #4227: padding struct with n bytes to align member | |
| 611 dnl #4255: padding size of struct with n bytes to alignment boundary | |
| 612 tmp_CFLAGS="$tmp_CFLAGS +W 4227,4255" | |
| 613 ;; | |
| 614 # | |
| 615 IBM_C) | |
| 616 # | |
| 617 dnl Ensure that compiler optimizations are always thread-safe. | |
| 618 tmp_CPPFLAGS="$tmp_CPPFLAGS -qthreaded" | |
| 619 dnl Disable type based strict aliasing optimizations, using worst | |
| 620 dnl case aliasing assumptions when compiling. Type based aliasing | |
| 621 dnl would restrict the lvalues that could be safely used to access | |
| 622 dnl a data object. | |
| 623 tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias" | |
| 624 dnl Force compiler to stop after the compilation phase, without | |
| 625 dnl generating an object code file when compilation has errors. | |
| 626 tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e" | |
| 627 ;; | |
| 628 # | |
| 629 INTEL_UNIX_C) | |
| 630 # | |
| 631 dnl On unix this compiler uses gcc's header files, so | |
| 632 dnl we select ANSI C89 dialect plus GNU extensions. | |
| 633 tmp_CFLAGS="$tmp_CFLAGS -std=gnu89" | |
| 634 dnl Change some warnings into errors | |
| 635 dnl #140: too many arguments in function call | |
| 636 dnl #147: declaration is incompatible with 'previous one' | |
| 637 dnl #165: too few arguments in function call | |
| 638 dnl #266: function declared implicitly | |
| 639 tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266" | |
| 640 dnl Disable some remarks | |
| 641 dnl #279: controlling expression is constant | |
| 642 dnl #981: operands are evaluated in unspecified order | |
| 643 dnl #1469: "cc" clobber ignored | |
| 644 tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469" | |
| 645 ;; | |
| 646 # | |
| 647 INTEL_WINDOWS_C) | |
| 648 # | |
| 649 dnl Placeholder | |
| 650 tmp_CFLAGS="$tmp_CFLAGS" | |
| 651 ;; | |
| 652 # | |
| 653 LCC) | |
| 654 # | |
| 655 dnl Disallow run-time dereferencing of null pointers | |
| 656 tmp_CFLAGS="$tmp_CFLAGS -n" | |
| 657 ;; | |
| 658 # | |
| 659 SGI_MIPS_C) | |
| 660 # | |
| 661 dnl Placeholder | |
| 662 tmp_CFLAGS="$tmp_CFLAGS" | |
| 663 ;; | |
| 664 # | |
| 665 SGI_MIPSPRO_C) | |
| 666 # | |
| 667 dnl Placeholder | |
| 668 tmp_CFLAGS="$tmp_CFLAGS" | |
| 669 ;; | |
| 670 # | |
| 671 SUNPRO_C) | |
| 672 # | |
| 673 dnl Placeholder | |
| 674 tmp_CFLAGS="$tmp_CFLAGS" | |
| 675 ;; | |
| 676 # | |
| 677 TINY_C) | |
| 678 # | |
| 679 dnl Placeholder | |
| 680 tmp_CFLAGS="$tmp_CFLAGS" | |
| 681 ;; | |
| 682 # | |
| 683 WATCOM_UNIX_C) | |
| 684 # | |
| 685 dnl Placeholder | |
| 686 tmp_CFLAGS="$tmp_CFLAGS" | |
| 687 ;; | |
| 688 # | |
| 689 WATCOM_WINDOWS_C) | |
| 690 # | |
| 691 dnl Placeholder | |
| 692 tmp_CFLAGS="$tmp_CFLAGS" | |
| 693 ;; | |
| 694 # | |
| 695 esac | |
| 696 # | |
| 697 squeeze tmp_CPPFLAGS | |
| 698 squeeze tmp_CFLAGS | |
| 699 # | |
| 700 if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then | |
| 701 AC_MSG_CHECKING([if compiler accepts some basic options]) | |
| 702 CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" | |
| 703 CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" | |
| 704 squeeze CPPFLAGS | |
| 705 squeeze CFLAGS | |
| 706 CURL_COMPILER_WORKS_IFELSE([ | |
| 707 AC_MSG_RESULT([yes]) | |
| 708 AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS]) | |
| 709 ],[ | |
| 710 AC_MSG_RESULT([no]) | |
| 711 AC_MSG_WARN([compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS]) | |
| 712 dnl restore initial settings | |
| 713 CPPFLAGS="$tmp_save_CPPFLAGS" | |
| 714 CFLAGS="$tmp_save_CFLAGS" | |
| 715 ]) | |
| 716 fi | |
| 717 # | |
| 718 fi | |
| 719 ]) | |
| 720 | |
| 721 | |
| 722 dnl CURL_SET_COMPILER_DEBUG_OPTS | |
| 723 dnl ------------------------------------------------- | |
| 724 dnl Sets compiler specific options/flags which depend | |
| 725 dnl on configure's debug option. | |
| 726 | |
| 727 AC_DEFUN([CURL_SET_COMPILER_DEBUG_OPTS], [ | |
| 728 AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl | |
| 729 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 730 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 731 # | |
| 732 if test "$compiler_id" != "unknown"; then | |
| 733 # | |
| 734 tmp_save_CFLAGS="$CFLAGS" | |
| 735 tmp_save_CPPFLAGS="$CPPFLAGS" | |
| 736 # | |
| 737 tmp_options="" | |
| 738 tmp_CFLAGS="$CFLAGS" | |
| 739 tmp_CPPFLAGS="$CPPFLAGS" | |
| 740 CURL_VAR_STRIP([tmp_CFLAGS],[$flags_dbg_all]) | |
| 741 CURL_VAR_STRIP([tmp_CPPFLAGS],[$flags_dbg_all]) | |
| 742 # | |
| 743 if test "$want_debug" = "yes"; then | |
| 744 AC_MSG_CHECKING([if compiler accepts debug enabling options]) | |
| 745 tmp_options="$flags_dbg_yes" | |
| 746 fi | |
| 747 if test "$want_debug" = "no"; then | |
| 748 AC_MSG_CHECKING([if compiler accepts debug disabling options]) | |
| 749 tmp_options="$flags_dbg_off" | |
| 750 fi | |
| 751 # | |
| 752 if test "$flags_prefer_cppflags" = "yes"; then | |
| 753 CPPFLAGS="$tmp_CPPFLAGS $tmp_options" | |
| 754 CFLAGS="$tmp_CFLAGS" | |
| 755 else | |
| 756 CPPFLAGS="$tmp_CPPFLAGS" | |
| 757 CFLAGS="$tmp_CFLAGS $tmp_options" | |
| 758 fi | |
| 759 squeeze CPPFLAGS | |
| 760 squeeze CFLAGS | |
| 761 CURL_COMPILER_WORKS_IFELSE([ | |
| 762 AC_MSG_RESULT([yes]) | |
| 763 AC_MSG_NOTICE([compiler options added: $tmp_options]) | |
| 764 ],[ | |
| 765 AC_MSG_RESULT([no]) | |
| 766 AC_MSG_WARN([compiler options rejected: $tmp_options]) | |
| 767 dnl restore initial settings | |
| 768 CPPFLAGS="$tmp_save_CPPFLAGS" | |
| 769 CFLAGS="$tmp_save_CFLAGS" | |
| 770 ]) | |
| 771 # | |
| 772 fi | |
| 773 ]) | |
| 774 | |
| 775 | |
| 776 dnl CURL_SET_COMPILER_OPTIMIZE_OPTS | |
| 777 dnl ------------------------------------------------- | |
| 778 dnl Sets compiler specific options/flags which depend | |
| 779 dnl on configure's optimize option. | |
| 780 | |
| 781 AC_DEFUN([CURL_SET_COMPILER_OPTIMIZE_OPTS], [ | |
| 782 AC_REQUIRE([CURL_CHECK_OPTION_OPTIMIZE])dnl | |
| 783 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 784 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 785 # | |
| 786 if test "$compiler_id" != "unknown"; then | |
| 787 # | |
| 788 tmp_save_CFLAGS="$CFLAGS" | |
| 789 tmp_save_CPPFLAGS="$CPPFLAGS" | |
| 790 # | |
| 791 tmp_options="" | |
| 792 tmp_CFLAGS="$CFLAGS" | |
| 793 tmp_CPPFLAGS="$CPPFLAGS" | |
| 794 honor_optimize_option="yes" | |
| 795 # | |
| 796 dnl If optimization request setting has not been explicitly specified, | |
| 797 dnl it has been derived from the debug setting and initially assumed. | |
| 798 dnl This initially assumed optimizer setting will finally be ignored | |
| 799 dnl if CFLAGS or CPPFLAGS already hold optimizer flags. This implies | |
| 800 dnl that an initially assumed optimizer setting might not be honored. | |
| 801 # | |
| 802 if test "$want_optimize" = "assume_no" || | |
| 803 test "$want_optimize" = "assume_yes"; then | |
| 804 AC_MSG_CHECKING([if compiler optimizer assumed setting might be used]) | |
| 805 CURL_VAR_MATCH_IFELSE([tmp_CFLAGS],[$flags_opt_all],[ | |
| 806 honor_optimize_option="no" | |
| 807 ]) | |
| 808 CURL_VAR_MATCH_IFELSE([tmp_CPPFLAGS],[$flags_opt_all],[ | |
| 809 honor_optimize_option="no" | |
| 810 ]) | |
| 811 AC_MSG_RESULT([$honor_optimize_option]) | |
| 812 if test "$honor_optimize_option" = "yes"; then | |
| 813 if test "$want_optimize" = "assume_yes"; then | |
| 814 want_optimize="yes" | |
| 815 fi | |
| 816 if test "$want_optimize" = "assume_no"; then | |
| 817 want_optimize="no" | |
| 818 fi | |
| 819 fi | |
| 820 fi | |
| 821 # | |
| 822 if test "$honor_optimize_option" = "yes"; then | |
| 823 CURL_VAR_STRIP([tmp_CFLAGS],[$flags_opt_all]) | |
| 824 CURL_VAR_STRIP([tmp_CPPFLAGS],[$flags_opt_all]) | |
| 825 if test "$want_optimize" = "yes"; then | |
| 826 AC_MSG_CHECKING([if compiler accepts optimizer enabling options]) | |
| 827 tmp_options="$flags_opt_yes" | |
| 828 fi | |
| 829 if test "$want_optimize" = "no"; then | |
| 830 AC_MSG_CHECKING([if compiler accepts optimizer disabling options]) | |
| 831 tmp_options="$flags_opt_off" | |
| 832 fi | |
| 833 if test "$flags_prefer_cppflags" = "yes"; then | |
| 834 CPPFLAGS="$tmp_CPPFLAGS $tmp_options" | |
| 835 CFLAGS="$tmp_CFLAGS" | |
| 836 else | |
| 837 CPPFLAGS="$tmp_CPPFLAGS" | |
| 838 CFLAGS="$tmp_CFLAGS $tmp_options" | |
| 839 fi | |
| 840 squeeze CPPFLAGS | |
| 841 squeeze CFLAGS | |
| 842 CURL_COMPILER_WORKS_IFELSE([ | |
| 843 AC_MSG_RESULT([yes]) | |
| 844 AC_MSG_NOTICE([compiler options added: $tmp_options]) | |
| 845 ],[ | |
| 846 AC_MSG_RESULT([no]) | |
| 847 AC_MSG_WARN([compiler options rejected: $tmp_options]) | |
| 848 dnl restore initial settings | |
| 849 CPPFLAGS="$tmp_save_CPPFLAGS" | |
| 850 CFLAGS="$tmp_save_CFLAGS" | |
| 851 ]) | |
| 852 fi | |
| 853 # | |
| 854 fi | |
| 855 ]) | |
| 856 | |
| 857 | |
| 858 dnl CURL_SET_COMPILER_WARNING_OPTS | |
| 859 dnl ------------------------------------------------- | |
| 860 dnl Sets compiler options/flags which depend on | |
| 861 dnl configure's warnings given option. | |
| 862 | |
| 863 AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ | |
| 864 AC_REQUIRE([CURL_CHECK_OPTION_WARNINGS])dnl | |
| 865 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 866 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 867 # | |
| 868 if test "$compiler_id" != "unknown"; then | |
| 869 # | |
| 870 tmp_save_CPPFLAGS="$CPPFLAGS" | |
| 871 tmp_save_CFLAGS="$CFLAGS" | |
| 872 tmp_CPPFLAGS="" | |
| 873 tmp_CFLAGS="" | |
| 874 # | |
| 875 case "$compiler_id" in | |
| 876 # | |
| 877 CLANG) | |
| 878 # | |
| 879 if test "$want_warnings" = "yes"; then | |
| 880 tmp_CFLAGS="$tmp_CFLAGS -pedantic" | |
| 881 tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" | |
| 882 tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" | |
| 883 tmp_CFLAGS="$tmp_CFLAGS -Wshadow" | |
| 884 tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" | |
| 885 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" | |
| 886 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" | |
| 887 tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" | |
| 888 tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" | |
| 889 tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" | |
| 890 tmp_CFLAGS="$tmp_CFLAGS -Wundef" | |
| 891 tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" | |
| 892 tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" | |
| 893 tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" | |
| 894 tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" | |
| 895 tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" | |
| 896 tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32" | |
| 897 # | |
| 898 dnl Only clang 1.1 or later | |
| 899 if test "$compiler_num" -ge "101"; then | |
| 900 tmp_CFLAGS="$tmp_CFLAGS -Wunused" | |
| 901 fi | |
| 902 # | |
| 903 dnl Only clang 2.8 or later | |
| 904 if test "$compiler_num" -ge "208"; then | |
| 905 tmp_CFLAGS="$tmp_CFLAGS -Wvla" | |
| 906 fi | |
| 907 # | |
| 908 dnl Only clang 2.9 or later | |
| 909 if test "$compiler_num" -ge "209"; then | |
| 910 tmp_CFLAGS="$tmp_CFLAGS -Wshift-sign-overflow" | |
| 911 fi | |
| 912 # | |
| 913 dnl Only clang 3.2 or later | |
| 914 if test "$compiler_num" -ge "302"; then | |
| 915 case $host_os in | |
| 916 cygwin* | mingw*) | |
| 917 dnl skip missing-variable-declarations warnings for cygwin and | |
| 918 dnl mingw because the libtool wrapper executable causes them | |
| 919 ;; | |
| 920 *) | |
| 921 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-variable-declarations" | |
| 922 ;; | |
| 923 esac | |
| 924 fi | |
| 925 # | |
| 926 dnl Only clang 3.6 or later | |
| 927 if test "$compiler_num" -ge "306"; then | |
| 928 tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion" | |
| 929 fi | |
| 930 # | |
| 931 dnl Only clang 3.9 or later | |
| 932 if test "$compiler_num" -ge "309"; then | |
| 933 tmp_CFLAGS="$tmp_CFLAGS -Wcomma" | |
| 934 # avoid the varargs warning, fixed in 4.0 | |
| 935 # https://bugs.llvm.org/show_bug.cgi?id=29140 | |
| 936 if test "$compiler_num" -lt "400"; then | |
| 937 tmp_CFLAGS="$tmp_CFLAGS -Wno-varargs" | |
| 938 fi | |
| 939 fi | |
| 940 fi | |
| 941 ;; | |
| 942 # | |
| 943 DEC_C) | |
| 944 # | |
| 945 if test "$want_warnings" = "yes"; then | |
| 946 dnl Select a higher warning level than default level2 | |
| 947 tmp_CFLAGS="$tmp_CFLAGS -msg_enable level3" | |
| 948 fi | |
| 949 ;; | |
| 950 # | |
| 951 GNU_C) | |
| 952 # | |
| 953 if test "$want_warnings" = "yes"; then | |
| 954 # | |
| 955 dnl Do not enable -pedantic when cross-compiling with a gcc older | |
| 956 dnl than 3.0, to avoid warnings from third party system headers. | |
| 957 if test "x$cross_compiling" != "xyes" || | |
| 958 test "$compiler_num" -ge "300"; then | |
| 959 tmp_CFLAGS="$tmp_CFLAGS -pedantic" | |
| 960 fi | |
| 961 # | |
| 962 dnl Set of options we believe *ALL* gcc versions support: | |
| 963 tmp_CFLAGS="$tmp_CFLAGS -Wall -W" | |
| 964 # | |
| 965 dnl Only gcc 1.4 or later | |
| 966 if test "$compiler_num" -ge "104"; then | |
| 967 tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" | |
| 968 dnl If not cross-compiling with a gcc older than 3.0 | |
| 969 if test "x$cross_compiling" != "xyes" || | |
| 970 test "$compiler_num" -ge "300"; then | |
| 971 tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow" | |
| 972 fi | |
| 973 fi | |
| 974 # | |
| 975 dnl Only gcc 2.7 or later | |
| 976 if test "$compiler_num" -ge "207"; then | |
| 977 tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" | |
| 978 dnl If not cross-compiling with a gcc older than 3.0 | |
| 979 if test "x$cross_compiling" != "xyes" || | |
| 980 test "$compiler_num" -ge "300"; then | |
| 981 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" | |
| 982 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" | |
| 983 fi | |
| 984 fi | |
| 985 # | |
| 986 dnl Only gcc 2.95 or later | |
| 987 if test "$compiler_num" -ge "295"; then | |
| 988 tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" | |
| 989 tmp_CFLAGS="$tmp_CFLAGS -Wbad-function-cast" | |
| 990 fi | |
| 991 # | |
| 992 dnl Only gcc 2.96 or later | |
| 993 if test "$compiler_num" -ge "296"; then | |
| 994 tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" | |
| 995 tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" | |
| 996 dnl -Wundef used only if gcc is 2.96 or later since we get | |
| 997 dnl lots of "`_POSIX_C_SOURCE' is not defined" in system | |
| 998 dnl headers with gcc 2.95.4 on FreeBSD 4.9 | |
| 999 tmp_CFLAGS="$tmp_CFLAGS -Wundef" | |
| 1000 fi | |
| 1001 # | |
| 1002 dnl Only gcc 2.97 or later | |
| 1003 if test "$compiler_num" -ge "297"; then | |
| 1004 tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" | |
| 1005 fi | |
| 1006 # | |
| 1007 dnl Only gcc 3.0 or later | |
| 1008 if test "$compiler_num" -ge "300"; then | |
| 1009 dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on | |
| 1010 dnl on i686-Linux as it gives us heaps with false positives. | |
| 1011 dnl Also, on gcc 4.0.X it is totally unbearable and complains all | |
| 1012 dnl over making it unusable for generic purposes. Let's not use it. | |
| 1013 tmp_CFLAGS="$tmp_CFLAGS" | |
| 1014 fi | |
| 1015 # | |
| 1016 dnl Only gcc 3.3 or later | |
| 1017 if test "$compiler_num" -ge "303"; then | |
| 1018 tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" | |
| 1019 fi | |
| 1020 # | |
| 1021 dnl Only gcc 3.4 or later | |
| 1022 if test "$compiler_num" -ge "304"; then | |
| 1023 tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" | |
| 1024 tmp_CFLAGS="$tmp_CFLAGS -Wold-style-definition" | |
| 1025 fi | |
| 1026 # | |
| 1027 dnl Only gcc 4.0 or later | |
| 1028 if test "$compiler_num" -ge "400"; then | |
| 1029 tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" | |
| 1030 fi | |
| 1031 # | |
| 1032 dnl Only gcc 4.2 or later | |
| 1033 if test "$compiler_num" -ge "402"; then | |
| 1034 tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" | |
| 1035 fi | |
| 1036 # | |
| 1037 dnl Only gcc 4.3 or later | |
| 1038 if test "$compiler_num" -ge "403"; then | |
| 1039 tmp_CFLAGS="$tmp_CFLAGS -Wtype-limits -Wold-style-declaration" | |
| 1040 tmp_CFLAGS="$tmp_CFLAGS -Wmissing-parameter-type -Wempty-body" | |
| 1041 tmp_CFLAGS="$tmp_CFLAGS -Wclobbered -Wignored-qualifiers" | |
| 1042 tmp_CFLAGS="$tmp_CFLAGS -Wconversion -Wno-sign-conversion -Wvla" | |
| 1043 dnl required for -Warray-bounds, included in -Wall | |
| 1044 tmp_CFLAGS="$tmp_CFLAGS -ftree-vrp" | |
| 1045 fi | |
| 1046 # | |
| 1047 dnl Only gcc 4.5 or later | |
| 1048 if test "$compiler_num" -ge "405"; then | |
| 1049 dnl Only windows targets | |
| 1050 if test "$curl_cv_have_def__WIN32" = "yes"; then | |
| 1051 tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format" | |
| 1052 fi | |
| 1053 fi | |
| 1054 # | |
| 1055 dnl Only gcc 4.6 or later | |
| 1056 if test "$compiler_num" -ge "406"; then | |
| 1057 tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion" | |
| 1058 fi | |
| 1059 # | |
| 1060 dnl only gcc 4.8 or later | |
| 1061 if test "$compiler_num" -ge "408"; then | |
| 1062 tmp_CFLAGS="$tmp_CFLAGS -Wformat=2" | |
| 1063 fi | |
| 1064 # | |
| 1065 dnl Only gcc 5 or later | |
| 1066 if test "$compiler_num" -ge "500"; then | |
| 1067 tmp_CFLAGS="$tmp_CFLAGS -Warray-bounds=2" | |
| 1068 fi | |
| 1069 # | |
| 1070 dnl Only gcc 6 or later | |
| 1071 if test "$compiler_num" -ge "600"; then | |
| 1072 tmp_CFLAGS="$tmp_CFLAGS -Wshift-negative-value" | |
| 1073 tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2" | |
| 1074 tmp_CFLAGS="$tmp_CFLAGS -Wnull-dereference -fdelete-null-pointer-checks" | |
| 1075 tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-cond" | |
| 1076 tmp_CFLAGS="$tmp_CFLAGS -Wunused-const-variable" | |
| 1077 fi | |
| 1078 # | |
| 1079 dnl Only gcc 7 or later | |
| 1080 if test "$compiler_num" -ge "700"; then | |
| 1081 tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-branches" | |
| 1082 tmp_CFLAGS="$tmp_CFLAGS -Wrestrict" | |
| 1083 tmp_CFLAGS="$tmp_CFLAGS -Walloc-zero" | |
| 1084 tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2" | |
| 1085 tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2" | |
| 1086 tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough=4" | |
| 1087 fi | |
| 1088 # | |
| 1089 fi | |
| 1090 # | |
| 1091 dnl Do not issue warnings for code in system include paths. | |
| 1092 if test "$compiler_num" -ge "300"; then | |
| 1093 tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" | |
| 1094 else | |
| 1095 dnl When cross-compiling with a gcc older than 3.0, disable | |
| 1096 dnl some warnings triggered on third party system headers. | |
| 1097 if test "x$cross_compiling" = "xyes"; then | |
| 1098 if test "$compiler_num" -ge "104"; then | |
| 1099 dnl gcc 1.4 or later | |
| 1100 tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow" | |
| 1101 fi | |
| 1102 if test "$compiler_num" -ge "207"; then | |
| 1103 dnl gcc 2.7 or later | |
| 1104 tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations" | |
| 1105 tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes" | |
| 1106 fi | |
| 1107 fi | |
| 1108 fi | |
| 1109 ;; | |
| 1110 # | |
| 1111 HP_UX_C) | |
| 1112 # | |
| 1113 if test "$want_warnings" = "yes"; then | |
| 1114 dnl Issue all warnings | |
| 1115 tmp_CFLAGS="$tmp_CFLAGS +w1" | |
| 1116 fi | |
| 1117 ;; | |
| 1118 # | |
| 1119 IBM_C) | |
| 1120 # | |
| 1121 dnl Placeholder | |
| 1122 tmp_CFLAGS="$tmp_CFLAGS" | |
| 1123 ;; | |
| 1124 # | |
| 1125 INTEL_UNIX_C) | |
| 1126 # | |
| 1127 if test "$want_warnings" = "yes"; then | |
| 1128 if test "$compiler_num" -gt "600"; then | |
| 1129 dnl Show errors, warnings, and remarks | |
| 1130 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2" | |
| 1131 dnl Perform extra compile-time code checking | |
| 1132 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck" | |
| 1133 dnl Warn on nested comments | |
| 1134 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment" | |
| 1135 dnl Show warnings relative to deprecated features | |
| 1136 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated" | |
| 1137 dnl Enable warnings for missing prototypes | |
| 1138 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes" | |
| 1139 dnl Enable warnings for 64-bit portability issues | |
| 1140 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64" | |
| 1141 dnl Enable warnings for questionable pointer arithmetic | |
| 1142 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith" | |
| 1143 dnl Check for function return typw issues | |
| 1144 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type" | |
| 1145 dnl Warn on variable declarations hiding a previous one | |
| 1146 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow" | |
| 1147 dnl Warn when a variable is used before initialized | |
| 1148 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized" | |
| 1149 dnl Warn if a declared function is not used | |
| 1150 tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function" | |
| 1151 fi | |
| 1152 fi | |
| 1153 dnl Disable using EBP register in optimizations | |
| 1154 tmp_CFLAGS="$tmp_CFLAGS -fno-omit-frame-pointer" | |
| 1155 dnl Disable use of ANSI C aliasing rules in optimizations | |
| 1156 tmp_CFLAGS="$tmp_CFLAGS -fno-strict-aliasing" | |
| 1157 dnl Value-safe optimizations on floating-point data | |
| 1158 tmp_CFLAGS="$tmp_CFLAGS -fp-model precise" | |
| 1159 dnl Only icc 10.0 or later | |
| 1160 if test "$compiler_num" -ge "1000"; then | |
| 1161 dnl Disable vectorizer diagnostic information | |
| 1162 tmp_CFLAGS="$tmp_CFLAGS -vec-report0" | |
| 1163 fi | |
| 1164 ;; | |
| 1165 # | |
| 1166 INTEL_WINDOWS_C) | |
| 1167 # | |
| 1168 dnl Placeholder | |
| 1169 tmp_CFLAGS="$tmp_CFLAGS" | |
| 1170 ;; | |
| 1171 # | |
| 1172 LCC) | |
| 1173 # | |
| 1174 if test "$want_warnings" = "yes"; then | |
| 1175 dnl Highest warning level is double -A, next is single -A. | |
| 1176 dnl Due to the big number of warnings these trigger on third | |
| 1177 dnl party header files it is impractical for us to use any of | |
| 1178 dnl them here. If you want them simply define it in CPPFLAGS. | |
| 1179 tmp_CFLAGS="$tmp_CFLAGS" | |
| 1180 fi | |
| 1181 ;; | |
| 1182 # | |
| 1183 SGI_MIPS_C) | |
| 1184 # | |
| 1185 if test "$want_warnings" = "yes"; then | |
| 1186 dnl Perform stricter semantic and lint-like checks | |
| 1187 tmp_CFLAGS="$tmp_CFLAGS -fullwarn" | |
| 1188 fi | |
| 1189 ;; | |
| 1190 # | |
| 1191 SGI_MIPSPRO_C) | |
| 1192 # | |
| 1193 if test "$want_warnings" = "yes"; then | |
| 1194 dnl Perform stricter semantic and lint-like checks | |
| 1195 tmp_CFLAGS="$tmp_CFLAGS -fullwarn" | |
| 1196 dnl Disable some remarks | |
| 1197 dnl #1209: controlling expression is constant | |
| 1198 tmp_CFLAGS="$tmp_CFLAGS -woff 1209" | |
| 1199 fi | |
| 1200 ;; | |
| 1201 # | |
| 1202 SUNPRO_C) | |
| 1203 # | |
| 1204 if test "$want_warnings" = "yes"; then | |
| 1205 dnl Perform stricter semantic and lint-like checks | |
| 1206 tmp_CFLAGS="$tmp_CFLAGS -v" | |
| 1207 fi | |
| 1208 ;; | |
| 1209 # | |
| 1210 TINY_C) | |
| 1211 # | |
| 1212 if test "$want_warnings" = "yes"; then | |
| 1213 dnl Activate all warnings | |
| 1214 tmp_CFLAGS="$tmp_CFLAGS -Wall" | |
| 1215 dnl Make string constants be of type const char * | |
| 1216 tmp_CFLAGS="$tmp_CFLAGS -Wwrite-strings" | |
| 1217 dnl Warn use of unsupported GCC features ignored by TCC | |
| 1218 tmp_CFLAGS="$tmp_CFLAGS -Wunsupported" | |
| 1219 fi | |
| 1220 ;; | |
| 1221 # | |
| 1222 WATCOM_UNIX_C) | |
| 1223 # | |
| 1224 if test "$want_warnings" = "yes"; then | |
| 1225 dnl Issue all warnings | |
| 1226 tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" | |
| 1227 fi | |
| 1228 ;; | |
| 1229 # | |
| 1230 WATCOM_WINDOWS_C) | |
| 1231 # | |
| 1232 dnl Placeholder | |
| 1233 tmp_CFLAGS="$tmp_CFLAGS" | |
| 1234 ;; | |
| 1235 # | |
| 1236 esac | |
| 1237 # | |
| 1238 squeeze tmp_CPPFLAGS | |
| 1239 squeeze tmp_CFLAGS | |
| 1240 # | |
| 1241 if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then | |
| 1242 AC_MSG_CHECKING([if compiler accepts strict warning options]) | |
| 1243 CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" | |
| 1244 CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" | |
| 1245 squeeze CPPFLAGS | |
| 1246 squeeze CFLAGS | |
| 1247 CURL_COMPILER_WORKS_IFELSE([ | |
| 1248 AC_MSG_RESULT([yes]) | |
| 1249 AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS]) | |
| 1250 ],[ | |
| 1251 AC_MSG_RESULT([no]) | |
| 1252 AC_MSG_WARN([compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS]) | |
| 1253 dnl restore initial settings | |
| 1254 CPPFLAGS="$tmp_save_CPPFLAGS" | |
| 1255 CFLAGS="$tmp_save_CFLAGS" | |
| 1256 ]) | |
| 1257 fi | |
| 1258 # | |
| 1259 fi | |
| 1260 ]) | |
| 1261 | |
| 1262 | |
| 1263 dnl CURL_SHFUNC_SQUEEZE | |
| 1264 dnl ------------------------------------------------- | |
| 1265 dnl Declares a shell function squeeze() which removes | |
| 1266 dnl redundant whitespace out of a shell variable. | |
| 1267 | |
| 1268 AC_DEFUN([CURL_SHFUNC_SQUEEZE], [ | |
| 1269 squeeze() { | |
| 1270 _sqz_result="" | |
| 1271 eval _sqz_input=\[$][$]1 | |
| 1272 for _sqz_token in $_sqz_input; do | |
| 1273 if test -z "$_sqz_result"; then | |
| 1274 _sqz_result="$_sqz_token" | |
| 1275 else | |
| 1276 _sqz_result="$_sqz_result $_sqz_token" | |
| 1277 fi | |
| 1278 done | |
| 1279 eval [$]1=\$_sqz_result | |
| 1280 return 0 | |
| 1281 } | |
| 1282 ]) | |
| 1283 | |
| 1284 | |
| 1285 dnl CURL_CHECK_CURLDEBUG | |
| 1286 dnl ------------------------------------------------- | |
| 1287 dnl Settings which depend on configure's curldebug given | |
| 1288 dnl option, and other additional configure pre-requisites. | |
| 1289 dnl Actually the curl debug memory tracking feature can | |
| 1290 dnl only be used/enabled when libcurl is built as a static | |
| 1291 dnl library or as a shared one on those systems on which | |
| 1292 dnl shared libraries support undefined symbols. | |
| 1293 | |
| 1294 AC_DEFUN([CURL_CHECK_CURLDEBUG], [ | |
| 1295 AC_REQUIRE([XC_LIBTOOL])dnl | |
| 1296 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 1297 supports_curldebug="unknown" | |
| 1298 if test "$want_curldebug" = "yes"; then | |
| 1299 if test "x$enable_shared" != "xno" && | |
| 1300 test "x$enable_shared" != "xyes"; then | |
| 1301 AC_MSG_WARN([unknown enable_shared setting.]) | |
| 1302 supports_curldebug="no" | |
| 1303 fi | |
| 1304 if test "x$enable_static" != "xno" && | |
| 1305 test "x$enable_static" != "xyes"; then | |
| 1306 AC_MSG_WARN([unknown enable_static setting.]) | |
| 1307 supports_curldebug="no" | |
| 1308 fi | |
| 1309 if test "$supports_curldebug" != "no"; then | |
| 1310 if test "$enable_shared" = "yes" && | |
| 1311 test "x$xc_lt_shlib_use_no_undefined" = 'xyes'; then | |
| 1312 supports_curldebug="no" | |
| 1313 AC_MSG_WARN([shared library does not support undefined symbols.]) | |
| 1314 fi | |
| 1315 fi | |
| 1316 fi | |
| 1317 # | |
| 1318 if test "$want_curldebug" = "yes"; then | |
| 1319 AC_MSG_CHECKING([if curl debug memory tracking can be enabled]) | |
| 1320 test "$supports_curldebug" = "no" || supports_curldebug="yes" | |
| 1321 AC_MSG_RESULT([$supports_curldebug]) | |
| 1322 if test "$supports_curldebug" = "no"; then | |
| 1323 AC_MSG_WARN([cannot enable curl debug memory tracking.]) | |
| 1324 want_curldebug="no" | |
| 1325 fi | |
| 1326 fi | |
| 1327 ]) | |
| 1328 | |
| 1329 | |
| 1330 | |
| 1331 dnl CURL_CHECK_COMPILER_HALT_ON_ERROR | |
| 1332 dnl ------------------------------------------------- | |
| 1333 dnl Verifies if the compiler actually halts after the | |
| 1334 dnl compilation phase without generating any object | |
| 1335 dnl code file, when the source compiles with errors. | |
| 1336 | |
| 1337 AC_DEFUN([CURL_CHECK_COMPILER_HALT_ON_ERROR], [ | |
| 1338 AC_MSG_CHECKING([if compiler halts on compilation errors]) | |
| 1339 AC_COMPILE_IFELSE([ | |
| 1340 AC_LANG_PROGRAM([[ | |
| 1341 ]],[[ | |
| 1342 force compilation error | |
| 1343 ]]) | |
| 1344 ],[ | |
| 1345 AC_MSG_RESULT([no]) | |
| 1346 AC_MSG_ERROR([compiler does not halt on compilation errors.]) | |
| 1347 ],[ | |
| 1348 AC_MSG_RESULT([yes]) | |
| 1349 ]) | |
| 1350 ]) | |
| 1351 | |
| 1352 | |
| 1353 dnl CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE | |
| 1354 dnl ------------------------------------------------- | |
| 1355 dnl Verifies if the compiler actually halts after the | |
| 1356 dnl compilation phase without generating any object | |
| 1357 dnl code file, when the source code tries to define a | |
| 1358 dnl type for a constant array with negative dimension. | |
| 1359 | |
| 1360 AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [ | |
| 1361 AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl | |
| 1362 AC_MSG_CHECKING([if compiler halts on negative sized arrays]) | |
| 1363 AC_COMPILE_IFELSE([ | |
| 1364 AC_LANG_PROGRAM([[ | |
| 1365 typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ]; | |
| 1366 ]],[[ | |
| 1367 bad_t dummy; | |
| 1368 ]]) | |
| 1369 ],[ | |
| 1370 AC_MSG_RESULT([no]) | |
| 1371 AC_MSG_ERROR([compiler does not halt on negative sized arrays.]) | |
| 1372 ],[ | |
| 1373 AC_MSG_RESULT([yes]) | |
| 1374 ]) | |
| 1375 ]) | |
| 1376 | |
| 1377 | |
| 1378 dnl CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE | |
| 1379 dnl ------------------------------------------------- | |
| 1380 dnl Verifies if the compiler is capable of handling the | |
| 1381 dnl size of a struct member, struct which is a function | |
| 1382 dnl result, as a compilation-time condition inside the | |
| 1383 dnl type definition of a constant array. | |
| 1384 | |
| 1385 AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [ | |
| 1386 AC_REQUIRE([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE])dnl | |
| 1387 AC_MSG_CHECKING([if compiler struct member size checking works]) | |
| 1388 tst_compiler_check_one_works="unknown" | |
| 1389 AC_COMPILE_IFELSE([ | |
| 1390 AC_LANG_PROGRAM([[ | |
| 1391 struct mystruct { | |
| 1392 int mi; | |
| 1393 char mc; | |
| 1394 struct mystruct *next; | |
| 1395 }; | |
| 1396 struct mystruct myfunc(); | |
| 1397 typedef char good_t1[sizeof(myfunc().mi) == sizeof(int) ? 1 : -1 ]; | |
| 1398 typedef char good_t2[sizeof(myfunc().mc) == sizeof(char) ? 1 : -1 ]; | |
| 1399 ]],[[ | |
| 1400 good_t1 dummy1; | |
| 1401 good_t2 dummy2; | |
| 1402 ]]) | |
| 1403 ],[ | |
| 1404 tst_compiler_check_one_works="yes" | |
| 1405 ],[ | |
| 1406 tst_compiler_check_one_works="no" | |
| 1407 sed 's/^/cc-src: /' conftest.$ac_ext >&6 | |
| 1408 sed 's/^/cc-err: /' conftest.err >&6 | |
| 1409 ]) | |
| 1410 tst_compiler_check_two_works="unknown" | |
| 1411 AC_COMPILE_IFELSE([ | |
| 1412 AC_LANG_PROGRAM([[ | |
| 1413 struct mystruct { | |
| 1414 int mi; | |
| 1415 char mc; | |
| 1416 struct mystruct *next; | |
| 1417 }; | |
| 1418 struct mystruct myfunc(); | |
| 1419 typedef char bad_t1[sizeof(myfunc().mi) != sizeof(int) ? 1 : -1 ]; | |
| 1420 typedef char bad_t2[sizeof(myfunc().mc) != sizeof(char) ? 1 : -1 ]; | |
| 1421 ]],[[ | |
| 1422 bad_t1 dummy1; | |
| 1423 bad_t2 dummy2; | |
| 1424 ]]) | |
| 1425 ],[ | |
| 1426 tst_compiler_check_two_works="no" | |
| 1427 ],[ | |
| 1428 tst_compiler_check_two_works="yes" | |
| 1429 ]) | |
| 1430 if test "$tst_compiler_check_one_works" = "yes" && | |
| 1431 test "$tst_compiler_check_two_works" = "yes"; then | |
| 1432 AC_MSG_RESULT([yes]) | |
| 1433 else | |
| 1434 AC_MSG_RESULT([no]) | |
| 1435 AC_MSG_ERROR([compiler fails struct member size checking.]) | |
| 1436 fi | |
| 1437 ]) | |
| 1438 | |
| 1439 | |
| 1440 dnl CURL_CHECK_COMPILER_SYMBOL_HIDING | |
| 1441 dnl ------------------------------------------------- | |
| 1442 dnl Verify if compiler supports hiding library internal symbols, setting | |
| 1443 dnl shell variable supports_symbol_hiding value as appropriate, as well as | |
| 1444 dnl variables symbol_hiding_CFLAGS and symbol_hiding_EXTERN when supported. | |
| 1445 | |
| 1446 AC_DEFUN([CURL_CHECK_COMPILER_SYMBOL_HIDING], [ | |
| 1447 AC_REQUIRE([CURL_CHECK_COMPILER])dnl | |
| 1448 AC_BEFORE([$0],[CURL_CONFIGURE_SYMBOL_HIDING])dnl | |
| 1449 AC_MSG_CHECKING([if compiler supports hiding library internal symbols]) | |
| 1450 supports_symbol_hiding="no" | |
| 1451 symbol_hiding_CFLAGS="" | |
| 1452 symbol_hiding_EXTERN="" | |
| 1453 tmp_CFLAGS="" | |
| 1454 tmp_EXTERN="" | |
| 1455 case "$compiler_id" in | |
| 1456 CLANG) | |
| 1457 dnl All versions of clang support -fvisibility= | |
| 1458 tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" | |
| 1459 tmp_CFLAGS="-fvisibility=hidden" | |
| 1460 supports_symbol_hiding="yes" | |
| 1461 ;; | |
| 1462 GNU_C) | |
| 1463 dnl Only gcc 3.4 or later | |
| 1464 if test "$compiler_num" -ge "304"; then | |
| 1465 if $CC --help --verbose 2>/dev/null | grep fvisibility= >/dev/null ; then | |
| 1466 tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" | |
| 1467 tmp_CFLAGS="-fvisibility=hidden" | |
| 1468 supports_symbol_hiding="yes" | |
| 1469 fi | |
| 1470 fi | |
| 1471 ;; | |
| 1472 INTEL_UNIX_C) | |
| 1473 dnl Only icc 9.0 or later | |
| 1474 if test "$compiler_num" -ge "900"; then | |
| 1475 if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then | |
| 1476 tmp_save_CFLAGS="$CFLAGS" | |
| 1477 CFLAGS="$CFLAGS -fvisibility=hidden" | |
| 1478 AC_LINK_IFELSE([ | |
| 1479 AC_LANG_PROGRAM([[ | |
| 1480 # include <stdio.h> | |
| 1481 ]],[[ | |
| 1482 printf("icc fvisibility bug test"); | |
| 1483 ]]) | |
| 1484 ],[ | |
| 1485 tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" | |
| 1486 tmp_CFLAGS="-fvisibility=hidden" | |
| 1487 supports_symbol_hiding="yes" | |
| 1488 ]) | |
| 1489 CFLAGS="$tmp_save_CFLAGS" | |
| 1490 fi | |
| 1491 fi | |
| 1492 ;; | |
| 1493 SUNPRO_C) | |
| 1494 if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then | |
| 1495 tmp_EXTERN="__global" | |
| 1496 tmp_CFLAGS="-xldscope=hidden" | |
| 1497 supports_symbol_hiding="yes" | |
| 1498 fi | |
| 1499 ;; | |
| 1500 esac | |
| 1501 if test "$supports_symbol_hiding" = "yes"; then | |
| 1502 tmp_save_CFLAGS="$CFLAGS" | |
| 1503 CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" | |
| 1504 squeeze CFLAGS | |
| 1505 AC_COMPILE_IFELSE([ | |
| 1506 AC_LANG_PROGRAM([[ | |
| 1507 $tmp_EXTERN char *dummy(char *buff); | |
| 1508 char *dummy(char *buff) | |
| 1509 { | |
| 1510 if(buff) | |
| 1511 return ++buff; | |
| 1512 else | |
| 1513 return buff; | |
| 1514 } | |
| 1515 ]],[[ | |
| 1516 char b[16]; | |
| 1517 char *r = dummy(&b[0]); | |
| 1518 if(r) | |
| 1519 return (int)*r; | |
| 1520 ]]) | |
| 1521 ],[ | |
| 1522 supports_symbol_hiding="yes" | |
| 1523 if test -f conftest.err; then | |
| 1524 grep 'visibility' conftest.err >/dev/null | |
| 1525 if test "$?" -eq "0"; then | |
| 1526 supports_symbol_hiding="no" | |
| 1527 fi | |
| 1528 fi | |
| 1529 ],[ | |
| 1530 supports_symbol_hiding="no" | |
| 1531 echo " " >&6 | |
| 1532 sed 's/^/cc-src: /' conftest.$ac_ext >&6 | |
| 1533 sed 's/^/cc-err: /' conftest.err >&6 | |
| 1534 echo " " >&6 | |
| 1535 ]) | |
| 1536 CFLAGS="$tmp_save_CFLAGS" | |
| 1537 fi | |
| 1538 if test "$supports_symbol_hiding" = "yes"; then | |
| 1539 AC_MSG_RESULT([yes]) | |
| 1540 symbol_hiding_CFLAGS="$tmp_CFLAGS" | |
| 1541 symbol_hiding_EXTERN="$tmp_EXTERN" | |
| 1542 else | |
| 1543 AC_MSG_RESULT([no]) | |
| 1544 fi | |
| 1545 ]) | |
| 1546 | |
| 1547 | |
| 1548 dnl CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH | |
| 1549 dnl ------------------------------------------------- | |
| 1550 dnl Verifies if the compiler actually halts after the | |
| 1551 dnl compilation phase without generating any object | |
| 1552 dnl code file, when the source code tries to redefine | |
| 1553 dnl a prototype which does not match previous one. | |
| 1554 | |
| 1555 AC_DEFUN([CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH], [ | |
| 1556 AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl | |
| 1557 AC_MSG_CHECKING([if compiler halts on function prototype mismatch]) | |
| 1558 AC_COMPILE_IFELSE([ | |
| 1559 AC_LANG_PROGRAM([[ | |
| 1560 # include <stdlib.h> | |
| 1561 int rand(int n); | |
| 1562 int rand(int n) | |
| 1563 { | |
| 1564 if(n) | |
| 1565 return ++n; | |
| 1566 else | |
| 1567 return n; | |
| 1568 } | |
| 1569 ]],[[ | |
| 1570 int i[2]={0,0}; | |
| 1571 int j = rand(i[0]); | |
| 1572 if(j) | |
| 1573 return j; | |
| 1574 ]]) | |
| 1575 ],[ | |
| 1576 AC_MSG_RESULT([no]) | |
| 1577 AC_MSG_ERROR([compiler does not halt on function prototype mismatch.]) | |
| 1578 ],[ | |
| 1579 AC_MSG_RESULT([yes]) | |
| 1580 ]) | |
| 1581 ]) | |
| 1582 | |
| 1583 | |
| 1584 dnl CURL_VAR_MATCH (VARNAME, VALUE) | |
| 1585 dnl ------------------------------------------------- | |
| 1586 dnl Verifies if shell variable VARNAME contains VALUE. | |
| 1587 dnl Contents of variable VARNAME and VALUE are handled | |
| 1588 dnl as whitespace separated lists of words. If at least | |
| 1589 dnl one word of VALUE is present in VARNAME the match | |
| 1590 dnl is considered positive, otherwise false. | |
| 1591 | |
| 1592 AC_DEFUN([CURL_VAR_MATCH], [ | |
| 1593 ac_var_match_word="no" | |
| 1594 for word1 in $[$1]; do | |
| 1595 for word2 in [$2]; do | |
| 1596 if test "$word1" = "$word2"; then | |
| 1597 ac_var_match_word="yes" | |
| 1598 fi | |
| 1599 done | |
| 1600 done | |
| 1601 ]) | |
| 1602 | |
| 1603 | |
| 1604 dnl CURL_VAR_MATCH_IFELSE (VARNAME, VALUE, | |
| 1605 dnl [ACTION-IF-MATCH], [ACTION-IF-NOT-MATCH]) | |
| 1606 dnl ------------------------------------------------- | |
| 1607 dnl This performs a CURL_VAR_MATCH check and executes | |
| 1608 dnl first branch if the match is positive, otherwise | |
| 1609 dnl the second branch is executed. | |
| 1610 | |
| 1611 AC_DEFUN([CURL_VAR_MATCH_IFELSE], [ | |
| 1612 CURL_VAR_MATCH([$1],[$2]) | |
| 1613 if test "$ac_var_match_word" = "yes"; then | |
| 1614 ifelse($3,,:,[$3]) | |
| 1615 ifelse($4,,,[else | |
| 1616 $4]) | |
| 1617 fi | |
| 1618 ]) | |
| 1619 | |
| 1620 | |
| 1621 dnl CURL_VAR_STRIP (VARNAME, VALUE) | |
| 1622 dnl ------------------------------------------------- | |
| 1623 dnl Contents of variable VARNAME and VALUE are handled | |
| 1624 dnl as whitespace separated lists of words. Each word | |
| 1625 dnl from VALUE is removed from VARNAME when present. | |
| 1626 | |
| 1627 AC_DEFUN([CURL_VAR_STRIP], [ | |
| 1628 AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl | |
| 1629 ac_var_stripped="" | |
| 1630 for word1 in $[$1]; do | |
| 1631 ac_var_strip_word="no" | |
| 1632 for word2 in [$2]; do | |
| 1633 if test "$word1" = "$word2"; then | |
| 1634 ac_var_strip_word="yes" | |
| 1635 fi | |
| 1636 done | |
| 1637 if test "$ac_var_strip_word" = "no"; then | |
| 1638 ac_var_stripped="$ac_var_stripped $word1" | |
| 1639 fi | |
| 1640 done | |
| 1641 dnl squeeze whitespace out of result | |
| 1642 [$1]="$ac_var_stripped" | |
| 1643 squeeze [$1] | |
| 1644 ]) |
