114 lines
3.6 KiB
C++
114 lines
3.6 KiB
C++
// (C) Copyright Christopher Jefferson 2011.
|
|
// Use, modification and distribution are subject to the
|
|
// Boost Software License, Version 1.0. (See accompanying file
|
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// See http://www.boost.org for most recent version.
|
|
|
|
// config for libc++
|
|
// Might need more in here later.
|
|
|
|
#if !defined(_LIBCPP_VERSION)
|
|
# include <ciso646>
|
|
# if !defined(_LIBCPP_VERSION)
|
|
# error "This is not libc++!"
|
|
# endif
|
|
#endif
|
|
|
|
#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
|
|
|
|
#define BOOST_HAS_THREADS
|
|
|
|
#ifdef _LIBCPP_HAS_NO_VARIADICS
|
|
# define BOOST_NO_CXX11_HDR_TUPLE
|
|
#endif
|
|
|
|
// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
|
|
// allocator model. The C++11 allocator model requires a conforming
|
|
// std::allocator_traits which is only possible with C++11 template
|
|
// aliases since members rebind_alloc and rebind_traits require it.
|
|
#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
|
|
# define BOOST_NO_CXX11_ALLOCATOR
|
|
#endif
|
|
|
|
#if __cplusplus < 201103
|
|
//
|
|
// These two appear to be somewhat useable in C++03 mode, there may be others...
|
|
//
|
|
//# define BOOST_NO_CXX11_HDR_ARRAY
|
|
//# define BOOST_NO_CXX11_HDR_FORWARD_LIST
|
|
|
|
# define BOOST_NO_CXX11_HDR_CODECVT
|
|
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
|
|
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
|
|
# define BOOST_NO_CXX11_HDR_MUTEX
|
|
# define BOOST_NO_CXX11_HDR_RANDOM
|
|
# define BOOST_NO_CXX11_HDR_RATIO
|
|
# define BOOST_NO_CXX11_HDR_REGEX
|
|
# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
|
|
# define BOOST_NO_CXX11_HDR_THREAD
|
|
# define BOOST_NO_CXX11_HDR_TUPLE
|
|
# define BOOST_NO_CXX11_HDR_TYPEINDEX
|
|
# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
|
|
# define BOOST_NO_CXX11_HDR_UNORDERED_SET
|
|
# define BOOST_NO_CXX11_NUMERIC_LIMITS
|
|
# define BOOST_NO_CXX11_ALLOCATOR
|
|
# define BOOST_NO_CXX11_SMART_PTR
|
|
# define BOOST_NO_CXX11_HDR_FUNCTIONAL
|
|
# define BOOST_NO_CXX11_STD_ALIGN
|
|
# define BOOST_NO_CXX11_ADDRESSOF
|
|
# define BOOST_NO_CXX11_HDR_ATOMIC
|
|
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
|
|
# define BOOST_NO_CXX11_HDR_CHRONO
|
|
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
|
# define BOOST_NO_CXX11_HDR_FUTURE
|
|
#elif _LIBCPP_VERSION < 3700
|
|
//
|
|
// These appear to be unusable/incomplete so far:
|
|
//
|
|
# define BOOST_NO_CXX11_HDR_ATOMIC
|
|
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
|
|
# define BOOST_NO_CXX11_HDR_CHRONO
|
|
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
|
# define BOOST_NO_CXX11_HDR_FUTURE
|
|
#endif
|
|
|
|
|
|
#if _LIBCPP_VERSION < 3700
|
|
// libc++ uses a non-standard messages_base
|
|
#define BOOST_NO_STD_MESSAGES
|
|
#endif
|
|
|
|
// C++14 features
|
|
#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
|
|
# define BOOST_NO_CXX14_STD_EXCHANGE
|
|
#endif
|
|
|
|
// C++17 features
|
|
#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
|
|
# define BOOST_NO_CXX17_STD_INVOKE
|
|
#endif
|
|
#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
|
|
# define BOOST_NO_CXX17_STD_APPLY
|
|
#endif
|
|
|
|
#if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
|
|
// This is a bit of a sledgehammer, because really it's just libc++abi that has no
|
|
// support for thread_local, leading to linker errors such as
|
|
// "undefined reference to `__cxa_thread_atexit'". It is fixed in the
|
|
// most recent releases of libc++abi though...
|
|
# define BOOST_NO_CXX11_THREAD_LOCAL
|
|
#endif
|
|
|
|
#if defined(__has_include)
|
|
#if !__has_include(<shared_mutex>)
|
|
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
|
#elif __cplusplus <= 201103
|
|
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
|
#endif
|
|
#elif __cplusplus < 201402
|
|
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
|
#endif
|
|
|
|
// --- end ---
|