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>