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