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