1 //  (C) Copyright Christopher Jefferson 2011.
2 //  Use, modification and distribution are subject to the
3 //  Boost Software License, Version 1.0. (See accompanying file
4 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 //  See http://www.boost.org for most recent version.
7 
8 //  config for libc++
9 //  Might need more in here later.
10 
11 #if !defined(_LIBCPP_VERSION)
12 #  include <ciso646>
13 #  if !defined(_LIBCPP_VERSION)
14 #      error "This is not libc++!"
15 #  endif
16 #endif
17 
18 #define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
19 
20 #define BOOST_HAS_THREADS
21 
22 #ifdef _LIBCPP_HAS_NO_VARIADICS
23 #    define BOOST_NO_CXX11_HDR_TUPLE
24 #endif
25 
26 // BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
27 // allocator model. The C++11 allocator model requires a conforming
28 // std::allocator_traits which is only possible with C++11 template
29 // aliases since members rebind_alloc and rebind_traits require it.
30 #if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
31 #    define BOOST_NO_CXX11_ALLOCATOR
32 #endif
33 
34 #if __cplusplus < 201103
35 #  define BOOST_NO_CXX11_HDR_ARRAY
36 #  define BOOST_NO_CXX11_HDR_CODECVT
37 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
38 #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
39 #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
40 #  define BOOST_NO_CXX11_HDR_MUTEX
41 #  define BOOST_NO_CXX11_HDR_RANDOM
42 #  define BOOST_NO_CXX11_HDR_RATIO
43 #  define BOOST_NO_CXX11_HDR_REGEX
44 #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
45 #  define BOOST_NO_CXX11_HDR_THREAD
46 #  define BOOST_NO_CXX11_HDR_TUPLE
47 #  define BOOST_NO_CXX11_HDR_TYPEINDEX
48 #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
49 #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
50 #  define BOOST_NO_CXX11_NUMERIC_LIMITS
51 #  define BOOST_NO_CXX11_ALLOCATOR
52 #  define BOOST_NO_CXX11_SMART_PTR
53 #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
54 #  define BOOST_NO_CXX11_STD_ALIGN
55 #  define BOOST_NO_CXX11_ADDRESSOF
56 #endif
57 
58 //
59 // These appear to be unusable/incomplete so far:
60 //
61 #  define BOOST_NO_CXX11_HDR_CHRONO
62 #  define BOOST_NO_CXX11_HDR_FUTURE
63 #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
64 #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
65 #  define BOOST_NO_CXX11_HDR_ATOMIC
66 
67 // libc++ uses a non-standard messages_base
68 #define BOOST_NO_STD_MESSAGES
69 
70 #if defined(__has_include)
71 #if !__has_include(<shared_mutex>)
72 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
73 #elif __cplusplus <= 201103
74 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
75 #endif
76 #elif __cplusplus < 201402
77 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
78 #endif
79 
80 //  --- end ---
81