]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h
eeb8891fc280d3dee67365729bb575ccda692f91
[l4.git] / l4 / pkg / libstdc++-headers / include-4.3.3 / bits / c++config.h
1 #pragma once
2
3
4 // Pick up any OS-specific definitions.
5 #include <bits/os_defines.h>
6
7 // Pick up any CPU-specific definitions.
8 #include <bits/cpu_defines.h>
9
10 // The current version of the C++ library in compressed ISO date format.
11 #define __GLIBCXX__ 20090321
12
13 #ifdef __PIC__
14 #define __GXX_WEAK__ 1
15 #define _GLIBCXX_GTHREAD_USE_WEAK 1
16 #endif 
17
18 #define _GLIBCXX_HAVE_MBSTATE_T 1
19 #define _GLIBCXX_HAVE_WCHAR_H 1
20
21
22 // Macros for visibility.
23 // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
24 // _GLIBCXX_VISIBILITY_ATTR
25 #define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default
26
27 #if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
28 # define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
29 #else
30 # define _GLIBCXX_VISIBILITY_ATTR(V) 
31 #endif
32
33 // Macros for deprecated.
34 // _GLIBCXX_DEPRECATED
35 // _GLIBCXX_DEPRECATED_ATTR
36 #ifndef _GLIBCXX_DEPRECATED
37 # define _GLIBCXX_DEPRECATED 1
38 #endif
39
40 #if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
41 # define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
42 #else
43 # define _GLIBCXX_DEPRECATED_ATTR
44 #endif
45
46 // Macros for activating various namespace association modes.
47 // _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
48 // _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
49 // _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
50
51 // Guide to libstdc++ namespaces.
52 /*
53   namespace std
54   {
55     namespace __debug { }
56     namespace __parallel { }
57     namespace __norm { } // __normative, __shadow, __replaced
58     namespace __cxx1998 { }
59
60     namespace tr1 { }
61   }
62 */
63
64 #ifdef _GLIBCXX_DEBUG
65 # define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
66 #endif
67
68 #ifdef _GLIBCXX_PARALLEL
69 # define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
70 #endif
71
72 // works with gcc 4.3.3
73 //#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 1
74
75 #define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
76
77 // Defined if any namespace association modes are active.
78 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
79   || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
80   || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
81 # define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
82 #endif
83
84 // Macros for namespace scope. Either namespace std:: or the name
85 // of some nested namespace within it.
86 // _GLIBCXX_STD
87 // _GLIBCXX_STD_D
88 // _GLIBCXX_STD_P
89
90 //
91 // Macros for enclosing namespaces and possibly nested namespaces.
92 // _GLIBCXX_BEGIN_NAMESPACE
93 // _GLIBCXX_END_NAMESPACE
94 // _GLIBCXX_BEGIN_NESTED_NAMESPACE
95 // _GLIBCXX_END_NESTED_NAMESPACE
96 // _GLIBCXX_BEGIN_POTENTIAL_NESTED_NAMESPACE
97 // _GLIBCXX_END_POTENTIAL_NESTED_NAMESPACE
98 #ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
99 # define _GLIBCXX_STD_D _GLIBCXX_STD
100 # define _GLIBCXX_STD_P _GLIBCXX_STD
101 # define _GLIBCXX_STD std
102 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
103 # define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
104 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
105 # define _GLIBCXX_END_NAMESPACE }
106 #else
107
108 # if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
109 #  define _GLIBCXX_STD_D _GLIBCXX_STD
110 #  define _GLIBCXX_STD_P _GLIBCXX_STD
111 #  define _GLIBCXX_STD _6
112 #  define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
113 #  define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
114 # endif
115
116 //  debug
117 # if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
118 #  define _GLIBCXX_STD_D __norm
119 #  define _GLIBCXX_STD_P _GLIBCXX_STD
120 #  define _GLIBCXX_STD __cxx1998
121 #  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
122 #  define _GLIBCXX_END_NAMESPACE }
123 #  define _GLIBCXX_EXTERN_TEMPLATE 0
124 # endif
125
126 // parallel
127 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 
128 #  define _GLIBCXX_STD_D _GLIBCXX_STD
129 #  define _GLIBCXX_STD_P __norm
130 #  define _GLIBCXX_STD __cxx1998
131 #  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
132 #  define _GLIBCXX_END_NAMESPACE }
133 #  define _GLIBCXX_EXTERN_TEMPLATE 0
134 # endif
135
136 // debug + parallel
137 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 
138 #  define _GLIBCXX_STD_D __norm
139 #  define _GLIBCXX_STD_P __norm
140 #  define _GLIBCXX_STD __cxx1998
141 #  define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { 
142 #  define _GLIBCXX_END_NAMESPACE }
143 #  define _GLIBCXX_EXTERN_TEMPLATE 0
144 # endif
145
146 # if __NO_INLINE__ && !__GXX_WEAK__
147 #  warning currently using namespace associated mode which may fail \
148    without inlining due to lack of weak symbols
149 # endif
150
151 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)  namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
152 # define _GLIBCXX_END_NESTED_NAMESPACE } }
153 #endif
154
155 // Namespace associations for debug mode.
156 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
157 namespace std
158
159   namespace __norm { } 
160   namespace __debug { }
161   namespace __cxx1998 { }
162
163   using namespace __debug __attribute__ ((strong)); 
164   using namespace __cxx1998 __attribute__ ((strong)); 
165 }
166 #endif
167
168 // Namespace associations for parallel mode.
169 #if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
170 namespace std
171
172   namespace __norm { } 
173   namespace __parallel { }
174   namespace __cxx1998 { }
175
176   using namespace __parallel __attribute__ ((strong));
177   using namespace __cxx1998 __attribute__ ((strong)); 
178 }
179 #endif
180
181 // Namespace associations for versioning mode.
182 #if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
183 namespace std
184 {
185   namespace _6 { }
186   using namespace _6 __attribute__ ((strong));
187 }
188
189 namespace __gnu_cxx 
190
191   namespace _6 { }
192   using namespace _6 __attribute__ ((strong));
193 }
194
195 namespace std
196 {
197   namespace tr1 
198   { 
199     namespace _6 { }
200     using namespace _6 __attribute__ ((strong));
201   }
202 }
203 #endif
204
205 // Define if compatibility should be provided for -mlong-double-64.
206 #undef _GLIBCXX_LONG_DOUBLE_COMPAT
207
208 // XXX GLIBCXX_ABI Deprecated
209 // Namespace associations for long double 128 mode.
210 _GLIBCXX_BEGIN_NAMESPACE(std)
211 #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
212 # define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
213 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
214 # define _GLIBCXX_END_LDBL_NAMESPACE }
215   namespace __gnu_cxx_ldbl128 { }
216   using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
217 #else
218 # define _GLIBCXX_LDBL_NAMESPACE
219 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE
220 # define _GLIBCXX_END_LDBL_NAMESPACE
221 #endif
222 _GLIBCXX_END_NAMESPACE
223
224
225 // Allow use of "export template." This is currently not a feature
226 // that g++ supports.
227 // #define _GLIBCXX_EXPORT_TEMPLATE 1
228
229 // Allow use of the GNU syntax extension, "extern template." This
230 // extension is fully documented in the g++ manual, but in a nutshell,
231 // it inhibits all implicit instantiations and is used throughout the
232 // library to avoid multiple weak definitions for required types that
233 // are already explicitly instantiated in the library binary. This
234 // substantially reduces the binary size of resulting executables.
235 #ifndef _GLIBCXX_EXTERN_TEMPLATE
236 # define _GLIBCXX_EXTERN_TEMPLATE 1
237 #endif
238
239
240 // Certain function definitions that are meant to be overridable from
241 // user code are decorated with this macro.  For some targets, this
242 // macro causes these definitions to be weak.
243 #ifndef _GLIBCXX_WEAK_DEFINITION
244 # define _GLIBCXX_WEAK_DEFINITION
245 #endif
246
247 // Macro used to indicate that the native "C" includes, when compiled
248 // as "C++", have declarations in namespace std and not the global
249 // namespace. Note, this is unrelated to possible "C" compatibility
250 // includes that inject C90/C99 names into the global namespace.
251 #if __cplusplus == 199711L
252 # define _GLIBCXX_NAMESPACE_GLOBAL_INJECTION 1
253 #endif
254
255 // The remainder of the prewritten config is automatic; all the
256 // user hooks are listed above.
257
258 // Create a boolean flag to be used to determine if --fast-math is set.
259 #ifdef __FAST_MATH__
260 # define _GLIBCXX_FAST_MATH 1
261 #else
262 # define _GLIBCXX_FAST_MATH 0
263 #endif
264
265 // This marks string literals in header files to be extracted for eventual
266 // translation.  It is primarily used for messages in thrown exceptions; see
267 // src/functexcept.cc.  We use __N because the more traditional _N is used
268 // for something else under certain OSes (see BADNAMES).
269 #define __N(msgid)     (msgid)
270
271 // For example, <windows.h> is known to #define min and max as macros...
272 #undef min
273 #undef max
274
275 // End of prewritten config; the discovered settings follow.
276
277
278 #define _GLIBCXX_HOSTED 1
279 #ifdef L4_THREAD_SAFE
280 # define _GLIBCXX__PTHREADS 1
281 #endif
282 #define _GLIBCXX_HAVE_UNISTD_H 1
283 // L4: for ARM builtins are usually linux specific functions, if at all
284 // available
285 #if defined(ARCH_x86) || defined(ARCH_amd64)
286 # define _GLIBCXX_ATOMIC_BUILTINS 1
287 #endif
288
289 #ifdef __USING_SJLJ_EXCEPTIONS__
290 # define _GLIBCXX_SJLJ_EXCEPTIONS 1
291 #endif