quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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:
Mmeson.build | 3+++
Msubprojects/c-ares/meson.build | 401++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
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',