mirror of https://github.com/c-ares/c-ares.git
Added constants that will be used by ares_getaddrinfo. Made ares_getnameinfo use the reentrant getservbyport (getservbyport_r) if it isavailable to ensure it works properly in a threaded environment
parent
8df407ed7d
commit
6afd5c16d3
5 changed files with 731 additions and 627 deletions
@ -1,271 +1,318 @@ |
||||
dnl Check for how to set a socket to non-blocking state. There seems to exist |
||||
dnl four known different ways, with the one used almost everywhere being POSIX |
||||
dnl and XPG3, while the other different ways for different systems (old BSD, |
||||
dnl Windows and Amiga). |
||||
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([ |
||||
/* 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(__SVR4) || defined(__srv4__) |
||||
# define PLATFORM_SOLARIS |
||||
# else |
||||
# define PLATFORM_SUNOS4 |
||||
# endif |
||||
#endif |
||||
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX4) |
||||
# 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([ |
||||
/* 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([ |
||||
/* headers for ioctlsocket test (cygwin?) */ |
||||
#include <windows.h> |
||||
],[ |
||||
/* ioctlsocket source code */ |
||||
int socket; |
||||
unsigned long flags = ioctlsocket(socket, 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([ |
||||
/* 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([ |
||||
/* 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 |
||||
AC_MSG_RESULT($nonblock) |
||||
|
||||
if test "$nonblock" = "nada"; then |
||||
AC_MSG_WARN([non-block sockets disabled]) |
||||
fi |
||||
]) |
||||
|
||||
dnl We create a function for detecting which compiler we use and then set as |
||||
dnl pendantic compiler options as possible for that particular compiler. The |
||||
dnl options are only used for debug-builds. |
||||
|
||||
dnl This is a copy of the original found in curl's configure script. Don't |
||||
dnl modify this one, edit the one in curl and copy it back here when that one |
||||
dnl is changed. |
||||
|
||||
AC_DEFUN([CURL_CC_DEBUG_OPTS], |
||||
[ |
||||
if test "$GCC" = "yes"; then |
||||
|
||||
dnl figure out gcc version! |
||||
AC_MSG_CHECKING([gcc version]) |
||||
gccver=`$CC -dumpversion` |
||||
num1=`echo $gccver | cut -d . -f1` |
||||
num2=`echo $gccver | cut -d . -f2` |
||||
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null` |
||||
AC_MSG_RESULT($gccver) |
||||
|
||||
AC_MSG_CHECKING([if this is icc in disguise]) |
||||
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], |
||||
dnl action if the text is found, this it has not been replaced by the |
||||
dnl cpp |
||||
ICC="no" |
||||
AC_MSG_RESULT([no]), |
||||
dnl the text was not found, it was replaced by the cpp |
||||
ICC="yes" |
||||
AC_MSG_RESULT([yes]) |
||||
) |
||||
|
||||
if test "$ICC" = "yes"; then |
||||
dnl this is icc, not gcc. |
||||
|
||||
dnl ICC warnings we ignore: |
||||
dnl * 279 warns on static conditions in while expressions |
||||
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output: |
||||
dnl "invalid format string conversion" |
||||
|
||||
WARN="-wd279,269" |
||||
|
||||
if test "$gccnum" -gt "600"; then |
||||
dnl icc 6.0 and older doesn't have the -Wall flag |
||||
WARN="-Wall $WARN" |
||||
fi |
||||
else dnl $ICC = yes |
||||
dnl |
||||
WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare" |
||||
|
||||
dnl -Wcast-align is a bit too annoying ;-) |
||||
|
||||
if test "$gccnum" -ge "296"; then |
||||
dnl gcc 2.96 or later |
||||
WARN="$WARN -Wfloat-equal" |
||||
|
||||
if test "$gccnum" -gt "296"; then |
||||
dnl this option does not exist in 2.96 |
||||
WARN="$WARN -Wno-format-nonliteral" |
||||
fi |
||||
|
||||
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on |
||||
dnl on i686-Linux as it gives us heaps with false positives |
||||
if test "$gccnum" -ge "303"; then |
||||
dnl gcc 3.3 and later |
||||
WARN="$WARN -Wendif-labels -Wstrict-prototypes" |
||||
fi |
||||
fi |
||||
|
||||
for flag in $CPPFLAGS; do |
||||
case "$flag" in |
||||
-I*) |
||||
dnl include path |
||||
add=`echo $flag | sed 's/^-I/-isystem /g'` |
||||
WARN="$WARN $add" |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
fi dnl $ICC = no |
||||
|
||||
CFLAGS="$CFLAGS $WARN" |
||||
|
||||
fi dnl $GCC = yes |
||||
|
||||
dnl strip off optimizer flags |
||||
NEWFLAGS="" |
||||
for flag in $CFLAGS; do |
||||
case "$flag" in |
||||
-O*) |
||||
dnl echo "cut off $flag" |
||||
;; |
||||
*) |
||||
NEWFLAGS="$NEWFLAGS $flag" |
||||
;; |
||||
esac |
||||
done |
||||
CFLAGS=$NEWFLAGS |
||||
|
||||
]) dnl end of AC_DEFUN() |
||||
|
||||
|
||||
dnl This macro determines if the specified struct exists in the specified file |
||||
dnl Syntax: |
||||
dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found]) |
||||
|
||||
AC_DEFUN([CARES_CHECK_STRUCT], [ |
||||
AC_MSG_CHECKING([for struct $2]) |
||||
AC_TRY_COMPILE([$1], |
||||
[ |
||||
struct $2 struct_instance; |
||||
], ac_struct="yes", ac_found="no") |
||||
if test "$ac_struct" = "yes" ; then |
||||
AC_MSG_RESULT(yes) |
||||
$3 |
||||
else |
||||
AC_MSG_RESULT(no) |
||||
$4 |
||||
fi |
||||
]) |
||||
|
||||
dnl This macro determines if the specified constant exists in the specified file |
||||
dnl Syntax: |
||||
dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found]) |
||||
|
||||
AC_DEFUN([CARES_CHECK_CONSTANT], [ |
||||
AC_MSG_CHECKING([for $2]) |
||||
AC_EGREP_CPP(VARIABLEWASDEFINED, |
||||
[ |
||||
$1 |
||||
|
||||
#ifdef $2 |
||||
VARIABLEWASDEFINED |
||||
#else |
||||
NJET |
||||
#endif |
||||
], ac_constant="yes", ac_constant="no" |
||||
) |
||||
if test "$ac_constant" = "yes" ; then |
||||
AC_MSG_RESULT(yes) |
||||
$3 |
||||
else |
||||
AC_MSG_RESULT(no) |
||||
$4 |
||||
fi |
||||
]) |
||||
|
||||
|
||||
dnl Check for how to set a socket to non-blocking state. There seems to exist |
||||
dnl four known different ways, with the one used almost everywhere being POSIX |
||||
dnl and XPG3, while the other different ways for different systems (old BSD, |
||||
dnl Windows and Amiga). |
||||
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([ |
||||
/* 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(__SVR4) || defined(__srv4__) |
||||
# define PLATFORM_SOLARIS |
||||
# else |
||||
# define PLATFORM_SUNOS4 |
||||
# endif |
||||
#endif |
||||
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX4) |
||||
# 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([ |
||||
/* 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([ |
||||
/* headers for ioctlsocket test (cygwin?) */ |
||||
#include <windows.h> |
||||
],[ |
||||
/* ioctlsocket source code */ |
||||
int socket; |
||||
unsigned long flags = ioctlsocket(socket, 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([ |
||||
/* 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([ |
||||
/* 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 |
||||
AC_MSG_RESULT($nonblock) |
||||
|
||||
if test "$nonblock" = "nada"; then |
||||
AC_MSG_WARN([non-block sockets disabled]) |
||||
fi |
||||
]) |
||||
|
||||
dnl We create a function for detecting which compiler we use and then set as |
||||
dnl pendantic compiler options as possible for that particular compiler. The |
||||
dnl options are only used for debug-builds. |
||||
|
||||
dnl This is a copy of the original found in curl's configure script. Don't |
||||
dnl modify this one, edit the one in curl and copy it back here when that one |
||||
dnl is changed. |
||||
|
||||
AC_DEFUN([CURL_CC_DEBUG_OPTS], |
||||
[ |
||||
if test "$GCC" = "yes"; then |
||||
|
||||
dnl figure out gcc version! |
||||
AC_MSG_CHECKING([gcc version]) |
||||
gccver=`$CC -dumpversion` |
||||
num1=`echo $gccver | cut -d . -f1` |
||||
num2=`echo $gccver | cut -d . -f2` |
||||
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null` |
||||
AC_MSG_RESULT($gccver) |
||||
|
||||
AC_MSG_CHECKING([if this is icc in disguise]) |
||||
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], |
||||
dnl action if the text is found, this it has not been replaced by the |
||||
dnl cpp |
||||
ICC="no" |
||||
AC_MSG_RESULT([no]), |
||||
dnl the text was not found, it was replaced by the cpp |
||||
ICC="yes" |
||||
AC_MSG_RESULT([yes]) |
||||
) |
||||
|
||||
if test "$ICC" = "yes"; then |
||||
dnl this is icc, not gcc. |
||||
|
||||
dnl ICC warnings we ignore: |
||||
dnl * 279 warns on static conditions in while expressions |
||||
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output: |
||||
dnl "invalid format string conversion" |
||||
|
||||
WARN="-wd279,269" |
||||
|
||||
if test "$gccnum" -gt "600"; then |
||||
dnl icc 6.0 and older doesn't have the -Wall flag |
||||
WARN="-Wall $WARN" |
||||
fi |
||||
else dnl $ICC = yes |
||||
dnl |
||||
WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare" |
||||
|
||||
dnl -Wcast-align is a bit too annoying ;-) |
||||
|
||||
if test "$gccnum" -ge "296"; then |
||||
dnl gcc 2.96 or later |
||||
WARN="$WARN -Wfloat-equal" |
||||
|
||||
if test "$gccnum" -gt "296"; then |
||||
dnl this option does not exist in 2.96 |
||||
WARN="$WARN -Wno-format-nonliteral" |
||||
fi |
||||
|
||||
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on |
||||
dnl on i686-Linux as it gives us heaps with false positives |
||||
if test "$gccnum" -ge "303"; then |
||||
dnl gcc 3.3 and later |
||||
WARN="$WARN -Wendif-labels -Wstrict-prototypes" |
||||
fi |
||||
fi |
||||
|
||||
for flag in $CPPFLAGS; do |
||||
case "$flag" in |
||||
-I*) |
||||
dnl include path |
||||
add=`echo $flag | sed 's/^-I/-isystem /g'` |
||||
WARN="$WARN $add" |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
fi dnl $ICC = no |
||||
|
||||
CFLAGS="$CFLAGS $WARN" |
||||
|
||||
fi dnl $GCC = yes |
||||
|
||||
dnl strip off optimizer flags |
||||
NEWFLAGS="" |
||||
for flag in $CFLAGS; do |
||||
case "$flag" in |
||||
-O*) |
||||
dnl echo "cut off $flag" |
||||
;; |
||||
*) |
||||
NEWFLAGS="$NEWFLAGS $flag" |
||||
;; |
||||
esac |
||||
done |
||||
CFLAGS=$NEWFLAGS |
||||
|
||||
]) dnl end of AC_DEFUN() |
||||
|
||||
|
||||
dnl This macro determines if the specified struct exists in the specified file |
||||
dnl Syntax: |
||||
dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found]) |
||||
|
||||
AC_DEFUN([CARES_CHECK_STRUCT], [ |
||||
AC_MSG_CHECKING([for struct $2]) |
||||
AC_TRY_COMPILE([$1], |
||||
[ |
||||
struct $2 struct_instance; |
||||
], ac_struct="yes", ac_found="no") |
||||
if test "$ac_struct" = "yes" ; then |
||||
AC_MSG_RESULT(yes) |
||||
$3 |
||||
else |
||||
AC_MSG_RESULT(no) |
||||
$4 |
||||
fi |
||||
]) |
||||
|
||||
dnl This macro determines if the specified constant exists in the specified file |
||||
dnl Syntax: |
||||
dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found]) |
||||
|
||||
AC_DEFUN([CARES_CHECK_CONSTANT], [ |
||||
AC_MSG_CHECKING([for $2]) |
||||
AC_EGREP_CPP(VARIABLEWASDEFINED, |
||||
[ |
||||
$1 |
||||
|
||||
#ifdef $2 |
||||
VARIABLEWASDEFINED |
||||
#else |
||||
NJET |
||||
#endif |
||||
], ac_constant="yes", ac_constant="no" |
||||
) |
||||
if test "$ac_constant" = "yes" ; then |
||||
AC_MSG_RESULT(yes) |
||||
$3 |
||||
else |
||||
AC_MSG_RESULT(no) |
||||
$4 |
||||
fi |
||||
]) |
||||
|
||||
|
||||
dnl This macro determines how many parameters getservbyport_r takes |
||||
AC_DEFUN([CARES_CHECK_GETSERVBYPORT_R], [ |
||||
AC_MSG_CHECKING([how many arguments getservbyport_r takes]) |
||||
AC_TRY_COMPILE( |
||||
[#include <netdb.h>], |
||||
[ |
||||
int p1, p5; |
||||
char *p2, p4[4096]; |
||||
struct servent *p3, *p6; |
||||
getservbyport_r(p1, p2, p3, p4, p5, &p6); |
||||
], ac_func_getservbyport_r=6, |
||||
[AC_TRY_COMPILE( |
||||
[#include <netdb.h>], |
||||
[ |
||||
int p1, p5; |
||||
char *p2, p4[4096]; |
||||
struct servent *p3; |
||||
getservbyport_r(p1, p2, p3, p4, p5); |
||||
], ac_func_getservbyport_r=5, |
||||
[AC_TRY_COMPILE( |
||||
[#include <netdb.h>], |
||||
[ |
||||
int p1; |
||||
char *p2; |
||||
struct servent *p3; |
||||
struct servent_data p4; |
||||
getservbyport_r(p1, p2, p3, &p4); |
||||
], ac_func_getservbyport_r=4, ac_func_getservbyport_r=0 |
||||
)] |
||||
)] |
||||
) |
||||
if test $ac_func_getservbyport_r != "0" ; then |
||||
AC_MSG_RESULT($ac_func_getservbyport_r) |
||||
AC_DEFINE(HAVE_GETSERVBYPORT_R, 1, [Specifies whether getservbyport_r is present]) |
||||
AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $ac_func_getservbyport_r, [Specifies the number of arguments to |
||||
getservbyport_r]) |
||||
if test $ac_func_getservbyport_r = "4" ; then |
||||
AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data), [Specifies the size of the buffer to pass to |
||||
getservbyport_r]) |
||||
else |
||||
AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, 4096, [Specifies the size of the buffer to pass to getservbyport_r]) |
||||
fi |
||||
else |
||||
AC_MSG_RESULT([not found]) |
||||
fi |
||||
]) |
||||
|
||||
|
@ -1,352 +1,355 @@ |
||||
dnl Process this file with autoconf to produce a configure script. |
||||
AC_INIT(ares_init.c) |
||||
AM_CONFIG_HEADER(config.h) |
||||
AM_MAINTAINER_MODE |
||||
AM_INIT_AUTOMAKE(c-ares, CVS) |
||||
|
||||
AC_PROG_CC |
||||
AC_PROG_INSTALL |
||||
|
||||
case $host_os in |
||||
solaris*) |
||||
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used]) |
||||
;; |
||||
esac |
||||
|
||||
# check for ssize_t |
||||
AC_CHECK_TYPE(ssize_t, , |
||||
AC_DEFINE(ssize_t, int, [the signed version of size_t])) |
||||
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl) |
||||
AC_SEARCH_LIBS(socket, socket) |
||||
|
||||
dnl ************************************************************ |
||||
dnl Option to switch on debug options. This makes an assumption that |
||||
dnl this is built as an 'ares' subdir in the curl source tree. Subject for |
||||
dnl improval in the future! |
||||
dnl |
||||
AC_MSG_CHECKING([whether to enable debug options]) |
||||
AC_ARG_ENABLE(debug, |
||||
AC_HELP_STRING([--enable-debug],[Enable pedantic debug options]) |
||||
AC_HELP_STRING([--disable-debug],[Disable debug options]), |
||||
[ case "$enableval" in |
||||
no) |
||||
AC_MSG_RESULT(no) |
||||
;; |
||||
*) AC_MSG_RESULT(yes) |
||||
|
||||
dnl when doing the debug stuff, use static library only |
||||
AC_DISABLE_SHARED |
||||
|
||||
dnl Checks for standard header files, to make memdebug.h inclusions bettter |
||||
AC_HEADER_STDC |
||||
|
||||
dnl the entire --enable-debug is a hack that lives and runs on top of |
||||
dnl libcurl stuff so this BUILDING_LIBCURL is not THAT much uglier |
||||
AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl]) |
||||
|
||||
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include" |
||||
CFLAGS="$CFLAGS -g" |
||||
|
||||
dnl set compiler "debug" options to become more picky, and remove |
||||
dnl optimize options from CFLAGS |
||||
CURL_CC_DEBUG_OPTS |
||||
|
||||
;; |
||||
esac ], |
||||
AC_MSG_RESULT(no) |
||||
) |
||||
|
||||
AC_PROG_LIBTOOL |
||||
|
||||
dnl check for a few basic system headers we need |
||||
AC_CHECK_HEADERS( |
||||
sys/types.h \ |
||||
sys/time.h \ |
||||
sys/select.h \ |
||||
sys/socket.h \ |
||||
sys/ioctl.h \ |
||||
winsock.h \ |
||||
netinet/in.h \ |
||||
net/if.h \ |
||||
arpa/nameser.h \ |
||||
arpa/nameser_compat.h \ |
||||
arpa/inet.h, , , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
dnl We do this default-include simply to make sure that the nameser_compat.h |
||||
dnl header *REALLY* can be include after the new nameser.h. It seems AIX 5.1 |
||||
dnl (and others?) is not designed to allow this. |
||||
#ifdef HAVE_ARPA_NAMESER_H |
||||
#include <arpa/nameser.h> |
||||
#endif |
||||
|
||||
dnl *Sigh* these are needed in order for net/if.h to get properly detected. |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
] |
||||
) |
||||
|
||||
AC_CHECK_TYPE(socklen_t, , |
||||
AC_DEFINE(socklen_t, int, [the length of a socket address]), |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
]) |
||||
|
||||
dnl check for AF_INET6 |
||||
CARES_CHECK_CONSTANT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
|
||||
], [PF_INET6], |
||||
AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.]) |
||||
) |
||||
|
||||
dnl check for PF_INET6 |
||||
CARES_CHECK_CONSTANT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
|
||||
], [AF_INET6], |
||||
AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.]) |
||||
) |
||||
|
||||
|
||||
dnl check for the in6_addr structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [in6_addr], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.]) |
||||
) |
||||
|
||||
dnl check for the sockaddr_in6 structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [sockaddr_in6], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1, |
||||
[Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes |
||||
) |
||||
|
||||
if test "$ac_have_sockaddr_in6" = "yes" ; then |
||||
AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id, |
||||
AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1, |
||||
[Define to 1 if your struct sockaddr_in6 has sin6_scope_id.]) |
||||
, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [sockaddr_in6], [sin6_scope_id], |
||||
) |
||||
fi |
||||
|
||||
dnl check for the addrinfo structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [addrinfo], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1, |
||||
[Define to 1 if you have struct addrinfo.]) |
||||
) |
||||
|
||||
dnl check for inet_pton |
||||
AC_CHECK_FUNCS(inet_pton) |
||||
dnl Some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_pton" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_pton supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
if (inet_pton(AF_INET6, "::1", &addr6) < 1) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_PTON_IPV6,1,[Define to 1 if inet_pton supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
dnl Check for inet_net_pton |
||||
AC_CHECK_FUNCS(inet_net_pton) |
||||
dnl Again, some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_net_pton" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_net_pton supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
if (inet_net_pton(AF_INET6, "::1", &addr6, sizeof(addr6)) < 1) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_NET_PTON_IPV6,1,[Define to 1 if inet_net_pton supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
|
||||
|
||||
dnl Check for inet_ntop |
||||
AC_CHECK_FUNCS(inet_ntop) |
||||
dnl Again, some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_ntop" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_ntop supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
#include <errno.h> |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
char buf[128]; |
||||
if (inet_ntop(AF_INET6, &addr6, buf, 128) == 0 && errno == EAFNOSUPPORT) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_NTOP_IPV6,1,[Define to 1 if inet_ntop supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
|
||||
AC_CHECK_SIZEOF(struct in6_addr, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
] |
||||
) |
||||
AC_CHECK_SIZEOF(struct in_addr, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
] |
||||
) |
||||
|
||||
AC_CHECK_FUNCS([bitncmp if_indextoname]) |
||||
|
||||
CURL_CHECK_NONBLOCKING_SOCKET |
||||
|
||||
AC_OUTPUT(Makefile) |
||||
dnl Process this file with autoconf to produce a configure script. |
||||
AC_INIT(ares_init.c) |
||||
AM_CONFIG_HEADER(config.h) |
||||
AM_MAINTAINER_MODE |
||||
AM_INIT_AUTOMAKE(c-ares, CVS) |
||||
|
||||
AC_PROG_CC |
||||
AC_PROG_INSTALL |
||||
|
||||
case $host_os in |
||||
solaris*) |
||||
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used]) |
||||
;; |
||||
esac |
||||
|
||||
# check for ssize_t |
||||
AC_CHECK_TYPE(ssize_t, , |
||||
AC_DEFINE(ssize_t, int, [the signed version of size_t])) |
||||
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl) |
||||
AC_SEARCH_LIBS(socket, socket) |
||||
|
||||
dnl ************************************************************ |
||||
dnl Option to switch on debug options. This makes an assumption that |
||||
dnl this is built as an 'ares' subdir in the curl source tree. Subject for |
||||
dnl improval in the future! |
||||
dnl |
||||
AC_MSG_CHECKING([whether to enable debug options]) |
||||
AC_ARG_ENABLE(debug, |
||||
AC_HELP_STRING([--enable-debug],[Enable pedantic debug options]) |
||||
AC_HELP_STRING([--disable-debug],[Disable debug options]), |
||||
[ case "$enableval" in |
||||
no) |
||||
AC_MSG_RESULT(no) |
||||
;; |
||||
*) AC_MSG_RESULT(yes) |
||||
|
||||
dnl when doing the debug stuff, use static library only |
||||
AC_DISABLE_SHARED |
||||
|
||||
dnl Checks for standard header files, to make memdebug.h inclusions bettter |
||||
AC_HEADER_STDC |
||||
|
||||
dnl the entire --enable-debug is a hack that lives and runs on top of |
||||
dnl libcurl stuff so this BUILDING_LIBCURL is not THAT much uglier |
||||
AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl]) |
||||
|
||||
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include" |
||||
CFLAGS="$CFLAGS -g" |
||||
|
||||
dnl set compiler "debug" options to become more picky, and remove |
||||
dnl optimize options from CFLAGS |
||||
CURL_CC_DEBUG_OPTS |
||||
|
||||
;; |
||||
esac ], |
||||
AC_MSG_RESULT(no) |
||||
) |
||||
|
||||
AC_PROG_LIBTOOL |
||||
|
||||
dnl check for a few basic system headers we need |
||||
AC_CHECK_HEADERS( |
||||
sys/types.h \ |
||||
sys/time.h \ |
||||
sys/select.h \ |
||||
sys/socket.h \ |
||||
sys/ioctl.h \ |
||||
winsock.h \ |
||||
netinet/in.h \ |
||||
net/if.h \ |
||||
arpa/nameser.h \ |
||||
arpa/nameser_compat.h \ |
||||
arpa/inet.h, , , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
dnl We do this default-include simply to make sure that the nameser_compat.h |
||||
dnl header *REALLY* can be include after the new nameser.h. It seems AIX 5.1 |
||||
dnl (and others?) is not designed to allow this. |
||||
#ifdef HAVE_ARPA_NAMESER_H |
||||
#include <arpa/nameser.h> |
||||
#endif |
||||
|
||||
dnl *Sigh* these are needed in order for net/if.h to get properly detected. |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
] |
||||
) |
||||
|
||||
AC_CHECK_TYPE(socklen_t, , |
||||
AC_DEFINE(socklen_t, int, [the length of a socket address]), |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
]) |
||||
|
||||
dnl check for AF_INET6 |
||||
CARES_CHECK_CONSTANT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
|
||||
], [PF_INET6], |
||||
AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.]) |
||||
) |
||||
|
||||
dnl check for PF_INET6 |
||||
CARES_CHECK_CONSTANT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
|
||||
], [AF_INET6], |
||||
AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.]) |
||||
) |
||||
|
||||
|
||||
dnl check for the in6_addr structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [in6_addr], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.]) |
||||
) |
||||
|
||||
dnl check for the sockaddr_in6 structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [sockaddr_in6], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1, |
||||
[Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes |
||||
) |
||||
|
||||
if test "$ac_have_sockaddr_in6" = "yes" ; then |
||||
AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id, |
||||
AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1, |
||||
[Define to 1 if your struct sockaddr_in6 has sin6_scope_id.]) |
||||
, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [sockaddr_in6], [sin6_scope_id], |
||||
) |
||||
fi |
||||
|
||||
dnl check for the addrinfo structure |
||||
CARES_CHECK_STRUCT( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
], [addrinfo], |
||||
AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1, |
||||
[Define to 1 if you have struct addrinfo.]) |
||||
) |
||||
|
||||
dnl check for inet_pton |
||||
AC_CHECK_FUNCS(inet_pton) |
||||
dnl Some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_pton" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_pton supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
if (inet_pton(AF_INET6, "::1", &addr6) < 1) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_PTON_IPV6,1,[Define to 1 if inet_pton supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
dnl Check for inet_net_pton |
||||
AC_CHECK_FUNCS(inet_net_pton) |
||||
dnl Again, some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_net_pton" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_net_pton supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
if (inet_net_pton(AF_INET6, "::1", &addr6, sizeof(addr6)) < 1) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_NET_PTON_IPV6,1,[Define to 1 if inet_net_pton supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
|
||||
|
||||
dnl Check for inet_ntop |
||||
AC_CHECK_FUNCS(inet_ntop) |
||||
dnl Again, some systems have it, but not IPv6 |
||||
if test "$ac_cv_func_inet_ntop" = "yes" ; then |
||||
AC_MSG_CHECKING(if inet_ntop supports IPv6) |
||||
AC_TRY_RUN( |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
#include <errno.h> |
||||
int main() |
||||
{ |
||||
struct in6_addr addr6; |
||||
char buf[128]; |
||||
if (inet_ntop(AF_INET6, &addr6, buf, 128) == 0 && errno == EAFNOSUPPORT) |
||||
exit(1); |
||||
else |
||||
exit(0); |
||||
} |
||||
], [ |
||||
AC_MSG_RESULT(yes) |
||||
AC_DEFINE_UNQUOTED(HAVE_INET_NTOP_IPV6,1,[Define to 1 if inet_ntop supports IPv6.]) |
||||
], AC_MSG_RESULT(no),AC_MSG_RESULT(no)) |
||||
fi |
||||
|
||||
AC_CHECK_SIZEOF(struct in6_addr, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
] |
||||
) |
||||
AC_CHECK_SIZEOF(struct in_addr, , |
||||
[ |
||||
#ifdef HAVE_SYS_TYPES_H |
||||
#include <sys/types.h> |
||||
#endif |
||||
#ifdef HAVE_SYS_SOCKET_H |
||||
#include <sys/socket.h> |
||||
#endif |
||||
#ifdef HAVE_WINSOCK_H |
||||
#include <winsock.h> |
||||
#endif |
||||
#ifdef HAVE_NETINET_IN_H |
||||
#include <netinet/in.h> |
||||
#endif |
||||
] |
||||
) |
||||
|
||||
AC_CHECK_FUNCS([bitncmp if_indextoname]) |
||||
|
||||
dnl God bless non-standardized functions! We need to see which getservbyport_r variant is available |
||||
CARES_CHECK_GETSERVBYPORT_R |
||||
|
||||
CURL_CHECK_NONBLOCKING_SOCKET |
||||
|
||||
AC_OUTPUT(Makefile) |
||||
|
Loading…
Reference in new issue