config.hpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. // Copyright (C) 2001-2003
  2. // William E. Kempf
  3. // Copyright (C) 2011-2013 Vicente J. Botet Escriba
  4. //
  5. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  6. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. #ifndef BOOST_THREAD_CONFIG_WEK01032003_HPP
  8. #define BOOST_THREAD_CONFIG_WEK01032003_HPP
  9. #include <boost/config.hpp>
  10. #include <boost/detail/workaround.hpp>
  11. #include <boost/thread/detail/platform.hpp>
  12. //#define BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
  13. // ATTRIBUTE_MAY_ALIAS
  14. #if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 302 \
  15. && !defined(__INTEL_COMPILER)
  16. // GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with
  17. // regard to violation of the strict aliasing rules.
  18. #define BOOST_THREAD_DETAIL_USE_ATTRIBUTE_MAY_ALIAS
  19. #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS __attribute__((__may_alias__))
  20. #else
  21. #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
  22. #endif
  23. #if defined BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED
  24. #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX) \
  25. if (EXPR) {} else boost::throw_exception(EX)
  26. #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \
  27. if (EXPR) {} else boost::throw_exception(EX)
  28. #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \
  29. boost::throw_exception(EX)
  30. #else
  31. #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX)
  32. #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \
  33. (void)(EXPR)
  34. #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \
  35. return (RET)
  36. #endif
  37. // This compiler doesn't support Boost.Chrono
  38. #if defined __IBMCPP__ && (__IBMCPP__ < 1100) \
  39. && ! defined BOOST_THREAD_DONT_USE_CHRONO
  40. #define BOOST_THREAD_DONT_USE_CHRONO
  41. #if ! defined BOOST_THREAD_USES_DATETIME
  42. #define BOOST_THREAD_USES_DATETIME
  43. #endif
  44. #endif
  45. // This compiler doesn't support Boost.Move
  46. #if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) \
  47. && ! defined BOOST_THREAD_DONT_USE_MOVE
  48. #define BOOST_THREAD_DONT_USE_MOVE
  49. #endif
  50. // This compiler doesn't support Boost.Container Allocators files
  51. #if defined __SUNPRO_CC \
  52. && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
  53. #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
  54. #endif
  55. #if defined _WIN32_WCE && _WIN32_WCE==0x501 \
  56. && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
  57. #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
  58. #endif
  59. #if defined BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX || defined BOOST_NO_CXX11_HDR_INITIALIZER_LIST
  60. #define BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
  61. #define BOOST_THREAD_NO_MAKE_LOCK_GUARD
  62. #define BOOST_THREAD_NO_MAKE_STRICT_LOCK
  63. #define BOOST_THREAD_NO_MAKE_NESTED_STRICT_LOCK
  64. #endif
  65. #if defined(BOOST_NO_CXX11_HDR_TUPLE) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  66. #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS
  67. #define BOOST_THREAD_NO_SYNCHRONIZE
  68. #elif defined _MSC_VER && _MSC_VER <= 1600
  69. // C++ features supported by VC++ 10 (aka 2010)
  70. #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS
  71. #define BOOST_THREAD_NO_SYNCHRONIZE
  72. #endif
  73. /// BASIC_THREAD_ID
  74. #if ! defined BOOST_THREAD_DONT_PROVIDE_BASIC_THREAD_ID \
  75. && ! defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
  76. #define BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
  77. #endif
  78. /// RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR
  79. //#if defined BOOST_NO_CXX11_RVALUE_REFERENCES || defined BOOST_MSVC
  80. #define BOOST_THREAD_RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR
  81. //#endif
  82. // Default version
  83. #if !defined BOOST_THREAD_VERSION
  84. #define BOOST_THREAD_VERSION 2
  85. #else
  86. #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3 && BOOST_THREAD_VERSION!=4
  87. #error "BOOST_THREAD_VERSION must be 2, 3 or 4"
  88. #endif
  89. #endif
  90. // CHRONO
  91. // Uses Boost.Chrono by default if not stated the opposite defining BOOST_THREAD_DONT_USE_CHRONO
  92. #if ! defined BOOST_THREAD_DONT_USE_CHRONO \
  93. && ! defined BOOST_THREAD_USES_CHRONO
  94. #define BOOST_THREAD_USES_CHRONO
  95. #endif
  96. #if ! defined BOOST_THREAD_DONT_USE_ATOMIC \
  97. && ! defined BOOST_THREAD_USES_ATOMIC
  98. #define BOOST_THREAD_USES_ATOMIC
  99. //#define BOOST_THREAD_DONT_USE_ATOMIC
  100. #endif
  101. #if defined BOOST_THREAD_USES_ATOMIC
  102. // Andrey Semashev
  103. #define BOOST_THREAD_ONCE_ATOMIC
  104. #else
  105. //#elif ! defined BOOST_NO_CXX11_THREAD_LOCAL && ! defined BOOST_NO_THREAD_LOCAL && ! defined BOOST_THREAD_NO_UINT32_PSEUDO_ATOMIC
  106. // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html#Appendix
  107. #define BOOST_THREAD_ONCE_FAST_EPOCH
  108. #endif
  109. #if BOOST_THREAD_VERSION==2
  110. // PROVIDE_PROMISE_LAZY
  111. #if ! defined BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY \
  112. && ! defined BOOST_THREAD_PROVIDES_PROMISE_LAZY
  113. #define BOOST_THREAD_PROVIDES_PROMISE_LAZY
  114. #endif
  115. // PROVIDE_THREAD_EQ
  116. #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_EQ \
  117. && ! defined BOOST_THREAD_PROVIDES_THREAD_EQ
  118. #define BOOST_THREAD_PROVIDES_THREAD_EQ
  119. #endif
  120. #endif
  121. #if BOOST_THREAD_VERSION>=3
  122. // ONCE_CXX11
  123. // fixme BOOST_THREAD_PROVIDES_ONCE_CXX11 doesn't works when thread.cpp is compiled BOOST_THREAD_VERSION 3
  124. #if ! defined BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11 \
  125. && ! defined BOOST_THREAD_PROVIDES_ONCE_CXX11
  126. #define BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11
  127. #endif
  128. // THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
  129. #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE \
  130. && ! defined BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
  131. #define BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
  132. #endif
  133. // THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
  134. #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE \
  135. && ! defined BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
  136. #define BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
  137. #endif
  138. // PROVIDE_FUTURE
  139. #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE \
  140. && ! defined BOOST_THREAD_PROVIDES_FUTURE
  141. #define BOOST_THREAD_PROVIDES_FUTURE
  142. #endif
  143. // FUTURE_CTOR_ALLOCATORS
  144. #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS \
  145. && ! defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
  146. #define BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
  147. #endif
  148. // SHARED_MUTEX_UPWARDS_CONVERSIONS
  149. #if ! defined BOOST_THREAD_DONT_PROVIDE_SHARED_MUTEX_UPWARDS_CONVERSIONS \
  150. && ! defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
  151. #define BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
  152. #endif
  153. // PROVIDE_EXPLICIT_LOCK_CONVERSION
  154. #if ! defined BOOST_THREAD_DONT_PROVIDE_EXPLICIT_LOCK_CONVERSION \
  155. && ! defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
  156. #define BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
  157. #endif
  158. // GENERIC_SHARED_MUTEX_ON_WIN
  159. #if ! defined BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN \
  160. && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
  161. #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
  162. #endif
  163. // USE_MOVE
  164. #if ! defined BOOST_THREAD_DONT_USE_MOVE \
  165. && ! defined BOOST_THREAD_USES_MOVE
  166. #define BOOST_THREAD_USES_MOVE
  167. #endif
  168. #endif
  169. // deprecated since version 4
  170. #if BOOST_THREAD_VERSION < 4
  171. // NESTED_LOCKS
  172. #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \
  173. && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
  174. #define BOOST_THREAD_PROVIDES_NESTED_LOCKS
  175. #endif
  176. // CONDITION
  177. #if ! defined BOOST_THREAD_PROVIDES_CONDITION \
  178. && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION
  179. #define BOOST_THREAD_PROVIDES_CONDITION
  180. #endif
  181. // USE_DATETIME
  182. #if ! defined BOOST_THREAD_DONT_USE_DATETIME \
  183. && ! defined BOOST_THREAD_USES_DATETIME
  184. #define BOOST_THREAD_USES_DATETIME
  185. #endif
  186. #endif
  187. #if BOOST_THREAD_VERSION>=4
  188. // SIGNATURE_PACKAGED_TASK
  189. #if ! defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK \
  190. && ! defined BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK
  191. #define BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK
  192. #endif
  193. // VARIADIC_THREAD
  194. #if ! defined BOOST_THREAD_PROVIDES_VARIADIC_THREAD \
  195. && ! defined BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD
  196. #if ! defined(BOOST_NO_SFINAE_EXPR) && \
  197. ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
  198. ! defined(BOOST_NO_CXX11_DECLTYPE) && \
  199. ! defined(BOOST_NO_CXX11_DECLTYPE_N3276) && \
  200. ! defined(BOOST_NO_CXX11_AUTO) && \
  201. ! defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
  202. ! defined(BOOST_NO_CXX11_HDR_TUPLE)
  203. #define BOOST_THREAD_PROVIDES_VARIADIC_THREAD
  204. #endif
  205. #endif
  206. // MAKE_READY_AT_THREAD_EXIT
  207. #if ! defined BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT \
  208. && ! defined BOOST_THREAD_DONT_PROVIDE_MAKE_READY_AT_THREAD_EXIT
  209. //#if defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK && defined(BOOST_THREAD_PROVIDES_VARIADIC_THREAD)
  210. #define BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT
  211. //#endif
  212. #endif
  213. // FUTURE_CONTINUATION
  214. #if ! defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION \
  215. && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CONTINUATION
  216. #define BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
  217. #endif
  218. #if ! defined BOOST_THREAD_PROVIDES_FUTURE_UNWRAP \
  219. && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_UNWRAP
  220. #define BOOST_THREAD_PROVIDES_FUTURE_UNWRAP
  221. #endif
  222. // FUTURE_INVALID_AFTER_GET
  223. #if ! defined BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET \
  224. && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_INVALID_AFTER_GET
  225. #define BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET
  226. #endif
  227. // NESTED_LOCKS
  228. #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \
  229. && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
  230. #define BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
  231. #endif
  232. // CONDITION
  233. #if ! defined BOOST_THREAD_PROVIDES_CONDITION \
  234. && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION
  235. #define BOOST_THREAD_DONT_PROVIDE_CONDITION
  236. #endif
  237. #endif // BOOST_THREAD_VERSION>=4
  238. // INTERRUPTIONS
  239. #if ! defined BOOST_THREAD_PROVIDES_INTERRUPTIONS \
  240. && ! defined BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
  241. #define BOOST_THREAD_PROVIDES_INTERRUPTIONS
  242. #endif
  243. // CORRELATIONS
  244. // EXPLICIT_LOCK_CONVERSION.
  245. #if defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
  246. #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION explicit
  247. #else
  248. #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION
  249. #endif
  250. // BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN is defined if BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
  251. #if defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS \
  252. && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
  253. #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
  254. #endif
  255. // For C++11 call_once interface the compiler MUST support constexpr.
  256. // Otherwise once_flag would be initialized during dynamic initialization stage, which is not thread-safe.
  257. #if defined(BOOST_THREAD_PROVIDES_ONCE_CXX11)
  258. #if defined(BOOST_NO_CXX11_CONSTEXPR)
  259. #undef BOOST_THREAD_PROVIDES_ONCE_CXX11
  260. #endif
  261. #endif
  262. #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_DATETIME
  263. #undef BOOST_THREAD_DONT_USE_DATETIME
  264. #define BOOST_THREAD_USES_DATETIME
  265. #endif
  266. #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_CHRONO
  267. #undef BOOST_THREAD_DONT_USE_CHRONO
  268. #define BOOST_THREAD_USES_CHRONO
  269. #endif
  270. // BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55
  271. // BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55
  272. #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
  273. #if ! defined BOOST_THREAD_PROVIDES_THREAD_EQ
  274. #define BOOST_THREAD_PROVIDES_THREAD_EQ
  275. #endif
  276. #endif
  277. #if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
  278. # pragma warn -8008 // Condition always true/false
  279. # pragma warn -8080 // Identifier declared but never used
  280. # pragma warn -8057 // Parameter never used
  281. # pragma warn -8066 // Unreachable code
  282. #endif
  283. #include <boost/thread/detail/platform.hpp>
  284. #if defined(BOOST_THREAD_PLATFORM_WIN32)
  285. #else
  286. # if defined(BOOST_HAS_PTHREAD_DELAY_NP) || defined(BOOST_HAS_NANOSLEEP)
  287. # define BOOST_THREAD_SLEEP_FOR_IS_STEADY
  288. # endif
  289. #endif
  290. // provided for backwards compatibility, since this
  291. // macro was used for several releases by mistake.
  292. #if defined(BOOST_THREAD_DYN_DLL) && ! defined BOOST_THREAD_DYN_LINK
  293. # define BOOST_THREAD_DYN_LINK
  294. #endif
  295. // compatibility with the rest of Boost's auto-linking code:
  296. #if defined(BOOST_THREAD_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
  297. # undef BOOST_THREAD_USE_LIB
  298. # define BOOST_THREAD_USE_DLL
  299. #endif
  300. #if defined(BOOST_THREAD_BUILD_DLL) //Build dll
  301. #elif defined(BOOST_THREAD_BUILD_LIB) //Build lib
  302. #elif defined(BOOST_THREAD_USE_DLL) //Use dll
  303. #elif defined(BOOST_THREAD_USE_LIB) //Use lib
  304. #else //Use default
  305. # if defined(BOOST_THREAD_PLATFORM_WIN32)
  306. # if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) \
  307. || defined(__MINGW32__) || defined(MINGW32) || defined(BOOST_MINGW32)
  308. //For compilers supporting auto-tss cleanup
  309. //with Boost.Threads lib, use Boost.Threads lib
  310. # define BOOST_THREAD_USE_LIB
  311. # else
  312. //For compilers not yet supporting auto-tss cleanup
  313. //with Boost.Threads lib, use Boost.Threads dll
  314. # define BOOST_THREAD_USE_DLL
  315. # endif
  316. # else
  317. # define BOOST_THREAD_USE_LIB
  318. # endif
  319. #endif
  320. #if defined(BOOST_HAS_DECLSPEC)
  321. # if defined(BOOST_THREAD_BUILD_DLL) //Build dll
  322. # define BOOST_THREAD_DECL BOOST_SYMBOL_EXPORT
  323. //# define BOOST_THREAD_DECL __declspec(dllexport)
  324. # elif defined(BOOST_THREAD_USE_DLL) //Use dll
  325. # define BOOST_THREAD_DECL BOOST_SYMBOL_IMPORT
  326. //# define BOOST_THREAD_DECL __declspec(dllimport)
  327. # else
  328. # define BOOST_THREAD_DECL
  329. # endif
  330. #elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
  331. # define BOOST_THREAD_DECL BOOST_SYMBOL_VISIBLE
  332. #else
  333. # define BOOST_THREAD_DECL
  334. #endif // BOOST_HAS_DECLSPEC
  335. //
  336. // Automatically link to the correct build variant where possible.
  337. //
  338. #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_THREAD_NO_LIB) && !defined(BOOST_THREAD_BUILD_DLL) && !defined(BOOST_THREAD_BUILD_LIB)
  339. //
  340. // Tell the autolink to link dynamically, this will get undef'ed by auto_link.hpp
  341. // once it's done with it:
  342. //
  343. #if defined(BOOST_THREAD_USE_DLL)
  344. # define BOOST_DYN_LINK
  345. #endif
  346. //
  347. // Set the name of our library, this will get undef'ed by auto_link.hpp
  348. // once it's done with it:
  349. //
  350. #if defined(BOOST_THREAD_LIB_NAME)
  351. # define BOOST_LIB_NAME BOOST_THREAD_LIB_NAME
  352. #else
  353. # define BOOST_LIB_NAME boost_thread
  354. #endif
  355. //
  356. // If we're importing code from a dll, then tell auto_link.hpp about it:
  357. //
  358. // And include the header that does the work:
  359. //
  360. #include <boost/config/auto_link.hpp>
  361. #endif // auto-linking disabled
  362. #endif // BOOST_THREAD_CONFIG_WEK1032003_HPP
  363. // Change Log:
  364. // 22 Jan 05 Roland Schwarz (speedsnail)
  365. // Usage of BOOST_HAS_DECLSPEC macro.
  366. // Default again is static lib usage.
  367. // BOOST_DYN_LINK only defined when autolink included.