blob: 80867ee09f1162c006c899c823549554ed4dd399 [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
murgatroid99192293d2016-08-09 10:24:22 -070040#elif defined(GPR_WINDOWS)
murgatroid999030c812016-09-16 13:25:08 -070041#define GRPC_TIMER_USE_GENERIC 1
murgatroid99192293d2016-08-09 10:24:22 -070042#define GRPC_WINSOCK_SOCKET 1
43#define GRPC_WINDOWS_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070044#elif defined(GPR_ANDROID)
murgatroid99623dd4f2016-08-08 17:31:27 -070045#define GRPC_HAVE_IPV6_RECVPKTINFO 1
46#define GRPC_HAVE_IP_PKTINFO 1
47#define GRPC_HAVE_MSG_NOSIGNAL 1
48#define GRPC_HAVE_UNIX_SOCKET 1
49#define GRPC_LINUX_EVENTFD 1
50#define GRPC_POSIX_SOCKET 1
51#define GRPC_POSIX_SOCKETADDR 1
52#define GRPC_POSIX_SOCKETUTILS 1
53#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070054#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070055#elif defined(GPR_LINUX)
Yuchen Zengbc663772017-07-24 22:23:12 -070056#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -070057#define GRPC_HAVE_IFADDRS 1
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_MULTIPOLL_WITH_EPOLL 1
Ken Paysonc5731322017-10-16 13:17:02 -070063#define GRPC_POSIX_FORK 1
Mark D. Rothf9bf4282017-08-03 14:47:23 -070064#define GRPC_POSIX_HOST_NAME_MAX 1
murgatroid99623dd4f2016-08-08 17:31:27 -070065#define GRPC_POSIX_SOCKET 1
66#define GRPC_POSIX_SOCKETADDR 1
67#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -070068#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -070069#ifdef __GLIBC_PREREQ
Mehrdad Afshari1957fd02018-01-16 17:22:01 -080070#if __GLIBC_PREREQ(2, 4)
murgatroid99623dd4f2016-08-08 17:31:27 -070071#define GRPC_LINUX_EPOLL 1
Mehrdad Afshari1957fd02018-01-16 17:22:01 -080072#endif
73#if __GLIBC_PREREQ(2, 9)
74#define GRPC_LINUX_EPOLL_CREATE1 1
murgatroid99623dd4f2016-08-08 17:31:27 -070075#define GRPC_LINUX_EVENTFD 1
murgatroid9954070892016-08-08 17:01:18 -070076#endif
77#if __GLIBC_PREREQ(2, 10)
murgatroid99623dd4f2016-08-08 17:31:27 -070078#define GRPC_LINUX_SOCKETUTILS 1
murgatroid9954070892016-08-08 17:01:18 -070079#endif
80#endif
Ken Payson975b5102017-03-30 17:38:40 -070081#ifndef __GLIBC__
82#define GRPC_LINUX_EPOLL 1
83#define GRPC_LINUX_EVENTFD 1
murgatroid9998058332017-04-19 10:25:34 -070084#define GRPC_MSG_IOVLEN_TYPE int
Ken Payson975b5102017-03-30 17:38:40 -070085#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070086#ifndef GRPC_LINUX_EVENTFD
87#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
murgatroid9954070892016-08-08 17:01:18 -070088#endif
murgatroid99623dd4f2016-08-08 17:31:27 -070089#ifndef GRPC_LINUX_SOCKETUTILS
90#define GRPC_POSIX_SOCKETUTILS
murgatroid9954070892016-08-08 17:01:18 -070091#endif
92#elif defined(GPR_APPLE)
Yuchen Zengbc663772017-07-24 22:23:12 -070093#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -070094#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -070095#define GRPC_HAVE_SO_NOSIGPIPE 1
96#define GRPC_HAVE_UNIX_SOCKET 1
97#define GRPC_MSG_IOVLEN_TYPE int
Ken Paysonc5731322017-10-16 13:17:02 -070098#define GRPC_POSIX_FORK 1
murgatroid99623dd4f2016-08-08 17:31:27 -070099#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
100#define GRPC_POSIX_SOCKET 1
101#define GRPC_POSIX_SOCKETADDR 1
102#define GRPC_POSIX_SOCKETUTILS 1
Mark D. Rothf9bf4282017-08-03 14:47:23 -0700103#define GRPC_POSIX_SYSCONF 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700104#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700105#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700106#elif defined(GPR_FREEBSD)
Yuchen Zengbc663772017-07-24 22:23:12 -0700107#define GRPC_HAVE_ARPA_NAMESER 1
Yuchen Zengf1342062017-03-12 22:39:11 -0700108#define GRPC_HAVE_IFADDRS 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700109#define GRPC_HAVE_IPV6_RECVPKTINFO 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700110#define GRPC_HAVE_SO_NOSIGPIPE 1
111#define GRPC_HAVE_UNIX_SOCKET 1
Ken Paysonc5731322017-10-16 13:17:02 -0700112#define GRPC_POSIX_FORK 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700113#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
114#define GRPC_POSIX_SOCKET 1
115#define GRPC_POSIX_SOCKETADDR 1
116#define GRPC_POSIX_SOCKETUTILS 1
117#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700118#define GRPC_TIMER_USE_GENERIC 1
Frank Groeneveldfbf81282017-10-12 08:27:14 +0200119#elif defined(GPR_OPENBSD)
120#define GRPC_HAVE_IFADDRS 1
121#define GRPC_HAVE_IPV6_RECVPKTINFO 1
122#define GRPC_HAVE_UNIX_SOCKET 1
123#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
124#define GRPC_POSIX_SOCKET 1
125#define GRPC_POSIX_SOCKETADDR 1
126#define GRPC_POSIX_SOCKETUTILS 1
127#define GRPC_POSIX_WAKEUP_FD 1
128#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700129#elif defined(GPR_NACL)
Yuchen Zengbc663772017-07-24 22:23:12 -0700130#define GRPC_HAVE_ARPA_NAMESER 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700131#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
132#define GRPC_POSIX_SOCKET 1
133#define GRPC_POSIX_SOCKETADDR 1
134#define GRPC_POSIX_SOCKETUTILS 1
135#define GRPC_POSIX_WAKEUP_FD 1
murgatroid999030c812016-09-16 13:25:08 -0700136#define GRPC_TIMER_USE_GENERIC 1
murgatroid9954070892016-08-08 17:01:18 -0700137#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
138#error "Platform not recognized"
139#endif
murgatroid9979b32272016-08-08 13:38:30 -0700140
murgatroid99623dd4f2016-08-08 17:31:27 -0700141#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
murgatroid99dedb9232016-09-26 13:54:04 -0700142 defined(GRPC_CUSTOM_SOCKET) + defined(GRPC_UV) != \
murgatroid9954070892016-08-08 17:01:18 -0700143 1
murgatroid99623dd4f2016-08-08 17:31:27 -0700144#error Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GPR_CUSTOM_SOCKET
murgatroid9954070892016-08-08 17:01:18 -0700145#endif
murgatroid9979b32272016-08-08 13:38:30 -0700146
Mark D. Rothf9bf4282017-08-03 14:47:23 -0700147#if defined(GRPC_POSIX_HOST_NAME_MAX) && defined(GRPC_POSIX_SYSCONF)
148#error "Cannot define both GRPC_POSIX_HOST_NAME_MAX and GRPC_POSIX_SYSCONF"
149#endif
150#if !defined(GRPC_POSIX_HOST_NAME_MAX) && !defined(GRPC_POSIX_SYSCONF)
151#define GRPC_GETHOSTNAME_FALLBACK 1
152#endif
153
murgatroid997e924a02016-08-10 10:06:43 -0700154#endif /* GRPC_CORE_LIB_IOMGR_PORT_H */