Changelog
+Daniel Stenberg (5 Mar 2010)
+- Daniel Johnson provided fixes for building curl with the clang compiler.
+
Yang Tse (5 Mar 2010)
- Constantine Sapuntzakis detected and fixed a double free in builds done
with threaded resolver enabled (Windows default configuration) that would
o sub-second timeouts improvements
o configure fixes for GSSAPI
o threaded resolver double free when closing curl handle
+ o configure fixes for building with the clang compiler
This release includes the following known bugs:
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
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
])
+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.
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" &&
#
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
#
#
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
#
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
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
*)
AC_MSG_CHECKING([whether $CC supports it])
if test "$GCC" = yes ; then
- if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
+ if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ||
+ dnl clang always supports -fvisibility= but it doesn't show up
+ dnl under --help.
+ test "$compiler_id" = "CLANG"; then
AC_MSG_RESULT(yes)
AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
AC_DEFINE(CURL_EXTERN_SYMBOL, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
CURL_CHECK_COMPILER_HPUX_C
CURL_CHECK_COMPILER_IBM_C
CURL_CHECK_COMPILER_INTEL_C
+ CURL_CHECK_COMPILER_CLANG
CURL_CHECK_COMPILER_GNU_C
CURL_CHECK_COMPILER_LCC
CURL_CHECK_COMPILER_SGI_MIPSPRO_C
])
+dnl CURL_CHECK_COMPILER_CLANG
+dnl -------------------------------------------------
+dnl Verify if compiler being used is clang.
+
+AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
+ AC_BEFORE([$0],[CURL_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 CURL_CHECK_COMPILER_DEC_C
dnl -------------------------------------------------
dnl Verify if compiler being used is DEC C.
AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [
AC_REQUIRE([CURL_CHECK_COMPILER_INTEL_C])dnl
+ AC_REQUIRE([CURL_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" &&
#
if test "$compiler_id" != "unknown"; then
#
- if test "$compiler_id" = "GNU_C"; then
+ if test "$compiler_id" = "GNU_C" ||
+ test "$compiler_id" = "CLANG"; then
CURL_CONVERT_INCLUDE_TO_ISYSTEM
fi
#
#
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
#
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