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