commit dbcb3a7dbd5fcdbf9d2b653ed285227f87ff4e46
parent 33ae999e4f887ecbc8319923276e6c97e4475356
Author: Florian Dold <florian@dold.me>
Date: Fri, 19 Jan 2024 00:28:20 +0100
integrate c-ares into the build system
Diffstat:
2 files changed, 389 insertions(+), 15 deletions(-)
diff --git a/meson.build b/meson.build
@@ -30,6 +30,9 @@ m_dep = cc.find_library('m', required : false)
dl_dep = cc.find_library('dl', required : true)
thread_dep = dependency('threads')
+# Async DNS resolver library
+cares_proj = subproject('c-ares', required : true)
+
# TLS library
mbedtls_proj = subproject('mbedtls', required : true)
#mbedcrypto_dep = cc.find_library('mbedcrypto', required : true)
diff --git a/subprojects/c-ares/meson.build b/subprojects/c-ares/meson.build
@@ -4,26 +4,397 @@ c_compiler = meson.get_compiler('c')
cares_inc = include_directories(['include/'])
-conf_data = configuration_data()
+add_project_arguments('-DHAVE_CONFIG_H', language : 'c')
+add_project_arguments('-DCARES_BUILDING_LIBRARY', language : 'c')
-conf_data.set('CARES_TYPEOF_ARES_SOCKLEN_T', 'socklen_t')
-conf_data.set('CARES_TYPEOF_ARES_SSIZE_T', 'ssize_t')
+# Build configuration file (separate from the internal configuration file
+# that does not get shipped as a public header).
+ares_build_conf_data = configuration_data()
-add_project_arguments('-DHAVE_SYS_TYPES_H', language : 'c')
-add_project_arguments('-DHAVE_NETDB_H', language : 'c')
-add_project_arguments('-DHAVE_RESOLV_H', language : 'c')
-add_project_arguments('-DHAVE_ARPA_INET_H', language : 'c')
-add_project_arguments('-DHAVE_NET_IF_H', language : 'c')
-add_project_arguments('-DHAVE_SYS_SOCKET_H', language : 'c')
+ares_build_conf_data.set('CARES_TYPEOF_ARES_SOCKLEN_T', 'socklen_t')
+ares_build_conf_data.set('CARES_TYPEOF_ARES_SSIZE_T', 'ssize_t')
+ares_build_conf_data.set('CARES_HAVE_SYS_TYPES_H', true)
+ares_build_conf_data.set('CARES_HAVE_SYS_RANDOM_H', true)
+ares_build_conf_data.set('CARES_HAVE_SYS_SOCKET_H', true)
+ares_build_conf_data.set('CARES_HAVE_ARPA_NAMESER_H', c_compiler.has_header('arpa/nameser.h'))
+ares_build_conf_data.set('CARES_HAVE_ARPA_NAMESER_COMPA_H', c_compiler.has_header('arpa/nameser_compa.h'))
+configure_file(input : 'include/ares_build.h.mesonin',
+ output : 'ares_build.h',
+ configuration : ares_build_conf_data)
-add_project_arguments('-DCARES_HAVE_SYS_TYPES_H', language : 'c')
-add_project_arguments('-DCARES_HAVE_SYS_RANDOM_H', language : 'c')
-add_project_arguments('-DCARES_HAVE_SYS_SOCKET_H', language : 'c')
+# Internal configuration in src/lib
+ares_internal_conf_data = configuration_data()
+
+ares_internal_conf_data.set('CARES_SYMBOL_HIDING', true)
+ares_internal_conf_data.set('CARES_USE_LIBRESOLV', false)
+ares_internal_conf_data.set('HAVE_LIBRESOLV', false)
+
+# Header checks
+
+HAVE_SYS_TYPES_H = c_compiler.has_header('sys/types.h')
+HAVE_SYS_RANDOM_H = c_compiler.has_header('sys/random.h')
+HAVE_SYS_SOCKET_H = c_compiler.has_header('sys/socket.h')
+HAVE_SYS_SOCKIO_H = c_compiler.has_header('sys/sockio.h')
+HAVE_ARPA_INET_H = c_compiler.has_header('arpa/inet.h')
+HAVE_ARPA_NAMESER_COMPAT_H = c_compiler.has_header('arpa/nameser_compat.h')
+HAVE_ARPA_NAMESER_H = c_compiler.has_header('arpa/nameser.h')
+HAVE_ASSERT_H = c_compiler.has_header('assert.h')
+HAVE_ERRNO_H = c_compiler.has_header('errno.h')
+HAVE_FCNTL_H = c_compiler.has_header('fcntl.h')
+HAVE_INTTYPES_H = c_compiler.has_header('inttypes.h')
+HAVE_LIMITS_H = c_compiler.has_header('limits.h')
+HAVE_MALLOC_H = c_compiler.has_header('malloc.h')
+HAVE_MEMORY_H = c_compiler.has_header('memory.h')
+HAVE_NETDB_H = c_compiler.has_header('netdb.h')
+HAVE_NETINET_IN_H = c_compiler.has_header('netinet/in.h')
+HAVE_NET_IF_H = c_compiler.has_header('net/if.h')
+HAVE_SIGNAL_H = c_compiler.has_header('signal.h')
+HAVE_SOCKET_H = c_compiler.has_header('socket.h')
+HAVE_STDBOOL_H = c_compiler.has_header('stdbool.h')
+HAVE_STDINT_H = c_compiler.has_header('stdint.h')
+HAVE_STDLIB_H = c_compiler.has_header('stdlib.h')
+HAVE_STRINGS_H = c_compiler.has_header('strings.h')
+HAVE_STRING_H = c_compiler.has_header('string.h')
+HAVE_STROPTS_H = c_compiler.has_header('stropts.h')
+HAVE_SYS_IOCTL_H = c_compiler.has_header('sys/ioctl.h')
+HAVE_SYS_PARAM_H = c_compiler.has_header('sys/param.h')
+HAVE_SYS_SELECT_H = c_compiler.has_header('sys/select.h')
+HAVE_SYS_STAT_H = c_compiler.has_header('sys/stat.h')
+HAVE_SYS_TIME_H = c_compiler.has_header('sys/time.h')
+HAVE_SYS_UIO_H = c_compiler.has_header('sys/uio.h')
+HAVE_SYS_RANDOM_H = c_compiler.has_header('sys/random.h')
+HAVE_IFADDRS_H = c_compiler.has_header('ifaddrs.h')
+HAVE_TIME_H = c_compiler.has_header('time.h')
+HAVE_DLFCN_H = c_compiler.has_header('dlfcn.h')
+HAVE_UNISTD_H = c_compiler.has_header('unistd.h')
+HAVE_NETINET_TCP_H = c_compiler.has_header('netinet/tcp.h')
+
+
+
+ares_internal_conf_data.set('HAVE_SYS_TYPES_H', HAVE_SYS_TYPES_H)
+ares_internal_conf_data.set('HAVE_SYS_RANDOM_H', HAVE_SYS_RANDOM_H)
+ares_internal_conf_data.set('HAVE_SYS_SOCKET_H', HAVE_SYS_SOCKET_H)
+ares_internal_conf_data.set('HAVE_SYS_SOCKIO_H', HAVE_SYS_SOCKIO_H)
+ares_internal_conf_data.set('HAVE_ARPA_INET_H', HAVE_ARPA_INET_H)
+ares_internal_conf_data.set('HAVE_ARPA_NAMESER_COMPAT_H', HAVE_ARPA_NAMESER_COMPAT_H)
+ares_internal_conf_data.set('HAVE_ARPA_NAMESER_H', HAVE_ARPA_NAMESER_H)
+ares_internal_conf_data.set('HAVE_ASSERT_H', HAVE_ASSERT_H)
+ares_internal_conf_data.set('HAVE_ERRNO_H', HAVE_ERRNO_H)
+ares_internal_conf_data.set('HAVE_FCNTL_H', HAVE_FCNTL_H)
+ares_internal_conf_data.set('HAVE_INTTYPES_H', HAVE_INTTYPES_H)
+ares_internal_conf_data.set('HAVE_LIMITS_H', HAVE_LIMITS_H)
+ares_internal_conf_data.set('HAVE_MALLOC_H', HAVE_MALLOC_H)
+ares_internal_conf_data.set('HAVE_MEMORY_H', HAVE_MEMORY_H)
+ares_internal_conf_data.set('HAVE_NETDB_H', HAVE_NETDB_H)
+ares_internal_conf_data.set('HAVE_NETINET_IN_H', HAVE_NETINET_IN_H)
+ares_internal_conf_data.set('HAVE_NET_IF_H', HAVE_NET_IF_H)
+ares_internal_conf_data.set('HAVE_SIGNAL_H', HAVE_SIGNAL_H)
+ares_internal_conf_data.set('HAVE_SOCKET_H', HAVE_SOCKET_H)
+ares_internal_conf_data.set('HAVE_STDBOOL_H', HAVE_STDBOOL_H)
+ares_internal_conf_data.set('HAVE_STDINT_H', HAVE_STDINT_H)
+ares_internal_conf_data.set('HAVE_STDLIB_H', HAVE_STDLIB_H)
+ares_internal_conf_data.set('HAVE_STRINGS_H', HAVE_STRINGS_H)
+ares_internal_conf_data.set('HAVE_STRING_H', HAVE_STRING_H)
+ares_internal_conf_data.set('HAVE_STROPTS_H', HAVE_STROPTS_H)
+ares_internal_conf_data.set('HAVE_SYS_IOCTL_H', HAVE_SYS_IOCTL_H)
+ares_internal_conf_data.set('HAVE_SYS_PARAM_H', HAVE_SYS_PARAM_H)
+ares_internal_conf_data.set('HAVE_SYS_SELECT_H', HAVE_SYS_SELECT_H)
+ares_internal_conf_data.set('HAVE_SYS_STAT_H', HAVE_SYS_STAT_H)
+ares_internal_conf_data.set('HAVE_SYS_TIME_H', HAVE_SYS_TIME_H)
+ares_internal_conf_data.set('HAVE_SYS_UIO_H', HAVE_SYS_UIO_H)
+ares_internal_conf_data.set('HAVE_SYS_RANDOM_H', HAVE_SYS_RANDOM_H)
+ares_internal_conf_data.set('HAVE_IFADDRS_H', HAVE_IFADDRS_H)
+ares_internal_conf_data.set('HAVE_TIME_H', HAVE_TIME_H)
+ares_internal_conf_data.set('HAVE_DLFCN_H', HAVE_DLFCN_H)
+ares_internal_conf_data.set('HAVE_UNISTD_H', HAVE_UNISTD_H)
+ares_internal_conf_data.set('HAVE_NETINET_TCP_H', HAVE_NETINET_IN_H)
+
+# Extra includes for further configuration checks
+extra_include = []
+
+if HAVE_STDBOOL_H
+ extra_include += '#include <stdbool.h>'
+endif
+
+if HAVE_SYS_TYPES_H
+ extra_include += '#include <sys/types.h>'
+endif
+
+if HAVE_ARPA_INET_H
+ extra_include += '#include <arpa/inet.h>'
+endif
+
+if HAVE_ARPA_NAMESER_H
+ extra_include += '#include <arpa/nameser.h>'
+endif
+
+if HAVE_NETDB_H
+ extra_include += '#include <netdb.h>'
+endif
+
+if HAVE_NET_IF_H
+ extra_include += '#include <net/if.h>'
+endif
+
+if HAVE_IFADDRS_H
+ extra_include += '#include <ifaddrs.h>'
+endif
+
+if HAVE_NETINET_IN_H
+ extra_include += '#include <netinet/in.h>'
+endif
+
+if HAVE_NETINET_TCP_H
+ extra_include += '#include <netinet/tcp.h>'
+endif
+
+if HAVE_SIGNAL_H
+ extra_include += '#include <signal.h>'
+endif
+
+if HAVE_STDLIB_H
+ extra_include += '#include <stdlib.h>'
+endif
+
+if HAVE_STRING_H
+ extra_include += '#include <string.h>'
+endif
+
+if HAVE_STRINGS_H
+ extra_include += '#include <strings.h>'
+endif
+
+if HAVE_SYS_IOCTL_H
+ extra_include += '#include <sys/ioctl.h>'
+endif
+
+if HAVE_SYS_RANDOM_H
+ extra_include += '#include <sys/random.h>'
+endif
+
+if HAVE_SYS_SELECT_H
+ extra_include += '#include <sys/select.h>'
+endif
+
+if HAVE_SYS_SOCKET_H
+ extra_include += '#include <sys/socket.h>'
+endif
+
+if HAVE_SYS_SOCKIO_H
+ extra_include += '#include <sys/sockio.h>'
+endif
+
+if HAVE_SYS_TIME_H
+ extra_include += '#include <sys/time.h>'
+endif
+
+if HAVE_SYS_STAT_H
+ extra_include += '#include <sys/stat.h>'
+endif
+
+if HAVE_SYS_UIO_H
+ extra_include += '#include <sys/uio.h>'
+endif
+
+if HAVE_SYS_RANDOM_H
+ extra_include += '#include <sys/random.h>'
+endif
+
+if HAVE_TIME_H
+ extra_include += '#include <time.h>'
+endif
+
+if HAVE_FCNTL_H
+ extra_include += '#include <fcntl.h>'
+endif
+
+if HAVE_UNISTD_H
+ extra_include += '#include <unistd.h>'
+endif
+
+HAVE_SOCKLEN_T = c_compiler.has_type('socklen_t', prefix : extra_include)
+HAVE_TYPE_SOCKET = c_compiler.has_type('SOCKET', prefix : extra_include)
+HAVE_SSIZE_T = c_compiler.has_type('ssize_t', prefix : extra_include)
+HAVE_LONGLONG = c_compiler.has_type('long long', prefix : extra_include)
+HAVE_STRUCT_ADDRINFO = c_compiler.has_type('struct addrinfo', prefix : extra_include)
+HAVE_STRUCT_IN6_ADDR = c_compiler.has_type('struct in6_addr', prefix : extra_include)
+HAVE_STRUCT_SOCKADDR_IN6 = c_compiler.has_type('struct sockaddr_in6', prefix : extra_include)
+HAVE_STRUCT_SOCKADDR_STORAGE = c_compiler.has_type('struct sockaddr_storage', prefix : extra_include)
+HAVE_STRUCT_TIMEVAL = c_compiler.has_type('struct timeval', prefix : extra_include)
+
+ares_internal_conf_data.set('HAVE_SOCKLEN_T', HAVE_SOCKLEN_T)
+ares_internal_conf_data.set('HAVE_TYPE_SOCKET', HAVE_TYPE_SOCKET)
+ares_internal_conf_data.set('HAVE_SSIZE_T', HAVE_SSIZE_T)
+ares_internal_conf_data.set('HAVE_LONGLONG', HAVE_LONGLONG)
+ares_internal_conf_data.set('HAVE_STRUCT_ADDRINFO', HAVE_STRUCT_ADDRINFO)
+ares_internal_conf_data.set('HAVE_STRUCT_IN6_ADDR', HAVE_STRUCT_IN6_ADDR)
+ares_internal_conf_data.set('HAVE_STRUCT_SOCKADDR_IN6', HAVE_STRUCT_SOCKADDR_IN6)
+ares_internal_conf_data.set('HAVE_STRUCT_SOCKADDR_STORAGE', HAVE_STRUCT_SOCKADDR_STORAGE)
+ares_internal_conf_data.set('HAVE_STRUCT_TIMEVAL', HAVE_STRUCT_TIMEVAL)
+
+# Check for preprocessor defines
+HAVE_AF_INET6 = c_compiler.get_define('AF_INET6', prefix : extra_include) != ''
+HAVE_O_NONBLOCK = c_compiler.get_define('O_NONBLOCK', prefix : extra_include) != ''
+HAVE_FIONBIO = c_compiler.get_define('FIONBIO', prefix : extra_include) != ''
+HAVE_IOCTL_SIOCGIFADDR = c_compiler.get_define('SIOCGIFADDR', prefix : extra_include) != ''
+HAVE_MSG_NOSIGNAL = c_compiler.get_define('MSG_NOSIGNAL', prefix : extra_include) != ''
+HAVE_PF_INET6 = c_compiler.get_define('PF_INET6', prefix : extra_include) != ''
+HAVE_SO_NONBLOCK = c_compiler.get_define('SO_NONBLOCK', prefix : extra_include) != ''
+
+ares_internal_conf_data.set('HAVE_AF_INET6', HAVE_AF_INET6)
+ares_internal_conf_data.set('HAVE_O_NONBLOCK', HAVE_O_NONBLOCK)
+ares_internal_conf_data.set('HAVE_FIONBIO', HAVE_FIONBIO)
+ares_internal_conf_data.set('HAVE_IOCTL_SIOCGIFADDR', HAVE_IOCTL_SIOCGIFADDR)
+ares_internal_conf_data.set('HAVE_MSG_NOSIGNAL', HAVE_MSG_NOSIGNAL)
+ares_internal_conf_data.set('HAVE_PF_INET6', HAVE_PF_INET6)
+ares_internal_conf_data.set('HAVE_SO_NONBLOCK', HAVE_SO_NONBLOCK)
+
+# Type signatures for recv/send/...
+
+RECVFROM_TYPE_RETV = 'ssize_t'
+RECVFROM_TYPE_ARG3 = 'size_t'
+RECVFROM_TYPE_ARG1 = 'int'
+RECV_TYPE_ARG2 = 'void *'
+
+ares_internal_conf_data.set('RECVFROM_TYPE_RETV', RECVFROM_TYPE_RETV)
+ares_internal_conf_data.set('RECVFROM_TYPE_ARG3', RECVFROM_TYPE_ARG3)
+ares_internal_conf_data.set('RECVFROM_TYPE_ARG1', RECVFROM_TYPE_ARG1)
+ares_internal_conf_data.set('RECV_TYPE_ARG2', RECV_TYPE_ARG2)
+
+
+ares_internal_conf_data.set('RECV_TYPE_RETV', RECVFROM_TYPE_RETV)
+ares_internal_conf_data.set('SEND_TYPE_RETV', RECVFROM_TYPE_RETV)
+ares_internal_conf_data.set('RECV_TYPE_ARG1', RECVFROM_TYPE_ARG1)
+ares_internal_conf_data.set('RECVFROM_TYPE_ARG2', RECV_TYPE_ARG2)
+ares_internal_conf_data.set('SEND_TYPE_ARG1', RECVFROM_TYPE_ARG1)
+ares_internal_conf_data.set('RECV_TYPE_ARG3', RECVFROM_TYPE_ARG3)
+ares_internal_conf_data.set('SEND_TYPE_ARG3', RECVFROM_TYPE_ARG3)
+ares_internal_conf_data.set('GETHOSTNAME_TYPE_ARG2', RECVFROM_TYPE_ARG3)
+
+# These should always be "sane" values to use always
+ares_internal_conf_data.set('RECVFROM_QUAL_ARG5', '')
+ares_internal_conf_data.set('RECVFROM_QUAL_ARG4', 'int')
+ares_internal_conf_data.set('RECVFROM_QUAL_ARG5', 'struct sockaddr *')
+ares_internal_conf_data.set('RECVFROM_QUAL_ARG5', 'struct sockaddr *')
+ares_internal_conf_data.set('RECV_TYPE_ARG4', 'int')
+ares_internal_conf_data.set('GETNAMEINFO_TYPE_ARG1', 'struct sockaddr *')
+ares_internal_conf_data.set('GETNAMEINFO_TYPE_ARG7', 'int')
+ares_internal_conf_data.set('SEND_TYPE_ARG2', 'void *')
+ares_internal_conf_data.set('SEND_TYPE_ARG4', 'int')
+ares_internal_conf_data.set('SEND_QUAL_ARG2', 'const')
+
+
+HAVE_CLOSESOCKET = c_compiler.has_function('closesocket', prefix : extra_include)
+HAVE_CONNECT = c_compiler.has_function('connect', prefix : extra_include)
+HAVE_FCNTL = c_compiler.has_function('fcntl', prefix : extra_include)
+HAVE_FREEADDRINFO = c_compiler.has_function('freeaddrinfo', prefix : extra_include)
+HAVE_GETADDRINFO = c_compiler.has_function('getaddrinfo', prefix : extra_include)
+HAVE_GETENV = c_compiler.has_function('getenv', prefix : extra_include)
+HAVE_GETHOSTNAME = c_compiler.has_function('gethostbyname', prefix : extra_include)
+HAVE_GETNAMEINFO = c_compiler.has_function('getnameinfo', prefix : extra_include)
+HAVE_GETRANDOM = c_compiler.has_function('getrandom', prefix : extra_include)
+HAVE_GETSERVBYPORT_R = c_compiler.has_function('getservbyport_r', prefix : extra_include)
+HAVE_GETSERVBYNAME_R = c_compiler.has_function('getservbyname_r', prefix : extra_include)
+HAVE_GETTIMEOFDAY = c_compiler.has_function('gettimeofday', prefix : extra_include)
+HAVE_IF_INDEXTONAME = c_compiler.has_function('if_indextoname', prefix : extra_include)
+HAVE_IF_NAMETOINDEX = c_compiler.has_function('if_nametoindex', prefix : extra_include)
+HAVE_INET_NET_PTON = c_compiler.has_function('inet_net_pton', prefix : extra_include)
+HAVE_INET_NTOP = c_compiler.has_function('inet_ntop', prefix : extra_include)
+HAVE_INET_PTON = c_compiler.has_function('inet_pton', prefix : extra_include)
+HAVE_IOCTL = c_compiler.has_function('ioctl', prefix : extra_include)
+HAVE_IOCTLSOCKET = c_compiler.has_function('ioctlsocket', prefix : extra_include)
+HAVE_RECV = c_compiler.has_function('recv', prefix : extra_include)
+HAVE_RECVFROM = c_compiler.has_function('recvfrom', prefix : extra_include)
+HAVE_SEND = c_compiler.has_function('send', prefix : extra_include)
+HAVE_SETSOCKOPT = c_compiler.has_function('setsockopt', prefix : extra_include)
+HAVE_SOCKET = c_compiler.has_function('socket', prefix : extra_include)
+HAVE_STRCASECMP = c_compiler.has_function('strcasecmp', prefix : extra_include)
+HAVE_STRCMPI = c_compiler.has_function('strcmpi', prefix : extra_include)
+HAVE_STRDUP = c_compiler.has_function('strdup', prefix : extra_include)
+HAVE_STRICMP = c_compiler.has_function('stricmp', prefix : extra_include)
+HAVE_STRNCASECMP = c_compiler.has_function('strncasecmp', prefix : extra_include)
+HAVE_STRNCMPI = c_compiler.has_function('strncmpi', prefix : extra_include)
+HAVE_STRNICMP = c_compiler.has_function('strnicmp', prefix : extra_include)
+HAVE_WRITEV = c_compiler.has_function('writev', prefix : extra_include)
+HAVE_ARC4RANDOM_BUF = c_compiler.has_function('arc4random_buf', prefix : extra_include)
+HAVE_STAT = c_compiler.has_function('stat', prefix : extra_include)
+HAVE_GETIFADDRS = c_compiler.has_function('getifaddrs', prefix : extra_include)
+
+ares_internal_conf_data.set('HAVE_CLOSESOCKET', HAVE_CLOSESOCKET)
+ares_internal_conf_data.set('HAVE_CONNECT', HAVE_CLOSESOCKET)
+ares_internal_conf_data.set('HAVE_FCNTL', HAVE_FCNTL)
+ares_internal_conf_data.set('HAVE_FREEADDRINFO', HAVE_FREEADDRINFO)
+ares_internal_conf_data.set('HAVE_GETADDRINFO', HAVE_GETADDRINFO)
+ares_internal_conf_data.set('HAVE_GETENV', HAVE_GETENV)
+ares_internal_conf_data.set('HAVE_GETHOSTNAME', HAVE_GETHOSTNAME)
+ares_internal_conf_data.set('HAVE_GETNAMEINFO', HAVE_GETNAMEINFO)
+ares_internal_conf_data.set('HAVE_GETRANDOM', HAVE_GETRANDOM)
+ares_internal_conf_data.set('HAVE_GETSERVBYPORT_R', HAVE_GETSERVBYPORT_R)
+ares_internal_conf_data.set('HAVE_GETSERVBYNAME_R', HAVE_GETSERVBYNAME_R)
+ares_internal_conf_data.set('HAVE_GETTIMEOFDAY', HAVE_GETTIMEOFDAY)
+ares_internal_conf_data.set('HAVE_IF_INDEXTONAME', HAVE_IF_INDEXTONAME)
+ares_internal_conf_data.set('HAVE_IF_NAMETOINDEX', HAVE_IF_NAMETOINDEX)
+ares_internal_conf_data.set('HAVE_INET_NET_PTON', HAVE_INET_PTON)
+ares_internal_conf_data.set('HAVE_INET_NTOP', HAVE_INET_NTOP)
+ares_internal_conf_data.set('HAVE_INET_PTON', HAVE_INET_PTON)
+ares_internal_conf_data.set('HAVE_IOCTL', HAVE_IOCTL)
+ares_internal_conf_data.set('HAVE_IOCTLSOCKET', HAVE_IOCTLSOCKET)
+ares_internal_conf_data.set('HAVE_RECV', HAVE_RECV)
+ares_internal_conf_data.set('HAVE_RECVFROM', HAVE_RECVFROM)
+ares_internal_conf_data.set('HAVE_SEND', HAVE_SEND)
+ares_internal_conf_data.set('HAVE_SETSOCKOPT', HAVE_SETSOCKOPT)
+ares_internal_conf_data.set('HAVE_SOCKET', HAVE_SOCKET)
+ares_internal_conf_data.set('HAVE_STRCASECMP', HAVE_STRCASECMP)
+ares_internal_conf_data.set('HAVE_STRCMPI', HAVE_STRCMPI)
+ares_internal_conf_data.set('HAVE_STRDUP', HAVE_STRDUP)
+ares_internal_conf_data.set('HAVE_STRICMP', HAVE_STRICMP)
+ares_internal_conf_data.set('HAVE_STRNCASECMP', HAVE_STRNCASECMP)
+ares_internal_conf_data.set('HAVE_STRNCMPI', HAVE_STRNCMPI)
+ares_internal_conf_data.set('HAVE_STRNICMP', HAVE_STRNICMP)
+ares_internal_conf_data.set('HAVE_WRITEV', HAVE_WRITEV)
+ares_internal_conf_data.set('HAVE_ARC4RANDOM_BUF', HAVE_ARC4RANDOM_BUF)
+ares_internal_conf_data.set('HAVE_STAT', HAVE_STAT)
+ares_internal_conf_data.set('HAVE_GETIFADDRS', HAVE_GETIFADDRS)
+
+
+# Only works on Linux
+ares_internal_conf_data.set('GETSERVBYPORT_R_ARGS', 6)
+ares_internal_conf_data.set('GETSERVBYNAME_R_ARGS', 6)
+
+# Derived values
+HAVE_FCNTL_O_NONBLOCK = HAVE_FCNTL and HAVE_O_NONBLOCK
+HAVE_IOCTL_FIONBIO = HAVE_IOCTL and HAVE_FIONBIO
+HAVE_IOCTLSOCKET_FIONBIO = HAVE_IOCTLSOCKET and HAVE_FIONBIO
+
+ares_internal_conf_data.set('HAVE_FCNTL_O_NONBLOCK', HAVE_FCNTL_O_NONBLOCK)
+ares_internal_conf_data.set('HAVE_IOCTL_FIONBIO', HAVE_IOCTL_FIONBIO)
+ares_internal_conf_data.set('HAVE_IOCTLSOCKET_FIONBIO', HAVE_IOCTLSOCKET_FIONBIO)
+
+
+cares_threads = true
+
+if cares_threads
+ ares_internal_conf_data.set('CARES_THREADS', true)
+ ares_internal_conf_data.set('HAVE_PTHREAD_H', c_compiler.has_header('pthread.h'))
+ ares_internal_conf_data.set('HAVE_PTHREAD_NP_H', c_compiler.has_header('pthread_np.h'))
+ # FIXME: check?
+ ares_internal_conf_data.set('HAVE_PTHREAD_INIT', true)
+endif
+
+
+# FIXME: check
+ares_internal_conf_data.set('RECVFROM_TYPE_RETV', 'ssize_t')
+ares_internal_conf_data.set('RECVFROM_TYPE_ARG3', 'size_t')
+
+
+# FIXME: check for symbol presence
+ares_internal_conf_data.set('HAVE_AF_INET6', true)
+
+
+configure_file(output : 'ares_config.h',
+ configuration : ares_internal_conf_data)
-configure_file(input : 'include/ares_build.h.in',
- output : 'ares_build.h',
- configuration : conf_data)
lib_c_src = [
'src/lib/ares__addrinfo2hostent.c',