]> granicus.if.org Git - curl/commitdiff
minor fixes for --enable-ares configure option
authorYang Tse <yangsita@gmail.com>
Tue, 26 Jan 2010 15:07:40 +0000 (15:07 +0000)
committerYang Tse <yangsita@gmail.com>
Tue, 26 Jan 2010 15:07:40 +0000 (15:07 +0000)
configure.ac
m4/curl-confopts.m4

index 9f686cba546a8b58cb04416e727b91fdd875b186..bc6433873f97fc1099a14a61490153740e885749 100644 (file)
@@ -42,6 +42,7 @@ CURL_CHECK_OPTION_DEBUG
 CURL_CHECK_OPTION_OPTIMIZE
 CURL_CHECK_OPTION_WARNINGS
 CURL_CHECK_OPTION_CURLDEBUG
+CURL_CHECK_OPTION_ARES
 
 CURL_CHECK_PATH_SEPARATOR_REQUIRED
 
@@ -2274,81 +2275,8 @@ fi
 dnl set variable for use in automakefile(s)
 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
 
-aresembedded="unknown"
-configure_rundir=`pwd`
-embedded_ares_builddir="$configure_rundir/ares"
-AC_MSG_CHECKING([whether to enable c-ares])
-AC_ARG_ENABLE(ares,
-AC_HELP_STRING([--enable-ares=PATH],[Enable c-ares for name lookups])
-AC_HELP_STRING([--disable-ares],[Disable c-ares for name lookups]),
-[ case "$enableval" in
-  no)
-       AC_MSG_RESULT(no)
-       ;;
-  *)   AC_MSG_RESULT(yes)
-
-       if test "x$IPV6_ENABLED" = "x1"; then
-         AC_MSG_NOTICE([c-ares may not work properly with ipv6])
-       fi
-
-       AC_DEFINE(USE_ARES, 1, [Define if you want to enable c-ares support])
-       dnl substitute HAVE_ARES for curl-config and similar
-       HAVE_ARES="1"
-       AC_SUBST(HAVE_ARES)
-       curl_ares_msg="enabled"
-
-       LIBS="-lcares $LIBS"
-
-       dnl For backwards compatibility default to includes/lib in srcdir/ares
-       dnl If a value is specified it is assumed that the libs are in $val/lib
-       dnl and the includes are in $val/include. This is the default setup for
-       dnl ares so it should not be a problem.
-       if test "x$enableval" = "xyes" ; then
-         if test -d "$srcdir/ares"; then
-            aresembedded="yes"
-            AC_CONFIG_SUBDIRS(ares)
-            dnl Since c-ares has installable configured header files, path
-            dnl inclusion is fully done in makefiles for in-tree builds.
-            LDFLAGS="$LDFLAGS -L$embedded_ares_builddir"
-         fi
-       else
-         CPPFLAGS="$CPPFLAGS -I$enableval/include"
-         LDFLAGS="$LDFLAGS -L$enableval/lib"
-       fi
-
-       if test -z "$aresembedded"; then
-         dnl verify that a sufficient c-ares is here if we have pointed one
-         dnl out and don't use the "embedded" ares dir (in which case we don't
-         dnl check it because it might not have been built yet)
-         AC_MSG_CHECKING([that c-ares is good and recent enough])
-         AC_LINK_IFELSE([
-           AC_LANG_PROGRAM([[
-#include <ares.h>
-             /* set of dummy functions in case c-ares was built with debug */
-             void curl_dofree() { }
-             void curl_sclose() { }
-             void curl_domalloc() { }
-             void curl_docalloc() { }
-             void curl_socket() { }
-           ]],[[
-             ares_channel channel;
-             ares_cancel(channel); /* added in 1.2.0 */
-             ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
-           ]])
-         ],[
-           AC_MSG_RESULT([yes])
-         ],[
-           AC_MSG_RESULT([no])
-           AC_MSG_ERROR([c-ares library defective or too old])
-         ])
-       fi
-       ;;
-  esac ],
-       AC_MSG_RESULT(no)
-)
-
-dnl set variable for use in automakefile(s)
-AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$aresembedded = xyes)
+CURL_CHECK_LIB_ARES
+AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
 
 dnl ************************************************************
 dnl disable verbose text strings
@@ -2540,7 +2468,7 @@ fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
-if test "x$HAVE_ARES" = "x1"; then
+if test "x$USE_ARES" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
 fi
 if test "x$IDN_ENABLED" = "x1"; then
