blob: 2a553f41149088e644db7b0da7478db97d5111de [file] [log] [blame]
murgatroid9979b32272016-08-08 13:38:30 -07001/*
2 *
3 * Copyright 2016, Google Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following disclaimer
14 * in the documentation and/or other materials provided with the
15 * distribution.
16 * * Neither the name of Google Inc. nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
33
34#include <grpc/support/port_platform.h>
35
36#ifndef GRPC_CORE_LIB_IOMGR_PORT_H
37#define GRPC_CORE_LIB_IOMGR_PORT_H
38
murgatroid999030c812016-09-16 13:25:08 -070039#if defined(GRPC_UV)
murgatroid997871f732016-09-23 13:49:05 -070040// Do nothing
murgatroid999030c812016-09-16 13:25:08 -070041#elif defined(GPR_MANYLINUX1)
Yuchen Zengf1342062017-03-12 22:39:11 -070042#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070043#define GRPC_HAVE_IPV6_RECVPKTINFO 1
44#define GRPC_HAVE_IP_PKTINFO 1
45#define GRPC_HAVE_MSG_NOSIGNAL 1
46#define GRPC_HAVE_UNIX_SOCKET 1
47#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
48#define GRPC_POSIX_SOCKET 1
49#define GRPC_POSIX_SOCKETADDR 1
50#define GRPC_POSIX_SOCKETUTILS 1
51#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070052#define GRPC_TIMER_USE_GENERIC 1
murgatroid99192293d2016-08-09 10:24:22 -070053#elif defined(GPR_WINDOWS)
murgatroid999030c812016-09-16 13:25:08 -070054#define GRPC_TIMER_USE_GENERIC 1
murgatroid99192293d2016-08-09 10:24:22 -070055#define GRPC_WINSOCK_SOCKET 1
56#define GRPC_WINDOWS_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070057#elif defined(GPR_ANDROID)
murgatroid99623dd4f2016-08-08 17:31:27 -070058#define GRPC_HAVE_IPV6_RECVPKTINFO 1
59#define GRPC_HAVE_IP_PKTINFO 1
60#define GRPC_HAVE_MSG_NOSIGNAL 1
61#define GRPC_HAVE_UNIX_SOCKET 1
62#define GRPC_LINUX_EVENTFD 1
63#define GRPC_POSIX_SOCKET 1
64#define GRPC_POSIX_SOCKETADDR 1
65#define GRPC_POSIX_SOCKETUTILS 1
66#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070067#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070068#elif defined(GPR_LINUX)
Yuchen Zengf1342062017-03-12 22:39:11 -070069#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070070#define GRPC_HAVE_IPV6_RECVPKTINFO 1
71#define GRPC_HAVE_IP_PKTINFO 1
72#define GRPC_HAVE_MSG_NOSIGNAL 1
73#define GRPC_HAVE_UNIX_SOCKET 1
74#define GRPC_LINUX_MULTIPOLL_WITH_EPOLL 1
75#define GRPC_POSIX_SOCKET 1
76#define GRPC_POSIX_SOCKETADDR 1
77#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070078#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070079#ifdef __GLIBC_PREREQ
80#if __GLIBC_PREREQ(2, 9)
murgatroid99623dd4f2016-08-08 17:31:27 -070081#define GRPC_LINUX_EPOLL 1
82#define GRPC_LINUX_EVENTFD 1
murgatroid9954070892016-08-08 17:01:18 -070083#endif
84#if __GLIBC_PREREQ(2, 10)
murgatroid99623dd4f2016-08-08 17:31:27 -070085#define GRPC_LINUX_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070086#endif
87#endif
Ken Payson975b5102017-03-30 17:38:40 -070088#ifndef __GLIBC__
89#define GRPC_LINUX_EPOLL 1
90#define GRPC_LINUX_EVENTFD 1
murgatroid9998058332017-04-19 10:25:34 -070091#define GRPC_MSG_IOVLEN_TYPE int
Ken Payson975b5102017-03-30 17:38:40 -070092#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070093#ifndef GRPC_LINUX_EVENTFD
94#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
murgatroid9954070892016-08-08 17:01:18 -070095#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070096#ifndef GRPC_LINUX_SOCKETUTILS
97#define GRPC_POSIX_SOCKETUTILS
murgatroid9954070892016-08-08 17:01:18 -070098#endif
99#elif defined(GPR_APPLE)
Yuchen Zengf1342062017-03-12 22:39:11 -0700100#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700101#define GRPC_HAVE_SO_NOSIGPIPE 1
102#define GRPC_HAVE_UNIX_SOCKET 1
103#define GRPC_MSG_IOVLEN_TYPE int
104#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
105#define GRPC_POSIX_SOCKET 1
106#define GRPC_POSIX_SOCKETADDR 1
107#define GRPC_POSIX_SOCKETUTILS 1
108#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700109#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700110#elif defined(GPR_FREEBSD)
Yuchen Zengf1342062017-03-12 22:39:11 -0700111#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700112#define GRPC_HAVE_IPV6_RECVPKTINFO 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700113#define GRPC_HAVE_SO_NOSIGPIPE 1
114#define GRPC_HAVE_UNIX_SOCKET 1
115#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
116#define GRPC_POSIX_SOCKET 1
117#define GRPC_POSIX_SOCKETADDR 1
118#define GRPC_POSIX_SOCKETUTILS 1
119#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700120#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700121#elif defined(GPR_NACL)
murgatroid99623dd4f2016-08-08 17:31:27 -0700122#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
123#define GRPC_POSIX_SOCKET 1
124#define GRPC_POSIX_SOCKETADDR 1
125#define GRPC_POSIX_SOCKETUTILS 1
126#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700127#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700128#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
129#error "Platform not recognized"
130#endif
murgatroid9979b32272016-08-08 13:38:30 -0700131
murgatroid99623dd4f2016-08-08 17:31:27 -0700132#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
murgatroid99dedb9232016-09-26 13:54:04 -0700133 defined(GRPC_CUSTOM_SOCKET) + defined(GRPC_UV) != \
murgatroid9954070892016-08-08 17:01:18 -0700134 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700135#error Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GPR_CUSTOM_SOCKET
murgatroid9954070892016-08-08 17:01:18 -0700136#endif
murgatroid9979b32272016-08-08 13:38:30 -0700137
murgatroid997e924a02016-08-10 10:06:43 -0700138#endif /* GRPC_CORE_LIB_IOMGR_PORT_H */