Daniel Johnson provided fixes for building with the clang compiler

pull/1/head
Daniel Stenberg 15 years ago
parent 8fe746fcf2
commit 0a076df87f
  1. 3
      CHANGES
  2. 78
      m4/cares-compilers.m4

@ -1,5 +1,8 @@
Changelog for the c-ares project
* March 5, 2010 (Daniel Stenberg)
- Daniel Johnson provided fixes for building with the clang compiler.
* March 5, 2010 (Yang Tse)
- Added IPv6 name servers support. Implementation has been based on code,
comments and feedback provided November and December of 2008 by Daniel

@ -40,6 +40,7 @@ AC_DEFUN([CARES_CHECK_COMPILER], [
CARES_CHECK_COMPILER_HPUX_C
CARES_CHECK_COMPILER_IBM_C
CARES_CHECK_COMPILER_INTEL_C
CARES_CHECK_COMPILER_CLANG
CARES_CHECK_COMPILER_GNU_C
CARES_CHECK_COMPILER_LCC
CARES_CHECK_COMPILER_SGI_MIPSPRO_C
@ -66,6 +67,40 @@ _EOF
])
dnl CARES_CHECK_COMPILER_CLANG
dnl -------------------------------------------------
dnl Verify if compiler being used is clang.
AC_DEFUN([CARES_CHECK_COMPILER_CLANG], [
AC_BEFORE([$0],[CARES_CHECK_COMPILER_GNU_C])dnl
AC_MSG_CHECKING([if compiler is clang])
CURL_CHECK_DEF([__clang__], [], [silent])
if test "$curl_cv_have_def___clang__" = "yes"; then
AC_MSG_RESULT([yes])
compiler_id="CLANG"
clangver=`$CC -dumpversion`
clangvhi=`echo $clangver | cut -d . -f1`
clangvlo=`echo $clangver | cut -d . -f2`
compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
flags_dbg_all="-g -g0 -g1 -g2 -g3"
flags_dbg_all="$flags_dbg_all -ggdb"
flags_dbg_all="$flags_dbg_all -gstabs"
flags_dbg_all="$flags_dbg_all -gstabs+"
flags_dbg_all="$flags_dbg_all -gcoff"
flags_dbg_all="$flags_dbg_all -gxcoff"
flags_dbg_all="$flags_dbg_all -gdwarf-2"
flags_dbg_all="$flags_dbg_all -gvms"
flags_dbg_yes="-g"
flags_dbg_off="-g0"
flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
flags_opt_yes="-Os"
flags_opt_off="-O0"
else
AC_MSG_RESULT([no])
fi
])
dnl CARES_CHECK_COMPILER_DEC_C
dnl -------------------------------------------------
dnl Verify if compiler being used is DEC C.
@ -96,6 +131,7 @@ dnl Verify if compiler being used is GNU C.
AC_DEFUN([CARES_CHECK_COMPILER_GNU_C], [
AC_REQUIRE([CARES_CHECK_COMPILER_INTEL_C])dnl
AC_REQUIRE([CARES_CHECK_COMPILER_CLANG])dnl
AC_MSG_CHECKING([if compiler is GNU C])
CURL_CHECK_DEF([__GNUC__], [], [silent])
if test "$curl_cv_have_def___GNUC__" = "yes" &&
@ -495,7 +531,8 @@ AC_DEFUN([CARES_SET_COMPILER_BASIC_OPTS], [
#
if test "$compiler_id" != "unknown"; then
#
if test "$compiler_id" = "GNU_C"; then
if test "$compiler_id" = "GNU_C" ||
test "$compiler_id" = "CLANG"; then
CARES_CONVERT_INCLUDE_TO_ISYSTEM
fi
#
@ -506,6 +543,14 @@ AC_DEFUN([CARES_SET_COMPILER_BASIC_OPTS], [
#
case "$compiler_id" in
#
CLANG)
#
dnl Disable warnings for unused arguments, otherwise clang will
dnl warn about compile-time arguments used during link-time, like
dnl -O and -g and -pedantic.
tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments"
;;
#
DEC_C)
#
dnl Select strict ANSI C compiler mode
@ -786,6 +831,31 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [
#
case "$compiler_id" in
#
CLANG)
#
if test "$want_warnings" = "yes"; then
dnl All versions of clang support the same warnings as at least
dnl gcc 4.2.1.
tmp_CFLAGS="$tmp_CFLAGS -pedantic"
tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings"
tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow"
tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs"
tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes"
tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal"
tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare"
tmp_CFLAGS="$tmp_CFLAGS -Wundef"
tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes"
tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement"
tmp_CFLAGS="$tmp_CFLAGS -Wcast-align"
tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32"
fi
;;
#
DEC_C)
#
if test "$want_warnings" = "yes"; then
@ -1326,6 +1396,12 @@ AC_DEFUN([CARES_CHECK_COMPILER_SYMBOL_HIDING], [
tmp_CFLAGS=""
tmp_EXTERN=""
case "$compiler_id" in
CLANG)
dnl All versions of clang support -fvisibility=
tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
tmp_CFLAGS="-fvisibility=hidden"
supports_symbol_hiding="yes"
;;
GNU_C)
dnl Only gcc 3.4 or later
if test "$compiler_num" -ge "304"; then

Loading…
Cancel
Save