diff options
Diffstat (limited to 'ares')
-rw-r--r-- | ares/acinclude.m4 | 180 | ||||
-rw-r--r-- | ares/configure.ac | 81 |
2 files changed, 147 insertions, 114 deletions
diff --git a/ares/acinclude.m4 b/ares/acinclude.m4 index 310469f6d..d8d703738 100644 --- a/ares/acinclude.m4 +++ b/ares/acinclude.m4 @@ -1121,20 +1121,20 @@ dnl dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the dnl O_NONBLOCK define is found but does not work. This condition is attempted dnl to get caught in this script by using an excessive number of #ifdefs... -dnl -AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], -[ - AC_MSG_CHECKING([non-blocking sockets style]) - AC_TRY_COMPILE([ +AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [ + AC_MSG_CHECKING([non-blocking sockets style]) + nonblock="unknown" + # + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ /* headers for O_NONBLOCK test */ #include <sys/types.h> #include <unistd.h> #include <fcntl.h> -],[ -/* try to compile O_NONBLOCK */ - -#if defined(sun) || defined(__sun__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +/* */ +#if defined(sun) || defined(__sun__) || \ + defined(__SUNPRO_C) || defined(__SUNPRO_CC) # if defined(__SVR4) || defined(__srv4__) # define PLATFORM_SOLARIS # else @@ -1144,36 +1144,44 @@ AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], #if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41) # define PLATFORM_AIX_V3 #endif - +/* */ #if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__) #error "O_NONBLOCK does not work on this platform" #endif - int socket; - int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK); -],[ -dnl the O_NONBLOCK test was fine -nonblock="O_NONBLOCK" -AC_DEFINE(HAVE_O_NONBLOCK, 1, [use O_NONBLOCK for non-blocking sockets]) -],[ -dnl the code was bad, try a different program now, test 2 - - AC_TRY_COMPILE([ + ]],[[ + /* O_NONBLOCK source test */ + int socket; + int flags = fcntl(socket, F_SETFL, flags | O_NONBLOCK); + ]]) + ],[ + dnl the O_NONBLOCK test was fine + nonblock="O_NONBLOCK" + AC_DEFINE(HAVE_O_NONBLOCK, 1, + [use O_NONBLOCK for non-blocking sockets]) + ]) + # + if test "$nonblock" = "unknown"; then + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ /* headers for FIONBIO test */ #include <unistd.h> #include <stropts.h> -],[ -/* FIONBIO source test (old-style unix) */ - int socket; - int flags = ioctl(socket, FIONBIO, &flags); -],[ -dnl FIONBIO test was good -nonblock="FIONBIO" -AC_DEFINE(HAVE_FIONBIO, 1, [use FIONBIO for non-blocking sockets]) -],[ -dnl FIONBIO test was also bad -dnl the code was bad, try a different program now, test 3 - - AC_TRY_COMPILE([ + ]],[[ + /* FIONBIO source test (old-style unix) */ + int socket; + int flags = ioctl(socket, FIONBIO, &flags); + ]]) + ],[ + dnl FIONBIO test was good + nonblock="FIONBIO" + AC_DEFINE(HAVE_FIONBIO, 1, + [use FIONBIO for non-blocking sockets]) + ]) + fi + # + if test "$nonblock" = "unknown"; then + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ /* headers for ioctlsocket test (Windows) */ #undef inline #ifdef HAVE_WINDOWS_H @@ -1189,65 +1197,63 @@ dnl the code was bad, try a different program now, test 3 #endif #endif #endif -],[ -/* ioctlsocket source code */ - SOCKET sd; - unsigned long flags = 0; - sd = socket(0, 0, 0); - ioctlsocket(sd, FIONBIO, &flags); -],[ -dnl ioctlsocket test was good -nonblock="ioctlsocket" -AC_DEFINE(HAVE_IOCTLSOCKET, 1, [use ioctlsocket() for non-blocking sockets]) -],[ -dnl ioctlsocket didnt compile!, go to test 4 - - AC_TRY_LINK([ + ]],[[ + /* ioctlsocket source code (Windows) */ + SOCKET sd; + unsigned long flags = 0; + sd = socket(0, 0, 0); + ioctlsocket(sd, FIONBIO, &flags); + ]]) + ],[ + dnl ioctlsocket test was good + nonblock="ioctlsocket" + AC_DEFINE(HAVE_IOCTLSOCKET, 1, + [use ioctlsocket() for non-blocking sockets]) + ]) + fi + # + if test "$nonblock" = "unknown"; then + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ /* headers for IoctlSocket test (Amiga?) */ #include <sys/ioctl.h> -],[ -/* IoctlSocket source code */ - int socket; - int flags = IoctlSocket(socket, FIONBIO, (long)1); -],[ -dnl ioctlsocket test was good -nonblock="IoctlSocket" -AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, [use Ioctlsocket() for non-blocking sockets]) -],[ -dnl Ioctlsocket didnt compile, do test 5! - AC_TRY_COMPILE([ + ]],[[ + /* IoctlSocket source code (Amiga?) */ + int socket; + int flags = IoctlSocket(socket, FIONBIO, (long)1); + ]]) + ],[ + dnl Ioctlsocket test was good + nonblock="IoctlSocket" + AC_DEFINE(HAVE_IOCTLSOCKET_CASE, 1, + [use Ioctlsocket() for non-blocking sockets]) + ]) + fi + # + if test "$nonblock" = "unknown"; then + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ /* headers for SO_NONBLOCK test (BeOS) */ #include <socket.h> -],[ -/* SO_NONBLOCK source code */ - long b = 1; - int socket; - int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b)); -],[ -dnl the SO_NONBLOCK test was good -nonblock="SO_NONBLOCK" -AC_DEFINE(HAVE_SO_NONBLOCK, 1, [use SO_NONBLOCK for non-blocking sockets]) -],[ -dnl test 5 didnt compile! -nonblock="nada" -AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1, [disabled non-blocking sockets]) -]) -dnl end of fifth test - -]) -dnl end of forth test - -]) -dnl end of third test - -]) -dnl end of second test - -]) -dnl end of non-blocking try-compile test + ]],[[ + /* SO_NONBLOCK source code (BeOS) */ + long b = 1; + int socket; + int flags = setsockopt(socket, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b)); + ]]) + ],[ + dnl the SO_NONBLOCK test was good + nonblock="SO_NONBLOCK" + AC_DEFINE(HAVE_SO_NONBLOCK, 1, + [use SO_NONBLOCK for non-blocking sockets]) + ]) + fi + # AC_MSG_RESULT($nonblock) - - if test "$nonblock" = "nada"; then + # + if test "$nonblock" = "unknown"; then + AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1, + [disabled non-blocking sockets]) AC_MSG_WARN([non-block sockets disabled]) fi ]) diff --git a/ares/configure.ac b/ares/configure.ac index 9653a2a7e..d3304ae01 100644 --- a/ares/configure.ac +++ b/ares/configure.ac @@ -212,16 +212,18 @@ then AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs]) my_ac_save_LIBS=$LIBS LIBS="-lnsl -lsocket $LIBS" - AC_TRY_LINK( , - [gethostbyname();], - [ dnl found it! - HAVE_GETHOSTBYNAME="1" - AC_MSG_RESULT([yes])], - [ dnl failed! - AC_MSG_RESULT([no]) - dnl restore LIBS - LIBS=$my_ac_save_LIBS] - ) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ + ]],[[ + gethostbyname(); + ]]) + ],[ + AC_MSG_RESULT([yes]) + HAVE_GETHOSTBYNAME="1" + ],[ + AC_MSG_RESULT([no]) + LIBS=$my_ac_save_LIBS + ]) fi if test "$HAVE_GETHOSTBYNAME" != "1" @@ -245,7 +247,8 @@ then my_ac_save_LIBS=$LIBS LIBS="$winsock_LIB $LIBS" AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) - AC_TRY_LINK([ + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ #ifdef HAVE_WINDOWS_H #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN @@ -259,15 +262,16 @@ then #endif #endif #endif - ],[ + ]],[[ gethostbyname("www.dummysite.com"); - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - ],[ - AC_MSG_RESULT([no]) - winsock_LIB="" - LIBS=$my_ac_save_LIBS + ]]) + ],[ + AC_MSG_RESULT([yes]) + HAVE_GETHOSTBYNAME="1" + ],[ + AC_MSG_RESULT([no]) + winsock_LIB="" + LIBS=$my_ac_save_LIBS ]) fi fi @@ -275,17 +279,40 @@ fi if test "$HAVE_GETHOSTBYNAME" != "1" then + dnl This is for Minix 3.1 + AC_MSG_CHECKING([for gethostbyname for Minix 3]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ +/* Older Minix versions may need <net/gen/netdb.h> here instead */ +#include <netdb.h> + ]],[[ + gethostbyname("www.dummysite.com"); + ]]) + ],[ + AC_MSG_RESULT([yes]) + HAVE_GETHOSTBYNAME="1" + ],[ + AC_MSG_RESULT([no]) + ]) +fi + +if test "$HAVE_GETHOSTBYNAME" != "1" +then dnl This is for eCos with a stubbed DNS implementation AC_MSG_CHECKING([for gethostbyname for eCos]) - AC_TRY_LINK([ + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[ #include <stdio.h> -#include <netdb.h>], - [gethostbyname("www.dummysite.com");], - [ dnl worked! - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1"], - AC_MSG_RESULT(no) - ) +#include <netdb.h> + ]],[[ + gethostbyname("www.dummysite.com"); + ]]) + ],[ + AC_MSG_RESULT([yes]) + HAVE_GETHOSTBYNAME="1" + ],[ + AC_MSG_RESULT([no]) + ]) fi if test "$HAVE_GETHOSTBYNAME" != "1" |