1 | // (C) Copyright John Maddock 2001. |
---|
2 | // (C) Copyright Jens Maurer 2001. |
---|
3 | // Use, modification and distribution are subject to the |
---|
4 | // Boost Software License, Version 1.0. (See accompanying file |
---|
5 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
---|
6 | |
---|
7 | // See http://www.boost.org for most recent version. |
---|
8 | |
---|
9 | // config for libstdc++ v3 |
---|
10 | // not much to go in here: |
---|
11 | |
---|
12 | #ifdef __GLIBCXX__ |
---|
13 | #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__) |
---|
14 | #else |
---|
15 | #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__) |
---|
16 | #endif |
---|
17 | |
---|
18 | #if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T) |
---|
19 | # define BOOST_NO_CWCHAR |
---|
20 | # define BOOST_NO_CWCTYPE |
---|
21 | # define BOOST_NO_STD_WSTRING |
---|
22 | # define BOOST_NO_STD_WSTREAMBUF |
---|
23 | #endif |
---|
24 | |
---|
25 | #if defined(__osf__) && !defined(_REENTRANT) \ |
---|
26 | && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) ) |
---|
27 | // GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header |
---|
28 | // file is included, therefore for consistency we define it here as well. |
---|
29 | # define _REENTRANT |
---|
30 | #endif |
---|
31 | |
---|
32 | #ifdef __GLIBCXX__ // gcc 3.4 and greater: |
---|
33 | # if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \ |
---|
34 | || defined(_GLIBCXX__PTHREADS) |
---|
35 | // |
---|
36 | // If the std lib has thread support turned on, then turn it on in Boost |
---|
37 | // as well. We do this because some gcc-3.4 std lib headers define _REENTANT |
---|
38 | // while others do not... |
---|
39 | // |
---|
40 | # define BOOST_HAS_THREADS |
---|
41 | # else |
---|
42 | # define BOOST_DISABLE_THREADS |
---|
43 | # endif |
---|
44 | #elif defined(__GLIBCPP__) \ |
---|
45 | && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \ |
---|
46 | && !defined(_GLIBCPP__PTHREADS) |
---|
47 | // disable thread support if the std lib was built single threaded: |
---|
48 | # define BOOST_DISABLE_THREADS |
---|
49 | #endif |
---|
50 | |
---|
51 | #if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT) |
---|
52 | // linux on arm apparently doesn't define _REENTRANT |
---|
53 | // so just turn on threading support whenever the std lib is thread safe: |
---|
54 | # define BOOST_HAS_THREADS |
---|
55 | #endif |
---|
56 | |
---|
57 | |
---|
58 | #if !defined(_GLIBCPP_USE_LONG_LONG) \ |
---|
59 | && !defined(_GLIBCXX_USE_LONG_LONG)\ |
---|
60 | && defined(BOOST_HAS_LONG_LONG) |
---|
61 | // May have been set by compiler/*.hpp, but "long long" without library |
---|
62 | // support is useless. |
---|
63 | # undef BOOST_HAS_LONG_LONG |
---|
64 | #endif |
---|
65 | |
---|
66 | #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 |
---|
67 | # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx |
---|
68 | # define BOOST_HAS_SLIST |
---|
69 | # define BOOST_HAS_HASH |
---|
70 | # define BOOST_SLIST_HEADER <ext/slist> |
---|
71 | # if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) |
---|
72 | # define BOOST_HASH_SET_HEADER <ext/hash_set> |
---|
73 | # define BOOST_HASH_MAP_HEADER <ext/hash_map> |
---|
74 | # else |
---|
75 | # define BOOST_HASH_SET_HEADER <backward/hash_set> |
---|
76 | # define BOOST_HASH_MAP_HEADER <backward/hash_map> |
---|
77 | # endif |
---|
78 | #endif |
---|
79 | |
---|
80 | // stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly |
---|
81 | // __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++ |
---|
82 | // developers. He also commented: |
---|
83 | // |
---|
84 | // "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in |
---|
85 | // GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305. |
---|
86 | // Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support |
---|
87 | // than any release in the 4.2 series." |
---|
88 | // |
---|
89 | // Another resource for understanding stdlibc++ features is: |
---|
90 | // http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x |
---|
91 | |
---|
92 | // C++0x headers in GCC 4.3.0 and later |
---|
93 | // |
---|
94 | #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__) |
---|
95 | # define BOOST_NO_0X_HDR_ARRAY |
---|
96 | # define BOOST_NO_0X_HDR_RANDOM |
---|
97 | # define BOOST_NO_0X_HDR_REGEX |
---|
98 | # define BOOST_NO_0X_HDR_TUPLE |
---|
99 | # define BOOST_NO_0X_HDR_TYPE_TRAITS |
---|
100 | # define BOOST_NO_STD_UNORDERED // deprecated; see following |
---|
101 | # define BOOST_NO_0X_HDR_UNORDERED_MAP |
---|
102 | # define BOOST_NO_0X_HDR_UNORDERED_SET |
---|
103 | #endif |
---|
104 | |
---|
105 | // C++0x headers in GCC 4.4.0 and later |
---|
106 | // |
---|
107 | #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) |
---|
108 | # define BOOST_NO_0X_HDR_CHRONO |
---|
109 | # define BOOST_NO_0X_HDR_CONDITION_VARIABLE |
---|
110 | # define BOOST_NO_0X_HDR_FORWARD_LIST |
---|
111 | # define BOOST_NO_0X_HDR_INITIALIZER_LIST |
---|
112 | # define BOOST_NO_0X_HDR_MUTEX |
---|
113 | # define BOOST_NO_0X_HDR_RATIO |
---|
114 | # define BOOST_NO_0X_HDR_SYSTEM_ERROR |
---|
115 | # define BOOST_NO_0X_HDR_THREAD |
---|
116 | #endif |
---|
117 | |
---|
118 | // C++0x headers not yet implemented |
---|
119 | // |
---|
120 | # define BOOST_NO_0X_HDR_CODECVT |
---|
121 | # define BOOST_NO_0X_HDR_CONCEPTS |
---|
122 | # define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS |
---|
123 | # define BOOST_NO_0X_HDR_FUTURE |
---|
124 | # define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS |
---|
125 | # define BOOST_NO_0X_HDR_MEMORY_CONCEPTS |
---|
126 | # define BOOST_NO_0X_HDR_TYPEINDEX |
---|
127 | |
---|
128 | // --- end --- |
---|