1 //
2 // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2021
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 #pragma once
8 
9 #include "td/utils/port/platform.h"
10 
11 // clang-format off
12 
13 #if TD_WINDOWS
14   #define TD_PORT_WINDOWS 1
15 #else
16   #define TD_PORT_POSIX 1
17 #endif
18 
19 #if TD_LINUX || TD_ANDROID || TD_TIZEN
20   #define TD_POLL_EPOLL 1
21   #define TD_EVENTFD_LINUX 1
22 #elif TD_FREEBSD || TD_OPENBSD || TD_NETBSD
23   #define TD_POLL_KQUEUE 1
24   #define TD_EVENTFD_BSD 1
25 #elif TD_CYGWIN
26   #define TD_POLL_SELECT 1
27   #define TD_EVENTFD_BSD 1
28 #elif TD_EMSCRIPTEN
29   #define TD_POLL_POLL 1
30   #define TD_EVENTFD_UNSUPPORTED 1
31 #elif TD_DARWIN
32   #define TD_POLL_KQUEUE 1
33   #define TD_EVENTFD_BSD 1
34 #elif TD_WINDOWS
35   #define TD_POLL_WINEVENT 1
36   #define TD_EVENTFD_WINDOWS 1
37 #elif TD_ILLUMOS
38   #define TD_POLL_EPOLL 1
39   #define TD_EVENTFD_LINUX 1
40 #elif TD_SOLARIS
41   #define TD_POLL_POLL 1
42   #define TD_EVENTFD_BSD 1
43 #else
44   #error "Poll's implementation is not defined"
45 #endif
46 
47 #if TD_EMSCRIPTEN
48   #define TD_THREAD_UNSUPPORTED 1
49 #elif TD_TIZEN || TD_LINUX || TD_DARWIN
50   #define TD_THREAD_PTHREAD 1
51 #else
52   #define TD_THREAD_STL 1
53 #endif
54 
55 #if TD_LINUX
56   #define TD_HAS_MMSG 1
57 #endif
58 
59 // clang-format on
60