Chris@16: // Copyright (C) 2001-2003 Chris@16: // William E. Kempf Chris@16: // Copyright (C) 2011-2013 Vicente J. Botet Escriba Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_THREAD_CONFIG_WEK01032003_HPP Chris@16: #define BOOST_THREAD_CONFIG_WEK01032003_HPP Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: //#define BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS Chris@16: // ATTRIBUTE_MAY_ALIAS Chris@16: Chris@101: #if defined(__GNUC__) && !defined(__INTEL_COMPILER) Chris@16: Chris@16: // GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with Chris@16: // regard to violation of the strict aliasing rules. Chris@16: Chris@16: #define BOOST_THREAD_DETAIL_USE_ATTRIBUTE_MAY_ALIAS Chris@16: #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS __attribute__((__may_alias__)) Chris@16: #else Chris@16: #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS Chris@16: #endif Chris@16: Chris@16: Chris@16: #if defined BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED Chris@16: #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX) \ Chris@16: if (EXPR) {} else boost::throw_exception(EX) Chris@16: #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \ Chris@16: if (EXPR) {} else boost::throw_exception(EX) Chris@16: #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \ Chris@16: boost::throw_exception(EX) Chris@16: #else Chris@16: #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX) Chris@16: #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \ Chris@16: (void)(EXPR) Chris@16: #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \ Chris@16: return (RET) Chris@16: #endif Chris@16: Chris@16: // This compiler doesn't support Boost.Chrono Chris@16: #if defined __IBMCPP__ && (__IBMCPP__ < 1100) \ Chris@16: && ! defined BOOST_THREAD_DONT_USE_CHRONO Chris@16: #define BOOST_THREAD_DONT_USE_CHRONO Chris@16: #if ! defined BOOST_THREAD_USES_DATETIME Chris@16: #define BOOST_THREAD_USES_DATETIME Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // This compiler doesn't support Boost.Move Chris@16: #if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) \ Chris@16: && ! defined BOOST_THREAD_DONT_USE_MOVE Chris@16: #define BOOST_THREAD_DONT_USE_MOVE Chris@16: #endif Chris@16: Chris@16: // This compiler doesn't support Boost.Container Allocators files Chris@16: #if defined __SUNPRO_CC \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS Chris@16: #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS Chris@16: #endif Chris@16: Chris@16: #if defined _WIN32_WCE && _WIN32_WCE==0x501 \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS Chris@16: #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS Chris@16: #endif Chris@16: Chris@16: Chris@16: #if defined BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX || defined BOOST_NO_CXX11_HDR_INITIALIZER_LIST Chris@16: #define BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST Chris@16: #define BOOST_THREAD_NO_MAKE_LOCK_GUARD Chris@16: #define BOOST_THREAD_NO_MAKE_STRICT_LOCK Chris@16: #define BOOST_THREAD_NO_MAKE_NESTED_STRICT_LOCK Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_NO_CXX11_HDR_TUPLE) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES) Chris@16: #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS Chris@16: #define BOOST_THREAD_NO_SYNCHRONIZE Chris@16: #elif defined _MSC_VER && _MSC_VER <= 1600 Chris@16: // C++ features supported by VC++ 10 (aka 2010) Chris@16: #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS Chris@16: #define BOOST_THREAD_NO_SYNCHRONIZE Chris@16: #endif Chris@16: Chris@16: /// BASIC_THREAD_ID Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_BASIC_THREAD_ID \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID Chris@16: #define BOOST_THREAD_PROVIDES_BASIC_THREAD_ID Chris@16: #endif Chris@16: Chris@16: /// RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR Chris@16: //#if defined BOOST_NO_CXX11_RVALUE_REFERENCES || defined BOOST_MSVC Chris@16: #define BOOST_THREAD_RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR Chris@16: //#endif Chris@16: Chris@16: // Default version Chris@16: #if !defined BOOST_THREAD_VERSION Chris@16: #define BOOST_THREAD_VERSION 2 Chris@16: #else Chris@16: #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3 && BOOST_THREAD_VERSION!=4 Chris@16: #error "BOOST_THREAD_VERSION must be 2, 3 or 4" Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // CHRONO Chris@16: // Uses Boost.Chrono by default if not stated the opposite defining BOOST_THREAD_DONT_USE_CHRONO Chris@16: #if ! defined BOOST_THREAD_DONT_USE_CHRONO \ Chris@16: && ! defined BOOST_THREAD_USES_CHRONO Chris@16: #define BOOST_THREAD_USES_CHRONO Chris@16: #endif Chris@16: Chris@16: #if ! defined BOOST_THREAD_DONT_USE_ATOMIC \ Chris@16: && ! defined BOOST_THREAD_USES_ATOMIC Chris@16: #define BOOST_THREAD_USES_ATOMIC Chris@16: //#define BOOST_THREAD_DONT_USE_ATOMIC Chris@16: #endif Chris@16: Chris@16: #if defined BOOST_THREAD_USES_ATOMIC Chris@16: // Andrey Semashev Chris@16: #define BOOST_THREAD_ONCE_ATOMIC Chris@16: #else Chris@16: //#elif ! defined BOOST_NO_CXX11_THREAD_LOCAL && ! defined BOOST_NO_THREAD_LOCAL && ! defined BOOST_THREAD_NO_UINT32_PSEUDO_ATOMIC Chris@16: // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html#Appendix Chris@16: #define BOOST_THREAD_ONCE_FAST_EPOCH Chris@16: #endif Chris@16: #if BOOST_THREAD_VERSION==2 Chris@16: Chris@16: // PROVIDE_PROMISE_LAZY Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_PROMISE_LAZY Chris@16: #define BOOST_THREAD_PROVIDES_PROMISE_LAZY Chris@16: #endif Chris@16: Chris@16: // PROVIDE_THREAD_EQ Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_EQ \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_THREAD_EQ Chris@16: #define BOOST_THREAD_PROVIDES_THREAD_EQ Chris@16: #endif Chris@16: Chris@16: #endif Chris@16: Chris@16: #if BOOST_THREAD_VERSION>=3 Chris@16: Chris@16: // ONCE_CXX11 Chris@16: // fixme BOOST_THREAD_PROVIDES_ONCE_CXX11 doesn't works when thread.cpp is compiled BOOST_THREAD_VERSION 3 Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11 \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_ONCE_CXX11 Chris@16: #define BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11 Chris@16: #endif Chris@16: Chris@16: // THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE Chris@16: #define BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE Chris@16: #endif Chris@16: Chris@16: // THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE Chris@16: #define BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE Chris@16: #endif Chris@16: Chris@16: // PROVIDE_FUTURE Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_FUTURE Chris@16: #define BOOST_THREAD_PROVIDES_FUTURE Chris@16: #endif Chris@16: Chris@16: // FUTURE_CTOR_ALLOCATORS Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS Chris@16: #define BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS Chris@16: #endif Chris@16: Chris@16: // SHARED_MUTEX_UPWARDS_CONVERSIONS Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_SHARED_MUTEX_UPWARDS_CONVERSIONS \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS Chris@16: #define BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS Chris@16: #endif Chris@16: Chris@16: // PROVIDE_EXPLICIT_LOCK_CONVERSION Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_EXPLICIT_LOCK_CONVERSION \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION Chris@16: #define BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION Chris@16: #endif Chris@16: Chris@16: // GENERIC_SHARED_MUTEX_ON_WIN Chris@16: #if ! defined BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN Chris@16: #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN Chris@16: #endif Chris@16: Chris@16: // USE_MOVE Chris@16: #if ! defined BOOST_THREAD_DONT_USE_MOVE \ Chris@16: && ! defined BOOST_THREAD_USES_MOVE Chris@16: #define BOOST_THREAD_USES_MOVE Chris@16: #endif Chris@16: Chris@16: #endif Chris@16: Chris@16: // deprecated since version 4 Chris@16: #if BOOST_THREAD_VERSION < 4 Chris@16: Chris@16: // NESTED_LOCKS Chris@16: #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS Chris@16: #define BOOST_THREAD_PROVIDES_NESTED_LOCKS Chris@16: #endif Chris@16: Chris@16: // CONDITION Chris@16: #if ! defined BOOST_THREAD_PROVIDES_CONDITION \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION Chris@16: #define BOOST_THREAD_PROVIDES_CONDITION Chris@16: #endif Chris@16: Chris@16: // USE_DATETIME Chris@16: #if ! defined BOOST_THREAD_DONT_USE_DATETIME \ Chris@16: && ! defined BOOST_THREAD_USES_DATETIME Chris@16: #define BOOST_THREAD_USES_DATETIME Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: #if BOOST_THREAD_VERSION>=4 Chris@16: Chris@16: // SIGNATURE_PACKAGED_TASK Chris@16: #if ! defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK Chris@16: #define BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK Chris@16: #endif Chris@16: Chris@16: // VARIADIC_THREAD Chris@16: #if ! defined BOOST_THREAD_PROVIDES_VARIADIC_THREAD \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD Chris@16: Chris@16: #if ! defined(BOOST_NO_SFINAE_EXPR) && \ Chris@16: ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ Chris@16: ! defined(BOOST_NO_CXX11_DECLTYPE) && \ Chris@16: ! defined(BOOST_NO_CXX11_DECLTYPE_N3276) && \ Chris@101: ! defined(BOOST_NO_CXX11_TRAILING_RESULT_TYPES) && \ Chris@16: ! defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ Chris@16: ! defined(BOOST_NO_CXX11_HDR_TUPLE) Chris@16: Chris@16: #define BOOST_THREAD_PROVIDES_VARIADIC_THREAD Chris@16: #endif Chris@16: #endif Chris@16: Chris@101: #if ! defined BOOST_THREAD_PROVIDES_FUTURE_WHEN_ALL_WHEN_ANY \ Chris@101: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_WHEN_ALL_WHEN_ANY Chris@101: Chris@101: #if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ Chris@101: ! defined(BOOST_NO_CXX11_HDR_TUPLE) Chris@101: Chris@101: #define BOOST_THREAD_PROVIDES_FUTURE_WHEN_ALL_WHEN_ANY Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: // ! defined(BOOST_NO_SFINAE_EXPR) && Chris@101: // ! defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && Chris@101: // ! defined(BOOST_NO_CXX11_AUTO) && Chris@101: // ! defined(BOOST_NO_CXX11_DECLTYPE) && Chris@101: // ! defined(BOOST_NO_CXX11_DECLTYPE_N3276) && Chris@101: Chris@16: Chris@16: // MAKE_READY_AT_THREAD_EXIT Chris@16: #if ! defined BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_MAKE_READY_AT_THREAD_EXIT Chris@16: Chris@16: //#if defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK && defined(BOOST_THREAD_PROVIDES_VARIADIC_THREAD) Chris@16: #define BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT Chris@16: //#endif Chris@16: #endif Chris@16: Chris@16: // FUTURE_CONTINUATION Chris@16: #if ! defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CONTINUATION Chris@16: #define BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION Chris@16: #endif Chris@16: Chris@16: #if ! defined BOOST_THREAD_PROVIDES_FUTURE_UNWRAP \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_UNWRAP Chris@16: #define BOOST_THREAD_PROVIDES_FUTURE_UNWRAP Chris@16: #endif Chris@16: Chris@16: // FUTURE_INVALID_AFTER_GET Chris@16: #if ! defined BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_INVALID_AFTER_GET Chris@16: #define BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET Chris@16: #endif Chris@16: Chris@16: // NESTED_LOCKS Chris@16: #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS Chris@16: #define BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS Chris@16: #endif Chris@16: Chris@16: // CONDITION Chris@16: #if ! defined BOOST_THREAD_PROVIDES_CONDITION \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION Chris@16: #define BOOST_THREAD_DONT_PROVIDE_CONDITION Chris@16: #endif Chris@16: Chris@16: #endif // BOOST_THREAD_VERSION>=4 Chris@16: Chris@16: // INTERRUPTIONS Chris@16: #if ! defined BOOST_THREAD_PROVIDES_INTERRUPTIONS \ Chris@16: && ! defined BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS Chris@16: #define BOOST_THREAD_PROVIDES_INTERRUPTIONS Chris@16: #endif Chris@16: Chris@16: // CORRELATIONS Chris@16: Chris@16: // EXPLICIT_LOCK_CONVERSION. Chris@16: #if defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION Chris@16: #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION explicit Chris@16: #else Chris@16: #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION Chris@16: #endif Chris@16: Chris@16: // BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN is defined if BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS Chris@16: #if defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS \ Chris@16: && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN Chris@16: #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN Chris@16: #endif Chris@16: Chris@16: // For C++11 call_once interface the compiler MUST support constexpr. Chris@16: // Otherwise once_flag would be initialized during dynamic initialization stage, which is not thread-safe. Chris@16: #if defined(BOOST_THREAD_PROVIDES_ONCE_CXX11) Chris@16: #if defined(BOOST_NO_CXX11_CONSTEXPR) Chris@16: #undef BOOST_THREAD_PROVIDES_ONCE_CXX11 Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_DATETIME Chris@16: #undef BOOST_THREAD_DONT_USE_DATETIME Chris@16: #define BOOST_THREAD_USES_DATETIME Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_CHRONO Chris@16: #undef BOOST_THREAD_DONT_USE_CHRONO Chris@16: #define BOOST_THREAD_USES_CHRONO Chris@16: #endif Chris@16: Chris@16: // BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55 Chris@16: // BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55 Chris@16: #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 Chris@16: Chris@16: #if ! defined BOOST_THREAD_PROVIDES_THREAD_EQ Chris@16: #define BOOST_THREAD_PROVIDES_THREAD_EQ Chris@16: #endif Chris@16: Chris@16: #endif Chris@16: Chris@101: Chris@101: //#if ! defined BOOST_NO_CXX11_RVALUE_REFERENCES || defined BOOST_THREAD_USES_MOVE Chris@101: #if ! defined BOOST_NO_CXX11_RVALUE_REFERENCES Chris@101: #define BOOST_THREAD_FUTURE_USES_OPTIONAL Chris@101: #endif Chris@101: Chris@16: #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) Chris@16: # pragma warn -8008 // Condition always true/false Chris@16: # pragma warn -8080 // Identifier declared but never used Chris@16: # pragma warn -8057 // Parameter never used Chris@16: # pragma warn -8066 // Unreachable code Chris@16: #endif Chris@16: Chris@16: #include Chris@16: Chris@16: #if defined(BOOST_THREAD_PLATFORM_WIN32) Chris@16: #else Chris@16: # if defined(BOOST_HAS_PTHREAD_DELAY_NP) || defined(BOOST_HAS_NANOSLEEP) Chris@16: # define BOOST_THREAD_SLEEP_FOR_IS_STEADY Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: // provided for backwards compatibility, since this Chris@16: // macro was used for several releases by mistake. Chris@16: #if defined(BOOST_THREAD_DYN_DLL) && ! defined BOOST_THREAD_DYN_LINK Chris@16: # define BOOST_THREAD_DYN_LINK Chris@16: #endif Chris@16: Chris@16: // compatibility with the rest of Boost's auto-linking code: Chris@16: #if defined(BOOST_THREAD_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) Chris@16: # undef BOOST_THREAD_USE_LIB Chris@101: # if !defined(BOOST_THREAD_USE_DLL) Chris@101: # define BOOST_THREAD_USE_DLL Chris@101: # endif Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_THREAD_BUILD_DLL) //Build dll Chris@16: #elif defined(BOOST_THREAD_BUILD_LIB) //Build lib Chris@16: #elif defined(BOOST_THREAD_USE_DLL) //Use dll Chris@16: #elif defined(BOOST_THREAD_USE_LIB) //Use lib Chris@16: #else //Use default Chris@16: # if defined(BOOST_THREAD_PLATFORM_WIN32) Chris@16: # if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) \ Chris@16: || defined(__MINGW32__) || defined(MINGW32) || defined(BOOST_MINGW32) Chris@16: //For compilers supporting auto-tss cleanup Chris@16: //with Boost.Threads lib, use Boost.Threads lib Chris@16: # define BOOST_THREAD_USE_LIB Chris@16: # else Chris@16: //For compilers not yet supporting auto-tss cleanup Chris@16: //with Boost.Threads lib, use Boost.Threads dll Chris@16: # define BOOST_THREAD_USE_DLL Chris@16: # endif Chris@16: # else Chris@16: # define BOOST_THREAD_USE_LIB Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_HAS_DECLSPEC) Chris@16: # if defined(BOOST_THREAD_BUILD_DLL) //Build dll Chris@16: # define BOOST_THREAD_DECL BOOST_SYMBOL_EXPORT Chris@16: //# define BOOST_THREAD_DECL __declspec(dllexport) Chris@16: Chris@16: # elif defined(BOOST_THREAD_USE_DLL) //Use dll Chris@16: # define BOOST_THREAD_DECL BOOST_SYMBOL_IMPORT Chris@16: //# define BOOST_THREAD_DECL __declspec(dllimport) Chris@16: # else Chris@16: # define BOOST_THREAD_DECL Chris@16: # endif Chris@16: #elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) Chris@16: # define BOOST_THREAD_DECL BOOST_SYMBOL_VISIBLE Chris@16: Chris@16: #else Chris@16: # define BOOST_THREAD_DECL Chris@16: #endif // BOOST_HAS_DECLSPEC Chris@16: Chris@16: // Chris@16: // Automatically link to the correct build variant where possible. Chris@16: // Chris@16: #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_THREAD_NO_LIB) && !defined(BOOST_THREAD_BUILD_DLL) && !defined(BOOST_THREAD_BUILD_LIB) Chris@16: // Chris@16: // Tell the autolink to link dynamically, this will get undef'ed by auto_link.hpp Chris@16: // once it's done with it: Chris@16: // Chris@16: #if defined(BOOST_THREAD_USE_DLL) Chris@16: # define BOOST_DYN_LINK Chris@16: #endif Chris@16: // Chris@16: // Set the name of our library, this will get undef'ed by auto_link.hpp Chris@16: // once it's done with it: Chris@16: // Chris@16: #if defined(BOOST_THREAD_LIB_NAME) Chris@16: # define BOOST_LIB_NAME BOOST_THREAD_LIB_NAME Chris@16: #else Chris@16: # define BOOST_LIB_NAME boost_thread Chris@16: #endif Chris@16: // Chris@16: // If we're importing code from a dll, then tell auto_link.hpp about it: Chris@16: // Chris@16: // And include the header that does the work: Chris@16: // Chris@16: #include Chris@16: #endif // auto-linking disabled Chris@16: Chris@16: #endif // BOOST_THREAD_CONFIG_WEK1032003_HPP Chris@16: Chris@16: // Change Log: Chris@16: // 22 Jan 05 Roland Schwarz (speedsnail) Chris@16: // Usage of BOOST_HAS_DECLSPEC macro. Chris@16: // Default again is static lib usage. Chris@16: // BOOST_DYN_LINK only defined when autolink included.