Chris@16
|
1 //
|
Chris@16
|
2 // detail/config.hpp
|
Chris@16
|
3 // ~~~~~~~~~~~~~~~~~
|
Chris@16
|
4 //
|
Chris@101
|
5 // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
Chris@16
|
6 //
|
Chris@16
|
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
9 //
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_ASIO_DETAIL_CONFIG_HPP
|
Chris@16
|
12 #define BOOST_ASIO_DETAIL_CONFIG_HPP
|
Chris@16
|
13
|
Chris@16
|
14 #if defined(BOOST_ASIO_STANDALONE)
|
Chris@16
|
15 # define BOOST_ASIO_DISABLE_BOOST_ARRAY 1
|
Chris@16
|
16 # define BOOST_ASIO_DISABLE_BOOST_ASSERT 1
|
Chris@16
|
17 # define BOOST_ASIO_DISABLE_BOOST_BIND 1
|
Chris@16
|
18 # define BOOST_ASIO_DISABLE_BOOST_CHRONO 1
|
Chris@16
|
19 # define BOOST_ASIO_DISABLE_BOOST_DATE_TIME 1
|
Chris@16
|
20 # define BOOST_ASIO_DISABLE_BOOST_LIMITS 1
|
Chris@16
|
21 # define BOOST_ASIO_DISABLE_BOOST_REGEX 1
|
Chris@16
|
22 # define BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT 1
|
Chris@16
|
23 # define BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION 1
|
Chris@16
|
24 # define BOOST_ASIO_DISABLE_BOOST_WORKAROUND 1
|
Chris@16
|
25 #else // defined(BOOST_ASIO_STANDALONE)
|
Chris@16
|
26 # include <boost/config.hpp>
|
Chris@16
|
27 # include <boost/version.hpp>
|
Chris@16
|
28 # define BOOST_ASIO_HAS_BOOST_CONFIG 1
|
Chris@16
|
29 #endif // defined(BOOST_ASIO_STANDALONE)
|
Chris@16
|
30
|
Chris@16
|
31 // Default to a header-only implementation. The user must specifically request
|
Chris@16
|
32 // separate compilation by defining either BOOST_ASIO_SEPARATE_COMPILATION or
|
Chris@16
|
33 // BOOST_ASIO_DYN_LINK (as a DLL/shared library implies separate compilation).
|
Chris@16
|
34 #if !defined(BOOST_ASIO_HEADER_ONLY)
|
Chris@16
|
35 # if !defined(BOOST_ASIO_SEPARATE_COMPILATION)
|
Chris@16
|
36 # if !defined(BOOST_ASIO_DYN_LINK)
|
Chris@16
|
37 # define BOOST_ASIO_HEADER_ONLY 1
|
Chris@16
|
38 # endif // !defined(BOOST_ASIO_DYN_LINK)
|
Chris@16
|
39 # endif // !defined(BOOST_ASIO_SEPARATE_COMPILATION)
|
Chris@16
|
40 #endif // !defined(BOOST_ASIO_HEADER_ONLY)
|
Chris@16
|
41
|
Chris@16
|
42 #if defined(BOOST_ASIO_HEADER_ONLY)
|
Chris@16
|
43 # define BOOST_ASIO_DECL inline
|
Chris@16
|
44 #else // defined(BOOST_ASIO_HEADER_ONLY)
|
Chris@16
|
45 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
|
Chris@16
|
46 // We need to import/export our code only if the user has specifically asked
|
Chris@16
|
47 // for it by defining BOOST_ASIO_DYN_LINK.
|
Chris@16
|
48 # if defined(BOOST_ASIO_DYN_LINK)
|
Chris@16
|
49 // Export if this is our own source, otherwise import.
|
Chris@16
|
50 # if defined(BOOST_ASIO_SOURCE)
|
Chris@16
|
51 # define BOOST_ASIO_DECL __declspec(dllexport)
|
Chris@16
|
52 # else // defined(BOOST_ASIO_SOURCE)
|
Chris@16
|
53 # define BOOST_ASIO_DECL __declspec(dllimport)
|
Chris@16
|
54 # endif // defined(BOOST_ASIO_SOURCE)
|
Chris@16
|
55 # endif // defined(BOOST_ASIO_DYN_LINK)
|
Chris@16
|
56 # endif // defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
|
Chris@16
|
57 #endif // defined(BOOST_ASIO_HEADER_ONLY)
|
Chris@16
|
58
|
Chris@16
|
59 // If BOOST_ASIO_DECL isn't defined yet define it now.
|
Chris@16
|
60 #if !defined(BOOST_ASIO_DECL)
|
Chris@16
|
61 # define BOOST_ASIO_DECL
|
Chris@16
|
62 #endif // !defined(BOOST_ASIO_DECL)
|
Chris@16
|
63
|
Chris@16
|
64 // Microsoft Visual C++ detection.
|
Chris@16
|
65 #if !defined(BOOST_ASIO_MSVC)
|
Chris@16
|
66 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
|
Chris@16
|
67 # define BOOST_ASIO_MSVC BOOST_MSVC
|
Chris@16
|
68 # elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
|
Chris@16
|
69 # define BOOST_ASIO_MSVC _MSC_VER
|
Chris@16
|
70 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
|
Chris@16
|
71 #endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
72
|
Chris@16
|
73 // Clang / libc++ detection.
|
Chris@16
|
74 #if defined(__clang__)
|
Chris@16
|
75 # if (__cplusplus >= 201103)
|
Chris@16
|
76 # if __has_include(<__config>)
|
Chris@16
|
77 # include <__config>
|
Chris@16
|
78 # if defined(_LIBCPP_VERSION)
|
Chris@16
|
79 # define BOOST_ASIO_HAS_CLANG_LIBCXX 1
|
Chris@16
|
80 # endif // defined(_LIBCPP_VERSION)
|
Chris@16
|
81 # endif // __has_include(<__config>)
|
Chris@16
|
82 # endif // (__cplusplus >= 201103)
|
Chris@16
|
83 #endif // defined(__clang__)
|
Chris@16
|
84
|
Chris@16
|
85 // Support move construction and assignment on compilers known to allow it.
|
Chris@16
|
86 #if !defined(BOOST_ASIO_HAS_MOVE)
|
Chris@16
|
87 # if !defined(BOOST_ASIO_DISABLE_MOVE)
|
Chris@16
|
88 # if defined(__clang__)
|
Chris@16
|
89 # if __has_feature(__cxx_rvalue_references__)
|
Chris@16
|
90 # define BOOST_ASIO_HAS_MOVE 1
|
Chris@16
|
91 # endif // __has_feature(__cxx_rvalue_references__)
|
Chris@16
|
92 # endif // defined(__clang__)
|
Chris@16
|
93 # if defined(__GNUC__)
|
Chris@16
|
94 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
95 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
96 # define BOOST_ASIO_HAS_MOVE 1
|
Chris@16
|
97 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
98 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
99 # endif // defined(__GNUC__)
|
Chris@16
|
100 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
101 # if (_MSC_VER >= 1700)
|
Chris@16
|
102 # define BOOST_ASIO_HAS_MOVE 1
|
Chris@16
|
103 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
104 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
105 # endif // !defined(BOOST_ASIO_DISABLE_MOVE)
|
Chris@16
|
106 #endif // !defined(BOOST_ASIO_HAS_MOVE)
|
Chris@16
|
107
|
Chris@16
|
108 // If BOOST_ASIO_MOVE_CAST isn't defined, and move support is available, define
|
Chris@16
|
109 // BOOST_ASIO_MOVE_ARG and BOOST_ASIO_MOVE_CAST to take advantage of rvalue
|
Chris@16
|
110 // references and perfect forwarding.
|
Chris@16
|
111 #if defined(BOOST_ASIO_HAS_MOVE) && !defined(BOOST_ASIO_MOVE_CAST)
|
Chris@16
|
112 # define BOOST_ASIO_MOVE_ARG(type) type&&
|
Chris@16
|
113 # define BOOST_ASIO_MOVE_CAST(type) static_cast<type&&>
|
Chris@16
|
114 # define BOOST_ASIO_MOVE_CAST2(type1, type2) static_cast<type1, type2&&>
|
Chris@16
|
115 #endif // defined(BOOST_ASIO_HAS_MOVE) && !defined(BOOST_ASIO_MOVE_CAST)
|
Chris@16
|
116
|
Chris@16
|
117 // If BOOST_ASIO_MOVE_CAST still isn't defined, default to a C++03-compatible
|
Chris@16
|
118 // implementation. Note that older g++ and MSVC versions don't like it when you
|
Chris@16
|
119 // pass a non-member function through a const reference, so for most compilers
|
Chris@16
|
120 // we'll play it safe and stick with the old approach of passing the handler by
|
Chris@16
|
121 // value.
|
Chris@16
|
122 #if !defined(BOOST_ASIO_MOVE_CAST)
|
Chris@16
|
123 # if defined(__GNUC__)
|
Chris@16
|
124 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
|
Chris@16
|
125 # define BOOST_ASIO_MOVE_ARG(type) const type&
|
Chris@16
|
126 # else // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
|
Chris@16
|
127 # define BOOST_ASIO_MOVE_ARG(type) type
|
Chris@16
|
128 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
|
Chris@16
|
129 # elif defined(BOOST_ASIO_MSVC)
|
Chris@16
|
130 # if (_MSC_VER >= 1400)
|
Chris@16
|
131 # define BOOST_ASIO_MOVE_ARG(type) const type&
|
Chris@16
|
132 # else // (_MSC_VER >= 1400)
|
Chris@16
|
133 # define BOOST_ASIO_MOVE_ARG(type) type
|
Chris@16
|
134 # endif // (_MSC_VER >= 1400)
|
Chris@16
|
135 # else
|
Chris@16
|
136 # define BOOST_ASIO_MOVE_ARG(type) type
|
Chris@16
|
137 # endif
|
Chris@16
|
138 # define BOOST_ASIO_MOVE_CAST(type) static_cast<const type&>
|
Chris@16
|
139 # define BOOST_ASIO_MOVE_CAST2(type1, type2) static_cast<const type1, type2&>
|
Chris@16
|
140 #endif // !defined(BOOST_ASIO_MOVE_CAST)
|
Chris@16
|
141
|
Chris@16
|
142 // Support variadic templates on compilers known to allow it.
|
Chris@16
|
143 #if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
Chris@16
|
144 # if !defined(BOOST_ASIO_DISABLE_VARIADIC_TEMPLATES)
|
Chris@16
|
145 # if defined(__clang__)
|
Chris@16
|
146 # if __has_feature(__cxx_variadic_templates__)
|
Chris@16
|
147 # define BOOST_ASIO_HAS_VARIADIC_TEMPLATES 1
|
Chris@16
|
148 # endif // __has_feature(__cxx_variadic_templates__)
|
Chris@16
|
149 # endif // defined(__clang__)
|
Chris@16
|
150 # if defined(__GNUC__)
|
Chris@16
|
151 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
152 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
153 # define BOOST_ASIO_HAS_VARIADIC_TEMPLATES 1
|
Chris@16
|
154 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
155 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
156 # endif // defined(__GNUC__)
|
Chris@16
|
157 # endif // !defined(BOOST_ASIO_DISABLE_VARIADIC_TEMPLATES)
|
Chris@16
|
158 #endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
|
Chris@16
|
159
|
Chris@16
|
160 // Support constexpr on compilers known to allow it.
|
Chris@16
|
161 #if !defined(BOOST_ASIO_HAS_CONSTEXPR)
|
Chris@16
|
162 # if !defined(BOOST_ASIO_DISABLE_CONSTEXPR)
|
Chris@16
|
163 # if defined(__clang__)
|
Chris@16
|
164 # if __has_feature(__cxx_constexpr__)
|
Chris@16
|
165 # define BOOST_ASIO_HAS_CONSTEXPR 1
|
Chris@16
|
166 # endif // __has_feature(__cxx_constexr__)
|
Chris@16
|
167 # endif // defined(__clang__)
|
Chris@16
|
168 # if defined(__GNUC__)
|
Chris@16
|
169 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
170 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
171 # define BOOST_ASIO_HAS_CONSTEXPR 1
|
Chris@16
|
172 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
173 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
174 # endif // defined(__GNUC__)
|
Chris@16
|
175 # endif // !defined(BOOST_ASIO_DISABLE_CONSTEXPR)
|
Chris@16
|
176 #endif // !defined(BOOST_ASIO_HAS_CONSTEXPR)
|
Chris@16
|
177 #if !defined(BOOST_ASIO_CONSTEXPR)
|
Chris@16
|
178 # if defined(BOOST_ASIO_HAS_CONSTEXPR)
|
Chris@16
|
179 # define BOOST_ASIO_CONSTEXPR constexpr
|
Chris@16
|
180 # else // defined(BOOST_ASIO_HAS_CONSTEXPR)
|
Chris@16
|
181 # define BOOST_ASIO_CONSTEXPR
|
Chris@16
|
182 # endif // defined(BOOST_ASIO_HAS_CONSTEXPR)
|
Chris@16
|
183 #endif // !defined(BOOST_ASIO_CONSTEXPR)
|
Chris@16
|
184
|
Chris@16
|
185 // Standard library support for system errors.
|
Chris@16
|
186 # if !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR)
|
Chris@101
|
187 # if defined(__clang__)
|
Chris@101
|
188 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
189 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@101
|
190 # elif (__cplusplus >= 201103)
|
Chris@101
|
191 # if __has_include(<system_error>)
|
Chris@101
|
192 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@101
|
193 # endif // __has_include(<system_error>)
|
Chris@101
|
194 # endif // (__cplusplus >= 201103)
|
Chris@101
|
195 # endif // defined(__clang__)
|
Chris@16
|
196 # if defined(__GNUC__)
|
Chris@16
|
197 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
198 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
199 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@16
|
200 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
201 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
202 # endif // defined(__GNUC__)
|
Chris@16
|
203 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
204 # if (_MSC_VER >= 1700)
|
Chris@16
|
205 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@16
|
206 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
207 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
208 # endif // !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR)
|
Chris@16
|
209
|
Chris@16
|
210 // Compliant C++11 compilers put noexcept specifiers on error_category members.
|
Chris@16
|
211 #if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
212 # if (BOOST_VERSION >= 105300)
|
Chris@16
|
213 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT BOOST_NOEXCEPT
|
Chris@16
|
214 # elif defined(__clang__)
|
Chris@16
|
215 # if __has_feature(__cxx_noexcept__)
|
Chris@16
|
216 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
|
Chris@16
|
217 # endif // __has_feature(__cxx_noexcept__)
|
Chris@16
|
218 # elif defined(__GNUC__)
|
Chris@16
|
219 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
220 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
221 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
|
Chris@16
|
222 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
223 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
224 # endif // defined(__GNUC__)
|
Chris@101
|
225 # if defined(BOOST_ASIO_MSVC)
|
Chris@101
|
226 # if (_MSC_VER >= 1900)
|
Chris@101
|
227 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
|
Chris@101
|
228 # endif // (_MSC_VER >= 1900)
|
Chris@101
|
229 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
230 # if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
231 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT
|
Chris@16
|
232 # endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
233 #endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
234
|
Chris@16
|
235 // Standard library support for arrays.
|
Chris@16
|
236 #if !defined(BOOST_ASIO_HAS_STD_ARRAY)
|
Chris@16
|
237 # if !defined(BOOST_ASIO_DISABLE_STD_ARRAY)
|
Chris@101
|
238 # if defined(__clang__)
|
Chris@101
|
239 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
240 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@101
|
241 # elif (__cplusplus >= 201103)
|
Chris@101
|
242 # if __has_include(<array>)
|
Chris@101
|
243 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@101
|
244 # endif // __has_include(<array>)
|
Chris@101
|
245 # endif // (__cplusplus >= 201103)
|
Chris@101
|
246 # endif // defined(__clang__)
|
Chris@16
|
247 # if defined(__GNUC__)
|
Chris@16
|
248 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
249 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
250 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@16
|
251 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
252 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
253 # endif // defined(__GNUC__)
|
Chris@16
|
254 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
255 # if (_MSC_VER >= 1600)
|
Chris@16
|
256 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@16
|
257 # endif // (_MSC_VER >= 1600)
|
Chris@16
|
258 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
259 # endif // !defined(BOOST_ASIO_DISABLE_STD_ARRAY)
|
Chris@16
|
260 #endif // !defined(BOOST_ASIO_HAS_STD_ARRAY)
|
Chris@16
|
261
|
Chris@16
|
262 // Standard library support for shared_ptr and weak_ptr.
|
Chris@16
|
263 #if !defined(BOOST_ASIO_HAS_STD_SHARED_PTR)
|
Chris@16
|
264 # if !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)
|
Chris@101
|
265 # if defined(__clang__)
|
Chris@101
|
266 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
267 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@101
|
268 # elif (__cplusplus >= 201103)
|
Chris@101
|
269 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@101
|
270 # endif // (__cplusplus >= 201103)
|
Chris@101
|
271 # endif // defined(__clang__)
|
Chris@16
|
272 # if defined(__GNUC__)
|
Chris@16
|
273 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
274 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
275 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@16
|
276 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
277 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
278 # endif // defined(__GNUC__)
|
Chris@16
|
279 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
280 # if (_MSC_VER >= 1600)
|
Chris@16
|
281 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@16
|
282 # endif // (_MSC_VER >= 1600)
|
Chris@16
|
283 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
284 # endif // !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)
|
Chris@16
|
285 #endif // !defined(BOOST_ASIO_HAS_STD_SHARED_PTR)
|
Chris@16
|
286
|
Chris@16
|
287 // Standard library support for atomic operations.
|
Chris@16
|
288 #if !defined(BOOST_ASIO_HAS_STD_ATOMIC)
|
Chris@16
|
289 # if !defined(BOOST_ASIO_DISABLE_STD_ATOMIC)
|
Chris@101
|
290 # if defined(__clang__)
|
Chris@101
|
291 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
292 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@101
|
293 # elif (__cplusplus >= 201103)
|
Chris@101
|
294 # if __has_include(<atomic>)
|
Chris@101
|
295 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@101
|
296 # endif // __has_include(<atomic>)
|
Chris@101
|
297 # endif // (__cplusplus >= 201103)
|
Chris@101
|
298 # endif // defined(__clang__)
|
Chris@16
|
299 # if defined(__GNUC__)
|
Chris@16
|
300 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
301 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
302 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@16
|
303 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
304 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
305 # endif // defined(__GNUC__)
|
Chris@16
|
306 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
307 # if (_MSC_VER >= 1700)
|
Chris@16
|
308 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@16
|
309 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
310 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
311 # endif // !defined(BOOST_ASIO_DISABLE_STD_ATOMIC)
|
Chris@16
|
312 #endif // !defined(BOOST_ASIO_HAS_STD_ATOMIC)
|
Chris@16
|
313
|
Chris@16
|
314 // Standard library support for chrono. Some standard libraries (such as the
|
Chris@16
|
315 // libstdc++ shipped with gcc 4.6) provide monotonic_clock as per early C++0x
|
Chris@16
|
316 // drafts, rather than the eventually standardised name of steady_clock.
|
Chris@16
|
317 #if !defined(BOOST_ASIO_HAS_STD_CHRONO)
|
Chris@16
|
318 # if !defined(BOOST_ASIO_DISABLE_STD_CHRONO)
|
Chris@101
|
319 # if defined(__clang__)
|
Chris@101
|
320 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
321 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@101
|
322 # elif (__cplusplus >= 201103)
|
Chris@101
|
323 # if __has_include(<chrono>)
|
Chris@101
|
324 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@101
|
325 # endif // __has_include(<chrono>)
|
Chris@101
|
326 # endif // (__cplusplus >= 201103)
|
Chris@101
|
327 # endif // defined(__clang__)
|
Chris@16
|
328 # if defined(__GNUC__)
|
Chris@16
|
329 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
330 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
331 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@16
|
332 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
|
Chris@16
|
333 # define BOOST_ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK 1
|
Chris@16
|
334 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
|
Chris@16
|
335 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
336 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
337 # endif // defined(__GNUC__)
|
Chris@16
|
338 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
339 # if (_MSC_VER >= 1700)
|
Chris@16
|
340 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@16
|
341 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
342 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
343 # endif // !defined(BOOST_ASIO_DISABLE_STD_CHRONO)
|
Chris@16
|
344 #endif // !defined(BOOST_ASIO_HAS_STD_CHRONO)
|
Chris@16
|
345
|
Chris@16
|
346 // Boost support for chrono.
|
Chris@16
|
347 #if !defined(BOOST_ASIO_HAS_BOOST_CHRONO)
|
Chris@16
|
348 # if !defined(BOOST_ASIO_DISABLE_BOOST_CHRONO)
|
Chris@16
|
349 # if (BOOST_VERSION >= 104700)
|
Chris@16
|
350 # define BOOST_ASIO_HAS_BOOST_CHRONO 1
|
Chris@16
|
351 # endif // (BOOST_VERSION >= 104700)
|
Chris@16
|
352 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_CHRONO)
|
Chris@16
|
353 #endif // !defined(BOOST_ASIO_HAS_BOOST_CHRONO)
|
Chris@16
|
354
|
Chris@16
|
355 // Boost support for the DateTime library.
|
Chris@16
|
356 #if !defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
Chris@16
|
357 # if !defined(BOOST_ASIO_DISABLE_BOOST_DATE_TIME)
|
Chris@16
|
358 # define BOOST_ASIO_HAS_BOOST_DATE_TIME 1
|
Chris@16
|
359 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_DATE_TIME)
|
Chris@16
|
360 #endif // !defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
Chris@16
|
361
|
Chris@16
|
362 // Standard library support for addressof.
|
Chris@16
|
363 #if !defined(BOOST_ASIO_HAS_STD_ADDRESSOF)
|
Chris@16
|
364 # if !defined(BOOST_ASIO_DISABLE_STD_ADDRESSOF)
|
Chris@101
|
365 # if defined(__clang__)
|
Chris@101
|
366 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
367 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@101
|
368 # elif (__cplusplus >= 201103)
|
Chris@101
|
369 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@101
|
370 # endif // (__cplusplus >= 201103)
|
Chris@101
|
371 # endif // defined(__clang__)
|
Chris@16
|
372 # if defined(__GNUC__)
|
Chris@101
|
373 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
374 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
375 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@16
|
376 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@101
|
377 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
378 # endif // defined(__GNUC__)
|
Chris@16
|
379 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
380 # if (_MSC_VER >= 1700)
|
Chris@16
|
381 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@16
|
382 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
383 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
384 # endif // !defined(BOOST_ASIO_DISABLE_STD_ADDRESSOF)
|
Chris@16
|
385 #endif // !defined(BOOST_ASIO_HAS_STD_ADDRESSOF)
|
Chris@16
|
386
|
Chris@16
|
387 // Standard library support for the function class.
|
Chris@16
|
388 #if !defined(BOOST_ASIO_HAS_STD_FUNCTION)
|
Chris@16
|
389 # if !defined(BOOST_ASIO_DISABLE_STD_FUNCTION)
|
Chris@101
|
390 # if defined(__clang__)
|
Chris@101
|
391 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
392 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@101
|
393 # elif (__cplusplus >= 201103)
|
Chris@101
|
394 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@101
|
395 # endif // (__cplusplus >= 201103)
|
Chris@101
|
396 # endif // defined(__clang__)
|
Chris@16
|
397 # if defined(__GNUC__)
|
Chris@16
|
398 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
399 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
400 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@16
|
401 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
402 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
403 # endif // defined(__GNUC__)
|
Chris@16
|
404 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
405 # if (_MSC_VER >= 1700)
|
Chris@16
|
406 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@16
|
407 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
408 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
409 # endif // !defined(BOOST_ASIO_DISABLE_STD_FUNCTION)
|
Chris@16
|
410 #endif // !defined(BOOST_ASIO_HAS_STD_FUNCTION)
|
Chris@16
|
411
|
Chris@16
|
412 // Standard library support for type traits.
|
Chris@16
|
413 #if !defined(BOOST_ASIO_HAS_STD_TYPE_TRAITS)
|
Chris@16
|
414 # if !defined(BOOST_ASIO_DISABLE_STD_TYPE_TRAITS)
|
Chris@101
|
415 # if defined(__clang__)
|
Chris@101
|
416 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
417 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@101
|
418 # elif (__cplusplus >= 201103)
|
Chris@101
|
419 # if __has_include(<type_traits>)
|
Chris@101
|
420 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@101
|
421 # endif // __has_include(<type_traits>)
|
Chris@101
|
422 # endif // (__cplusplus >= 201103)
|
Chris@101
|
423 # endif // defined(__clang__)
|
Chris@16
|
424 # if defined(__GNUC__)
|
Chris@16
|
425 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
426 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
427 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@16
|
428 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
429 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
430 # endif // defined(__GNUC__)
|
Chris@16
|
431 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
432 # if (_MSC_VER >= 1700)
|
Chris@16
|
433 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@16
|
434 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
435 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
436 # endif // !defined(BOOST_ASIO_DISABLE_STD_TYPE_TRAITS)
|
Chris@16
|
437 #endif // !defined(BOOST_ASIO_HAS_STD_TYPE_TRAITS)
|
Chris@16
|
438
|
Chris@16
|
439 // Standard library support for the cstdint header.
|
Chris@16
|
440 #if !defined(BOOST_ASIO_HAS_CSTDINT)
|
Chris@16
|
441 # if !defined(BOOST_ASIO_DISABLE_CSTDINT)
|
Chris@101
|
442 # if defined(__clang__)
|
Chris@101
|
443 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
444 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@101
|
445 # elif (__cplusplus >= 201103)
|
Chris@101
|
446 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@101
|
447 # endif // (__cplusplus >= 201103)
|
Chris@101
|
448 # endif // defined(__clang__)
|
Chris@16
|
449 # if defined(__GNUC__)
|
Chris@16
|
450 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
451 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
452 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@16
|
453 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
454 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
455 # endif // defined(__GNUC__)
|
Chris@16
|
456 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
457 # if (_MSC_VER >= 1700)
|
Chris@16
|
458 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@16
|
459 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
460 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
461 # endif // !defined(BOOST_ASIO_DISABLE_CSTDINT)
|
Chris@16
|
462 #endif // !defined(BOOST_ASIO_HAS_CSTDINT)
|
Chris@16
|
463
|
Chris@16
|
464 // Standard library support for the thread class.
|
Chris@16
|
465 #if !defined(BOOST_ASIO_HAS_STD_THREAD)
|
Chris@16
|
466 # if !defined(BOOST_ASIO_DISABLE_STD_THREAD)
|
Chris@101
|
467 # if defined(__clang__)
|
Chris@101
|
468 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
469 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@101
|
470 # elif (__cplusplus >= 201103)
|
Chris@101
|
471 # if __has_include(<thread>)
|
Chris@101
|
472 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@101
|
473 # endif // __has_include(<thread>)
|
Chris@101
|
474 # endif // (__cplusplus >= 201103)
|
Chris@101
|
475 # endif // defined(__clang__)
|
Chris@16
|
476 # if defined(__GNUC__)
|
Chris@16
|
477 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
478 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
479 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@16
|
480 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
481 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
482 # endif // defined(__GNUC__)
|
Chris@16
|
483 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
484 # if (_MSC_VER >= 1700)
|
Chris@16
|
485 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@16
|
486 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
487 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
488 # endif // !defined(BOOST_ASIO_DISABLE_STD_THREAD)
|
Chris@16
|
489 #endif // !defined(BOOST_ASIO_HAS_STD_THREAD)
|
Chris@16
|
490
|
Chris@16
|
491 // Standard library support for the mutex and condition variable classes.
|
Chris@16
|
492 #if !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
493 # if !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
|
Chris@101
|
494 # if defined(__clang__)
|
Chris@101
|
495 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@101
|
496 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@101
|
497 # elif (__cplusplus >= 201103)
|
Chris@101
|
498 # if __has_include(<mutex>)
|
Chris@101
|
499 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@101
|
500 # endif // __has_include(<mutex>)
|
Chris@101
|
501 # endif // (__cplusplus >= 201103)
|
Chris@101
|
502 # endif // defined(__clang__)
|
Chris@16
|
503 # if defined(__GNUC__)
|
Chris@16
|
504 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
505 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
506 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@16
|
507 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
508 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
509 # endif // defined(__GNUC__)
|
Chris@16
|
510 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
511 # if (_MSC_VER >= 1700)
|
Chris@16
|
512 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@16
|
513 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
514 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
515 # endif // !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
516 #endif // !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
517
|
Chris@16
|
518 // WinRT target.
|
Chris@16
|
519 #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
520 # if defined(__cplusplus_winrt)
|
Chris@16
|
521 # include <winapifamily.h>
|
Chris@101
|
522 # if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \
|
Chris@101
|
523 && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
Chris@16
|
524 # define BOOST_ASIO_WINDOWS_RUNTIME 1
|
Chris@101
|
525 # endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
|
Chris@101
|
526 // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
Chris@16
|
527 # endif // defined(__cplusplus_winrt)
|
Chris@16
|
528 #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
529
|
Chris@16
|
530 // Windows target. Excludes WinRT.
|
Chris@16
|
531 #if !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
532 # if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
533 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
|
Chris@16
|
534 # define BOOST_ASIO_WINDOWS 1
|
Chris@16
|
535 # elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
Chris@16
|
536 # define BOOST_ASIO_WINDOWS 1
|
Chris@16
|
537 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
|
Chris@16
|
538 # endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
539 #endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
540
|
Chris@16
|
541 // Windows: target OS version.
|
Chris@16
|
542 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
543 # if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
|
Chris@16
|
544 # if defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
545 # pragma message( \
|
Chris@16
|
546 "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\
|
Chris@16
|
547 "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\
|
Chris@16
|
548 "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\
|
Chris@16
|
549 "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).")
|
Chris@16
|
550 # else // defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
551 # warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
|
Chris@16
|
552 # warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
|
Chris@16
|
553 # warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
|
Chris@16
|
554 # endif // defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
555 # define _WIN32_WINNT 0x0501
|
Chris@16
|
556 # endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
|
Chris@16
|
557 # if defined(_MSC_VER)
|
Chris@16
|
558 # if defined(_WIN32) && !defined(WIN32)
|
Chris@16
|
559 # if !defined(_WINSOCK2API_)
|
Chris@16
|
560 # define WIN32 // Needed for correct types in winsock2.h
|
Chris@16
|
561 # else // !defined(_WINSOCK2API_)
|
Chris@16
|
562 # error Please define the macro WIN32 in your compiler options
|
Chris@16
|
563 # endif // !defined(_WINSOCK2API_)
|
Chris@16
|
564 # endif // defined(_WIN32) && !defined(WIN32)
|
Chris@16
|
565 # endif // defined(_MSC_VER)
|
Chris@16
|
566 # if defined(__BORLANDC__)
|
Chris@16
|
567 # if defined(__WIN32__) && !defined(WIN32)
|
Chris@16
|
568 # if !defined(_WINSOCK2API_)
|
Chris@16
|
569 # define WIN32 // Needed for correct types in winsock2.h
|
Chris@16
|
570 # else // !defined(_WINSOCK2API_)
|
Chris@16
|
571 # error Please define the macro WIN32 in your compiler options
|
Chris@16
|
572 # endif // !defined(_WINSOCK2API_)
|
Chris@16
|
573 # endif // defined(__WIN32__) && !defined(WIN32)
|
Chris@16
|
574 # endif // defined(__BORLANDC__)
|
Chris@16
|
575 # if defined(__CYGWIN__)
|
Chris@16
|
576 # if !defined(__USE_W32_SOCKETS)
|
Chris@16
|
577 # error You must add -D__USE_W32_SOCKETS to your compiler options.
|
Chris@16
|
578 # endif // !defined(__USE_W32_SOCKETS)
|
Chris@16
|
579 # endif // defined(__CYGWIN__)
|
Chris@16
|
580 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
581
|
Chris@16
|
582 // Windows: minimise header inclusion.
|
Chris@16
|
583 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
584 # if !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
|
Chris@16
|
585 # if !defined(WIN32_LEAN_AND_MEAN)
|
Chris@16
|
586 # define WIN32_LEAN_AND_MEAN
|
Chris@16
|
587 # endif // !defined(WIN32_LEAN_AND_MEAN)
|
Chris@16
|
588 # endif // !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
|
Chris@16
|
589 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
590
|
Chris@16
|
591 // Windows: suppress definition of "min" and "max" macros.
|
Chris@16
|
592 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
593 # if !defined(BOOST_ASIO_NO_NOMINMAX)
|
Chris@16
|
594 # if !defined(NOMINMAX)
|
Chris@16
|
595 # define NOMINMAX 1
|
Chris@16
|
596 # endif // !defined(NOMINMAX)
|
Chris@16
|
597 # endif // !defined(BOOST_ASIO_NO_NOMINMAX)
|
Chris@16
|
598 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
599
|
Chris@16
|
600 // Windows: IO Completion Ports.
|
Chris@16
|
601 #if !defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
602 # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
603 # if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
|
Chris@16
|
604 # if !defined(UNDER_CE)
|
Chris@16
|
605 # if !defined(BOOST_ASIO_DISABLE_IOCP)
|
Chris@16
|
606 # define BOOST_ASIO_HAS_IOCP 1
|
Chris@16
|
607 # endif // !defined(BOOST_ASIO_DISABLE_IOCP)
|
Chris@16
|
608 # endif // !defined(UNDER_CE)
|
Chris@16
|
609 # endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
|
Chris@16
|
610 # endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
611 #endif // !defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
612
|
Chris@101
|
613 // On POSIX (and POSIX-like) platforms we need to include unistd.h in order to
|
Chris@101
|
614 // get access to the various platform feature macros, e.g. to be able to test
|
Chris@101
|
615 // for threads support.
|
Chris@101
|
616 #if !defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@101
|
617 # if !defined(BOOST_ASIO_HAS_BOOST_CONFIG)
|
Chris@101
|
618 # if defined(unix) \
|
Chris@101
|
619 || defined(__unix) \
|
Chris@101
|
620 || defined(_XOPEN_SOURCE) \
|
Chris@101
|
621 || defined(_POSIX_SOURCE) \
|
Chris@101
|
622 || (defined(__MACH__) && defined(__APPLE__)) \
|
Chris@101
|
623 || defined(__FreeBSD__) \
|
Chris@101
|
624 || defined(__NetBSD__) \
|
Chris@101
|
625 || defined(__OpenBSD__) \
|
Chris@101
|
626 || defined(__linux__)
|
Chris@101
|
627 # define BOOST_ASIO_HAS_UNISTD_H 1
|
Chris@101
|
628 # endif
|
Chris@101
|
629 # endif // !defined(BOOST_ASIO_HAS_BOOST_CONFIG)
|
Chris@101
|
630 #endif // !defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@101
|
631 #if defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@101
|
632 # include <unistd.h>
|
Chris@101
|
633 #endif // defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@101
|
634
|
Chris@16
|
635 // Linux: epoll, eventfd and timerfd.
|
Chris@16
|
636 #if defined(__linux__)
|
Chris@16
|
637 # include <linux/version.h>
|
Chris@16
|
638 # if !defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
639 # if !defined(BOOST_ASIO_DISABLE_EPOLL)
|
Chris@16
|
640 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
|
Chris@16
|
641 # define BOOST_ASIO_HAS_EPOLL 1
|
Chris@16
|
642 # endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
|
Chris@16
|
643 # endif // !defined(BOOST_ASIO_DISABLE_EPOLL)
|
Chris@16
|
644 # endif // !defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
645 # if !defined(BOOST_ASIO_HAS_EVENTFD)
|
Chris@16
|
646 # if !defined(BOOST_ASIO_DISABLE_EVENTFD)
|
Chris@16
|
647 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
|
Chris@16
|
648 # define BOOST_ASIO_HAS_EVENTFD 1
|
Chris@16
|
649 # endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
|
Chris@16
|
650 # endif // !defined(BOOST_ASIO_DISABLE_EVENTFD)
|
Chris@16
|
651 # endif // !defined(BOOST_ASIO_HAS_EVENTFD)
|
Chris@16
|
652 # if !defined(BOOST_ASIO_HAS_TIMERFD)
|
Chris@16
|
653 # if defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
654 # if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
|
Chris@16
|
655 # define BOOST_ASIO_HAS_TIMERFD 1
|
Chris@16
|
656 # endif // (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
|
Chris@16
|
657 # endif // defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
658 # endif // !defined(BOOST_ASIO_HAS_TIMERFD)
|
Chris@16
|
659 #endif // defined(__linux__)
|
Chris@16
|
660
|
Chris@16
|
661 // Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue.
|
Chris@16
|
662 #if (defined(__MACH__) && defined(__APPLE__)) \
|
Chris@16
|
663 || defined(__FreeBSD__) \
|
Chris@16
|
664 || defined(__NetBSD__) \
|
Chris@16
|
665 || defined(__OpenBSD__)
|
Chris@16
|
666 # if !defined(BOOST_ASIO_HAS_KQUEUE)
|
Chris@16
|
667 # if !defined(BOOST_ASIO_DISABLE_KQUEUE)
|
Chris@16
|
668 # define BOOST_ASIO_HAS_KQUEUE 1
|
Chris@16
|
669 # endif // !defined(BOOST_ASIO_DISABLE_KQUEUE)
|
Chris@16
|
670 # endif // !defined(BOOST_ASIO_HAS_KQUEUE)
|
Chris@16
|
671 #endif // (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
672 // || defined(__FreeBSD__)
|
Chris@16
|
673 // || defined(__NetBSD__)
|
Chris@16
|
674 // || defined(__OpenBSD__)
|
Chris@16
|
675
|
Chris@16
|
676 // Solaris: /dev/poll.
|
Chris@16
|
677 #if defined(__sun)
|
Chris@16
|
678 # if !defined(BOOST_ASIO_HAS_DEV_POLL)
|
Chris@16
|
679 # if !defined(BOOST_ASIO_DISABLE_DEV_POLL)
|
Chris@16
|
680 # define BOOST_ASIO_HAS_DEV_POLL 1
|
Chris@16
|
681 # endif // !defined(BOOST_ASIO_DISABLE_DEV_POLL)
|
Chris@16
|
682 # endif // !defined(BOOST_ASIO_HAS_DEV_POLL)
|
Chris@16
|
683 #endif // defined(__sun)
|
Chris@16
|
684
|
Chris@16
|
685 // Serial ports.
|
Chris@16
|
686 #if !defined(BOOST_ASIO_HAS_SERIAL_PORT)
|
Chris@16
|
687 # if defined(BOOST_ASIO_HAS_IOCP) \
|
Chris@16
|
688 || !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
689 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
690 && !defined(__CYGWIN__)
|
Chris@16
|
691 # if !defined(__SYMBIAN32__)
|
Chris@16
|
692 # if !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
|
Chris@16
|
693 # define BOOST_ASIO_HAS_SERIAL_PORT 1
|
Chris@16
|
694 # endif // !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
|
Chris@16
|
695 # endif // !defined(__SYMBIAN32__)
|
Chris@16
|
696 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
697 // || !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
698 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
699 // && !defined(__CYGWIN__)
|
Chris@16
|
700 #endif // !defined(BOOST_ASIO_HAS_SERIAL_PORT)
|
Chris@16
|
701
|
Chris@16
|
702 // Windows: stream handles.
|
Chris@16
|
703 #if !defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
704 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
705 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
706 # define BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE 1
|
Chris@16
|
707 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
708 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
709 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
710
|
Chris@16
|
711 // Windows: random access handles.
|
Chris@16
|
712 #if !defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
713 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
714 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
715 # define BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1
|
Chris@16
|
716 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
717 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
718 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
719
|
Chris@16
|
720 // Windows: object handles.
|
Chris@16
|
721 #if !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
722 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
723 # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
724 # if !defined(UNDER_CE)
|
Chris@16
|
725 # define BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE 1
|
Chris@16
|
726 # endif // !defined(UNDER_CE)
|
Chris@16
|
727 # endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
728 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
729 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
730
|
Chris@16
|
731 // Windows: OVERLAPPED wrapper.
|
Chris@16
|
732 #if !defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
733 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
734 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
735 # define BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1
|
Chris@16
|
736 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
737 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
738 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
739
|
Chris@16
|
740 // POSIX: stream-oriented file descriptors.
|
Chris@16
|
741 #if !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
742 # if !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
743 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
744 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
745 && !defined(__CYGWIN__)
|
Chris@16
|
746 # define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
|
Chris@16
|
747 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
748 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
749 // && !defined(__CYGWIN__)
|
Chris@16
|
750 # endif // !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
751 #endif // !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
752
|
Chris@16
|
753 // UNIX domain sockets.
|
Chris@16
|
754 #if !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
|
Chris@16
|
755 # if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
|
Chris@16
|
756 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
757 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
758 && !defined(__CYGWIN__)
|
Chris@16
|
759 # define BOOST_ASIO_HAS_LOCAL_SOCKETS 1
|
Chris@16
|
760 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
761 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
762 // && !defined(__CYGWIN__)
|
Chris@16
|
763 # endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
|
Chris@16
|
764 #endif // !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
|
Chris@16
|
765
|
Chris@16
|
766 // Can use sigaction() instead of signal().
|
Chris@16
|
767 #if !defined(BOOST_ASIO_HAS_SIGACTION)
|
Chris@16
|
768 # if !defined(BOOST_ASIO_DISABLE_SIGACTION)
|
Chris@16
|
769 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
770 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
771 && !defined(__CYGWIN__)
|
Chris@16
|
772 # define BOOST_ASIO_HAS_SIGACTION 1
|
Chris@16
|
773 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
774 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
775 // && !defined(__CYGWIN__)
|
Chris@16
|
776 # endif // !defined(BOOST_ASIO_DISABLE_SIGACTION)
|
Chris@16
|
777 #endif // !defined(BOOST_ASIO_HAS_SIGACTION)
|
Chris@16
|
778
|
Chris@16
|
779 // Can use signal().
|
Chris@16
|
780 #if !defined(BOOST_ASIO_HAS_SIGNAL)
|
Chris@16
|
781 # if !defined(BOOST_ASIO_DISABLE_SIGNAL)
|
Chris@16
|
782 # if !defined(UNDER_CE)
|
Chris@16
|
783 # define BOOST_ASIO_HAS_SIGNAL 1
|
Chris@16
|
784 # endif // !defined(UNDER_CE)
|
Chris@16
|
785 # endif // !defined(BOOST_ASIO_DISABLE_SIGNAL)
|
Chris@16
|
786 #endif // !defined(BOOST_ASIO_HAS_SIGNAL)
|
Chris@16
|
787
|
Chris@101
|
788 // Can use getaddrinfo() and getnameinfo().
|
Chris@101
|
789 #if !defined(BOOST_ASIO_HAS_GETADDRINFO)
|
Chris@101
|
790 # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@101
|
791 # if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
|
Chris@101
|
792 # define BOOST_ASIO_HAS_GETADDRINFO 1
|
Chris@101
|
793 # elif defined(UNDER_CE)
|
Chris@101
|
794 # define BOOST_ASIO_HAS_GETADDRINFO 1
|
Chris@101
|
795 # endif // defined(UNDER_CE)
|
Chris@101
|
796 # elif !(defined(__MACH__) && defined(__APPLE__))
|
Chris@101
|
797 # define BOOST_ASIO_HAS_GETADDRINFO 1
|
Chris@101
|
798 # endif // !(defined(__MACH__) && defined(__APPLE__))
|
Chris@101
|
799 #endif // !defined(BOOST_ASIO_HAS_GETADDRINFO)
|
Chris@101
|
800
|
Chris@16
|
801 // Whether standard iostreams are disabled.
|
Chris@16
|
802 #if !defined(BOOST_ASIO_NO_IOSTREAM)
|
Chris@16
|
803 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM)
|
Chris@16
|
804 # define BOOST_ASIO_NO_IOSTREAM 1
|
Chris@16
|
805 # endif // !defined(BOOST_NO_IOSTREAM)
|
Chris@16
|
806 #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
Chris@16
|
807
|
Chris@16
|
808 // Whether exception handling is disabled.
|
Chris@16
|
809 #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
|
Chris@16
|
810 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_EXCEPTIONS)
|
Chris@16
|
811 # define BOOST_ASIO_NO_EXCEPTIONS 1
|
Chris@16
|
812 # endif // !defined(BOOST_NO_EXCEPTIONS)
|
Chris@16
|
813 #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
|
Chris@16
|
814
|
Chris@16
|
815 // Whether the typeid operator is supported.
|
Chris@16
|
816 #if !defined(BOOST_ASIO_NO_TYPEID)
|
Chris@16
|
817 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_TYPEID)
|
Chris@16
|
818 # define BOOST_ASIO_NO_TYPEID 1
|
Chris@16
|
819 # endif // !defined(BOOST_NO_TYPEID)
|
Chris@16
|
820 #endif // !defined(BOOST_ASIO_NO_TYPEID)
|
Chris@16
|
821
|
Chris@16
|
822 // Threads.
|
Chris@16
|
823 #if !defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
824 # if !defined(BOOST_ASIO_DISABLE_THREADS)
|
Chris@16
|
825 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
|
Chris@16
|
826 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
827 # elif defined(_MSC_VER) && defined(_MT)
|
Chris@16
|
828 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
829 # elif defined(__BORLANDC__) && defined(__MT__)
|
Chris@16
|
830 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
831 # elif defined(_POSIX_THREADS)
|
Chris@16
|
832 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
833 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
|
Chris@16
|
834 # endif // !defined(BOOST_ASIO_DISABLE_THREADS)
|
Chris@16
|
835 #endif // !defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
836
|
Chris@16
|
837 // POSIX threads.
|
Chris@16
|
838 #if !defined(BOOST_ASIO_HAS_PTHREADS)
|
Chris@16
|
839 # if defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
840 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
|
Chris@16
|
841 # define BOOST_ASIO_HAS_PTHREADS 1
|
Chris@16
|
842 # elif defined(_POSIX_THREADS)
|
Chris@16
|
843 # define BOOST_ASIO_HAS_PTHREADS 1
|
Chris@16
|
844 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
|
Chris@16
|
845 # endif // defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
846 #endif // !defined(BOOST_ASIO_HAS_PTHREADS)
|
Chris@16
|
847
|
Chris@16
|
848 // Helper to prevent macro expansion.
|
Chris@16
|
849 #define BOOST_ASIO_PREVENT_MACRO_SUBSTITUTION
|
Chris@16
|
850
|
Chris@16
|
851 // Helper to define in-class constants.
|
Chris@16
|
852 #if !defined(BOOST_ASIO_STATIC_CONSTANT)
|
Chris@16
|
853 # if !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
854 # define BOOST_ASIO_STATIC_CONSTANT(type, assignment) \
|
Chris@16
|
855 BOOST_STATIC_CONSTANT(type, assignment)
|
Chris@16
|
856 # else // !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
857 # define BOOST_ASIO_STATIC_CONSTANT(type, assignment) \
|
Chris@16
|
858 static const type assignment
|
Chris@16
|
859 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
860 #endif // !defined(BOOST_ASIO_STATIC_CONSTANT)
|
Chris@16
|
861
|
Chris@16
|
862 // Boost array library.
|
Chris@16
|
863 #if !defined(BOOST_ASIO_HAS_BOOST_ARRAY)
|
Chris@16
|
864 # if !defined(BOOST_ASIO_DISABLE_BOOST_ARRAY)
|
Chris@16
|
865 # define BOOST_ASIO_HAS_BOOST_ARRAY 1
|
Chris@16
|
866 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_ARRAY)
|
Chris@16
|
867 #endif // !defined(BOOST_ASIO_HAS_BOOST_ARRAY)
|
Chris@16
|
868
|
Chris@16
|
869 // Boost assert macro.
|
Chris@16
|
870 #if !defined(BOOST_ASIO_HAS_BOOST_ASSERT)
|
Chris@16
|
871 # if !defined(BOOST_ASIO_DISABLE_BOOST_ASSERT)
|
Chris@16
|
872 # define BOOST_ASIO_HAS_BOOST_ASSERT 1
|
Chris@16
|
873 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_ASSERT)
|
Chris@16
|
874 #endif // !defined(BOOST_ASIO_HAS_BOOST_ASSERT)
|
Chris@16
|
875
|
Chris@16
|
876 // Boost limits header.
|
Chris@16
|
877 #if !defined(BOOST_ASIO_HAS_BOOST_LIMITS)
|
Chris@16
|
878 # if !defined(BOOST_ASIO_DISABLE_BOOST_LIMITS)
|
Chris@16
|
879 # define BOOST_ASIO_HAS_BOOST_LIMITS 1
|
Chris@16
|
880 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_LIMITS)
|
Chris@16
|
881 #endif // !defined(BOOST_ASIO_HAS_BOOST_LIMITS)
|
Chris@16
|
882
|
Chris@16
|
883 // Boost throw_exception function.
|
Chris@16
|
884 #if !defined(BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION)
|
Chris@16
|
885 # if !defined(BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION)
|
Chris@16
|
886 # define BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION 1
|
Chris@16
|
887 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION)
|
Chris@16
|
888 #endif // !defined(BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION)
|
Chris@16
|
889
|
Chris@16
|
890 // Boost regex library.
|
Chris@16
|
891 #if !defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
Chris@16
|
892 # if !defined(BOOST_ASIO_DISABLE_BOOST_REGEX)
|
Chris@16
|
893 # define BOOST_ASIO_HAS_BOOST_REGEX 1
|
Chris@16
|
894 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_REGEX)
|
Chris@16
|
895 #endif // !defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
Chris@16
|
896
|
Chris@16
|
897 // Boost bind function.
|
Chris@16
|
898 #if !defined(BOOST_ASIO_HAS_BOOST_BIND)
|
Chris@16
|
899 # if !defined(BOOST_ASIO_DISABLE_BOOST_BIND)
|
Chris@16
|
900 # define BOOST_ASIO_HAS_BOOST_BIND 1
|
Chris@16
|
901 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_BIND)
|
Chris@16
|
902 #endif // !defined(BOOST_ASIO_HAS_BOOST_BIND)
|
Chris@16
|
903
|
Chris@16
|
904 // Boost's BOOST_WORKAROUND macro.
|
Chris@16
|
905 #if !defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
|
Chris@16
|
906 # if !defined(BOOST_ASIO_DISABLE_BOOST_WORKAROUND)
|
Chris@16
|
907 # define BOOST_ASIO_HAS_BOOST_WORKAROUND 1
|
Chris@16
|
908 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_WORKAROUND)
|
Chris@16
|
909 #endif // !defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
|
Chris@16
|
910
|
Chris@16
|
911 // Microsoft Visual C++'s secure C runtime library.
|
Chris@16
|
912 #if !defined(BOOST_ASIO_HAS_SECURE_RTL)
|
Chris@16
|
913 # if !defined(BOOST_ASIO_DISABLE_SECURE_RTL)
|
Chris@16
|
914 # if defined(BOOST_ASIO_MSVC) \
|
Chris@16
|
915 && (BOOST_ASIO_MSVC >= 1400) \
|
Chris@16
|
916 && !defined(UNDER_CE)
|
Chris@16
|
917 # define BOOST_ASIO_HAS_SECURE_RTL 1
|
Chris@16
|
918 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
919 // && (BOOST_ASIO_MSVC >= 1400)
|
Chris@16
|
920 // && !defined(UNDER_CE)
|
Chris@16
|
921 # endif // !defined(BOOST_ASIO_DISABLE_SECURE_RTL)
|
Chris@16
|
922 #endif // !defined(BOOST_ASIO_HAS_SECURE_RTL)
|
Chris@16
|
923
|
Chris@16
|
924 // Handler hooking. Disabled for ancient Borland C++ and gcc compilers.
|
Chris@16
|
925 #if !defined(BOOST_ASIO_HAS_HANDLER_HOOKS)
|
Chris@16
|
926 # if !defined(BOOST_ASIO_DISABLE_HANDLER_HOOKS)
|
Chris@16
|
927 # if defined(__GNUC__)
|
Chris@16
|
928 # if (__GNUC__ >= 3)
|
Chris@16
|
929 # define BOOST_ASIO_HAS_HANDLER_HOOKS 1
|
Chris@16
|
930 # endif // (__GNUC__ >= 3)
|
Chris@16
|
931 # elif !defined(__BORLANDC__)
|
Chris@16
|
932 # define BOOST_ASIO_HAS_HANDLER_HOOKS 1
|
Chris@16
|
933 # endif // !defined(__BORLANDC__)
|
Chris@16
|
934 # endif // !defined(BOOST_ASIO_DISABLE_HANDLER_HOOKS)
|
Chris@16
|
935 #endif // !defined(BOOST_ASIO_HAS_HANDLER_HOOKS)
|
Chris@16
|
936
|
Chris@16
|
937 // Support for the __thread keyword extension.
|
Chris@16
|
938 #if !defined(BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
|
Chris@16
|
939 # if defined(__linux__)
|
Chris@16
|
940 # if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
Chris@16
|
941 # if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
|
Chris@16
|
942 # if !defined(__INTEL_COMPILER) && !defined(__ICL)
|
Chris@16
|
943 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
944 # define BOOST_ASIO_THREAD_KEYWORD __thread
|
Chris@16
|
945 # elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
|
Chris@16
|
946 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
947 # endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
|
Chris@16
|
948 # endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
|
Chris@16
|
949 # endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
Chris@16
|
950 # endif // defined(__linux__)
|
Chris@16
|
951 # if defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
952 # if (_MSC_VER >= 1700)
|
Chris@16
|
953 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
954 # define BOOST_ASIO_THREAD_KEYWORD __declspec(thread)
|
Chris@16
|
955 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
956 # endif // defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
957 #endif // !defined(BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
|
Chris@16
|
958 #if !defined(BOOST_ASIO_THREAD_KEYWORD)
|
Chris@16
|
959 # define BOOST_ASIO_THREAD_KEYWORD __thread
|
Chris@16
|
960 #endif // !defined(BOOST_ASIO_THREAD_KEYWORD)
|
Chris@16
|
961
|
Chris@16
|
962 // Support for POSIX ssize_t typedef.
|
Chris@16
|
963 #if !defined(BOOST_ASIO_DISABLE_SSIZE_T)
|
Chris@16
|
964 # if defined(__linux__) \
|
Chris@16
|
965 || (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
966 # define BOOST_ASIO_HAS_SSIZE_T 1
|
Chris@16
|
967 # endif // defined(__linux__)
|
Chris@16
|
968 // || (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
969 #endif // !defined(BOOST_ASIO_DISABLE_SSIZE_T)
|
Chris@16
|
970
|
Chris@16
|
971 #endif // BOOST_ASIO_DETAIL_CONFIG_HPP
|