On Wed, 21 Apr 2010, Kamil Dudka wrote:

I ugly hacked configure.ac to enable this feature.

Attached here is my first stab at a configure option --enable-threader-resolver

--

 / daniel.haxx.se
diff --git a/configure.ac b/configure.ac
index 5dfa83e..490461d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -127,7 +127,7 @@ dnl initialize all the info variables
    curl_krb4_msg="no      (--with-krb4*)"
     curl_gss_msg="no      (--with-gssapi)"
  curl_spnego_msg="no      (--with-spnego)"
-   curl_ares_msg="no      (--enable-ares)"
+    curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
    curl_ipv6_msg="no      (--enable-ipv6)"
     curl_idn_msg="no      (--with-libidn)"
  curl_manual_msg="no      (--enable-manual)"
@@ -2289,6 +2289,23 @@ AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
 CURL_CHECK_LIB_ARES
 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
 
+CURL_CHECK_OPTION_THREADED_RESOLVER
+
+if test "$want_thres" = "yes"; then
+  AC_CHECK_HEADER(pthread.h,
+    [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
+      save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -pthread"
+      AC_CHECK_LIB(pthread, pthread_create,
+        [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
+          AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
+          USE_THREADS_POSIX=1
+          curl_res_msg="threaded"
+        ],
+        [ CFLAGS="$save_CFLAGS"])
+  ])
+fi
+
 dnl ************************************************************
 dnl disable verbose text strings
 dnl
@@ -2482,7 +2499,7 @@ fi
 if test "x$HAVE_LIBZ" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
 fi
-if test "x$USE_ARES" = "x1"; then
+if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
 fi
 if test "x$IDN_ENABLED" = "x1"; then
@@ -2624,7 +2641,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
   krb4 support:    ${curl_krb4_msg}
   GSSAPI support:  ${curl_gss_msg}
   SPNEGO support:  ${curl_spnego_msg}
-  c-ares support:  ${curl_ares_msg}
+  resolver:        ${curl_res_msg}
   ipv6 support:    ${curl_ipv6_msg}
   IDN support:     ${curl_idn_msg}
   Build libcurl:   Shared=${enable_shared}, Static=${enable_static}
diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4
index fb11ee3..ec29e2c 100644
--- a/m4/curl-confopts.m4
+++ b/m4/curl-confopts.m4
@@ -21,8 +21,33 @@
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 11
+# serial 12
 
+dnl CURL_CHECK_OPTION_THREADED_RESOLVER
+dnl -------------------------------------------------
+dnl Verify if configure has been invoked with option
+dnl --enable-threaded-resolver or --disable-threaded-resover, and
+dnl set shell variable want_thres as appropriate.
+
+AC_DEFUN([CURL_CHECK_OPTION_THREADED_RESOLVER], [
+  AC_MSG_CHECKING([whether to enable the threaded resolver])
+  OPT_THRES="default"
+  AC_ARG_ENABLE(threaded_resolver,
+AC_HELP_STRING([--enable-threaded-resolver],[Enable threaded resolver])
+AC_HELP_STRING([--disable-threaded-resover],[Disable threaded resolver]),
+  OPT_THRES=$enableval)
+  case "$OPT_THRES" in
+    yes)
+      dnl --enable-ares option used
+      want_thres="yes"
+      ;;
+    *)
+      dnl configure option not specified
+      want_thres="no"
+      ;;
+  esac
+  AC_MSG_RESULT([$want_thres])
+])
 
 dnl CURL_CHECK_OPTION_ARES
 dnl -------------------------------------------------
@@ -433,7 +458,7 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
       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"
+      curl_res_msg="c-ares"
     fi
   fi
 ])
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to