-dnl CURL_CHECK_COMPILER_HALT_ON_ERROR
-dnl -------------------------------------------------
-dnl Verifies if the compiler actually halts after the
-dnl compilation phase without generating any object
-dnl code file, when the source compiles with errors.
-
-AC_DEFUN([CURL_CHECK_COMPILER_HALT_ON_ERROR], [
- AC_MSG_CHECKING([if compiler halts on compilation errors])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- force compilation error
- ]])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([compiler does not halt on compilation errors.])
- ],[
- AC_MSG_RESULT([yes])
- ])
-])
-
-
-dnl CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
-dnl -------------------------------------------------
-dnl Verifies if the compiler actually halts after the
-dnl compilation phase without generating any object
-dnl code file, when the source code tries to define a
-dnl type for a constant array with negative dimension.
-
-AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
- AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl
- AC_MSG_CHECKING([if compiler halts on negative sized arrays])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ];
- ]],[[
- bad_t dummy;
- ]])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([compiler does not halt on negative sized arrays.])
- ],[
- AC_MSG_RESULT([yes])
- ])
-])
-
-
dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
dnl -------------------------------------------------
dnl Use the C preprocessor to find out if the given object-style symbol
],[
tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
"$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[[ ]]//' 2>/dev/null | \
+ "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
"$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
tmp_exp=""
])
+dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
+dnl -------------------------------------------------
+dnl Use the C compiler to find out only if the given symbol is defined
+dnl or not, this can not find out its expansion. This macro will not use
+dnl default includes even if no INCLUDES argument is given. This macro
+dnl will run silently when invoked with three arguments.
+
+AC_DEFUN([CURL_CHECK_DEF_CC], [
+ AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
+ ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
+ AC_COMPILE_IFELSE([
+ AC_LANG_SOURCE(
+ifelse($2,,,[$2])[[
+int main (void)
+{
+#ifdef $1
+ return 0;
+#else
+ force compilation error
+#endif
+}
+ ]])
+ ],[
+ tst_symbol_defined="yes"
+ ],[
+ tst_symbol_defined="no"
+ ])
+ if test "$tst_symbol_defined" = "yes"; then
+ AS_VAR_SET(ac_HaveDef, yes)
+ ifelse($3,,[AC_MSG_RESULT([yes])])
+ else
+ AS_VAR_SET(ac_HaveDef, no)
+ ifelse($3,,[AC_MSG_RESULT([no])])
+ fi
+ AS_VAR_POPDEF([ac_HaveDef])dnl
+])
+
+
+dnl CARES_CHECK_LIB_XNET
+dnl -------------------------------------------------
+dnl Verify if X/Open network library is required.
+
+AC_DEFUN([CARES_CHECK_LIB_XNET], [
+ AC_MSG_CHECKING([if X/Open network library is required])
+ tst_lib_xnet_required="no"
+ AC_COMPILE_IFELSE([
+ AC_LANG_SOURCE([[
+int main (void)
+{
+#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
+ return 0;
+#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
+ return 0;
+#else
+ force compilation error
+#endif
+}
+ ]])
+ ],[
+ tst_lib_xnet_required="yes"
+ LIBS="$LIBS -lxnet"
+ ])
+ AC_MSG_RESULT([$tst_lib_xnet_required])
+])
+
+
dnl CARES_CHECK_AIX_ALL_SOURCE
dnl -------------------------------------------------
dnl Provides a replacement of traditional AC_AIX with
dnl CURL_CHECK_HEADER_WINDOWS
dnl -------------------------------------------------
-dnl Check for compilable and valid windows.h header
+dnl Check for compilable and valid windows.h header
AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
AC_CACHE_CHECK([for windows.h], [ac_cv_header_windows_h], [
])
fi
])
- case "$ac_cv_native_windows" in
- yes)
- AC_DEFINE_UNQUOTED(NATIVE_WINDOWS, 1,
- [Define to 1 if you are building a native Windows target.])
- ;;
- esac
+ AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$ac_cv_native_windows" = xyes)
])
dnl CURL_CHECK_HEADER_WINSOCK
dnl -------------------------------------------------
-dnl Check for compilable and valid winsock.h header
+dnl Check for compilable and valid winsock.h header
AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
dnl CURL_CHECK_HEADER_WINSOCK2
dnl -------------------------------------------------
-dnl Check for compilable and valid winsock2.h header
+dnl Check for compilable and valid winsock2.h header
AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
])
-dnl CURL_CHECK_TYPE_SOCKLEN_T
-dnl -------------------------------------------------
-dnl Check for existing socklen_t type, and provide
-dnl an equivalent type if socklen_t not available
-
-AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
- AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_CHECK_TYPE([socklen_t], ,[
- dnl socklen_t not available
- AC_CACHE_CHECK([for socklen_t equivalent],
- [curl_cv_socklen_t_equiv], [
- curl_cv_socklen_t_equiv="unknown"
- for arg1 in 'int' 'SOCKET'; do
- for arg2 in "struct sockaddr" void; do
- for t in int size_t unsigned long "unsigned long"; do
- if test "$curl_cv_socklen_t_equiv" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#define GETPEERNCALLCONV PASCAL
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define GETPEERNCALLCONV
-#endif
- extern int GETPEERNCALLCONV getpeername($arg1, $arg2 *, $t *);
- ]],[[
- $t len=0;
- getpeername(0,0,&len);
- ]])
- ],[
- curl_cv_socklen_t_equiv="$t"
- ])
- fi
- done
- done
- done
- ])
- case "$curl_cv_socklen_t_equiv" in
- unknown)
- AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
- ;;
- *)
- AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
- [Type to use in place of socklen_t when system does not provide it.])
- ;;
- esac
- ],[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ])
-])
-
-
dnl CURL_CHECK_FUNC_GETNAMEINFO
dnl -------------------------------------------------
-dnl Test if the getnameinfo function is available,
+dnl Test if the getnameinfo function is available,
dnl and check the types of five of its arguments.
dnl If the function succeeds HAVE_GETNAMEINFO will be
dnl defined, defining the types of the arguments in
dnl GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2,
dnl GETNAMEINFO_TYPE_ARG46 and GETNAMEINFO_TYPE_ARG7,
-dnl and also defining the type qualifier of first
+dnl and also defining the type qualifier of first
dnl argument in GETNAMEINFO_QUAL_ARG1.
AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_REQUIRE([CURL_CHECK_TYPE_SOCKLEN_T])dnl
AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
#
AC_MSG_CHECKING([for getnameinfo])
if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
+#include <winsock2.h>
#ifdef HAVE_WS2TCPIP_H
#include <ws2tcpip.h>
#endif
dnl TYPE_SOCKADDR_STORAGE
dnl -------------------------------------------------
-dnl Check for struct sockaddr_storage. Most IPv6-enabled
+dnl Check for struct sockaddr_storage. Most IPv6-enabled
dnl hosts have it, but AIX 4.3 is one known exception.
AC_DEFUN([TYPE_SOCKADDR_STORAGE],
AC_CHECK_HEADERS(stdio.h sys/types.h sys/socket.h \
netdb.h netinet/in.h arpa/inet.h)
#
- AC_CACHE_CHECK([for working NI_WITHSCOPEID],
+ AC_CACHE_CHECK([for working NI_WITHSCOPEID],
[ac_cv_working_ni_withscopeid], [
AC_RUN_IFELSE([
AC_LANG_PROGRAM([[
dnl CURL_CHECK_FUNC_RECV
dnl -------------------------------------------------
-dnl Test if the socket recv() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_RECV
-dnl will be defined, defining the types of the arguments
-dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
+dnl Test if the socket recv() function is available,
+dnl and check its return type and the types of its
+dnl arguments. If the function succeeds HAVE_RECV
+dnl will be defined, defining the types of the arguments
+dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
dnl and RECV_TYPE_ARG4, defining the type of the function
dnl return value in RECV_TYPE_RETV.
AC_MSG_CHECKING([for recv])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
if test "$curl_cv_func_recv_args" = "unknown"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
dnl CURL_CHECK_FUNC_SEND
dnl -------------------------------------------------
-dnl Test if the socket send() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SEND
-dnl will be defined, defining the types of the arguments
-dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
+dnl Test if the socket send() function is available,
+dnl and check its return type and the types of its
+dnl arguments. If the function succeeds HAVE_SEND
+dnl will be defined, defining the types of the arguments
+dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
dnl and SEND_TYPE_ARG4, defining the type of the function
-dnl return value in SEND_TYPE_RETV, and also defining the
+dnl return value in SEND_TYPE_RETV, and also defining the
dnl type qualifier of second argument in SEND_QUAL_ARG2.
AC_DEFUN([CURL_CHECK_FUNC_SEND], [
AC_MSG_CHECKING([for send])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
if test "$curl_cv_func_send_args" = "unknown"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
AC_MSG_CHECKING([for recvfrom])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
for recvfrom_arg2 in 'char *' 'void *'; do
for recvfrom_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
for recvfrom_arg4 in 'int' 'unsigned int'; do
- for recvfrom_arg5 in 'struct sockaddr *' 'void *'; do
+ for recvfrom_arg5 in 'struct sockaddr *' 'void *' 'const struct sockaddr *'; do
for recvfrom_arg6 in 'socklen_t *' 'int *' 'unsigned int *' 'size_t *' 'void *'; do
if test "$curl_cv_func_recvfrom_args" = "unknown"; then
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
shift
#
recvfrom_ptrt_arg2=$[2]
- recvfrom_ptrt_arg5=$[5]
+ recvfrom_qual_ptrt_arg5=$[5]
recvfrom_ptrt_arg6=$[6]
#
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG1, $[1],
;;
esac
#
+ case "$recvfrom_qual_ptrt_arg5" in
+ const*)
+ recvfrom_qual_arg5=const
+ recvfrom_ptrt_arg5=`echo $recvfrom_qual_ptrt_arg5 | sed 's/^const //'`
+ ;;
+ *)
+ recvfrom_qual_arg5=
+ recvfrom_ptrt_arg5=$recvfrom_qual_ptrt_arg5
+ ;;
+ esac
+ #
recvfrom_type_arg2=`echo $recvfrom_ptrt_arg2 | sed 's/ \*//'`
recvfrom_type_arg5=`echo $recvfrom_ptrt_arg5 | sed 's/ \*//'`
recvfrom_type_arg6=`echo $recvfrom_ptrt_arg6 | sed 's/ \*//'`
#
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2, $recvfrom_type_arg2,
[Define to the type pointed by arg 2 for recvfrom.])
+ AC_DEFINE_UNQUOTED(RECVFROM_QUAL_ARG5, $recvfrom_qual_arg5,
+ [Define to the type qualifier pointed by arg 5 for recvfrom.])
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5, $recvfrom_type_arg5,
[Define to the type pointed by arg 5 for recvfrom.])
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6, $recvfrom_type_arg6,
AC_CACHE_CHECK([for MSG_NOSIGNAL], [ac_cv_msg_nosignal], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
AC_REQUIRE([AC_HEADER_TIME])dnl
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
+ AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#undef inline
+#undef inline
#ifdef HAVE_WINDOWS_H
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#include <time.h>
#endif
#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
]],[[
struct timeval ts;
ts.tv_sec = 0;
])
+dnl CARES_CHECK_LIBS_CONNECT
+dnl -------------------------------------------------
+dnl Verify if network connect function is already available
+dnl using current libraries or if another one is required.
+
+AC_DEFUN([CARES_CHECK_LIBS_CONNECT], [
+ AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
+ AC_MSG_CHECKING([for connect in libraries])
+ tst_connect_save_LIBS="$LIBS"
+ tst_connect_need_LIBS="unknown"
+ for tst_lib in '' '-lsocket' ; do
+ if test "$tst_connect_need_LIBS" = "unknown"; then
+ LIBS="$tst_lib $tst_connect_save_LIBS"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ $cares_includes_winsock2
+ #ifndef HAVE_WINDOWS_H
+ int connect(int, void*, int);
+ #endif
+ ]],[[
+ if(0 != connect(0, 0, 0))
+ return 1;
+ ]])
+ ],[
+ tst_connect_need_LIBS="$tst_lib"
+ ])
+ fi
+ done
+ LIBS="$tst_connect_save_LIBS"
+ #
+ case X-"$tst_connect_need_LIBS" in
+ X-unknown)
+ AC_MSG_RESULT([cannot find connect])
+ AC_MSG_ERROR([cannot find connect function in libraries.])
+ ;;
+ X-)
+ AC_MSG_RESULT([yes])
+ ;;
+ *)
+ AC_MSG_RESULT([$tst_connect_need_LIBS])
+ LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
+ ;;
+ esac
+])
+
+
dnl CARES_DEFINE_UNQUOTED (VARIABLE, [VALUE])
dnl -------------------------------------------------
dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
AC_DEFUN([CARES_CHECK_STRUCT], [
AC_MSG_CHECKING([for struct $2])
- AC_TRY_COMPILE([$1],
+ AC_TRY_COMPILE([$1],
[
struct $2 struct_instance;
], ac_struct="yes", ac_found="no")