blob: 2d56ded4e25b2fb443dea91df03bcd73b28d5364 [file] [log] [blame]
murgatroid9979b32272016-08-08 13:38:30 -07001/*
2 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02003 * Copyright 2016 gRPC authors.
murgatroid9979b32272016-08-08 13:38:30 -07004 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02005 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
murgatroid9979b32272016-08-08 13:38:30 -07008 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02009 * http://www.apache.org/licenses/LICENSE-2.0
murgatroid9979b32272016-08-08 13:38:30 -070010 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +020011 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
murgatroid9979b32272016-08-08 13:38:30 -070016 *
17 */
18
19#include <grpc/support/port_platform.h>
20
21#ifndef GRPC_CORE_LIB_IOMGR_PORT_H
22#define GRPC_CORE_LIB_IOMGR_PORT_H
23
murgatroid999030c812016-09-16 13:25:08 -070024#if defined(GRPC_UV)
murgatroid997871f732016-09-23 13:49:05 -070025// Do nothing
murgatroid999030c812016-09-16 13:25:08 -070026#elif defined(GPR_MANYLINUX1)
Yuchen Zengbc663772017-07-24 22:23:12 -070027#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -070028#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070029#define GRPC_HAVE_IPV6_RECVPKTINFO 1
30#define GRPC_HAVE_IP_PKTINFO 1
31#define GRPC_HAVE_MSG_NOSIGNAL 1
32#define GRPC_HAVE_UNIX_SOCKET 1
Ken Paysonc5731322017-10-16 13:17:02 -070033#define GRPC_POSIX_FORK 1
murgatroid99623dd4f2016-08-08 17:31:27 -070034#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
35#define GRPC_POSIX_SOCKET 1
36#define GRPC_POSIX_SOCKETADDR 1
37#define GRPC_POSIX_SOCKETUTILS 1
38#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070039#define GRPC_TIMER_USE_GENERIC 1
Mehrdad Afshari8b0e9fb2018-01-17 13:42:26 -080040#define GRPC_LINUX_LEGACY_EPOLL 1
murgatroid99192293d2016-08-09 10:24:22 -070041#elif defined(GPR_WINDOWS)
murgatroid999030c812016-09-16 13:25:08 -070042#define GRPC_TIMER_USE_GENERIC 1
murgatroid99192293d2016-08-09 10:24:22 -070043#define GRPC_WINSOCK_SOCKET 1
44#define GRPC_WINDOWS_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070045#elif defined(GPR_ANDROID)
murgatroid99623dd4f2016-08-08 17:31:27 -070046#define GRPC_HAVE_IPV6_RECVPKTINFO 1
47#define GRPC_HAVE_IP_PKTINFO 1
48#define GRPC_HAVE_MSG_NOSIGNAL 1
49#define GRPC_HAVE_UNIX_SOCKET 1
50#define GRPC_LINUX_EVENTFD 1
51#define GRPC_POSIX_SOCKET 1
52#define GRPC_POSIX_SOCKETADDR 1
53#define GRPC_POSIX_SOCKETUTILS 1
54#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070055#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070056#elif defined(GPR_LINUX)
Yuchen Zengbc663772017-07-24 22:23:12 -070057#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -070058#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070059#define GRPC_HAVE_IPV6_RECVPKTINFO 1
60#define GRPC_HAVE_IP_PKTINFO 1
61#define GRPC_HAVE_MSG_NOSIGNAL 1
62#define GRPC_HAVE_UNIX_SOCKET 1
63#define GRPC_LINUX_MULTIPOLL_WITH_EPOLL 1
Ken Paysonc5731322017-10-16 13:17:02 -070064#define GRPC_POSIX_FORK 1
Mark D. Rothf9bf4282017-08-03 14:47:23 -070065#define GRPC_POSIX_HOST_NAME_MAX 1
murgatroid99623dd4f2016-08-08 17:31:27 -070066#define GRPC_POSIX_SOCKET 1
67#define GRPC_POSIX_SOCKETADDR 1
68#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070069#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070070#ifdef __GLIBC_PREREQ
Mehrdad Afshari1957fd02018-01-16 17:22:01 -080071#if __GLIBC_PREREQ(2, 4)
Mehrdad Afshari8b0e9fb2018-01-17 13:42:26 -080072#define GRPC_LINUX_LEGACY_EPOLL 1
Mehrdad Afshari1957fd02018-01-16 17:22:01 -080073#endif
74#if __GLIBC_PREREQ(2, 9)
Mehrdad Afshari8b0e9fb2018-01-17 13:42:26 -080075#define GRPC_LINUX_EPOLL 1
Mehrdad Afshari1957fd02018-01-16 17:22:01 -080076#define GRPC_LINUX_EPOLL_CREATE1 1
murgatroid99623dd4f2016-08-08 17:31:27 -070077#define GRPC_LINUX_EVENTFD 1
murgatroid9954070892016-08-08 17:01:18 -070078#endif
79#if __GLIBC_PREREQ(2, 10)
murgatroid99623dd4f2016-08-08 17:31:27 -070080#define GRPC_LINUX_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070081#endif
82#endif
Ken Payson975b5102017-03-30 17:38:40 -070083#ifndef __GLIBC__
84#define GRPC_LINUX_EPOLL 1
85#define GRPC_LINUX_EVENTFD 1
murgatroid9998058332017-04-19 10:25:34 -070086#define GRPC_MSG_IOVLEN_TYPE int
Ken Payson975b5102017-03-30 17:38:40 -070087#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070088#ifndef GRPC_LINUX_EVENTFD
89#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
murgatroid9954070892016-08-08 17:01:18 -070090#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070091#ifndef GRPC_LINUX_SOCKETUTILS
92#define GRPC_POSIX_SOCKETUTILS
murgatroid9954070892016-08-08 17:01:18 -070093#endif
94#elif defined(GPR_APPLE)
Yuchen Zengbc663772017-07-24 22:23:12 -070095#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -070096#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070097#define GRPC_HAVE_SO_NOSIGPIPE 1
98#define GRPC_HAVE_UNIX_SOCKET 1
99#define GRPC_MSG_IOVLEN_TYPE int
Ken Paysonc5731322017-10-16 13:17:02 -0700100#define GRPC_POSIX_FORK 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700101#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
102#define GRPC_POSIX_SOCKET 1
103#define GRPC_POSIX_SOCKETADDR 1
104#define GRPC_POSIX_SOCKETUTILS 1
Mark D. Rothf9bf4282017-08-03 14:47:23 -0700105#define GRPC_POSIX_SYSCONF 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700106#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700107#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700108#elif defined(GPR_FREEBSD)
Yuchen Zengbc663772017-07-24 22:23:12 -0700109#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -0700110#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700111#define GRPC_HAVE_IPV6_RECVPKTINFO 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700112#define GRPC_HAVE_SO_NOSIGPIPE 1
113#define GRPC_HAVE_UNIX_SOCKET 1
Ken Paysonc5731322017-10-16 13:17:02 -0700114#define GRPC_POSIX_FORK 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700115#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
Frank Groeneveldfbf81282017-10-12 08:27:14 +0200121#elif defined(GPR_OPENBSD)
122#define GRPC_HAVE_IFADDRS 1
123#define GRPC_HAVE_IPV6_RECVPKTINFO 1
124#define GRPC_HAVE_UNIX_SOCKET 1
125#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
126#define GRPC_POSIX_SOCKET 1
127#define GRPC_POSIX_SOCKETADDR 1
128#define GRPC_POSIX_SOCKETUTILS 1
129#define GRPC_POSIX_WAKEUP_FD 1
130#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700131#elif defined(GPR_NACL)
Yuchen Zengbc663772017-07-24 22:23:12 -0700132#define GRPC_HAVE_ARPA_NAMESER 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700133#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
134#define GRPC_POSIX_SOCKET 1
135#define GRPC_POSIX_SOCKETADDR 1
136#define GRPC_POSIX_SOCKETUTILS 1
137#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700138#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700139#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
140#error "Platform not recognized"
141#endif
murgatroid9979b32272016-08-08 13:38:30 -0700142
murgatroid99623dd4f2016-08-08 17:31:27 -0700143#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
murgatroid99dedb9232016-09-26 13:54:04 -0700144 defined(GRPC_CUSTOM_SOCKET) + defined(GRPC_UV) != \
murgatroid9954070892016-08-08 17:01:18 -0700145 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700146#error Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GPR_CUSTOM_SOCKET
murgatroid9954070892016-08-08 17:01:18 -0700147#endif
murgatroid9979b32272016-08-08 13:38:30 -0700148
Mark D. Rothf9bf4282017-08-03 14:47:23 -0700149#if defined(GRPC_POSIX_HOST_NAME_MAX) && defined(GRPC_POSIX_SYSCONF)
150#error "Cannot define both GRPC_POSIX_HOST_NAME_MAX and GRPC_POSIX_SYSCONF"
151#endif
152#if !defined(GRPC_POSIX_HOST_NAME_MAX) && !defined(GRPC_POSIX_SYSCONF)
153#define GRPC_GETHOSTNAME_FALLBACK 1
154#endif
155
murgatroid997e924a02016-08-10 10:06:43 -0700156#endif /* GRPC_CORE_LIB_IOMGR_PORT_H */