123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983 |
- AC_PREREQ([2.60])
- AC_INIT([c-ares], [1.18.1],
- [c-ares mailing list: http://lists.haxx.se/listinfo/c-ares])
- CARES_VERSION_INFO="7:1:5"
- 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_MACRO_DIR([m4])
- AM_MAINTAINER_MODE
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
- AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX_11])
- CARES_CHECK_OPTION_DEBUG
- CARES_CHECK_OPTION_OPTIMIZE
- CARES_CHECK_OPTION_WARNINGS
- CARES_CHECK_OPTION_WERROR
- CARES_CHECK_OPTION_SYMBOL_HIDING
- CARES_CHECK_OPTION_EXPOSE_STATICS
- XC_CHECK_PATH_SEPARATOR
- dnl SED is mandatory for configure process and libtool.
- dnl Set it now, allowing it to be changed later.
- AC_PATH_PROG([SED], [sed], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
- if test -z "$SED" || test "$SED" = "not_found"; then
- AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
- fi
- AC_SUBST([SED])
- dnl GREP is mandatory for configure process and libtool.
- dnl Set it now, allowing it to be changed later.
- AC_PATH_PROG([GREP], [grep], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
- if test -z "$GREP" || test "$GREP" = "not_found"; then
- AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
- fi
- AC_SUBST([GREP])
- dnl EGREP is mandatory for configure process and libtool.
- dnl Set it now, allowing it to be changed later.
- if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
- AC_MSG_CHECKING([for egrep])
- EGREP="$GREP -E"
- AC_MSG_RESULT([$EGREP])
- else
- AC_PATH_PROG([EGREP], [egrep], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
- fi
- if test -z "$EGREP" || test "$EGREP" = "not_found"; then
- AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
- fi
- AC_SUBST([EGREP])
- dnl AR is mandatory for configure process and libtool.
- dnl This is target dependent, so check it as a tool.
- if test -z "$AR"; then
- dnl allow it to be overridden
- AC_PATH_TOOL([AR], [ar], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
- if test -z "$AR" || test "$AR" = "not_found"; then
- AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
- fi
- fi
- AC_SUBST([AR])
- AX_CODE_COVERAGE
- dnl
- dnl Detect the canonical host and target build environment
- dnl
- AC_CANONICAL_HOST
- dnl Get system canonical name
- AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
- XC_CHECK_PROG_CC
- AX_CXX_COMPILE_STDCXX_11([noext],[optional])
- XC_AUTOMAKE
- dnl This defines _ALL_SOURCE for AIX
- CARES_CHECK_AIX_ALL_SOURCE
- dnl Our configure and build reentrant settings
- CARES_CONFIGURE_THREAD_SAFE
- CARES_CONFIGURE_REENTRANT
- dnl check for how to do large files
- AC_SYS_LARGEFILE
- case $host_os in
- solaris*)
- AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
- ;;
- esac
- XC_LIBTOOL
- #
- # Automake conditionals based on libtool related checks
- #
- AM_CONDITIONAL([CARES_LT_SHLIB_USE_VERSION_INFO],
- [test "x$xc_lt_shlib_use_version_info" = 'xyes'])
- AM_CONDITIONAL([CARES_LT_SHLIB_USE_NO_UNDEFINED],
- [test "x$xc_lt_shlib_use_no_undefined" = 'xyes'])
- AM_CONDITIONAL([CARES_LT_SHLIB_USE_MIMPURE_TEXT],
- [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'])
- #
- # Due to libtool and automake machinery limitations of not allowing
- # specifying separate CPPFLAGS or CFLAGS when compiling objects for
- # inclusion of these in shared or static libraries, we are forced to
- # build using separate configure runs for shared and static libraries
- # on systems where different CPPFLAGS or CFLAGS are mandatory in order
- # to compile objects for each kind of library. Notice that relying on
- # the '-DPIC' CFLAG that libtool provides is not valid given that the
- # user might for example choose to build static libraries with PIC.
- #
- #
- # Make our Makefile.am files use the staticlib CPPFLAG only when strictly
- # targeting a static library and not building its shared counterpart.
- #
- AM_CONDITIONAL([USE_CPPFLAG_CARES_STATICLIB],
- [test "x$xc_lt_build_static_only" = 'xyes'])
- #
- # Make staticlib CPPFLAG variable and its definition visible in output
- # files unconditionally, providing an empty definition unless strictly
- # targeting a static library and not building its shared counterpart.
- #
- CPPFLAG_CARES_STATICLIB=
- if test "x$xc_lt_build_static_only" = 'xyes'; then
- CPPFLAG_CARES_STATICLIB='-DCARES_STATICLIB'
- fi
- AC_SUBST([CPPFLAG_CARES_STATICLIB])
- dnl **********************************************************************
- dnl platform/compiler/architecture specific checks/flags
- dnl **********************************************************************
- CARES_CHECK_COMPILER
- CARES_SET_COMPILER_BASIC_OPTS
- CARES_SET_COMPILER_DEBUG_OPTS
- CARES_SET_COMPILER_OPTIMIZE_OPTS
- CARES_SET_COMPILER_WARNING_OPTS
- if test "$compiler_id" = "INTEL_UNIX_C"; then
- #
- if test "$compiler_num" -ge "1000"; then
- dnl icc 10.X or later
- CFLAGS="$CFLAGS -shared-intel"
- elif test "$compiler_num" -ge "900"; then
- dnl icc 9.X specific
- CFLAGS="$CFLAGS -i-dynamic"
- fi
- #
- fi
- CARES_CHECK_COMPILER_HALT_ON_ERROR
- CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
- CARES_CHECK_COMPILER_PROTOTYPE_MISMATCH
- CARES_CHECK_COMPILER_SYMBOL_HIDING
- dnl **********************************************************************
- dnl Compilation based checks should not be done before this point.
- dnl **********************************************************************
- dnl **********************************************************************
- dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
- dnl and ws2tcpip.h take precedence over any other further checks which
- dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
- dnl this specific header files. And do them before its results are used.
- dnl **********************************************************************
- CURL_CHECK_HEADER_WINDOWS
- CURL_CHECK_NATIVE_WINDOWS
- case X-"$ac_cv_native_windows" in
- X-yes)
- CURL_CHECK_HEADER_WINSOCK
- CURL_CHECK_HEADER_WINSOCK2
- CURL_CHECK_HEADER_WS2TCPIP
- CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0600"
- ;;
- *)
- ac_cv_header_winsock_h="no"
- ac_cv_header_winsock2_h="no"
- ac_cv_header_ws2tcpip_h="no"
- ;;
- esac
- dnl **********************************************************************
- dnl Checks for libraries.
- dnl **********************************************************************
- CARES_CHECK_LIB_XNET
- dnl gethostbyname without lib or in the nsl lib?
- AC_CHECK_FUNC(gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- ],
- [ AC_CHECK_LIB(nsl, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lnsl"
- ])
- ])
- if test "$HAVE_GETHOSTBYNAME" != "1"
- then
- dnl gethostbyname in the socket lib?
- AC_CHECK_LIB(socket, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lsocket"
- ])
- fi
- dnl At least one system has been identified to require BOTH nsl and socket
- dnl libs at the same time to link properly.
- if test "$HAVE_GETHOSTBYNAME" != "1"
- then
- AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
- my_ac_save_LIBS=$LIBS
- LIBS="-lnsl -lsocket $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"
- then
- dnl This is for winsock systems
- if test "$ac_cv_header_windows_h" = "yes"; then
- if test "$ac_cv_header_winsock_h" = "yes"; then
- case $host in
- *-*-mingw32ce*)
- winsock_LIB="-lwinsock"
- ;;
- *)
- winsock_LIB="-lwsock32"
- ;;
- esac
- fi
- if test "$ac_cv_header_winsock2_h" = "yes"; then
- winsock_LIB="-lws2_32"
- fi
- if test ! -z "$winsock_LIB"; then
- my_ac_save_LIBS=$LIBS
- LIBS="$winsock_LIB $LIBS"
- AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- #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
- #endif
- ]],[[
- gethostbyname("www.dummysite.com");
- ]])
- ],[
- AC_MSG_RESULT([yes])
- HAVE_GETHOSTBYNAME="1"
- ],[
- AC_MSG_RESULT([no])
- winsock_LIB=""
- LIBS=$my_ac_save_LIBS
- ])
- fi
- fi
- 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_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- #include <stdio.h>
- #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 gethostbyname in the net lib - for BeOS
- AC_CHECK_LIB(net, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lnet"
- ])
- fi
- if test "$HAVE_GETHOSTBYNAME" != "1"; then
- AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
- fi
- dnl resolv lib for Apple (MacOS and iOS)
- AS_IF([test "x$host_vendor" = "xapple"], [
- AC_SEARCH_LIBS([res_servicename], [resolv], [
- AC_DEFINE([CARES_USE_LIBRESOLV], [1], [Use resolver library to configure cares])
- ], [
- AC_MSG_ERROR([Unable to find libresolv which is required for iPhone targets])
- ])
- ])
- 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 resolve lib?
- AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
- if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
- AC_CHECK_LIB(resolve, strcasecmp,
- [LIBS="-lresolve $LIBS"],
- ,
- -lnsl)
- fi
- ac_cv_func_strcasecmp="no"
- dnl Windows builds require linking to iphlpapi
- if test "$ac_cv_header_winsock2_h" = "yes"; then
- LIBS="$LIBS -liphlpapi"
- fi
- CARES_CHECK_LIBS_CONNECT
- 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 <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 <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])
- ])
- ])
- dnl **********************************************************************
- dnl In case that function clock_gettime with monotonic timer is available,
- dnl check for additional required libraries.
- dnl **********************************************************************
- dnl Xcode 8 bug: iOS when targeting less than 10, or macOS when targeting less than 10.12 will
- dnl say clock_gettime exists, it is a weak symbol that only exists in iOS 10 or macOS 10.12 and will
- dnl cause a crash at runtime when running on older versions. Skip finding CLOCK_MONOTONIC on older
- dnl Apple OS's.
- if test "x$host_vendor" != "xapple" || test "x$ac_cv_ios_10" = "xyes" || test "x$ac_cv_macos_10_12" = "xyes"; then
- CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
- fi
- 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 Let's hope this split URL remains working:
- dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
- dnl genprogc/thread_quick_ref.htm
- dnl **********************************************************************
- dnl Back to "normal" configuring
- dnl **********************************************************************
- dnl Checks for header files.
- STDC_HEADERS
- AC_PROG_EGREP
- CURL_CHECK_HEADER_MALLOC
- CURL_CHECK_HEADER_MEMORY
- 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 \
- sys/param.h \
- sys/uio.h \
- assert.h \
- netdb.h \
- netinet/in.h \
- netinet/tcp.h \
- net/if.h \
- errno.h \
- socket.h \
- strings.h \
- stdbool.h \
- time.h \
- limits.h \
- arpa/nameser.h \
- arpa/nameser_compat.h \
- arpa/inet.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
- ]
- )
- dnl Test and set CARES_HAVE_ARPA_NAMESER_H / CARES_HAVE_ARPA_NAMESER_COMPAT_H
- 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])
- ],
- []
- )
- dnl Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
- AC_TYPE_SIZE_T
- m4_warn([obsolete],
- [Update your code to rely only on HAVE_SYS_TIME_H,
- then remove this warning and the obsolete code below it.
- All current systems provide time.h; it need not be checked for.
- Not all systems provide sys/time.h, but those that do, all allow
- you to include it and time.h simultaneously.])dnl
- AC_CHECK_HEADERS_ONCE([sys/time.h])
- # Obsolete code to be removed.
- if test $ac_cv_header_sys_time_h = yes; then
- AC_DEFINE([TIME_WITH_SYS_TIME],[1],[Define to 1 if you can safely include both <sys/time.h>
- and <time.h>. This macro is obsolete.])
- fi
- # End of obsolete code.
- CURL_CHECK_STRUCT_TIMEVAL
- AC_CHECK_TYPE(long long,
- [AC_DEFINE(HAVE_LONGLONG, 1,
- [Define to 1 if the compiler supports the 'long long' data type.])]
- longlong="yes"
- )
- if test "xyes" = "x$longlong"; then
- AC_MSG_CHECKING([if numberLL works])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- long long val = 1000LL;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
- ],[
- AC_MSG_RESULT([no])
- ])
- fi
- # check for ssize_t
- 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])
- # check for bool type
- AC_CHECK_TYPE([bool],[
- AC_DEFINE(HAVE_BOOL_T, 1,
- [Define to 1 if bool is an available type.])
- ], ,[
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_STDBOOL_H
- #include <stdbool.h>
- #endif
- ])
- CARES_CONFIGURE_ARES_SOCKLEN_T
- TYPE_IN_ADDR_T
- TYPE_SOCKADDR_STORAGE
- TYPE_SIG_ATOMIC_T
- m4_warn([obsolete],
- [your code may safely assume C89 semantics that RETSIGTYPE is void.
- Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])dnl
- AC_CACHE_CHECK([return type of signal handlers],[ac_cv_type_signal],[AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([#include <sys/types.h>
- #include <signal.h>
- ],
- [return *(signal (0, 0)) (0) == 1;])],
- [ac_cv_type_signal=int],
- [ac_cv_type_signal=void])])
- AC_DEFINE_UNQUOTED([RETSIGTYPE],[$ac_cv_type_signal],[Define as the return type of signal handlers
- (`int' or `void').])
- CURL_CHECK_FUNC_RECV
- CURL_CHECK_FUNC_RECVFROM
- CURL_CHECK_FUNC_SEND
- CURL_CHECK_MSG_NOSIGNAL
- CARES_CHECK_FUNC_CLOSESOCKET
- CARES_CHECK_FUNC_CLOSESOCKET_CAMEL
- CARES_CHECK_FUNC_CONNECT
- CARES_CHECK_FUNC_FCNTL
- CARES_CHECK_FUNC_FREEADDRINFO
- CARES_CHECK_FUNC_GETADDRINFO
- CARES_CHECK_FUNC_GETENV
- CARES_CHECK_FUNC_GETHOSTBYADDR
- CARES_CHECK_FUNC_GETHOSTBYNAME
- CARES_CHECK_FUNC_GETHOSTNAME
- CARES_CHECK_FUNC_GETSERVBYPORT_R
- CARES_CHECK_FUNC_INET_NET_PTON
- CARES_CHECK_FUNC_INET_NTOP
- CARES_CHECK_FUNC_INET_PTON
- CARES_CHECK_FUNC_IOCTL
- CARES_CHECK_FUNC_IOCTLSOCKET
- CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL
- CARES_CHECK_FUNC_SETSOCKOPT
- CARES_CHECK_FUNC_SOCKET
- CARES_CHECK_FUNC_STRCASECMP
- CARES_CHECK_FUNC_STRCMPI
- CARES_CHECK_FUNC_STRDUP
- CARES_CHECK_FUNC_STRICMP
- CARES_CHECK_FUNC_STRNCASECMP
- CARES_CHECK_FUNC_STRNCMPI
- CARES_CHECK_FUNC_STRNICMP
- CARES_CHECK_FUNC_WRITEV
- dnl check for AF_INET6
- CARES_CHECK_CONSTANT(
- [
- #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>
- #endif
- #else
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #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(
- [
- #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>
- #endif
- #else
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #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(
- [
- #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_NETINET_IN_H
- #include <netinet/in.h>
- #endif
- #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(
- [
- #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_NETINET_IN_H
- #include <netinet/in.h>
- #endif
- #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
- )
- 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.])
- , ,
- [
- #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_NETINET_IN_H
- #include <netinet/in.h>
- #endif
- #endif
- ])
- dnl check for the addrinfo structure
- AC_CHECK_MEMBER(struct addrinfo.ai_flags,
- AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1,
- [Define to 1 if you have struct addrinfo.]),,
- [
- #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_NETINET_IN_H
- #include <netinet/in.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
- #ifdef HAVE_NETDB_H
- #include <netdb.h>
- #endif
- #endif
- ]
- )
- AC_CHECK_FUNCS([bitncmp \
- gettimeofday \
- if_indextoname
- ],[
- ],[
- func="$ac_func"
- AC_MSG_CHECKING([deeper for $func])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- $func ();
- ]])
- ],[
- AC_MSG_RESULT([yes])
- eval "ac_cv_func_$func=yes"
- AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
- [Define to 1 if you have the $func function.])
- ],[
- AC_MSG_RESULT([but still no])
- ])
- ])
- dnl Android. Some variants like arm64 may no longer have __system_property_get
- dnl in libc, but they are defined in the headers. Perform a link check.
- AC_CHECK_FUNC([__system_property_get], [
- AC_DEFINE([HAVE___SYSTEM_PROPERTY_GET], [1], [Define if __system_property_get exists.])
- ])
- dnl Check if the getnameinfo function is available
- dnl and get the types of five of its arguments.
- CURL_CHECK_FUNC_GETNAMEINFO
- AC_C_BIGENDIAN(
- [AC_DEFINE(ARES_BIG_ENDIAN, 1,
- [define this if ares is built for a big endian system])],
- ,
- [AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
- )
- dnl Check for user-specified random device
- AC_ARG_WITH(random,
- AS_HELP_STRING([--with-random=FILE],
- [read randomness from FILE (default=/dev/urandom)]),
- [ CARES_RANDOM_FILE="$withval" ],
- [
- dnl Check for random device. If we're cross compiling, we can't
- dnl check, and it's better to assume it doesn't exist than it is
- dnl to fail on AC_CHECK_FILE or later.
- if test "$cross_compiling" = "no"; then
- AC_CHECK_FILE("/dev/urandom", [ CARES_RANDOM_FILE="/dev/urandom"] )
- else
- AC_MSG_WARN([cannot check for /dev/urandom while cross compiling; assuming none])
- fi
- ]
- )
- 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
- CARES_CHECK_OPTION_NONBLOCKING
- CARES_CHECK_NONBLOCKING_SOCKET
- CARES_CONFIGURE_SYMBOL_HIDING
- CARES_PRIVATE_LIBS="$LIBS"
- AC_SUBST(CARES_PRIVATE_LIBS)
- CARES_CFLAG_EXTRAS=""
- if test X"$want_werror" = Xyes; then
- CARES_CFLAG_EXTRAS="-Werror"
- fi
- AC_SUBST(CARES_CFLAG_EXTRAS)
- dnl squeeze whitespace out of some variables
- squeeze CFLAGS
- squeeze CPPFLAGS
- squeeze DEFS
- squeeze LDFLAGS
- squeeze LIBS
- squeeze CARES_PRIVATE_LIBS
- XC_CHECK_BUILD_FLAGS
- AC_MSG_CHECKING([whether to build tests])
- AC_ARG_ENABLE(tests,
- AS_HELP_STRING([--enable-tests], [build test suite]),
- [ build_tests="$enableval" ],
- [ if test "x$HAVE_CXX11" = "x1" && test "x$cross_compiling" = "xno" ; then
- build_tests="yes"
- else
- build_tests="no"
- fi
- ]
- )
- if test "x$build_tests" = "xyes" ; then
- if test "x$HAVE_CXX11" = "0" ; then
- AC_MSG_ERROR([*** Building tests requires a CXX11 compiler])
- fi
- if test "x$cross_compiling" = "xyes" ; then
- AC_MSG_ERROR([*** Tests not supported when cross compiling])
- fi
- fi
- AC_MSG_RESULT([$build_tests])
- BUILD_SUBDIRS="include src docs"
- if test "x$build_tests" = "xyes" ; then
- AC_CONFIG_SUBDIRS([test])
- BUILD_SUBDIRS="${BUILD_SUBDIRS} test"
- fi
- AC_SUBST(BUILD_SUBDIRS)
- AC_CONFIG_FILES([Makefile \
- include/Makefile \
- src/Makefile \
- src/lib/Makefile \
- src/tools/Makefile \
- docs/Makefile \
- libcares.pc ])
- AC_OUTPUT
- XC_AMEND_DISTCLEAN(['.'])
|