diff --git a/configure.ac b/configure.ac index 7111959b..ae717ce4 100644 --- a/configure.ac +++ b/configure.ac @@ -134,7 +134,7 @@ if test "x$with_libcares" = "xyes"; then AM_PATH_LIBCARES if test "x$have_libcares" = "xyes"; then LIBS="$LIBCARES_LIBS $LIBS" - CPPFLAGS="$LIBCARES_CPPFLAGS $CPPFLAGS" + CPPFLAGS="$LIBCARES_CFLAGS $CPPFLAGS" elif test "x$with_libcares_requested" = "xyes"; then ARIA2_DEP_NOT_MET([libcares]) fi diff --git a/m4/libcares.m4 b/m4/libcares.m4 index dd85dbc0..a1061847 100644 --- a/m4/libcares.m4 +++ b/m4/libcares.m4 @@ -14,52 +14,46 @@ libcares_prefix_include=$libcares_prefix/include LIBS_save=$LIBS CPPFLAGS_save=$CPPFLAGS +PKG_CONFIG_PATH_save=$PKG_CONFIG_PATH -LIBS="-L$libcares_prefix_lib $LIBS" -CPPFLAGS="-I$libcares_prefix_include -Wall $CPPFLAGS" - -AC_CHECK_LIB([cares], [ares_init], [have_libcares=yes]) - -if test "x$have_libcares" != "xyes"; then - AC_CHECK_LIB([cares], [ares_init], [have_libcares=yes need_librt=yes], [], - [-lrt]) -fi +PKG_CONFIG_PATH="$libcares_prefix/lib/pkgconfig:$PKG_CONFIG_PATH" +PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.7.0], [have_libcares=yes], + [have_libcares=no]) if test "x$have_libcares" = "xyes"; then - if test "x$need_librt" = "xyes"; then - LIBS="-lrt $LIBS" - fi - LIBS="-lcares $LIBS" - AC_MSG_CHECKING([whether ares_host_callback accepts timeouts(c-ares >= 1.5)]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include + LIBS="$LIBCARES_LIBS $LIBS" + CPPFLAGS="$LIBCARES_CFLAGS $CPPFLAGS" +fi - void callback(void* arg, int status, int timeouts, struct hostent* host); - ]], - [[ - ares_gethostbyname((ares_channel)0, "foo", 0, callback, 0); - ]])], - [have_libcares1_5=yes], - [have_libcares1_5=no]) - AC_MSG_RESULT([$have_libcares1_5]) +if test "x$have_libcares" != "xyes"; then + LIBS="-L$libcares_prefix_lib $LIBS" + CPPFLAGS="-I$libcares_prefix_include -Wall $CPPFLAGS" - if test "x$have_libcares1_5" = "xyes"; then - AC_DEFINE([HAVE_LIBCARES1_5], [1], [Define 1 if ares_host_callback accepts timeouts(c-ares >= 1.5)]) - fi - AC_CHECK_TYPES([ares_addr_node], [], [], [[#include ]]) - AC_CHECK_FUNCS([ares_set_servers]) + AC_CHECK_LIB([cares], [ares_init], [have_libcares=yes]) - AC_DEFINE([HAVE_LIBCARES], [1], [Define to 1 if you have libcares.]) + if test "x$have_libcares" != "xyes"; then + AC_CHECK_LIB([cares], [ares_init], [have_libcares=yes need_librt=yes], [], + [-lrt]) + fi + if test "x$have_libcares" = "xyes"; then LIBCARES_LIBS="-L$libcares_prefix_lib -lcares" if test "x$need_librt" = "xyes"; then LIBCARES_LIBS="$LIBCARES_LIBS -lrt" fi - LIBCARES_CPPFLAGS="-I$libcares_prefix_include" - AC_SUBST(LIBCARES_LIBS) - AC_SUBST(LIBCARES_CPPFLAGS) + LIBCARES_CFLAGS="-I$libcares_prefix_include" + + LIBS="$LIBCARES_LIBS $LIBS_save" + CPPFLAGS="$LIBCARES_CFLAGS $CPPFLAGS_save" + fi +fi + +if test "x$have_libcares" = "xyes"; then + AC_DEFINE([HAVE_LIBCARES], [1], [Define to 1 if you have libcares.]) + AC_CHECK_TYPES([ares_addr_node], [], [], [[#include ]]) + AC_CHECK_FUNCS([ares_set_servers]) fi LIBS=$LIBS_save CPPFLAGS=$CPPFLAGS_save - +PKG_CONFIG_PATH=$PKG_CONFIG_PATH_save ]) diff --git a/src/AsyncNameResolver.cc b/src/AsyncNameResolver.cc index b5ddddbc..08055cc5 100644 --- a/src/AsyncNameResolver.cc +++ b/src/AsyncNameResolver.cc @@ -41,11 +41,7 @@ namespace aria2 { -#ifdef HAVE_LIBCARES1_5 void callback(void* arg, int status, int timeouts, struct hostent* host) -#else - void callback(void* arg, int status, struct hostent* host) -#endif // HAVE_LIBCARES1_5 { AsyncNameResolver* resolverPtr = reinterpret_cast(arg); if(status != ARES_SUCCESS) { diff --git a/src/AsyncNameResolver.h b/src/AsyncNameResolver.h index 12aca93c..8f80b614 100644 --- a/src/AsyncNameResolver.h +++ b/src/AsyncNameResolver.h @@ -48,12 +48,8 @@ namespace aria2 { class AsyncNameResolver { -#ifdef HAVE_LIBCARES1_5 - friend void callback(void* arg, int status, int timeouts, struct hostent* host); -#else - friend void callback(void* arg, int status, struct hostent* host); -#endif // HAVE_LIBCARES1_5 - + friend void callback + (void* arg, int status, int timeouts, struct hostent* host); public: enum STATUS { STATUS_READY,