Chris@16
|
1 //
|
Chris@16
|
2 // detail/config.hpp
|
Chris@16
|
3 // ~~~~~~~~~~~~~~~~~
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright (c) 2003-2013 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@16
|
187 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
188 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@16
|
189 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
190 # if defined(__GNUC__)
|
Chris@16
|
191 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
192 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
193 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@16
|
194 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
195 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
196 # endif // defined(__GNUC__)
|
Chris@16
|
197 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
198 # if (_MSC_VER >= 1700)
|
Chris@16
|
199 # define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1
|
Chris@16
|
200 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
201 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
202 # endif // !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR)
|
Chris@16
|
203
|
Chris@16
|
204 // Compliant C++11 compilers put noexcept specifiers on error_category members.
|
Chris@16
|
205 #if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
206 # if (BOOST_VERSION >= 105300)
|
Chris@16
|
207 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT BOOST_NOEXCEPT
|
Chris@16
|
208 # elif defined(__clang__)
|
Chris@16
|
209 # if __has_feature(__cxx_noexcept__)
|
Chris@16
|
210 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
|
Chris@16
|
211 # endif // __has_feature(__cxx_noexcept__)
|
Chris@16
|
212 # elif defined(__GNUC__)
|
Chris@16
|
213 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
214 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
215 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
|
Chris@16
|
216 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
217 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
218 # endif // defined(__GNUC__)
|
Chris@16
|
219 # if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
220 # define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT
|
Chris@16
|
221 # endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
222 #endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
|
Chris@16
|
223
|
Chris@16
|
224 // Standard library support for arrays.
|
Chris@16
|
225 #if !defined(BOOST_ASIO_HAS_STD_ARRAY)
|
Chris@16
|
226 # if !defined(BOOST_ASIO_DISABLE_STD_ARRAY)
|
Chris@16
|
227 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
228 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@16
|
229 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
230 # if defined(__GNUC__)
|
Chris@16
|
231 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
232 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
233 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@16
|
234 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
235 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
236 # endif // defined(__GNUC__)
|
Chris@16
|
237 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
238 # if (_MSC_VER >= 1600)
|
Chris@16
|
239 # define BOOST_ASIO_HAS_STD_ARRAY 1
|
Chris@16
|
240 # endif // (_MSC_VER >= 1600)
|
Chris@16
|
241 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
242 # endif // !defined(BOOST_ASIO_DISABLE_STD_ARRAY)
|
Chris@16
|
243 #endif // !defined(BOOST_ASIO_HAS_STD_ARRAY)
|
Chris@16
|
244
|
Chris@16
|
245 // Standard library support for shared_ptr and weak_ptr.
|
Chris@16
|
246 #if !defined(BOOST_ASIO_HAS_STD_SHARED_PTR)
|
Chris@16
|
247 # if !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)
|
Chris@16
|
248 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
249 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@16
|
250 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
251 # if defined(__GNUC__)
|
Chris@16
|
252 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
253 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
254 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@16
|
255 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
256 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
|
Chris@16
|
257 # endif // defined(__GNUC__)
|
Chris@16
|
258 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
259 # if (_MSC_VER >= 1600)
|
Chris@16
|
260 # define BOOST_ASIO_HAS_STD_SHARED_PTR 1
|
Chris@16
|
261 # endif // (_MSC_VER >= 1600)
|
Chris@16
|
262 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
263 # endif // !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)
|
Chris@16
|
264 #endif // !defined(BOOST_ASIO_HAS_STD_SHARED_PTR)
|
Chris@16
|
265
|
Chris@16
|
266 // Standard library support for atomic operations.
|
Chris@16
|
267 #if !defined(BOOST_ASIO_HAS_STD_ATOMIC)
|
Chris@16
|
268 # if !defined(BOOST_ASIO_DISABLE_STD_ATOMIC)
|
Chris@16
|
269 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
270 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@16
|
271 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
272 # if defined(__GNUC__)
|
Chris@16
|
273 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
274 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
275 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@16
|
276 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
277 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
278 # endif // defined(__GNUC__)
|
Chris@16
|
279 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
280 # if (_MSC_VER >= 1700)
|
Chris@16
|
281 # define BOOST_ASIO_HAS_STD_ATOMIC 1
|
Chris@16
|
282 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
283 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
284 # endif // !defined(BOOST_ASIO_DISABLE_STD_ATOMIC)
|
Chris@16
|
285 #endif // !defined(BOOST_ASIO_HAS_STD_ATOMIC)
|
Chris@16
|
286
|
Chris@16
|
287 // Standard library support for chrono. Some standard libraries (such as the
|
Chris@16
|
288 // libstdc++ shipped with gcc 4.6) provide monotonic_clock as per early C++0x
|
Chris@16
|
289 // drafts, rather than the eventually standardised name of steady_clock.
|
Chris@16
|
290 #if !defined(BOOST_ASIO_HAS_STD_CHRONO)
|
Chris@16
|
291 # if !defined(BOOST_ASIO_DISABLE_STD_CHRONO)
|
Chris@16
|
292 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
293 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@16
|
294 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
295 # if defined(__GNUC__)
|
Chris@16
|
296 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
297 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
298 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@16
|
299 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
|
Chris@16
|
300 # define BOOST_ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK 1
|
Chris@16
|
301 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
|
Chris@16
|
302 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
303 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
|
Chris@16
|
304 # endif // defined(__GNUC__)
|
Chris@16
|
305 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
306 # if (_MSC_VER >= 1700)
|
Chris@16
|
307 # define BOOST_ASIO_HAS_STD_CHRONO 1
|
Chris@16
|
308 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
309 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
310 # endif // !defined(BOOST_ASIO_DISABLE_STD_CHRONO)
|
Chris@16
|
311 #endif // !defined(BOOST_ASIO_HAS_STD_CHRONO)
|
Chris@16
|
312
|
Chris@16
|
313 // Boost support for chrono.
|
Chris@16
|
314 #if !defined(BOOST_ASIO_HAS_BOOST_CHRONO)
|
Chris@16
|
315 # if !defined(BOOST_ASIO_DISABLE_BOOST_CHRONO)
|
Chris@16
|
316 # if (BOOST_VERSION >= 104700)
|
Chris@16
|
317 # define BOOST_ASIO_HAS_BOOST_CHRONO 1
|
Chris@16
|
318 # endif // (BOOST_VERSION >= 104700)
|
Chris@16
|
319 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_CHRONO)
|
Chris@16
|
320 #endif // !defined(BOOST_ASIO_HAS_BOOST_CHRONO)
|
Chris@16
|
321
|
Chris@16
|
322 // Boost support for the DateTime library.
|
Chris@16
|
323 #if !defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
Chris@16
|
324 # if !defined(BOOST_ASIO_DISABLE_BOOST_DATE_TIME)
|
Chris@16
|
325 # define BOOST_ASIO_HAS_BOOST_DATE_TIME 1
|
Chris@16
|
326 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_DATE_TIME)
|
Chris@16
|
327 #endif // !defined(BOOST_ASIO_HAS_BOOST_DATE_TIME)
|
Chris@16
|
328
|
Chris@16
|
329 // Standard library support for addressof.
|
Chris@16
|
330 #if !defined(BOOST_ASIO_HAS_STD_ADDRESSOF)
|
Chris@16
|
331 # if !defined(BOOST_ASIO_DISABLE_STD_ADDRESSOF)
|
Chris@16
|
332 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
333 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@16
|
334 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
335 # if defined(__GNUC__)
|
Chris@16
|
336 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
337 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
338 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@16
|
339 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
340 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
341 # endif // defined(__GNUC__)
|
Chris@16
|
342 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
343 # if (_MSC_VER >= 1700)
|
Chris@16
|
344 # define BOOST_ASIO_HAS_STD_ADDRESSOF 1
|
Chris@16
|
345 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
346 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
347 # endif // !defined(BOOST_ASIO_DISABLE_STD_ADDRESSOF)
|
Chris@16
|
348 #endif // !defined(BOOST_ASIO_HAS_STD_ADDRESSOF)
|
Chris@16
|
349
|
Chris@16
|
350 // Standard library support for the function class.
|
Chris@16
|
351 #if !defined(BOOST_ASIO_HAS_STD_FUNCTION)
|
Chris@16
|
352 # if !defined(BOOST_ASIO_DISABLE_STD_FUNCTION)
|
Chris@16
|
353 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
354 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@16
|
355 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
356 # if defined(__GNUC__)
|
Chris@16
|
357 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
358 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
359 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@16
|
360 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
361 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
362 # endif // defined(__GNUC__)
|
Chris@16
|
363 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
364 # if (_MSC_VER >= 1700)
|
Chris@16
|
365 # define BOOST_ASIO_HAS_STD_FUNCTION 1
|
Chris@16
|
366 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
367 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
368 # endif // !defined(BOOST_ASIO_DISABLE_STD_FUNCTION)
|
Chris@16
|
369 #endif // !defined(BOOST_ASIO_HAS_STD_FUNCTION)
|
Chris@16
|
370
|
Chris@16
|
371 // Standard library support for type traits.
|
Chris@16
|
372 #if !defined(BOOST_ASIO_HAS_STD_TYPE_TRAITS)
|
Chris@16
|
373 # if !defined(BOOST_ASIO_DISABLE_STD_TYPE_TRAITS)
|
Chris@16
|
374 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
375 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@16
|
376 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
377 # if defined(__GNUC__)
|
Chris@16
|
378 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
379 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
380 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@16
|
381 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
382 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
383 # endif // defined(__GNUC__)
|
Chris@16
|
384 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
385 # if (_MSC_VER >= 1700)
|
Chris@16
|
386 # define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1
|
Chris@16
|
387 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
388 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
389 # endif // !defined(BOOST_ASIO_DISABLE_STD_TYPE_TRAITS)
|
Chris@16
|
390 #endif // !defined(BOOST_ASIO_HAS_STD_TYPE_TRAITS)
|
Chris@16
|
391
|
Chris@16
|
392 // Standard library support for the cstdint header.
|
Chris@16
|
393 #if !defined(BOOST_ASIO_HAS_CSTDINT)
|
Chris@16
|
394 # if !defined(BOOST_ASIO_DISABLE_CSTDINT)
|
Chris@16
|
395 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
396 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@16
|
397 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
398 # if defined(__GNUC__)
|
Chris@16
|
399 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
400 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
401 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@16
|
402 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
403 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
|
Chris@16
|
404 # endif // defined(__GNUC__)
|
Chris@16
|
405 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
406 # if (_MSC_VER >= 1700)
|
Chris@16
|
407 # define BOOST_ASIO_HAS_CSTDINT 1
|
Chris@16
|
408 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
409 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
410 # endif // !defined(BOOST_ASIO_DISABLE_CSTDINT)
|
Chris@16
|
411 #endif // !defined(BOOST_ASIO_HAS_CSTDINT)
|
Chris@16
|
412
|
Chris@16
|
413 // Standard library support for the thread class.
|
Chris@16
|
414 #if !defined(BOOST_ASIO_HAS_STD_THREAD)
|
Chris@16
|
415 # if !defined(BOOST_ASIO_DISABLE_STD_THREAD)
|
Chris@16
|
416 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
417 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@16
|
418 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
419 # if defined(__GNUC__)
|
Chris@16
|
420 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
421 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
422 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@16
|
423 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
424 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
425 # endif // defined(__GNUC__)
|
Chris@16
|
426 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
427 # if (_MSC_VER >= 1700)
|
Chris@16
|
428 # define BOOST_ASIO_HAS_STD_THREAD 1
|
Chris@16
|
429 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
430 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
431 # endif // !defined(BOOST_ASIO_DISABLE_STD_THREAD)
|
Chris@16
|
432 #endif // !defined(BOOST_ASIO_HAS_STD_THREAD)
|
Chris@16
|
433
|
Chris@16
|
434 // Standard library support for the mutex and condition variable classes.
|
Chris@16
|
435 #if !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
436 # if !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
437 # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
438 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@16
|
439 # endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX)
|
Chris@16
|
440 # if defined(__GNUC__)
|
Chris@16
|
441 # if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
442 # if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
443 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@16
|
444 # endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
|
Chris@16
|
445 # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
|
Chris@16
|
446 # endif // defined(__GNUC__)
|
Chris@16
|
447 # if defined(BOOST_ASIO_MSVC)
|
Chris@16
|
448 # if (_MSC_VER >= 1700)
|
Chris@16
|
449 # define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
|
Chris@16
|
450 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
451 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
452 # endif // !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
453 #endif // !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
|
Chris@16
|
454
|
Chris@16
|
455 // WinRT target.
|
Chris@16
|
456 #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
457 # if defined(__cplusplus_winrt)
|
Chris@16
|
458 # include <winapifamily.h>
|
Chris@16
|
459 # if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
|
Chris@16
|
460 # define BOOST_ASIO_WINDOWS_RUNTIME 1
|
Chris@16
|
461 # endif // WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
|
Chris@16
|
462 # endif // defined(__cplusplus_winrt)
|
Chris@16
|
463 #endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
464
|
Chris@16
|
465 // Windows target. Excludes WinRT.
|
Chris@16
|
466 #if !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
467 # if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
468 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
|
Chris@16
|
469 # define BOOST_ASIO_WINDOWS 1
|
Chris@16
|
470 # elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
Chris@16
|
471 # define BOOST_ASIO_WINDOWS 1
|
Chris@16
|
472 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
|
Chris@16
|
473 # endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
474 #endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
475
|
Chris@16
|
476 // Windows: target OS version.
|
Chris@16
|
477 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
478 # if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
|
Chris@16
|
479 # if defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
480 # pragma message( \
|
Chris@16
|
481 "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\
|
Chris@16
|
482 "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\
|
Chris@16
|
483 "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\
|
Chris@16
|
484 "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).")
|
Chris@16
|
485 # else // defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
486 # warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
|
Chris@16
|
487 # warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
|
Chris@16
|
488 # warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
|
Chris@16
|
489 # endif // defined(_MSC_VER) || defined(__BORLANDC__)
|
Chris@16
|
490 # define _WIN32_WINNT 0x0501
|
Chris@16
|
491 # endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
|
Chris@16
|
492 # if defined(_MSC_VER)
|
Chris@16
|
493 # if defined(_WIN32) && !defined(WIN32)
|
Chris@16
|
494 # if !defined(_WINSOCK2API_)
|
Chris@16
|
495 # define WIN32 // Needed for correct types in winsock2.h
|
Chris@16
|
496 # else // !defined(_WINSOCK2API_)
|
Chris@16
|
497 # error Please define the macro WIN32 in your compiler options
|
Chris@16
|
498 # endif // !defined(_WINSOCK2API_)
|
Chris@16
|
499 # endif // defined(_WIN32) && !defined(WIN32)
|
Chris@16
|
500 # endif // defined(_MSC_VER)
|
Chris@16
|
501 # if defined(__BORLANDC__)
|
Chris@16
|
502 # if defined(__WIN32__) && !defined(WIN32)
|
Chris@16
|
503 # if !defined(_WINSOCK2API_)
|
Chris@16
|
504 # define WIN32 // Needed for correct types in winsock2.h
|
Chris@16
|
505 # else // !defined(_WINSOCK2API_)
|
Chris@16
|
506 # error Please define the macro WIN32 in your compiler options
|
Chris@16
|
507 # endif // !defined(_WINSOCK2API_)
|
Chris@16
|
508 # endif // defined(__WIN32__) && !defined(WIN32)
|
Chris@16
|
509 # endif // defined(__BORLANDC__)
|
Chris@16
|
510 # if defined(__CYGWIN__)
|
Chris@16
|
511 # if !defined(__USE_W32_SOCKETS)
|
Chris@16
|
512 # error You must add -D__USE_W32_SOCKETS to your compiler options.
|
Chris@16
|
513 # endif // !defined(__USE_W32_SOCKETS)
|
Chris@16
|
514 # endif // defined(__CYGWIN__)
|
Chris@16
|
515 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
516
|
Chris@16
|
517 // Windows: minimise header inclusion.
|
Chris@16
|
518 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
519 # if !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
|
Chris@16
|
520 # if !defined(WIN32_LEAN_AND_MEAN)
|
Chris@16
|
521 # define WIN32_LEAN_AND_MEAN
|
Chris@16
|
522 # endif // !defined(WIN32_LEAN_AND_MEAN)
|
Chris@16
|
523 # endif // !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
|
Chris@16
|
524 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
525
|
Chris@16
|
526 // Windows: suppress definition of "min" and "max" macros.
|
Chris@16
|
527 #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
528 # if !defined(BOOST_ASIO_NO_NOMINMAX)
|
Chris@16
|
529 # if !defined(NOMINMAX)
|
Chris@16
|
530 # define NOMINMAX 1
|
Chris@16
|
531 # endif // !defined(NOMINMAX)
|
Chris@16
|
532 # endif // !defined(BOOST_ASIO_NO_NOMINMAX)
|
Chris@16
|
533 #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
534
|
Chris@16
|
535 // Windows: IO Completion Ports.
|
Chris@16
|
536 #if !defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
537 # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
538 # if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
|
Chris@16
|
539 # if !defined(UNDER_CE)
|
Chris@16
|
540 # if !defined(BOOST_ASIO_DISABLE_IOCP)
|
Chris@16
|
541 # define BOOST_ASIO_HAS_IOCP 1
|
Chris@16
|
542 # endif // !defined(BOOST_ASIO_DISABLE_IOCP)
|
Chris@16
|
543 # endif // !defined(UNDER_CE)
|
Chris@16
|
544 # endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
|
Chris@16
|
545 # endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
546 #endif // !defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
547
|
Chris@16
|
548 // Linux: epoll, eventfd and timerfd.
|
Chris@16
|
549 #if defined(__linux__)
|
Chris@16
|
550 # include <linux/version.h>
|
Chris@16
|
551 # if !defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
552 # if !defined(BOOST_ASIO_DISABLE_EPOLL)
|
Chris@16
|
553 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
|
Chris@16
|
554 # define BOOST_ASIO_HAS_EPOLL 1
|
Chris@16
|
555 # endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
|
Chris@16
|
556 # endif // !defined(BOOST_ASIO_DISABLE_EPOLL)
|
Chris@16
|
557 # endif // !defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
558 # if !defined(BOOST_ASIO_HAS_EVENTFD)
|
Chris@16
|
559 # if !defined(BOOST_ASIO_DISABLE_EVENTFD)
|
Chris@16
|
560 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
|
Chris@16
|
561 # define BOOST_ASIO_HAS_EVENTFD 1
|
Chris@16
|
562 # endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
|
Chris@16
|
563 # endif // !defined(BOOST_ASIO_DISABLE_EVENTFD)
|
Chris@16
|
564 # endif // !defined(BOOST_ASIO_HAS_EVENTFD)
|
Chris@16
|
565 # if !defined(BOOST_ASIO_HAS_TIMERFD)
|
Chris@16
|
566 # if defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
567 # if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
|
Chris@16
|
568 # define BOOST_ASIO_HAS_TIMERFD 1
|
Chris@16
|
569 # endif // (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
|
Chris@16
|
570 # endif // defined(BOOST_ASIO_HAS_EPOLL)
|
Chris@16
|
571 # endif // !defined(BOOST_ASIO_HAS_TIMERFD)
|
Chris@16
|
572 #endif // defined(__linux__)
|
Chris@16
|
573
|
Chris@16
|
574 // Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue.
|
Chris@16
|
575 #if (defined(__MACH__) && defined(__APPLE__)) \
|
Chris@16
|
576 || defined(__FreeBSD__) \
|
Chris@16
|
577 || defined(__NetBSD__) \
|
Chris@16
|
578 || defined(__OpenBSD__)
|
Chris@16
|
579 # if !defined(BOOST_ASIO_HAS_KQUEUE)
|
Chris@16
|
580 # if !defined(BOOST_ASIO_DISABLE_KQUEUE)
|
Chris@16
|
581 # define BOOST_ASIO_HAS_KQUEUE 1
|
Chris@16
|
582 # endif // !defined(BOOST_ASIO_DISABLE_KQUEUE)
|
Chris@16
|
583 # endif // !defined(BOOST_ASIO_HAS_KQUEUE)
|
Chris@16
|
584 #endif // (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
585 // || defined(__FreeBSD__)
|
Chris@16
|
586 // || defined(__NetBSD__)
|
Chris@16
|
587 // || defined(__OpenBSD__)
|
Chris@16
|
588
|
Chris@16
|
589 // Solaris: /dev/poll.
|
Chris@16
|
590 #if defined(__sun)
|
Chris@16
|
591 # if !defined(BOOST_ASIO_HAS_DEV_POLL)
|
Chris@16
|
592 # if !defined(BOOST_ASIO_DISABLE_DEV_POLL)
|
Chris@16
|
593 # define BOOST_ASIO_HAS_DEV_POLL 1
|
Chris@16
|
594 # endif // !defined(BOOST_ASIO_DISABLE_DEV_POLL)
|
Chris@16
|
595 # endif // !defined(BOOST_ASIO_HAS_DEV_POLL)
|
Chris@16
|
596 #endif // defined(__sun)
|
Chris@16
|
597
|
Chris@16
|
598 // Serial ports.
|
Chris@16
|
599 #if !defined(BOOST_ASIO_HAS_SERIAL_PORT)
|
Chris@16
|
600 # if defined(BOOST_ASIO_HAS_IOCP) \
|
Chris@16
|
601 || !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
602 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
603 && !defined(__CYGWIN__)
|
Chris@16
|
604 # if !defined(__SYMBIAN32__)
|
Chris@16
|
605 # if !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
|
Chris@16
|
606 # define BOOST_ASIO_HAS_SERIAL_PORT 1
|
Chris@16
|
607 # endif // !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
|
Chris@16
|
608 # endif // !defined(__SYMBIAN32__)
|
Chris@16
|
609 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
610 // || !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
611 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
612 // && !defined(__CYGWIN__)
|
Chris@16
|
613 #endif // !defined(BOOST_ASIO_HAS_SERIAL_PORT)
|
Chris@16
|
614
|
Chris@16
|
615 // Windows: stream handles.
|
Chris@16
|
616 #if !defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
617 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
618 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
619 # define BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE 1
|
Chris@16
|
620 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
621 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
622 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
|
Chris@16
|
623
|
Chris@16
|
624 // Windows: random access handles.
|
Chris@16
|
625 #if !defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
626 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
627 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
628 # define BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1
|
Chris@16
|
629 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
630 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
631 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
|
Chris@16
|
632
|
Chris@16
|
633 // Windows: object handles.
|
Chris@16
|
634 #if !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
635 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
636 # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
637 # if !defined(UNDER_CE)
|
Chris@16
|
638 # define BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE 1
|
Chris@16
|
639 # endif // !defined(UNDER_CE)
|
Chris@16
|
640 # endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
|
Chris@16
|
641 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
642 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_OBJECT_HANDLE)
|
Chris@16
|
643
|
Chris@16
|
644 // Windows: OVERLAPPED wrapper.
|
Chris@16
|
645 #if !defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
646 # if !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
647 # if defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
648 # define BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1
|
Chris@16
|
649 # endif // defined(BOOST_ASIO_HAS_IOCP)
|
Chris@16
|
650 # endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
651 #endif // !defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
|
Chris@16
|
652
|
Chris@16
|
653 // POSIX: stream-oriented file descriptors.
|
Chris@16
|
654 #if !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
655 # if !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
656 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
657 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
658 && !defined(__CYGWIN__)
|
Chris@16
|
659 # define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
|
Chris@16
|
660 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
661 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
662 // && !defined(__CYGWIN__)
|
Chris@16
|
663 # endif // !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
664 #endif // !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
|
Chris@16
|
665
|
Chris@16
|
666 // UNIX domain sockets.
|
Chris@16
|
667 #if !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
|
Chris@16
|
668 # if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
|
Chris@16
|
669 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
670 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
671 && !defined(__CYGWIN__)
|
Chris@16
|
672 # define BOOST_ASIO_HAS_LOCAL_SOCKETS 1
|
Chris@16
|
673 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
674 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
675 // && !defined(__CYGWIN__)
|
Chris@16
|
676 # endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
|
Chris@16
|
677 #endif // !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
|
Chris@16
|
678
|
Chris@16
|
679 // Can use sigaction() instead of signal().
|
Chris@16
|
680 #if !defined(BOOST_ASIO_HAS_SIGACTION)
|
Chris@16
|
681 # if !defined(BOOST_ASIO_DISABLE_SIGACTION)
|
Chris@16
|
682 # if !defined(BOOST_ASIO_WINDOWS) \
|
Chris@16
|
683 && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
|
Chris@16
|
684 && !defined(__CYGWIN__)
|
Chris@16
|
685 # define BOOST_ASIO_HAS_SIGACTION 1
|
Chris@16
|
686 # endif // !defined(BOOST_ASIO_WINDOWS)
|
Chris@16
|
687 // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
688 // && !defined(__CYGWIN__)
|
Chris@16
|
689 # endif // !defined(BOOST_ASIO_DISABLE_SIGACTION)
|
Chris@16
|
690 #endif // !defined(BOOST_ASIO_HAS_SIGACTION)
|
Chris@16
|
691
|
Chris@16
|
692 // Can use signal().
|
Chris@16
|
693 #if !defined(BOOST_ASIO_HAS_SIGNAL)
|
Chris@16
|
694 # if !defined(BOOST_ASIO_DISABLE_SIGNAL)
|
Chris@16
|
695 # if !defined(UNDER_CE)
|
Chris@16
|
696 # define BOOST_ASIO_HAS_SIGNAL 1
|
Chris@16
|
697 # endif // !defined(UNDER_CE)
|
Chris@16
|
698 # endif // !defined(BOOST_ASIO_DISABLE_SIGNAL)
|
Chris@16
|
699 #endif // !defined(BOOST_ASIO_HAS_SIGNAL)
|
Chris@16
|
700
|
Chris@16
|
701 // Whether standard iostreams are disabled.
|
Chris@16
|
702 #if !defined(BOOST_ASIO_NO_IOSTREAM)
|
Chris@16
|
703 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM)
|
Chris@16
|
704 # define BOOST_ASIO_NO_IOSTREAM 1
|
Chris@16
|
705 # endif // !defined(BOOST_NO_IOSTREAM)
|
Chris@16
|
706 #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
|
Chris@16
|
707
|
Chris@16
|
708 // Whether exception handling is disabled.
|
Chris@16
|
709 #if !defined(BOOST_ASIO_NO_EXCEPTIONS)
|
Chris@16
|
710 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_EXCEPTIONS)
|
Chris@16
|
711 # define BOOST_ASIO_NO_EXCEPTIONS 1
|
Chris@16
|
712 # endif // !defined(BOOST_NO_EXCEPTIONS)
|
Chris@16
|
713 #endif // !defined(BOOST_ASIO_NO_EXCEPTIONS)
|
Chris@16
|
714
|
Chris@16
|
715 // Whether the typeid operator is supported.
|
Chris@16
|
716 #if !defined(BOOST_ASIO_NO_TYPEID)
|
Chris@16
|
717 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_TYPEID)
|
Chris@16
|
718 # define BOOST_ASIO_NO_TYPEID 1
|
Chris@16
|
719 # endif // !defined(BOOST_NO_TYPEID)
|
Chris@16
|
720 #endif // !defined(BOOST_ASIO_NO_TYPEID)
|
Chris@16
|
721
|
Chris@16
|
722 // On POSIX (and POSIX-like) platforms we need to include unistd.h in order to
|
Chris@16
|
723 // get access to the various platform feature macros, e.g. to be able to test
|
Chris@16
|
724 // for threads support.
|
Chris@16
|
725 #if !defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@16
|
726 # if !defined(BOOST_ASIO_HAS_BOOST_CONFIG)
|
Chris@16
|
727 # if defined(unix) \
|
Chris@16
|
728 || defined(__unix) \
|
Chris@16
|
729 || defined(_XOPEN_SOURCE) \
|
Chris@16
|
730 || defined(_POSIX_SOURCE) \
|
Chris@16
|
731 || (defined(__MACH__) && defined(__APPLE__)) \
|
Chris@16
|
732 || defined(__FreeBSD__) \
|
Chris@16
|
733 || defined(__NetBSD__) \
|
Chris@16
|
734 || defined(__OpenBSD__) \
|
Chris@16
|
735 || defined(__linux__)
|
Chris@16
|
736 # define BOOST_ASIO_HAS_UNISTD_H 1
|
Chris@16
|
737 # endif
|
Chris@16
|
738 # endif // !defined(BOOST_ASIO_HAS_BOOST_CONFIG)
|
Chris@16
|
739 #endif // !defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@16
|
740 #if defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@16
|
741 # include <unistd.h>
|
Chris@16
|
742 #endif // defined(BOOST_ASIO_HAS_UNISTD_H)
|
Chris@16
|
743
|
Chris@16
|
744 // Threads.
|
Chris@16
|
745 #if !defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
746 # if !defined(BOOST_ASIO_DISABLE_THREADS)
|
Chris@16
|
747 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
|
Chris@16
|
748 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
749 # elif defined(_MSC_VER) && defined(_MT)
|
Chris@16
|
750 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
751 # elif defined(__BORLANDC__) && defined(__MT__)
|
Chris@16
|
752 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
753 # elif defined(_POSIX_THREADS)
|
Chris@16
|
754 # define BOOST_ASIO_HAS_THREADS 1
|
Chris@16
|
755 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
|
Chris@16
|
756 # endif // !defined(BOOST_ASIO_DISABLE_THREADS)
|
Chris@16
|
757 #endif // !defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
758
|
Chris@16
|
759 // POSIX threads.
|
Chris@16
|
760 #if !defined(BOOST_ASIO_HAS_PTHREADS)
|
Chris@16
|
761 # if defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
762 # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
|
Chris@16
|
763 # define BOOST_ASIO_HAS_PTHREADS 1
|
Chris@16
|
764 # elif defined(_POSIX_THREADS)
|
Chris@16
|
765 # define BOOST_ASIO_HAS_PTHREADS 1
|
Chris@16
|
766 # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
|
Chris@16
|
767 # endif // defined(BOOST_ASIO_HAS_THREADS)
|
Chris@16
|
768 #endif // !defined(BOOST_ASIO_HAS_PTHREADS)
|
Chris@16
|
769
|
Chris@16
|
770 // Helper to prevent macro expansion.
|
Chris@16
|
771 #define BOOST_ASIO_PREVENT_MACRO_SUBSTITUTION
|
Chris@16
|
772
|
Chris@16
|
773 // Helper to define in-class constants.
|
Chris@16
|
774 #if !defined(BOOST_ASIO_STATIC_CONSTANT)
|
Chris@16
|
775 # if !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
776 # define BOOST_ASIO_STATIC_CONSTANT(type, assignment) \
|
Chris@16
|
777 BOOST_STATIC_CONSTANT(type, assignment)
|
Chris@16
|
778 # else // !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
779 # define BOOST_ASIO_STATIC_CONSTANT(type, assignment) \
|
Chris@16
|
780 static const type assignment
|
Chris@16
|
781 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_STATIC_CONSTANT)
|
Chris@16
|
782 #endif // !defined(BOOST_ASIO_STATIC_CONSTANT)
|
Chris@16
|
783
|
Chris@16
|
784 // Boost array library.
|
Chris@16
|
785 #if !defined(BOOST_ASIO_HAS_BOOST_ARRAY)
|
Chris@16
|
786 # if !defined(BOOST_ASIO_DISABLE_BOOST_ARRAY)
|
Chris@16
|
787 # define BOOST_ASIO_HAS_BOOST_ARRAY 1
|
Chris@16
|
788 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_ARRAY)
|
Chris@16
|
789 #endif // !defined(BOOST_ASIO_HAS_BOOST_ARRAY)
|
Chris@16
|
790
|
Chris@16
|
791 // Boost assert macro.
|
Chris@16
|
792 #if !defined(BOOST_ASIO_HAS_BOOST_ASSERT)
|
Chris@16
|
793 # if !defined(BOOST_ASIO_DISABLE_BOOST_ASSERT)
|
Chris@16
|
794 # define BOOST_ASIO_HAS_BOOST_ASSERT 1
|
Chris@16
|
795 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_ASSERT)
|
Chris@16
|
796 #endif // !defined(BOOST_ASIO_HAS_BOOST_ASSERT)
|
Chris@16
|
797
|
Chris@16
|
798 // Boost limits header.
|
Chris@16
|
799 #if !defined(BOOST_ASIO_HAS_BOOST_LIMITS)
|
Chris@16
|
800 # if !defined(BOOST_ASIO_DISABLE_BOOST_LIMITS)
|
Chris@16
|
801 # define BOOST_ASIO_HAS_BOOST_LIMITS 1
|
Chris@16
|
802 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_LIMITS)
|
Chris@16
|
803 #endif // !defined(BOOST_ASIO_HAS_BOOST_LIMITS)
|
Chris@16
|
804
|
Chris@16
|
805 // Boost throw_exception function.
|
Chris@16
|
806 #if !defined(BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION)
|
Chris@16
|
807 # if !defined(BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION)
|
Chris@16
|
808 # define BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION 1
|
Chris@16
|
809 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_THROW_EXCEPTION)
|
Chris@16
|
810 #endif // !defined(BOOST_ASIO_HAS_BOOST_THROW_EXCEPTION)
|
Chris@16
|
811
|
Chris@16
|
812 // Boost regex library.
|
Chris@16
|
813 #if !defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
Chris@16
|
814 # if !defined(BOOST_ASIO_DISABLE_BOOST_REGEX)
|
Chris@16
|
815 # define BOOST_ASIO_HAS_BOOST_REGEX 1
|
Chris@16
|
816 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_REGEX)
|
Chris@16
|
817 #endif // !defined(BOOST_ASIO_HAS_BOOST_REGEX)
|
Chris@16
|
818
|
Chris@16
|
819 // Boost bind function.
|
Chris@16
|
820 #if !defined(BOOST_ASIO_HAS_BOOST_BIND)
|
Chris@16
|
821 # if !defined(BOOST_ASIO_DISABLE_BOOST_BIND)
|
Chris@16
|
822 # define BOOST_ASIO_HAS_BOOST_BIND 1
|
Chris@16
|
823 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_BIND)
|
Chris@16
|
824 #endif // !defined(BOOST_ASIO_HAS_BOOST_BIND)
|
Chris@16
|
825
|
Chris@16
|
826 // Boost's BOOST_WORKAROUND macro.
|
Chris@16
|
827 #if !defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
|
Chris@16
|
828 # if !defined(BOOST_ASIO_DISABLE_BOOST_WORKAROUND)
|
Chris@16
|
829 # define BOOST_ASIO_HAS_BOOST_WORKAROUND 1
|
Chris@16
|
830 # endif // !defined(BOOST_ASIO_DISABLE_BOOST_WORKAROUND)
|
Chris@16
|
831 #endif // !defined(BOOST_ASIO_HAS_BOOST_WORKAROUND)
|
Chris@16
|
832
|
Chris@16
|
833 // Microsoft Visual C++'s secure C runtime library.
|
Chris@16
|
834 #if !defined(BOOST_ASIO_HAS_SECURE_RTL)
|
Chris@16
|
835 # if !defined(BOOST_ASIO_DISABLE_SECURE_RTL)
|
Chris@16
|
836 # if defined(BOOST_ASIO_MSVC) \
|
Chris@16
|
837 && (BOOST_ASIO_MSVC >= 1400) \
|
Chris@16
|
838 && !defined(UNDER_CE)
|
Chris@16
|
839 # define BOOST_ASIO_HAS_SECURE_RTL 1
|
Chris@16
|
840 # endif // defined(BOOST_ASIO_MSVC)
|
Chris@16
|
841 // && (BOOST_ASIO_MSVC >= 1400)
|
Chris@16
|
842 // && !defined(UNDER_CE)
|
Chris@16
|
843 # endif // !defined(BOOST_ASIO_DISABLE_SECURE_RTL)
|
Chris@16
|
844 #endif // !defined(BOOST_ASIO_HAS_SECURE_RTL)
|
Chris@16
|
845
|
Chris@16
|
846 // Handler hooking. Disabled for ancient Borland C++ and gcc compilers.
|
Chris@16
|
847 #if !defined(BOOST_ASIO_HAS_HANDLER_HOOKS)
|
Chris@16
|
848 # if !defined(BOOST_ASIO_DISABLE_HANDLER_HOOKS)
|
Chris@16
|
849 # if defined(__GNUC__)
|
Chris@16
|
850 # if (__GNUC__ >= 3)
|
Chris@16
|
851 # define BOOST_ASIO_HAS_HANDLER_HOOKS 1
|
Chris@16
|
852 # endif // (__GNUC__ >= 3)
|
Chris@16
|
853 # elif !defined(__BORLANDC__)
|
Chris@16
|
854 # define BOOST_ASIO_HAS_HANDLER_HOOKS 1
|
Chris@16
|
855 # endif // !defined(__BORLANDC__)
|
Chris@16
|
856 # endif // !defined(BOOST_ASIO_DISABLE_HANDLER_HOOKS)
|
Chris@16
|
857 #endif // !defined(BOOST_ASIO_HAS_HANDLER_HOOKS)
|
Chris@16
|
858
|
Chris@16
|
859 // Support for the __thread keyword extension.
|
Chris@16
|
860 #if !defined(BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
|
Chris@16
|
861 # if defined(__linux__)
|
Chris@16
|
862 # if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
Chris@16
|
863 # if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
|
Chris@16
|
864 # if !defined(__INTEL_COMPILER) && !defined(__ICL)
|
Chris@16
|
865 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
866 # define BOOST_ASIO_THREAD_KEYWORD __thread
|
Chris@16
|
867 # elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
|
Chris@16
|
868 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
869 # endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
|
Chris@16
|
870 # endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
|
Chris@16
|
871 # endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
Chris@16
|
872 # endif // defined(__linux__)
|
Chris@16
|
873 # if defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
874 # if (_MSC_VER >= 1700)
|
Chris@16
|
875 # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
|
Chris@16
|
876 # define BOOST_ASIO_THREAD_KEYWORD __declspec(thread)
|
Chris@16
|
877 # endif // (_MSC_VER >= 1700)
|
Chris@16
|
878 # endif // defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME)
|
Chris@16
|
879 #endif // !defined(BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
|
Chris@16
|
880 #if !defined(BOOST_ASIO_THREAD_KEYWORD)
|
Chris@16
|
881 # define BOOST_ASIO_THREAD_KEYWORD __thread
|
Chris@16
|
882 #endif // !defined(BOOST_ASIO_THREAD_KEYWORD)
|
Chris@16
|
883
|
Chris@16
|
884 // Support for POSIX ssize_t typedef.
|
Chris@16
|
885 #if !defined(BOOST_ASIO_DISABLE_SSIZE_T)
|
Chris@16
|
886 # if defined(__linux__) \
|
Chris@16
|
887 || (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
888 # define BOOST_ASIO_HAS_SSIZE_T 1
|
Chris@16
|
889 # endif // defined(__linux__)
|
Chris@16
|
890 // || (defined(__MACH__) && defined(__APPLE__))
|
Chris@16
|
891 #endif // !defined(BOOST_ASIO_DISABLE_SSIZE_T)
|
Chris@16
|
892
|
Chris@16
|
893 #endif // BOOST_ASIO_DETAIL_CONFIG_HPP
|