@@ -2635,7 +2563,7 @@ squeeze SUPPORT_FEATURES
 squeeze SUPPORT_PROTOCOLS
 
 if test "x$want_curldebug_assumed" = "xyes" &&
-  test "x$want_curldebug" = "xyes" && test "x$HAVE_ARES" = "x1"; then
+  test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
   ac_configure_args="$ac_configure_args --enable-curldebug"
 fi
 
index 3ae73785f0886b550af64a21297e731e070392e0..ec58a47f803bd06e6836770a93e14a13f00af7f0 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 6
+# serial 7
+
+
+dnl CURL_CHECK_OPTION_ARES
+dnl -------------------------------------------------
+dnl Verify if configure has been invoked with option
+dnl --enable-ares or --disable-ares, and
+dnl set shell variable want_ares as appropriate.
+
+AC_DEFUN([CURL_CHECK_OPTION_ARES], [
+dnl   AC_BEFORE([$0],[CURL_CHECK_OPTION_THREADS])dnl
+  AC_BEFORE([$0],[CURL_CHECK_LIB_ARES])dnl
+  AC_MSG_CHECKING([whether to enable c-ares for DNS lookups])
+  OPT_ARES="default"
+  AC_ARG_ENABLE(ares,
+AC_HELP_STRING([--enable-ares@<:@=PATH@:>@],[Enable c-ares for DNS lookups])
+AC_HELP_STRING([--disable-ares],[Disable c-ares for DNS lookups]),
+  OPT_ARES=$enableval)
+  case "$OPT_ARES" in
+    no)
+      dnl --disable-ares option used
+      want_ares="no"
+      AC_MSG_RESULT([no])
+      ;;
+    default)
+      dnl configure option not specified
+      want_ares="assume_yes"
+      AC_MSG_RESULT([(assumed) yes])
+      ;;
+    *)
+      dnl --enable-ares option used
+      want_ares="yes"
+      want_ares_path="$enableval"
+      AC_MSG_RESULT([yes])
+      ;;
+  esac
+])
 
 
 dnl CURL_CHECK_OPTION_CURLDEBUG
@@ -53,7 +89,7 @@ AC_HELP_STRING([--disable-curldebug],[Disable curl debug memory tracking]),
       dnl possible, and for debug-disabled builds this will be handled
       dnl as a request to disable curldebug.
       if test "$want_debug" = "yes"; then
-        AC_MSG_RESULT([not specified (assuming yes)])
+        AC_MSG_RESULT([(assumed) yes])
       else
         AC_MSG_RESULT([no])
       fi
@@ -180,10 +216,10 @@ AC_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
       dnl will always take precedence over any initial assumption.
       if test "$want_debug" = "yes"; then
         want_optimize="assume_no"
-        AC_MSG_RESULT([not specified (assuming no)])
+        AC_MSG_RESULT([(assumed) no])
       else
         want_optimize="assume_yes"
-        AC_MSG_RESULT([not specified (assuming yes)])
+        AC_MSG_RESULT([(assumed) yes])
       fi
       ;;
     *)
@@ -198,6 +234,54 @@ AC_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
 ])
 
 
+dnl CURL_CHECK_OPTION_THREADS
+dnl -------------------------------------------------
+dnl Verify if configure has been invoked with option
+dnl --enable-threads or --disable-threads, and
+dnl set shell variable want_threads as appropriate.
+
+dnl AC_DEFUN([CURL_CHECK_OPTION_THREADS], [
+dnl   AC_BEFORE([$0],[CURL_CHECK_LIB_THREADS])dnl
+dnl   AC_MSG_CHECKING([whether to enable threads for DNS lookups])
+dnl   OPT_THREADS="default"
+dnl   AC_ARG_ENABLE(threads,
+dnl AC_HELP_STRING([--enable-threads@<:@=PATH@:>@],[Enable threads for DNS lookups])
+dnl AC_HELP_STRING([--disable-threads],[Disable threads for DNS lookups]),
+dnl   OPT_THREADS=$enableval)
+dnl   case "$OPT_THREADS" in
+dnl     no)
+dnl       dnl --disable-threads option used
+dnl       want_threads="no"
+dnl       AC_MSG_RESULT([no])
+dnl       ;;
+dnl     default)
+dnl       dnl configure option not specified
+dnl       want_threads="no"
+dnl       AC_MSG_RESULT([(assumed) no])
+dnl       ;;
+dnl     *)
+dnl       dnl --enable-threads option used
+dnl       want_threads="yes"
+dnl       want_threads_path="$enableval"
+dnl       AC_MSG_RESULT([yes])
+dnl       ;;
+dnl   esac
+dnl   #
+dnl   if test "$want_ares" = "assume_yes"; then
+dnl     if test "$want_threads" = "yes"; then
+dnl       AC_MSG_CHECKING([whether to ignore c-ares enabling assumed setting])
+dnl       AC_MSG_RESULT([yes])
+dnl       want_ares="no"
+dnl     else
+dnl       want_ares="yes"
+dnl     fi
+dnl   fi
+dnl   if test "$want_threads" = "yes" && test "$want_ares" = "yes"; then
+dnl     AC_MSG_ERROR([options --enable-ares and --enable-threads are mutually exclusive, at most one may be enabled.])
+dnl   fi
+dnl ])
+
+
 dnl CURL_CHECK_OPTION_WARNINGS
 dnl -------------------------------------------------
 dnl Verify if configure has been invoked with option
