1 /* STLport configuration file
2 * It is internal STLport header - DO NOT include it directly
5 #define _STLP_COMPILER "gcc"
7 /* Systems having GLIBC installed have different traits */
8 #if defined (__linux__)
9 # ifndef _STLP_USE_GLIBC
10 # define _STLP_USE_GLIBC 1
12 # if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC)
13 # define _STLP_USE_UCLIBC 1
17 #if defined (__CYGWIN__) && \
18 (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99)
19 # define _STLP_NO_VENDOR_MATH_L
20 # define _STLP_NO_VENDOR_STDLIB_L
24 # define _STLP_NO_VENDOR_STDLIB_L
27 #if defined (__SYMBIAN32__) && !defined (_STLP_NO_VENDOR_STDLIB_L)
28 //The following macro is defined so that the vendor's APIs dont get picked. Rather the ones from PIPS are used.
29 # define _STLP_NO_VENDOR_STDLIB_L
30 #endif // (__SYMBIAN32__) && !defined (_STLP_NO_VENDOR_STDLIB_L)
32 /* We guess if we are using the cygwin distrib that has a special include schema.
33 * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a
34 * mingw install. We are forced to use a configuration option
36 #if !defined (_STLP_NATIVE_INCLUDE_PATH) && \
37 (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN))
38 # if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3))
39 # define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++
40 # elif defined (_STLP_NO_CYGWIN)
41 # define _STLP_NATIVE_INCLUDE_PATH ../mingw
43 * Before version gcc 3.4, the cygwin package include path was conform to the
44 * GNU convention which is set later in this file.
49 #if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4))
50 /* define for gcc versions before 3.4.0. */
51 # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD
54 /* azov: gcc on lynx have a bug that causes internal
55 * compiler errors when compiling STLport with namespaces turned on.
56 * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES
58 #if defined (__Lynx__) && (__GNUC__ < 3)
59 # define _STLP_HAS_NO_NAMESPACES 1
60 # define _STLP_NO_STATIC_TEMPLATE_DATA 1
61 /* turn off useless warning about including system headers */
62 # define __NO_INCLUDE_WARN__ 1
65 /* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate
66 static template data. If you are using GNU ld, please say so in user_config.h header */
67 #if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \
68 ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) )
69 # define _STLP_NO_STATIC_TEMPLATE_DATA
72 #if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \
73 (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \
74 (defined (__MINGW32__) && defined (_MT)))
79 # define _STLP_RAND48 1
82 # define _STLP_LITTLE_ENDIAN
86 # if !defined(_STLP_LITTLE_ENDIAN)
87 # define _STLP_LITTLE_ENDIAN
90 #if defined (__MINGW32__) && !defined (__SYMBIAN32__)
91 /* Mingw32, egcs compiler using the Microsoft C runtime */
92 # define _STLP_VENDOR_GLOBAL_CSTD
93 # undef _STLP_NO_DRAND48
94 # define _STLP_NO_DRAND48
97 # if defined (_STLP_NEW_PLATFORM_SDK)
98 /* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */
99 # undef _STLP_NEW_PLATFORM_SDK
101 #endif /* __MINGW32__ */
103 #if defined (__CYGWIN__) || defined (__MINGW32__) && !defined(__SYMBIAN32__)
104 # if !defined (_STLP_USE_STATIC_LIB)
105 # define _STLP_USE_DECLSPEC 1
106 # if !defined (_STLP_USE_DYNAMIC_LIB)
107 # define _STLP_USE_DYNAMIC_LIB
109 # define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
110 # define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
111 # define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
113 /* The following is defined independently of _STLP_USE_STATIC_LIB because it is also
114 * used to import symbols from PSDK under MinGW
116 # define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
119 #if !defined (__SYMBIAN32__) && (defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__)))
120 # if !defined (__MINGW32__) && !defined (__CYGWIN__)
121 # define _STLP_NO_NATIVE_MBSTATE_T 1
123 # if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)
124 # define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
126 # define _STLP_NO_NATIVE_WIDE_STREAMS 1
129 #define _STLP_NORETURN_FUNCTION __attribute__((noreturn))
131 /* Mac OS X is a little different with namespaces and cannot instantiate
132 * static data members in template classes */
133 #if defined (__APPLE__)
134 # if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))
135 /* Mac OS X is missing a required typedef and standard macro */
136 typedef unsigned int wint_t;
143 /* Mac OS X needs one and only one source file to initialize all static data
144 * members in template classes. Only one source file in an executable or
145 * library can declare instances for such data members, otherwise duplicate
146 * symbols will be generated. */
148 # define _STLP_NO_STATIC_TEMPLATE_DATA
149 # define _STLP_STATIC_CONST_INIT_BUG 1
150 # define _STLP_STATIC_TEMPLATE_DATA 0
151 # define _STLP_WEAK_ATTRIBUTE 1
152 /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle
153 * parameterized macros in #include statements */
154 # define _STLP_NATIVE_HEADER(header) <../g++/##header##>
155 # define _STLP_NATIVE_C_HEADER(header) <../include/##header##>
156 # define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##>
157 # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##>
158 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##>
159 # endif /* __GNUC__ < 3 */
161 # define _STLP_NO_LONG_DOUBLE
163 /* Mac OS X needs all "::" scope references to be "std::" */
164 # define _STLP_USE_NEW_C_HEADERS
166 # define _STLP_NO_VENDOR_STDLIB_L
168 #endif /* __APPLE__ */
171 #if defined(__BEOS__) && defined(__INTEL__)
172 # define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##>
173 # define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##>
174 # define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##>
175 # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##>
176 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##>
177 # define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
178 # define _STLP_NO_NATIVE_WIDE_STREAMS 1
180 # define _NOTHREADS 1
185 # ifdef _STLP_PTHREADS
186 # undef _STLP_PTHREADS
188 # define _STLP_USE_STDIO_IO 1
189 # define _STLP_USE_GLIBC 1
192 /* g++ 2.7.x and above */
193 #define _STLP_LONG_LONG long long
195 #ifdef _STLP_USE_UCLIBC
197 # ifndef __DO_C99_MATH__
199 /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
200 # define _STLP_NO_VENDOR_MATH_F
201 /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */
202 # define _STLP_NO_VENDOR_MATH_L
203 # define _STLP_NO_LONG_DOUBLE
209 #if defined (__OpenBSD__) || defined (__FreeBSD__)
210 # define _STLP_NO_VENDOR_MATH_L
211 # define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
217 #if defined (__alpha__)
218 # define _STLP_NO_VENDOR_MATH_L
219 # define _STLP_NO_IEC559_SUPPORT
223 # define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
224 /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
225 # define _STLP_NO_VENDOR_MATH_F
229 # ifndef _STLP_HAS_NO_NEW_C_HEADERS
231 # ifndef _STLP_USE_UCLIBC
233 # define _STLP_HAS_NATIVE_FLOAT_ABS
238 # ifdef _STLP_USE_GLIBC
239 # define _STLP_VENDOR_LONG_DOUBLE_MATH 1
245 # define _STLP_HAS_NO_NEW_C_HEADERS 1
246 # if !defined(_STLP_VENDOR_GLOBAL_CSTD)
247 # define _STLP_VENDOR_GLOBAL_CSTD 1
249 # define _STLP_DONT_USE_PTHREAD_SPINLOCK 1
251 # define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1
253 /* egcs fails to initialize builtin types in expr. like this : new(p) char(); */
254 # define _STLP_DEF_CONST_PLCT_NEW_BUG 1
258 #define _STLP_VENDOR_GLOBAL_CSTD 1
261 #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
262 # define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
263 # define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
264 # define _STLP_DEF_CONST_DEF_PARAM_BUG 1
266 # undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
267 # undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
270 #if (__GNUC_MINOR__ < 9) && (__GNUC__ < 3) && !(defined (__SYMBIAN32__) && defined (__GCCXML__))/* gcc 2.8 */
271 # define _STLP_NO_TEMPLATE_CONVERSIONS
272 # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
273 # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
274 # define _STLP_NO_FRIEND_TEMPLATES 1
275 # define _STLP_HAS_NO_NAMESPACES 1
276 # define _STLP_NO_METHOD_SPECIALIZATION 1
277 # define _STLP_NO_MEMBER_TEMPLATES 1
278 # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
279 # define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
280 /* DJGPP doesn't seem to implement it in 2.8.x */
282 # define _STLP_NO_STATIC_TEMPLATE_DATA 1
286 #if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__) && !(defined (__SYMBIAN32__) && defined (__GCCXML__))
287 /* Will it work with 2.6 ? I doubt it. */
288 # if ( __GNUC_MINOR__ < 6 )
289 __GIVE_UP_WITH_STL(GCC_272);
292 # define _STLP_NO_RELOPS_NAMESPACE
293 # define _STLP_NON_TYPE_TMPL_PARAM_BUG
294 # define _STLP_LIMITED_DEFAULT_TEMPLATES 1
295 # define _STLP_DEFAULT_TYPE_PARAM 1
296 # define _STLP_NO_BAD_ALLOC
297 # define _STLP_NO_ARROW_OPERATOR 1
298 # ifndef _STLP_NO_STATIC_TEMPLATE_DATA
299 # define _STLP_NO_STATIC_TEMPLATE_DATA
301 # define _STLP_STATIC_CONST_INIT_BUG 1
302 # define _STLP_NO_METHOD_SPECIALIZATION 1
304 # if !defined (__CYGWIN32__)
305 # define _STLP_NESTED_TYPE_PARAM_BUG 1
306 # define _STLP_BASE_MATCH_BUG 1
307 /* unused operators are required (forward) */
308 # define _STLP_CONST_CONSTRUCTOR_BUG
309 # define _STLP_NO_DEFAULT_NON_TYPE_PARAM
311 # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
312 # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
313 # if !(defined (__SYMBIAN32__) && defined (__GCCXML__))
314 # define _STLP_NO_EXCEPTION_HEADER 1
316 #else /* ! <= 2.7.* */
317 #endif /* ! <= 2.7.* */
319 /* static template data members workaround strategy for gcc tries
320 * to use weak symbols.
321 * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll
322 * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your
323 * compilation unit ( or CFLAGS for it ) _before_ including any STL header ).
325 #if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE )
326 /* systems using GNU ld or format that supports weak symbols
327 may use "weak" attribute
328 Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */
329 # if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \
330 (( defined (__SVR4) || defined ( __svr4__ )) && \
331 ( defined (sun) || defined ( __sun__ )))
332 # define _STLP_WEAK_ATTRIBUTE 1
334 #endif /* _STLP_WEAK_ATTRIBUTE */
337 /* strict ANSI prohibits "long long" ( gcc) */
338 #if defined ( __STRICT_ANSI__ )
339 # undef _STLP_LONG_LONG
341 # define _STLP_STRICT_ANSI 1
346 #if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT)
347 # define _STLP_USE_TEMPLATE_EXPORT
348 # define _STLP_EXPORT_TEMPLATE_KEYWORD extern
349 # define _STLP_IMPORT_TEMPLATE_KEYWORD extern
354 # undef _STLP_DONT_USE_EXCEPTIONS
355 # define _STLP_DONT_USE_EXCEPTIONS 1
360 # if !defined (_STLP_NATIVE_INCLUDE_PATH)
361 # if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))
362 # define _STLP_NATIVE_INCLUDE_PATH ../g++-v3
364 # if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__))
365 # define _STLP_NATIVE_INCLUDE_PATH ../c++
367 * Before version 3.4.0 the 0 patch level was not part of the include path:
369 # elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
370 (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
372 # define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
374 # define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__
379 /* Instantiation scheme that used (default) in gcc 3 made void of sense explicit
380 instantiation within library: nothing except increased library size. - ptr
382 # define _STLP_NO_FORCE_INSTANTIATE
384 #elif (__GNUC_MINOR__ < 8)
386 # if !defined (_STLP_NATIVE_INCLUDE_PATH)
387 # if !defined (__SYMBIAN32__)
388 # define _STLP_NATIVE_INCLUDE_PATH ../g++-include
392 /* tuning of static template data members workaround */
393 # if ( _STLP_STATIC_TEMPLATE_DATA < 1 )
394 # if ( _STLP_WEAK_ATTRIBUTE > 0 )
395 # define _STLP_WEAK __attribute__ (( weak ))
398 # endif /* _STLP_WEAK_ATTRIBUTE */
400 # ifdef __PUT_STATIC_DATA_MEMBERS_HERE
401 # define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init
403 # define __DECLARE_INSTANCE(type,item,init)
404 # endif /* __PUT_STATIC_DATA_MEMBERS_HERE */
405 # endif /* _STLP_STATIC_TEMPLATE_DATA */
409 /* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in
410 * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages.
411 * I expect "g++-3" not being used in later releases.
412 * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit),
413 * please change the macro below to point to your directory.
416 # if !defined (_STLP_NATIVE_INCLUDE_PATH)
417 # if defined(__DJGPP)
418 # define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx
419 # elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97)
420 # define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3
421 # elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \
422 !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) )
423 # define _STLP_NATIVE_INCLUDE_PATH ../g++-3
424 # elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ )
425 /* this really sucks, as GNUpro does not really identifies itself, so we have to guess
426 * depending on a platform
429 # define _STLP_NATIVE_INCLUDE_PATH ../g++-3
431 # define _STLP_NATIVE_INCLUDE_PATH ../g++-2
434 # define _STLP_NATIVE_INCLUDE_PATH g++
438 /* <exception> et al */
440 # if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
441 # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
446 # if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)
448 # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3
451 # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
456 #endif /* GNUC_MINOR < 8 */
458 #if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
459 # define _STLP_NATIVE_C_INCLUDE_PATH ../include
462 /* Tune settings for the case where static template data members are not
463 * instaniated by default
465 #if defined ( _STLP_NO_STATIC_TEMPLATE_DATA )
466 # define _STLP_STATIC_TEMPLATE_DATA 0
467 # if !defined ( _STLP_WEAK_ATTRIBUTE )
468 # define _STLP_WEAK_ATTRIBUTE 0
470 # ifdef __PUT_STATIC_DATA_MEMBERS_HERE
471 # define __DECLARE_INSTANCE(type,item,init) type item init
473 # define __DECLARE_INSTANCE(type,item,init)
476 # define _STLP_STATIC_TEMPLATE_DATA 1