@@ -86,39 +86,58 @@ ;; esac AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32") +AC_MSG_CHECKING(for getaddrinfo) +AC_TRY_COMPILE([ + #include + #ifndef _WIN32 + #include + #include + #include + #else + #define _WIN32_WINNT 0x0501 + #include + #endif], [ + struct addrinfo ai; + getaddrinfo(NULL, NULL, NULL, NULL); + ], [have_getaddrinfo="yes"], [have_getaddrinfo="no"]) +AC_MSG_RESULT($have_getaddrinfo) +test x"$have_getaddrinfo" = x"yes" && \ + AC_DEFINE(HAVE_GETADDRINFO, 1, [Whether we have getaddrinfo]) + AC_MSG_CHECKING(whether we have IPv6 support) -AC_CACHE_VAL(ac_cv_have_ipv6, [ - AC_TRY_RUN([ - #ifndef _WIN32 - #include - #include - #include - #else - #include - #include - #endif - - #ifndef INVALID_SOCKET - #define INVALID_SOCKET -1 - #endif - - int - main() - { - int fd; - struct sockaddr_in6 addr; - - fd = socket(AF_INET6, SOCK_STREAM, 0); - - exit(fd != INVALID_SOCKET ? 0 : 1); - }], - ac_cv_have_ipv6="yes", - ac_cv_have_ipv6="no", - ac_cv_have_ipv6="no")]) +AS_IF([test x"$have_getaddrinfo" = x"yes"], [ + AC_CACHE_VAL(ac_cv_have_ipv6, [ + AC_TRY_RUN([ + #ifndef _WIN32 + #include + #include + #include + #else + #include + #include + #endif + + #ifndef INVALID_SOCKET + #define INVALID_SOCKET -1 + #endif + + int + main() + { + int fd; + struct sockaddr_in6 addr; + + fd = socket(AF_INET6, SOCK_STREAM, 0); + + exit(fd != INVALID_SOCKET ? 0 : 1); + }], + ac_cv_have_ipv6="yes", + ac_cv_have_ipv6="no", + ac_cv_have_ipv6="no")])], [ac_cv_have_ipv6="no"]) AC_MSG_RESULT($ac_cv_have_ipv6) test x"$ac_cv_have_ipv6" = x"yes" && \ AC_DEFINE(HAVE_IPV6, 1, "Whether we have IPv6 support") AC_CHECK_FUNC(madvise, [AC_DEFINE(HAVE_MADVISE, 1, [Whether we have madvise])])