@@ -270,3 +354,88 @@ AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
   fi
 ])
 
+
+dnl CURL_CHECK_LIB_ARES
+dnl -------------------------------------------------
+dnl When c-ares library support has been requested,
+dnl performs necessary checks and adjustsments needed
+dnl to enable support of this library.
+
+AC_DEFUN([CURL_CHECK_LIB_ARES], [
+  #
+  if test "$want_ares" = "yes"; then
+    dnl c-ares library support has been requested
+    clean_CPPFLAGS="$CPPFLAGS"
+    clean_CFLAGS="$CFLAGS"
+    clean_LIBS="$LIBS"
+    embedded_ares="unknown"
+    configure_runpath=`pwd`
+    embedded_ares_builddir="$configure_runpath/ares"
+    if test -n "$want_ares_path" && test "$want_ares_path" != "yes"; then
+      dnl c-ares library path has been specified
+      ares_CPPFLAGS="-I$want_ares_path/include"
+      ares_LDFLAGS="-L$want_ares_path/lib"
+      ares_LIBS="-lcares"
+    else
+      dnl c-ares library path has not been given
+      if test -d "$srcdir/ares"; then
+        dnl c-ares sources embedded in curl tree
+        embedded_ares="yes"
+        AC_CONFIG_SUBDIRS(ares)
+        dnl c-ares has installable configured header files, path
+        dnl inclusion fully done in makefiles for in-tree builds.
+        ares_CPPFLAGS=""
+        ares_LDFLAGS="-L$embedded_ares_builddir"
+        ares_LIBS="-lcares"
+      else
+        dnl c-ares path not specified, use defaults
+        ares_CPPFLAGS=""
+        ares_LDFLAGS=""
+        ares_LIBS="-lcares"
+      fi
+    fi
+    #
+    CPPFLAGS="$ares_CPPFLAGS $clean_CPPFLAGS"
+    LDFLAGS="$ares_LDFLAGS $clean_LDFLAGS"
+    LIBS="$ares_LIBS $clean_LIBS"
+    #
+    if test "$embedded_ares" != "yes"; then
+      dnl check if c-ares new enough when not using an embedded
+      dnl source tree one which normally has not been built yet.
+      AC_MSG_CHECKING([that c-ares is good and recent enough])
+      AC_LINK_IFELSE([
+        AC_LANG_PROGRAM([[
+#include <ares.h>
+          /* set of dummy functions in case c-ares was built with debug */
+          void curl_dofree() { }
+          void curl_sclose() { }
+          void curl_domalloc() { }
+          void curl_docalloc() { }
+          void curl_socket() { }
+        ]],[[
+          ares_channel channel;
+          ares_cancel(channel); /* added in 1.2.0 */
+          ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
+        ]])
+      ],[
+        AC_MSG_RESULT([yes])
+      ],[
+        AC_MSG_RESULT([no])
+        AC_MSG_ERROR([c-ares library defective or too old])
+        dnl restore initial settings
+        CPPFLAGS="$clean_CPPFLAGS"
+        CFLAGS="$clean_CFLAGS"
+        LIBS="$clean_LIBS"
+        # prevent usage
+        want_ares="no"
+      ])
+    fi
+    if test "$want_ares" = "yes"; then
+      dnl finally c-ares will be used
+      AC_DEFINE(USE_ARES, 1, [Define to enable c-ares support])
+      AC_SUBST([USE_ARES], [1])
+      curl_ares_msg="enabled"
+    fi
+  fi
+])
+