mirror of https://github.com/nodejs/node.git
879 lines
34 KiB
Plaintext
879 lines
34 KiB
Plaintext
dnl Copyright (C) The c-ares project and its contributors
|
|
dnl SPDX-License-Identifier: MIT
|
|
AC_PREREQ([2.69])
|
|
|
|
AC_INIT([c-ares], [1.34.4],
|
|
[c-ares mailing list: http://lists.haxx.se/listinfo/c-ares])
|
|
|
|
CARES_VERSION_INFO="21:3:19"
|
|
dnl This flag accepts an argument of the form current[:revision[:age]]. So,
|
|
dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
|
|
dnl 1.
|
|
dnl
|
|
dnl If either revision or age are omitted, they default to 0. Also note that age
|
|
dnl must be less than or equal to the current interface number.
|
|
dnl
|
|
dnl Here are a set of rules to help you update your library version information:
|
|
dnl
|
|
dnl 1.Start with version information of 0:0:0 for each libtool library.
|
|
dnl
|
|
dnl 2.Update the version information only immediately before a public release of
|
|
dnl your software. More frequent updates are unnecessary, and only guarantee
|
|
dnl that the current interface number gets larger faster.
|
|
dnl
|
|
dnl 3.If the library source code has changed at all since the last update, then
|
|
dnl increment revision (c:r+1:a)
|
|
dnl
|
|
dnl 4.If any interfaces have been added, removed, or changed since the last
|
|
dnl update, increment current, and set revision to 0. (c+1:r=0:a)
|
|
dnl
|
|
dnl 5.If any interfaces have been added since the last public release, then
|
|
dnl increment age. (c:r:a+1)
|
|
dnl
|
|
dnl 6.If any interfaces have been removed since the last public release, then
|
|
dnl set age to 0. (c:r:a=0)
|
|
dnl
|
|
AC_SUBST([CARES_VERSION_INFO])
|
|
|
|
AC_CONFIG_SRCDIR([src/lib/ares_ipv6.h])
|
|
AC_CONFIG_HEADERS([src/lib/ares_config.h include/ares_build.h])
|
|
AC_CONFIG_AUX_DIR(config)
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
AX_CXX_COMPILE_STDCXX_14([noext],[optional])
|
|
AM_INIT_AUTOMAKE([foreign subdir-objects 1.9.6])
|
|
LT_INIT([win32-dll,pic,disable-fast-install,aix-soname=svr4])
|
|
AC_LANG([C])
|
|
AC_PROG_CC
|
|
AM_PROG_CC_C_O
|
|
AC_PROG_EGREP
|
|
AC_PROG_INSTALL
|
|
AC_CANONICAL_HOST
|
|
AX_COMPILER_VENDOR
|
|
|
|
AC_MSG_CHECKING([whether this is native windows])
|
|
ac_cv_native_windows=no
|
|
ac_cv_windows=no
|
|
case $host_os in
|
|
mingw*)
|
|
ac_cv_native_windows=yes
|
|
ac_cv_windows=yes
|
|
;;
|
|
cygwin*)
|
|
ac_cv_windows=yes
|
|
;;
|
|
esac
|
|
if test "$ax_cv_c_compiler_vendor" = "microsoft" ; then
|
|
ac_cv_native_windows=yes
|
|
ac_cv_windows=yes
|
|
fi
|
|
AC_MSG_RESULT($ac_cv_native_windows)
|
|
|
|
|
|
AC_ENABLE_SHARED
|
|
|
|
dnl Disable static builds by default on Windows unless overwritten since Windows
|
|
dnl can't simultaneously build shared and static with autotools.
|
|
AS_IF([test "x$ac_cv_windows" = "xyes"], [AC_DISABLE_STATIC], [AC_ENABLE_STATIC])
|
|
|
|
AC_ARG_ENABLE(warnings,
|
|
AS_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]),
|
|
[ enable_warnings=${enableval} ],
|
|
[ enable_warnings=yes ])
|
|
|
|
AC_ARG_ENABLE(symbol-hiding,
|
|
AS_HELP_STRING([--disable-symbol-hiding], [Disable symbol hiding. Enabled by default if the compiler supports it.]),
|
|
[
|
|
symbol_hiding="$enableval"
|
|
if test "$symbol_hiding" = "no" -a "x$enable_shared" = "xyes" ; then
|
|
case $host_os in
|
|
cygwin* | mingw* | pw32* | cegcc*)
|
|
AC_MSG_ERROR([Cannot disable symbol hiding on windows])
|
|
;;
|
|
esac
|
|
fi
|
|
],
|
|
[
|
|
if test "x$enable_shared" = "xyes" ; then
|
|
symbol_hiding="maybe"
|
|
else
|
|
symbol_hiding="no"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE(tests,
|
|
AS_HELP_STRING([--disable-tests], [disable building of test suite. Built by default if GoogleTest is found.]),
|
|
[ build_tests="$enableval" ],
|
|
[ if test "x$HAVE_CXX14" = "x1" && test "x$cross_compiling" = "xno" ; then
|
|
build_tests="maybe"
|
|
else
|
|
build_tests="no"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE(cares-threads,
|
|
AS_HELP_STRING([--disable-cares-threads], [Disable building of thread safety support]),
|
|
[ CARES_THREADS=${enableval} ],
|
|
[ CARES_THREADS=yes ])
|
|
|
|
AC_ARG_WITH(random,
|
|
AS_HELP_STRING([--with-random=FILE],
|
|
[read randomness from FILE (default=/dev/urandom)]),
|
|
[ CARES_RANDOM_FILE="$withval" ],
|
|
[ CARES_RANDOM_FILE="/dev/urandom" ]
|
|
)
|
|
if test -n "$CARES_RANDOM_FILE" && test X"$CARES_RANDOM_FILE" != Xno ; then
|
|
AC_SUBST(CARES_RANDOM_FILE)
|
|
AC_DEFINE_UNQUOTED(CARES_RANDOM_FILE, "$CARES_RANDOM_FILE", [a suitable file/device to read random data from])
|
|
fi
|
|
|
|
AM_MAINTAINER_MODE
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
|
|
|
|
dnl CARES_DEFINE_UNQUOTED (VARIABLE, [VALUE])
|
|
dnl -------------------------------------------------
|
|
dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
|
|
dnl symbol that can be further used in custom template configuration
|
|
dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
|
|
dnl argument for the description. Symbol definitions done with this
|
|
dnl macro are intended to be exclusively used in handcrafted *.h.in
|
|
dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
|
|
dnl prevents autoheader generation and insertion of symbol template
|
|
dnl stub and definition into the first configuration header file. Do
|
|
dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
|
|
dnl one serves different functional needs.
|
|
|
|
AC_DEFUN([CARES_DEFINE_UNQUOTED], [
|
|
cat >>confdefs.h <<_EOF
|
|
[@%:@define] $1 ifelse($#, 2, [$2], 1)
|
|
_EOF
|
|
])
|
|
|
|
AX_CODE_COVERAGE
|
|
AC_SYS_LARGEFILE
|
|
|
|
case $host_os in
|
|
solaris*)
|
|
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
|
|
;;
|
|
esac
|
|
|
|
dnl solaris needed flag
|
|
case $host_os in
|
|
solaris2*)
|
|
if test "x$GCC" = 'xyes'; then
|
|
AX_APPEND_LINK_FLAGS([-mimpure-text])
|
|
fi
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
dnl -no-undefined libtool (not linker) flag for windows
|
|
cares_use_no_undefined=no
|
|
case $host_os in
|
|
cygwin* | mingw* | pw32* | cegcc* | os2* | aix*)
|
|
cares_use_no_undefined=yes
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL([CARES_USE_NO_UNDEFINED], [test "$cares_use_no_undefined" = 'yes'])
|
|
|
|
|
|
if test "$ac_cv_native_windows" = "yes" ; then
|
|
AM_CPPFLAGS="$AM_CPPFLAGS -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN"
|
|
fi
|
|
|
|
dnl Windows can only build shared or static, not both at the same time
|
|
if test "$ac_cv_native_windows" = "yes" -a "x$enable_shared" = "xyes" -a "x$enable_static" = "xyes" ; then
|
|
AC_MSG_ERROR([Windows cannot build both static and shared simultaneously, specify --disable-shared or --disable-static])
|
|
fi
|
|
|
|
dnl Only windows requires CARES_STATICLIB definition
|
|
if test "x$enable_shared" = "xno" -a "x$enable_static" = "xyes" ; then
|
|
AC_MSG_CHECKING([whether we need CARES_STATICLIB definition])
|
|
if test "$ac_cv_native_windows" = "yes" ; then
|
|
AX_APPEND_FLAG([-DCARES_STATICLIB], [AM_CPPFLAGS])
|
|
PKGCONFIG_CFLAGS="-DCARES_STATICLIB"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
fi
|
|
|
|
dnl Test for symbol hiding
|
|
CARES_SYMBOL_HIDING_CFLAG=""
|
|
if test "$symbol_hiding" != "no" ; then
|
|
compiler_supports_symbol_hiding="no"
|
|
if test "$ac_cv_windows" = "yes" ; then
|
|
compiler_supports_symbol_hiding="yes"
|
|
else
|
|
case "$ax_cv_c_compiler_vendor" in
|
|
clang|gnu|intel)
|
|
AX_APPEND_COMPILE_FLAGS([-fvisibility=hidden], [CARES_SYMBOL_HIDING_CFLAG])
|
|
if test "x$CARES_SYMBOL_HIDING_CFLAG" != "x" ; then
|
|
compiler_supports_symbol_hiding="yes"
|
|
fi
|
|
;;
|
|
sun)
|
|
AX_APPEND_COMPILE_FLAGS([-xldscope=hidden], [CARES_SYMBOL_HIDING_CFLAG])
|
|
if test "x$CARES_SYMBOL_HIDING_CFLAG" != "x" ; then
|
|
compiler_supports_symbol_hiding="yes"
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
if test "$compiler_supports_symbol_hiding" = "no" ; then
|
|
if test "$symbol_hiding" = "yes" ; then
|
|
AC_MSG_ERROR([Compiler does not support symbol hiding])
|
|
else
|
|
symbol_hiding="no"
|
|
fi
|
|
else
|
|
AC_DEFINE([CARES_SYMBOL_HIDING], [ 1 ], [Set to 1 if non-pubilc shared library symbols are hidden])
|
|
symbol_hiding="yes"
|
|
fi
|
|
fi
|
|
AM_CONDITIONAL(CARES_SYMBOL_HIDING, test "x$symbol_hiding" = "xyes")
|
|
AC_SUBST(CARES_SYMBOL_HIDING_CFLAG)
|
|
|
|
|
|
if test "$enable_warnings" = "yes"; then
|
|
AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdeclaration-after-statement -Wdouble-promotion -Wfloat-equal -Wformat-security -Winit-self -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wno-coverage-mismatch -Wold-style-definition -Wpacked -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wstrict-overflow -Wstrict-prototypes -Wtrampolines -Wundef -Wunreachable-code -Wunused -Wvariadic-macros -Wvla -Wwrite-strings -Werror=implicit-int -Werror=implicit-function-declaration -Werror=partial-availability -Wno-long-long ],
|
|
[AM_CFLAGS], [-Werror])
|
|
fi
|
|
|
|
dnl Android and QNX require c99, all others should use c90
|
|
case $host_os in
|
|
*qnx*|*android*)
|
|
AX_APPEND_COMPILE_FLAGS([-std=c99], [AM_CFLAGS], [-Werror])
|
|
;;
|
|
*)
|
|
AX_APPEND_COMPILE_FLAGS([-std=c90], [AM_CFLAGS], [-Werror])
|
|
;;
|
|
esac
|
|
|
|
dnl QNX needs -D_QNX_SOURCE
|
|
case $host_os in
|
|
*qnx*)
|
|
AX_APPEND_COMPILE_FLAGS([-D_QNX_SOURCE], [AM_CPPFLAGS], [-Werror])
|
|
;;
|
|
esac
|
|
|
|
if test "$ax_cv_c_compiler_vendor" = "intel"; then
|
|
AX_APPEND_COMPILE_FLAGS([-shared-intel], [AM_CFLAGS])
|
|
fi
|
|
|
|
if test "$ac_cv_native_windows" = "yes" ; then
|
|
dnl we use [ - ] in the 4th argument to tell AC_CHECK_HEADERS to simply
|
|
dnl check for existence of the headers, not usability. This is because
|
|
dnl on windows, header order matters, and you need to include headers *after*
|
|
dnl other headers, AC_CHECK_HEADERS only allows you to specify headers that
|
|
dnl must be included *before* the header being checked.
|
|
|
|
AC_CHECK_HEADERS([windows.h winsock2.h ws2tcpip.h iphlpapi.h netioapi.h ws2ipdef.h winternl.h ntdef.h ntstatus.h mswsock.h ],
|
|
[], [], [-])
|
|
|
|
dnl Windows builds require linking to iphlpapi
|
|
if test "$ac_cv_header_winsock2_h" = "yes"; then
|
|
LIBS="$LIBS -lws2_32 -liphlpapi"
|
|
fi
|
|
fi
|
|
|
|
dnl **********************************************************************
|
|
dnl Checks for libraries.
|
|
dnl **********************************************************************
|
|
|
|
dnl see if libnsl or libsocket are required
|
|
AC_SEARCH_LIBS([getservbyport], [nsl socket resolv])
|
|
|
|
AC_MSG_CHECKING([if libxnet is required])
|
|
need_xnet=no
|
|
case $host_os in
|
|
hpux*)
|
|
XNET_LIBS=""
|
|
AX_APPEND_LINK_FLAGS([-lxnet], [XNET_LIBS])
|
|
if test "x$XNET_LIBS" != "x" ; then
|
|
LIBS="$LIBS $XNET_LIBS"
|
|
need_xnet=yes
|
|
fi
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT($need_xnet)
|
|
|
|
dnl resolv lib for z/OS
|
|
AS_IF([test "x$host_vendor" = "xibm" -a "x$host_os" = "xopenedition" ], [
|
|
AC_SEARCH_LIBS([res_init], [resolv], [
|
|
AC_DEFINE([CARES_USE_LIBRESOLV], [1], [Use resolver library to configure cares])
|
|
], [
|
|
AC_MSG_ERROR([Unable to find libresolv which is required for z/OS])
|
|
])
|
|
])
|
|
|
|
|
|
dnl iOS 10?
|
|
AS_IF([test "x$host_vendor" = "xapple"], [
|
|
AC_MSG_CHECKING([for iOS minimum version 10 or later])
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([[
|
|
#include <stdio.h>
|
|
#include <AvailabilityMacros.h>
|
|
#include <TargetConditionals.h>
|
|
]], [[
|
|
#if TARGET_OS_IPHONE == 0 || __IPHONE_OS_VERSION_MIN_REQUIRED < 100000
|
|
#error Not iOS 10 or later
|
|
#endif
|
|
return 0;
|
|
]])
|
|
],[
|
|
AC_MSG_RESULT([yes])
|
|
ac_cv_ios_10="yes"
|
|
],[
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
])
|
|
|
|
dnl macOS 10.12?
|
|
AS_IF([test "x$host_vendor" = "xapple"], [
|
|
AC_MSG_CHECKING([for macOS minimum version 10.12 or later])
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([[
|
|
#include <stdio.h>
|
|
#include <AvailabilityMacros.h>
|
|
#include <TargetConditionals.h>
|
|
]], [[
|
|
#ifndef MAC_OS_X_VERSION_10_12
|
|
# define MAC_OS_X_VERSION_10_12 101200
|
|
#endif
|
|
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
|
#error Not macOS 10.12 or later
|
|
#endif
|
|
return 0;
|
|
]])
|
|
],[
|
|
AC_MSG_RESULT([yes])
|
|
ac_cv_macos_10_12="yes"
|
|
],[
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
])
|
|
|
|
AC_MSG_CHECKING([whether to use libgcc])
|
|
AC_ARG_ENABLE(libgcc,
|
|
AS_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
|
|
[ case "$enableval" in
|
|
yes)
|
|
LIBS="$LIBS -lgcc"
|
|
AC_MSG_RESULT(yes)
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
dnl check for a few basic system headers we need. It would be nice if we could
|
|
dnl split these on separate lines, but for some reason autotools on Windows doesn't
|
|
dnl allow this, even tried ending lines with a backslash.
|
|
AC_CHECK_HEADERS([malloc.h memory.h AvailabilityMacros.h sys/types.h sys/time.h sys/select.h sys/socket.h sys/filio.h sys/ioctl.h sys/param.h sys/uio.h sys/random.h sys/event.h sys/epoll.h assert.h iphlpapi.h netioapi.h netdb.h netinet/in.h netinet6/in6.h netinet/tcp.h net/if.h ifaddrs.h fcntl.h errno.h socket.h strings.h stdbool.h time.h poll.h limits.h arpa/nameser.h arpa/nameser_compat.h arpa/inet.h sys/system_properties.h ],
|
|
dnl to do if not found
|
|
[],
|
|
dnl to do if found
|
|
[],
|
|
dnl default includes
|
|
[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.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_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
]
|
|
)
|
|
|
|
|
|
cares_all_includes="
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#ifdef HAVE_AVAILABILITYMACROS_H
|
|
# include <AvailabilityMacros.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_UIO_H
|
|
# include <sys/uio.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_TCP_H
|
|
# include <tcp.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_FILIO_H
|
|
# include <sys/filio.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_IOCTL_H
|
|
# include <sys/ioctl.h>
|
|
#endif
|
|
#ifdef HAVE_UNISTD_H
|
|
# include <unistd.h>
|
|
#endif
|
|
#ifdef HAVE_STRING_H
|
|
# include <string.h>
|
|
#endif
|
|
#ifdef HAVE_STRINGS_H
|
|
# include <strings.h>
|
|
#endif
|
|
#ifdef HAVE_TIME_H
|
|
# include <time.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_STAT_H
|
|
# include <sys/stat.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_RANDOM_H
|
|
# include <sys/random.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_EVENT_H
|
|
# include <sys/event.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_EPOLL_H
|
|
# include <sys/epoll.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
# include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_FCNTL_H
|
|
# include <fcntl.h>
|
|
#endif
|
|
#ifdef HAVE_POLL_H
|
|
# include <poll.h>
|
|
#endif
|
|
#ifdef HAVE_NET_IF_H
|
|
# include <net/if.h>
|
|
#endif
|
|
#ifdef HAVE_IFADDRS_H
|
|
# include <ifaddrs.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_TCP_H
|
|
# include <netinet/tcp.h>
|
|
#endif
|
|
#ifdef HAVE_NETDB_H
|
|
# include <netdb.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_INET_H
|
|
# include <arpa/inet.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SYSTEM_PROPERTIES_H
|
|
# include <sys/system_properties.h>
|
|
#endif
|
|
#ifdef HAVE_IPHLPAPI_H
|
|
# include <iphlpapi.h>
|
|
#endif
|
|
#ifdef HAVE_NETIOAPI_H
|
|
# include <netioapi.h>
|
|
#endif
|
|
#ifdef HAVE_WINSOCK2_H
|
|
# include <winsock2.h>
|
|
#endif
|
|
#ifdef HAVE_WS2IPDEF_H
|
|
# include <ws2ipdef.h>
|
|
#endif
|
|
#ifdef HAVE_WS2TCPIP_H
|
|
# include <ws2tcpip.h>
|
|
#endif
|
|
#ifdef HAVE_WINDOWS_H
|
|
# include <windows.h>
|
|
#endif
|
|
"
|
|
|
|
AC_CHECK_DECL([HAVE_ARPA_NAMESER_H],[CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_H])], [])
|
|
AC_CHECK_DECL([HAVE_ARPA_NAMESER_COMPAT_H],[CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_COMPAT_H])],[])
|
|
AC_CHECK_TYPE(long long, [AC_DEFINE(HAVE_LONGLONG, 1, [Define to 1 if the compiler supports the 'long long' data type.])])
|
|
AC_CHECK_TYPE(ssize_t, [ CARES_TYPEOF_ARES_SSIZE_T=ssize_t ], [ CARES_TYPEOF_ARES_SSIZE_T=int ])
|
|
AC_DEFINE_UNQUOTED([CARES_TYPEOF_ARES_SSIZE_T], ${CARES_TYPEOF_ARES_SSIZE_T}, [the signed version of size_t])
|
|
|
|
AC_CHECK_TYPE(socklen_t,
|
|
[
|
|
AC_DEFINE(HAVE_SOCKLEN_T, [], [socklen_t])
|
|
CARES_DEFINE_UNQUOTED([CARES_TYPEOF_ARES_SOCKLEN_T], [socklen_t])
|
|
],
|
|
[ CARES_DEFINE_UNQUOTED([CARES_TYPEOF_ARES_SOCKLEN_T], [int]) ],
|
|
$cares_all_includes
|
|
)
|
|
|
|
AC_CHECK_TYPE(SOCKET, [], [], $cares_all_includes)
|
|
|
|
dnl ###############################################################################
|
|
|
|
dnl clock_gettime might require an external library
|
|
AC_SEARCH_LIBS([clock_gettime], [rt posix4])
|
|
|
|
dnl Use AC_CHECK_DECL not AC_CHECK_FUNCS, while this doesn't do a linkage test,
|
|
dnl it just makes sure the headers define it, this is the only thing without
|
|
dnl a complex workaround on Windows that will do what we need. See:
|
|
dnl https://github.com/msys2/msys2/wiki/Porting/f87a222118b1008ebc166ad237f04edb759c8f4c#calling-conventions-stdcall-and-autotools
|
|
dnl https://lists.gnu.org/archive/html/autoconf/2013-05/msg00085.html
|
|
dnl and for a more complex workaround, we'd need to use AC_LINK_IFELSE like:
|
|
dnl https://mailman.videolan.org/pipermail/vlc-devel/2015-March/101802.html
|
|
dnl which would require we check each individually and provide function arguments
|
|
dnl for the test.
|
|
|
|
AC_CHECK_DECL(strnlen, [AC_DEFINE([HAVE_STRNLEN], 1, [Define to 1 if you have `strnlen`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(memmem, [AC_DEFINE([HAVE_MEMMEM], 1, [Define to 1 if you have `memmem`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(recv, [AC_DEFINE([HAVE_RECV], 1, [Define to 1 if you have `recv`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(recvfrom, [AC_DEFINE([HAVE_RECVFROM], 1, [Define to 1 if you have `recvfrom`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(send, [AC_DEFINE([HAVE_SEND], 1, [Define to 1 if you have `send`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(sendto, [AC_DEFINE([HAVE_SENDTO], 1, [Define to 1 if you have `sendto`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(getnameinfo, [AC_DEFINE([HAVE_GETNAMEINFO], 1, [Define to 1 if you have `getnameinfo`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(gethostname, [AC_DEFINE([HAVE_GETHOSTNAME], 1, [Define to 1 if you have `gethostname`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(connect, [AC_DEFINE([HAVE_CONNECT], 1, [Define to 1 if you have `connect`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(connectx, [AC_DEFINE([HAVE_CONNECTX], 1, [Define to 1 if you have `connectx`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(closesocket, [AC_DEFINE([HAVE_CLOSESOCKET], 1, [Define to 1 if you have `closesocket`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(CloseSocket, [AC_DEFINE([HAVE_CLOSESOCKET_CAMEL], 1, [Define to 1 if you have `CloseSocket`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(fcntl, [AC_DEFINE([HAVE_FCNTL], 1, [Define to 1 if you have `fcntl`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(getenv, [AC_DEFINE([HAVE_GETENV], 1, [Define to 1 if you have `getenv`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(gethostname, [AC_DEFINE([HAVE_GETHOSTNAME], 1, [Define to 1 if you have `gethostname`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(getrandom, [AC_DEFINE([HAVE_GETRANDOM], 1, [Define to 1 if you have `getrandom`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(getservbyport_r, [AC_DEFINE([HAVE_GETSERVBYPORT_R], 1, [Define to 1 if you have `getservbyport_r`])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(inet_net_pton, [AC_DEFINE([HAVE_INET_NET_PTON], 1, [Define to 1 if you have `inet_net_pton`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(inet_ntop, [AC_DEFINE([HAVE_INET_NTOP], 1, [Define to 1 if you have `inet_ntop`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(inet_pton, [AC_DEFINE([HAVE_INET_PTON], 1, [Define to 1 if you have `inet_pton`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(ioctl, [AC_DEFINE([HAVE_IOCTL], 1, [Define to 1 if you have `ioctl`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(ioctlsocket, [AC_DEFINE([HAVE_IOCTLSOCKET], 1, [Define to 1 if you have `ioctlsocket`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(IoctlSocket, [AC_DEFINE([HAVE_IOCTLSOCKET_CAMEL], 1, [Define to 1 if you have `IoctlSocket`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(setsockopt, [AC_DEFINE([HAVE_SETSOCKOPT], 1, [Define to 1 if you have `setsockopt`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(socket, [AC_DEFINE([HAVE_SOCKET], 1, [Define to 1 if you have `socket`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(strcasecmp, [AC_DEFINE([HAVE_STRCASECMP], 1, [Define to 1 if you have `strcasecmp`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(strdup, [AC_DEFINE([HAVE_STRDUP], 1, [Define to 1 if you have `strdup`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(stricmp, [AC_DEFINE([HAVE_STRICMP], 1, [Define to 1 if you have `stricmp`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(strncasecmp, [AC_DEFINE([HAVE_STRNCASECMP], 1, [Define to 1 if you have `strncasecmp`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(strncmpi, [AC_DEFINE([HAVE_STRNCMPI], 1, [Define to 1 if you have `strncmpi`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(strnicmp, [AC_DEFINE([HAVE_STRNICMP], 1, [Define to 1 if you have `strnicmp`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(writev, [AC_DEFINE([HAVE_WRITEV], 1, [Define to 1 if you have `writev`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(arc4random_buf, [AC_DEFINE([HAVE_ARC4RANDOM_BUF], 1, [Define to 1 if you have `arc4random_buf`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(stat, [AC_DEFINE([HAVE_STAT], 1, [Define to 1 if you have `stat`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(gettimeofday, [AC_DEFINE([HAVE_GETTIMEOFDAY], 1, [Define to 1 if you have `gettimeofday`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(clock_gettime, [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Define to 1 if you have `clock_gettime`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(if_indextoname, [AC_DEFINE([HAVE_IF_INDEXTONAME], 1, [Define to 1 if you have `if_indextoname`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(if_nametoindex, [AC_DEFINE([HAVE_IF_NAMETOINDEX], 1, [Define to 1 if you have `if_nametoindex`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(getifaddrs, [AC_DEFINE([HAVE_GETIFADDRS], 1, [Define to 1 if you have `getifaddrs`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(poll, [AC_DEFINE([HAVE_POLL], 1, [Define to 1 if you have `poll`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(pipe, [AC_DEFINE([HAVE_PIPE], 1, [Define to 1 if you have `pipe`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(pipe2, [AC_DEFINE([HAVE_PIPE2], 1, [Define to 1 if you have `pipe2`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(kqueue, [AC_DEFINE([HAVE_KQUEUE], 1, [Define to 1 if you have `kqueue`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(epoll_create1, [AC_DEFINE([HAVE_EPOLL], 1, [Define to 1 if you have `epoll_{create1,ctl,wait}`])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(ConvertInterfaceIndexToLuid, [AC_DEFINE([HAVE_CONVERTINTERFACEINDEXTOLUID], 1, [Define to 1 if you have `ConvertInterfaceIndexToLuid`])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(ConvertInterfaceLuidToNameA, [AC_DEFINE([HAVE_CONVERTINTERFACELUIDTONAMEA], 1, [Define to 1 if you have `ConvertInterfaceLuidToNameA`])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(NotifyIpInterfaceChange, [AC_DEFINE([HAVE_NOTIFYIPINTERFACECHANGE], 1, [Define to 1 if you have `NotifyIpInterfaceChange`] )], [], $cares_all_includes)
|
|
AC_CHECK_DECL(RegisterWaitForSingleObject, [AC_DEFINE([HAVE_REGISTERWAITFORSINGLEOBJECT], 1, [Define to 1 if you have `RegisterWaitForSingleObject`])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(__system_property_get, [AC_DEFINE([HAVE___SYSTEM_PROPERTY_GET], 1, [Define to 1 if you have `__system_property_get`] )], [], $cares_all_includes)
|
|
|
|
|
|
dnl ###############################################################################
|
|
dnl recv, recvfrom, send, getnameinfo, gethostname
|
|
dnl ARGUMENTS AND RETURN VALUES
|
|
|
|
if test "x$ac_cv_type_ssize_t" = "xyes" -a "x$ac_cv_type_socklen_t" = "xyes" -a "x$ac_cv_native_windows" != "xyes" ; then
|
|
recvfrom_type_retv="ssize_t"
|
|
recvfrom_type_arg3="size_t"
|
|
else
|
|
recvfrom_type_retv="int"
|
|
recvfrom_type_arg3="int"
|
|
fi
|
|
|
|
if test "x$ac_cv_type_SOCKET" = "xyes" ; then
|
|
dnl If the SOCKET type is defined, it uses socket ... should be windows only
|
|
recvfrom_type_arg1="SOCKET"
|
|
else
|
|
recvfrom_type_arg1="int"
|
|
fi
|
|
|
|
if test "x$ac_cv_type_socklen_t" = "xyes" ; then
|
|
recvfrom_type_arg6="socklen_t *"
|
|
getnameinfo_type_arg2="socklen_t"
|
|
getnameinfo_type_arg46="socklen_t"
|
|
else
|
|
recvfrom_type_arg6="int *"
|
|
getnameinfo_type_arg2="int"
|
|
getnameinfo_type_arg46="int"
|
|
fi
|
|
|
|
if test "x$ac_cv_native_windows" = "xyes" ; then
|
|
recv_type_arg2="char *"
|
|
else
|
|
recv_type_arg2="void *"
|
|
fi
|
|
|
|
dnl Functions are typically consistent so the equivalent fields map ... equivalently
|
|
recv_type_retv=${recvfrom_type_retv}
|
|
send_type_retv=${recvfrom_type_retv}
|
|
recv_type_arg1=${recvfrom_type_arg1}
|
|
recvfrom_type_arg2=${recv_type_arg2}
|
|
send_type_arg1=${recvfrom_type_arg1}
|
|
recv_type_arg3=${recvfrom_type_arg3}
|
|
send_type_arg3=${recvfrom_type_arg3}
|
|
gethostname_type_arg2=${recvfrom_type_arg3}
|
|
|
|
dnl These should always be "sane" values to use always
|
|
recvfrom_qual_arg5=
|
|
recvfrom_type_arg4=int
|
|
recvfrom_type_arg5="struct sockaddr *"
|
|
recv_type_arg4=int
|
|
getnameinfo_type_arg1="struct sockaddr *"
|
|
getnameinfo_type_arg7=int
|
|
send_type_arg2="const void *"
|
|
send_type_arg4=int
|
|
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_RETV], [ ${recvfrom_type_retv} ], [ recvfrom() return value ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_ARG1], [ ${recvfrom_type_arg1} ], [ recvfrom() arg1 type ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_ARG2], [ ${recvfrom_type_arg2} ], [ recvfrom() arg2 type ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_ARG3], [ ${recvfrom_type_arg3} ], [ recvfrom() arg3 type ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_ARG4], [ ${recvfrom_type_arg4} ], [ recvfrom() arg4 type ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_TYPE_ARG5], [ ${recvfrom_type_arg5} ], [ recvfrom() arg5 type ])
|
|
AC_DEFINE_UNQUOTED([RECVFROM_QUAL_ARG5], [ ${recvfrom_qual_arg5}], [ recvfrom() arg5 qualifier])
|
|
|
|
AC_DEFINE_UNQUOTED([RECV_TYPE_RETV], [ ${recv_type_retv} ], [ recv() return value ])
|
|
AC_DEFINE_UNQUOTED([RECV_TYPE_ARG1], [ ${recv_type_arg1} ], [ recv() arg1 type ])
|
|
AC_DEFINE_UNQUOTED([RECV_TYPE_ARG2], [ ${recv_type_arg2} ], [ recv() arg2 type ])
|
|
AC_DEFINE_UNQUOTED([RECV_TYPE_ARG3], [ ${recv_type_arg3} ], [ recv() arg3 type ])
|
|
AC_DEFINE_UNQUOTED([RECV_TYPE_ARG4], [ ${recv_type_arg4} ], [ recv() arg4 type ])
|
|
|
|
AC_DEFINE_UNQUOTED([SEND_TYPE_RETV], [ ${send_type_retv} ], [ send() return value ])
|
|
AC_DEFINE_UNQUOTED([SEND_TYPE_ARG1], [ ${send_type_arg1} ], [ send() arg1 type ])
|
|
AC_DEFINE_UNQUOTED([SEND_TYPE_ARG2], [ ${send_type_arg2} ], [ send() arg2 type ])
|
|
AC_DEFINE_UNQUOTED([SEND_TYPE_ARG3], [ ${send_type_arg3} ], [ send() arg3 type ])
|
|
AC_DEFINE_UNQUOTED([SEND_TYPE_ARG4], [ ${send_type_arg4} ], [ send() arg4 type ])
|
|
|
|
AC_DEFINE_UNQUOTED([GETNAMEINFO_TYPE_ARG1], [ ${getnameinfo_type_arg1} ], [ getnameinfo() arg1 type ])
|
|
AC_DEFINE_UNQUOTED([GETNAMEINFO_TYPE_ARG2], [ ${getnameinfo_type_arg2} ], [ getnameinfo() arg2 type ])
|
|
AC_DEFINE_UNQUOTED([GETNAMEINFO_TYPE_ARG7], [ ${getnameinfo_type_arg7} ], [ getnameinfo() arg7 type ])
|
|
AC_DEFINE_UNQUOTED([GETNAMEINFO_TYPE_ARG46], [ ${getnameinfo_type_arg46} ], [ getnameinfo() arg4 and 6 type ])
|
|
|
|
AC_DEFINE_UNQUOTED([GETHOSTNAME_TYPE_ARG2], [ ${gethostname_type_arg2} ], [ gethostname() arg2 type ])
|
|
dnl ###############################################################################
|
|
|
|
|
|
if test "$ac_cv_have_decl_getservbyport_r" = "yes" ; then
|
|
AC_MSG_CHECKING([number of arguments for getservbyport_r()])
|
|
getservbyport_r_args=6
|
|
case $host_os in
|
|
solaris*)
|
|
getservbyport_r_args=5
|
|
;;
|
|
aix*|openbsd*)
|
|
getservbyport_r_args=4
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT([$getservbyport_r_args])
|
|
AC_DEFINE_UNQUOTED([GETSERVBYPORT_R_ARGS], [ $getservbyport_r_args ], [ number of arguments for getservbyport_r() ])
|
|
fi
|
|
|
|
if test "$ac_cv_have_decl_getservbyname_r" = "yes" ; then
|
|
AC_MSG_CHECKING([number of arguments for getservbyname_r()])
|
|
getservbyname_r_args=6
|
|
case $host_os in
|
|
solaris*)
|
|
getservbyname_r_args=5
|
|
;;
|
|
aix*|openbsd*)
|
|
getservbyname_r_args=4
|
|
;;
|
|
esac
|
|
AC_DEFINE_UNQUOTED([GETSERVBYNAME_R_ARGS], [ $getservbyname_r_args ], [ number of arguments for getservbyname_r() ])
|
|
AC_MSG_RESULT([$getservbyname_r_args])
|
|
fi
|
|
|
|
AC_TYPE_SIZE_T
|
|
AC_CHECK_DECL(AF_INET6, [AC_DEFINE([HAVE_AF_INET6],1,[Define to 1 if you have AF_INET6])], [], $cares_all_includes)
|
|
AC_CHECK_DECL(PF_INET6, [AC_DEFINE([HAVE_PF_INET6],1,[Define to 1 if you have PF_INET6])], [], $cares_all_includes)
|
|
AC_CHECK_TYPES(struct in6_addr, [], [], $cares_all_includes)
|
|
AC_CHECK_TYPES(struct sockaddr_in6, [], [], $cares_all_includes)
|
|
AC_CHECK_TYPES(struct sockaddr_storage, [], [], $cares_all_includes)
|
|
AC_CHECK_TYPES(struct addrinfo, [], [], $cares_all_includes)
|
|
AC_CHECK_TYPES(struct timeval, [], [], $cares_all_includes)
|
|
AC_CHECK_MEMBERS(struct sockaddr_in6.sin6_scope_id, [], [], $cares_all_includes)
|
|
AC_CHECK_MEMBERS(struct addrinfo.ai_flags, [], [], $cares_all_includes)
|
|
AC_CHECK_DECL(FIONBIO, [], [], $cares_all_includes)
|
|
AC_CHECK_DECL(O_NONBLOCK, [], [], $cares_all_includes)
|
|
AC_CHECK_DECL(SO_NONBLOCK, [], [], $cares_all_includes)
|
|
AC_CHECK_DECL(MSG_NOSIGNAL, [], [], $cares_all_includes)
|
|
AC_CHECK_DECL(CLOCK_MONOTONIC, [], [], $cares_all_includes)
|
|
|
|
if test "$ac_cv_have_decl_CLOCK_MONOTONIC" = "yes" -a "$ac_cv_have_decl_clock_gettime" = "yes" ; then
|
|
AC_DEFINE([HAVE_CLOCK_GETTIME_MONOTONIC], [ 1 ], [ clock_gettime() with CLOCK_MONOTONIC support ])
|
|
fi
|
|
|
|
if test "$ac_cv_have_decl_FIONBIO" = "yes" -a "$ac_cv_have_decl_ioctl" = "yes" ; then
|
|
AC_DEFINE([HAVE_IOCTL_FIONBIO], [ 1 ], [ ioctl() with FIONBIO support ])
|
|
fi
|
|
if test "$ac_cv_have_decl_FIONBIO" = "yes" -a "$ac_cv_have_decl_ioctlsocket" = "yes" ; then
|
|
AC_DEFINE([HAVE_IOCTLSOCKET_FIONBIO], [ 1 ], [ ioctlsocket() with FIONBIO support ])
|
|
fi
|
|
if test "$ac_cv_have_decl_SO_NONBLOCK" = "yes" -a "$ac_cv_have_decl_setsockopt" = "yes" ; then
|
|
AC_DEFINE([HAVE_SETSOCKOPT_SO_NONBLOCK], [ 1 ], [ setsockopt() with SO_NONBLOCK support ])
|
|
fi
|
|
if test "$ac_cv_have_decl_O_NONBLOCK" = "yes" -a "$ac_cv_have_decl_fcntl" = "yes" ; then
|
|
AC_DEFINE([HAVE_FCNTL_O_NONBLOCK], [ 1 ], [ fcntl() with O_NONBLOCK support ])
|
|
fi
|
|
|
|
dnl ares_build.h.in specific defines
|
|
if test "x$ac_cv_header_sys_types_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_SYS_TYPES_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_sys_socket_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_SYS_SOCKET_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_sys_select_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_SYS_SELECT_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_ws2tcpip_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_WS2TCPIP_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_winsock2_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_WINSOCK2_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_windows_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_WINDOWS_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_arpa_nameser_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_H],[1])
|
|
fi
|
|
if test "x$ac_cv_header_arpa_nameser_compa_h" = "xyes" ; then
|
|
CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_COMPA_H],[1])
|
|
fi
|
|
|
|
|
|
dnl ------------ THREADING --------------
|
|
|
|
dnl windows always supports threads, only check non-windows systems.
|
|
if test "${CARES_THREADS}" = "yes" -a "x${ac_cv_native_windows}" != "xyes" ; then
|
|
AX_PTHREAD([ ], [
|
|
AC_MSG_WARN([threads requested but not supported])
|
|
CARES_THREADS=no
|
|
])
|
|
|
|
if test "${CARES_THREADS}" = "yes" ; then
|
|
AC_CHECK_HEADERS([pthread.h pthread_np.h])
|
|
LIBS="$PTHREAD_LIBS $LIBS"
|
|
AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS"
|
|
CC="$PTHREAD_CC"
|
|
CXX="$PTHREAD_CXX"
|
|
fi
|
|
fi
|
|
|
|
if test "${CARES_THREADS}" = "yes" ; then
|
|
AC_DEFINE([CARES_THREADS], [ 1 ], [Threading enabled])
|
|
fi
|
|
|
|
CARES_PRIVATE_LIBS="$LIBS"
|
|
AC_SUBST(CARES_PRIVATE_LIBS)
|
|
|
|
BUILD_SUBDIRS="include src docs"
|
|
|
|
|
|
dnl ******** TESTS *******
|
|
|
|
if test "x$build_tests" != "xno" -a "x$HAVE_CXX14" = "0" ; then
|
|
if test "x$build_tests" = "xmaybe" ; then
|
|
AC_MSG_WARN([cannot build tests without a CXX14 compiler])
|
|
build_tests=no
|
|
else
|
|
AC_MSG_ERROR([*** Building tests requires a CXX14 compiler])
|
|
fi
|
|
fi
|
|
if test "x$build_tests" != "xno" -a "x$cross_compiling" = "xyes" ; then
|
|
if test "x$build_tests" = "xmaybe" ; then
|
|
AC_MSG_WARN([cannot build tests when cross compiling])
|
|
build_tests=no
|
|
else
|
|
AC_MSG_ERROR([*** Tests not supported when cross compiling])
|
|
fi
|
|
fi
|
|
|
|
dnl Forces compiling of tests even when cross-compiling.
|
|
AC_ARG_ENABLE(tests-crossbuild,
|
|
AS_HELP_STRING([--enable-tests-crossbuild], [Enable test building even when cross building]),
|
|
[build_tests="$enableval"]
|
|
)
|
|
|
|
if test "x$build_tests" != "xno" ; then
|
|
PKG_CHECK_MODULES([GMOCK], [gmock], [ have_gmock=yes ], [ have_gmock=no ])
|
|
if test "x$have_gmock" = "xno" ; then
|
|
if test "x$build_tests" = "xmaybe" ; then
|
|
AC_MSG_WARN([gmock could not be found, not building tests])
|
|
build_tests=no
|
|
else
|
|
AC_MSG_ERROR([tests require gmock])
|
|
fi
|
|
else
|
|
PKG_CHECK_MODULES([GMOCK112], [gmock >= 1.12.0], [ have_gmock_v112=yes ], [ have_gmock_v112=no ])
|
|
if test "x$have_gmock_v112" = "xyes" ; then
|
|
ARES_CHECK_USER_NAMESPACE
|
|
ARES_CHECK_UTS_NAMESPACE
|
|
fi
|
|
fi
|
|
fi
|
|
if test "x$build_tests" != "xno" ; then
|
|
build_tests=yes
|
|
|
|
AX_CXX_COMPILE_STDCXX_14([noext],[mandatory])
|
|
if test "$ac_cv_native_windows" != "yes" ; then
|
|
AX_PTHREAD([ CARES_TEST_PTHREADS="yes" ], [ AC_MSG_ERROR([threading required for tests]) ])
|
|
fi
|
|
|
|
BUILD_SUBDIRS="${BUILD_SUBDIRS} test"
|
|
fi
|
|
AC_MSG_CHECKING([whether to build tests])
|
|
AC_MSG_RESULT([$build_tests])
|
|
|
|
AM_CONDITIONAL(BUILD_TESTS, test "x$build_tests" = "xyes")
|
|
|
|
AC_SUBST(AM_CFLAGS)
|
|
AC_SUBST(AM_CPPFLAGS)
|
|
AC_SUBST(PKGCONFIG_CFLAGS)
|
|
AC_SUBST(BUILD_SUBDIRS)
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
include/Makefile
|
|
src/Makefile
|
|
src/lib/Makefile
|
|
src/tools/Makefile
|
|
docs/Makefile
|
|
libcares.pc ])
|
|
AM_COND_IF([BUILD_TESTS],
|
|
[AC_CONFIG_FILES([test/Makefile])])
|
|
|
|
AC_OUTPUT
|