diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/meson.build | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/net/meson.build b/src/net/meson.build new file mode 100644 index 000000000..4b33e5aea --- /dev/null +++ b/src/net/meson.build @@ -0,0 +1,60 @@ +have_tcp = get_option('tcp') +conf.set('HAVE_TCP', have_tcp) + +if have_tcp and not get_option('ipv6').disabled() + if is_windows + have_ipv6 = c_compiler.has_header_symbol('winsock2.h', 'AF_INET6') + else + have_ipv6 = c_compiler.has_header_symbol('sys/socket.h', 'AF_INET6') + endif + if not have_ipv6 and get_option('ipv6').enabled() + error('IPv6 not supported by OS') + endif + + conf.set('HAVE_STRUCT_SOCKADDR_IN_SIN_LEN', c_compiler.has_member('struct sockaddr_in', 'sin_len', prefix: ''' +#ifdef _WIN32 +#include <winsock2.h> +#include <ws2tcpip.h> +#else +#include <netinet/in.h> +#endif''')) +else + have_ipv6 = false +endif +conf.set('HAVE_IPV6', have_ipv6) + +have_local_socket = not is_windows and get_option('local_socket') +conf.set('HAVE_UN', have_local_socket) + +if have_local_socket + conf.set('HAVE_STRUCT_UCRED', compiler.has_header_symbol('sys/socket.h', 'struct ucred') and compiler.has_header_symbol('sys/socket.h', 'SO_PEERCRED')) + conf.set('HAVE_GETPEEREID', compiler.has_function('getpeereid')) +endif + +if not have_tcp and not have_local_socket + error('Must enable either "tcp" or "local_socket"') +endif + +net = static_library( + 'net', + 'ToString.cxx', + 'HostParser.cxx', + 'Resolver.cxx', + 'AddressInfo.cxx', + 'StaticSocketAddress.cxx', + 'AllocatedSocketAddress.cxx', + 'IPv4Address.cxx', + 'IPv6Address.cxx', + 'SocketAddress.cxx', + 'SocketUtil.cxx', + 'SocketDescriptor.cxx', + 'SocketError.cxx', + include_directories: inc, +) + +net_dep = declare_dependency( + link_with: net, + dependencies: [ + system_dep, + ], +) |