|
1 // (C) Copyright John Maddock 2005-7. |
|
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 #ifndef BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED |
|
7 # define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED |
|
8 |
|
9 #include <cstddef> |
|
10 |
|
11 #if defined(__GNUC__) || (!defined(_AIX) && defined(__IBMCPP__) && (__IBMCPP__ >= 800)) |
|
12 #if !defined(BOOST_HAS_INCLUDE_NEXT) |
|
13 # define BOOST_HAS_INCLUDE_NEXT |
|
14 #endif |
|
15 // Need to find out if we're using GLIBC: |
|
16 #ifdef BOOST_TR1_UTILITY_INCLUDED |
|
17 // Oops we're in a recursive include path!! |
|
18 // Need to include utility, or some std lib header, |
|
19 // but *not* via <utility> or <boost/config/no_tr1/utility.hpp> |
|
20 # ifndef BOOST_TR1_NO_RECURSION |
|
21 # define BOOST_TR1_NO_RECURSION |
|
22 # define BOOST_TR1_NO_CONFIG_RECURSION |
|
23 # endif |
|
24 # if defined(BOOST_HAS_INCLUDE_NEXT) && !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT) |
|
25 # include_next <utility> |
|
26 # else |
|
27 # include BOOST_TR1_STD_HEADER(utility) |
|
28 # endif |
|
29 # ifdef BOOST_TR1_NO_CONFIG_RECURSION |
|
30 # undef BOOST_TR1_NO_CONFIG_RECURSION |
|
31 # undef BOOST_TR1_NO_RECURSION |
|
32 # endif |
|
33 #else |
|
34 #include <boost/config/no_tr1/utility.hpp> |
|
35 #endif |
|
36 #endif |
|
37 |
|
38 #if defined(__GLIBCXX__) && !defined(BOOST_TR1_PATH) |
|
39 # define BOOST_TR1_PATH(name) tr1/name |
|
40 #endif |
|
41 #if !defined(BOOST_TR1_PATH) |
|
42 # define BOOST_TR1_PATH(name) name |
|
43 #endif |
|
44 |
|
45 #define BOOST_TR1_HEADER(name) <BOOST_TR1_PATH(name)> |
|
46 |
|
47 // Can't use BOOST_WORKAROUND here, it leads to recursive includes: |
|
48 #if (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || (defined(_MSC_VER) && (_MSC_VER < 1310)) |
|
49 # define BOOST_TR1_USE_OLD_TUPLE |
|
50 #endif |
|
51 |
|
52 #ifdef __IBMCPP_TR1__ |
|
53 // turn on support for everything: |
|
54 # define BOOST_HAS_TR1 |
|
55 #endif |
|
56 |
|
57 #ifdef __GXX_EXPERIMENTAL_CXX0X__ |
|
58 # define BOOST_HAS_TR1_COMPLEX_OVERLOADS |
|
59 # define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG |
|
60 #endif |
|
61 |
|
62 #ifdef BOOST_HAS_TR1 |
|
63 // turn on support for everything: |
|
64 # define BOOST_HAS_TR1_ARRAY |
|
65 # define BOOST_HAS_TR1_COMPLEX_OVERLOADS |
|
66 # define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG |
|
67 # define BOOST_HAS_TR1_REFERENCE_WRAPPER |
|
68 # define BOOST_HAS_TR1_RESULT_OF |
|
69 # define BOOST_HAS_TR1_MEM_FN |
|
70 # define BOOST_HAS_TR1_BIND |
|
71 # define BOOST_HAS_TR1_FUNCTION |
|
72 # define BOOST_HAS_TR1_HASH |
|
73 # define BOOST_HAS_TR1_SHARED_PTR |
|
74 # define BOOST_HAS_TR1_RANDOM |
|
75 # define BOOST_HAS_TR1_REGEX |
|
76 # define BOOST_HAS_TR1_TUPLE |
|
77 # define BOOST_HAS_TR1_TYPE_TRAITS |
|
78 # define BOOST_HAS_TR1_UTILITY |
|
79 # define BOOST_HAS_TR1_UNORDERED_MAP |
|
80 # define BOOST_HAS_TR1_UNORDERED_SET |
|
81 # define BOOST_HAS_TR1_CMATH |
|
82 |
|
83 #endif |
|
84 |
|
85 #if defined(__MWERKS__) && (__MWERKS__ >= 0x3205) |
|
86 // |
|
87 // Very preliminary MWCW support, may not be right: |
|
88 // |
|
89 # define BOOST_HAS_TR1_SHARED_PTR |
|
90 # define BOOST_HAS_TR1_REFERENCE_WRAPPER |
|
91 # define BOOST_HAS_TR1_FUNCTION |
|
92 # define BOOST_HAS_TR1_TUPLE |
|
93 # define BOOST_HAS_TR1_RESULT_OF |
|
94 #endif |
|
95 |
|
96 #ifdef BOOST_HAS_GCC_TR1 |
|
97 // turn on support for everything in gcc 4.0.x: |
|
98 # define BOOST_HAS_TR1_ARRAY |
|
99 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 |
|
100 //# define BOOST_HAS_TR1_COMPLEX_OVERLOADS |
|
101 # define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG |
|
102 #endif |
|
103 # define BOOST_HAS_TR1_REFERENCE_WRAPPER |
|
104 # define BOOST_HAS_TR1_RESULT_OF |
|
105 # define BOOST_HAS_TR1_MEM_FN |
|
106 # define BOOST_HAS_TR1_BIND |
|
107 # define BOOST_HAS_TR1_FUNCTION |
|
108 # define BOOST_HAS_TR1_HASH |
|
109 # define BOOST_HAS_TR1_SHARED_PTR |
|
110 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 |
|
111 # define BOOST_HAS_TR1_RANDOM |
|
112 //# define BOOST_HAS_TR1_REGEX |
|
113 #ifdef _GLIBCXX_USE_C99_MATH_TR1 |
|
114 # define BOOST_HAS_TR1_CMATH |
|
115 #endif |
|
116 #endif |
|
117 # define BOOST_HAS_TR1_TUPLE |
|
118 # define BOOST_HAS_TR1_TYPE_TRAITS |
|
119 # define BOOST_HAS_TR1_UTILITY |
|
120 # define BOOST_HAS_TR1_UNORDERED_MAP |
|
121 # define BOOST_HAS_TR1_UNORDERED_SET |
|
122 |
|
123 #endif |
|
124 |
|
125 #if defined(_MSC_VER) && (_MSC_VER >= 1500) \ |
|
126 && defined(_MSC_FULL_VER) && \ |
|
127 !defined(__SGI_STL_PORT) && \ |
|
128 !defined(_STLPORT_VERSION) && \ |
|
129 !defined(_RWSTD_VER_STR) && \ |
|
130 !defined(_RWSTD_VER) |
|
131 // |
|
132 // MSVC-9.0 defines a not-quite TR1 conforming hash |
|
133 // function object in <functional>, so we must define |
|
134 // this here, in addition the feature pack for VC9 |
|
135 // provides a more or less full TR1 implementation: |
|
136 // |
|
137 #if defined(_HAS_TR1) && (_HAS_TR1 + 0) |
|
138 # define BOOST_HAS_TR1_ARRAY |
|
139 # define BOOST_HAS_TR1_REFERENCE_WRAPPER |
|
140 # define BOOST_HAS_TR1_RESULT_OF |
|
141 # define BOOST_HAS_TR1_MEM_FN |
|
142 # define BOOST_HAS_TR1_BIND |
|
143 # define BOOST_HAS_TR1_FUNCTION |
|
144 # define BOOST_HAS_TR1_HASH |
|
145 # define BOOST_HAS_TR1_SHARED_PTR |
|
146 # define BOOST_HAS_TR1_RANDOM |
|
147 # define BOOST_HAS_TR1_REGEX |
|
148 # define BOOST_HAS_TR1_TUPLE |
|
149 # define BOOST_HAS_TR1_TYPE_TRAITS |
|
150 # define BOOST_HAS_TR1_UTILITY |
|
151 # define BOOST_HAS_TR1_UNORDERED_MAP |
|
152 # define BOOST_HAS_TR1_UNORDERED_SET |
|
153 #else |
|
154 # define BOOST_HAS_TR1_HASH |
|
155 #endif |
|
156 #endif |
|
157 |
|
158 #include <boost/config.hpp> |
|
159 |
|
160 #endif |
|
161 |
|
162 |
|
163 |