| /* STLport configuration file |
| * It is internal STLport header - DO NOT include it directly |
| */ |
| |
| #define _STLP_COMPILER "gcc" |
| |
| /* Systems having GLIBC installed have different traits */ |
| #if defined (__linux__) |
| # ifndef _STLP_USE_GLIBC |
| # define _STLP_USE_GLIBC 1 |
| # endif |
| # if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC) |
| # define _STLP_USE_UCLIBC 1 |
| # endif |
| #endif |
| |
| #if defined (__CYGWIN__) && \ |
| (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99) |
| # define _STLP_NO_VENDOR_MATH_L |
| # define _STLP_NO_VENDOR_STDLIB_L |
| #endif |
| |
| #if (__GNUC__ < 3) |
| # define _STLP_NO_VENDOR_STDLIB_L |
| #endif |
| |
| /* We guess if we are using the cygwin distrib that has a special include schema. |
| * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a |
| * mingw install. We are forced to use a configuration option |
| */ |
| #if !defined (_STLP_NATIVE_INCLUDE_PATH) && \ |
| (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN)) |
| # if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3)) |
| # define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++ |
| # elif defined (_STLP_NO_CYGWIN) |
| # define _STLP_NATIVE_INCLUDE_PATH ../mingw |
| /*# else |
| * Before version gcc 3.4, the cygwin package include path was conform to the |
| * GNU convention which is set later in this file. |
| */ |
| # endif |
| #endif |
| |
| #if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4)) |
| /* define for gcc versions before 3.4.0. */ |
| # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD |
| #endif |
| |
| /* azov: gcc on lynx have a bug that causes internal |
| * compiler errors when compiling STLport with namespaces turned on. |
| * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES |
| */ |
| #if defined (__Lynx__) && (__GNUC__ < 3) |
| # define _STLP_HAS_NO_NAMESPACES 1 |
| # define _STLP_NO_STATIC_TEMPLATE_DATA 1 |
| /* turn off useless warning about including system headers */ |
| # define __NO_INCLUDE_WARN__ 1 |
| #endif |
| |
| /* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate |
| static template data. If you are using GNU ld, please say so in user_config.h header */ |
| #if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \ |
| ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) ) |
| # define _STLP_NO_STATIC_TEMPLATE_DATA |
| #endif |
| |
| #if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \ |
| (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \ |
| (defined (__MINGW32__) && defined (_MT))) |
| # define _REENTRANT |
| #endif |
| |
| #if defined (__DJGPP) |
| # define _STLP_RAND48 1 |
| # define _NOTHREADS 1 |
| # undef _PTHREADS |
| # define _STLP_LITTLE_ENDIAN |
| #endif |
| |
| #if defined (__MINGW32__) |
| /* Mingw32, egcs compiler using the Microsoft C runtime */ |
| # define _STLP_VENDOR_GLOBAL_CSTD |
| # undef _STLP_NO_DRAND48 |
| # define _STLP_NO_DRAND48 |
| # define _STLP_CALL |
| |
| # if defined (_STLP_NEW_PLATFORM_SDK) |
| /* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */ |
| # undef _STLP_NEW_PLATFORM_SDK |
| # endif |
| #endif /* __MINGW32__ */ |
| |
| #if defined (__CYGWIN__) || defined (__MINGW32__) |
| # if !defined (_STLP_USE_STATIC_LIB) |
| # define _STLP_USE_DECLSPEC 1 |
| # if !defined (_STLP_USE_DYNAMIC_LIB) |
| # define _STLP_USE_DYNAMIC_LIB |
| # endif |
| # define _STLP_EXPORT_DECLSPEC __declspec(dllexport) |
| # define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) |
| # define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) |
| # endif |
| /* The following is defined independently of _STLP_USE_STATIC_LIB because it is also |
| * used to import symbols from PSDK under MinGW |
| */ |
| # define _STLP_IMPORT_DECLSPEC __declspec(dllimport) |
| #endif |
| |
| #if defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__)) |
| # if !defined (__MINGW32__) && !defined (__CYGWIN__) |
| # define _STLP_NO_NATIVE_MBSTATE_T 1 |
| # endif |
| # if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4) |
| # define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 |
| # endif |
| # define _STLP_NO_NATIVE_WIDE_STREAMS 1 |
| #endif |
| |
| #define _STLP_NORETURN_FUNCTION __attribute__((noreturn)) |
| |
| /* Mac OS X is a little different with namespaces and cannot instantiate |
| * static data members in template classes */ |
| #if defined (__APPLE__) |
| # if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))) |
| /* Mac OS X is missing a required typedef and standard macro */ |
| typedef unsigned int wint_t; |
| # endif |
| |
| # define __unix |
| |
| # if (__GNUC__ < 3) |
| |
| /* Mac OS X needs one and only one source file to initialize all static data |
| * members in template classes. Only one source file in an executable or |
| * library can declare instances for such data members, otherwise duplicate |
| * symbols will be generated. */ |
| |
| # define _STLP_NO_STATIC_TEMPLATE_DATA |
| # define _STLP_STATIC_CONST_INIT_BUG 1 |
| # define _STLP_STATIC_TEMPLATE_DATA 0 |
| # define _STLP_WEAK_ATTRIBUTE 1 |
| /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle |
| * parameterized macros in #include statements */ |
| # define _STLP_NATIVE_HEADER(header) <../g++/##header##> |
| # define _STLP_NATIVE_C_HEADER(header) <../include/##header##> |
| # define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##> |
| # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##> |
| # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##> |
| # endif /* __GNUC__ < 3 */ |
| |
| # define _STLP_NO_LONG_DOUBLE |
| |
| /* Mac OS X needs all "::" scope references to be "std::" */ |
| # define _STLP_USE_NEW_C_HEADERS |
| |
| # define _STLP_NO_VENDOR_STDLIB_L |
| |
| #endif /* __APPLE__ */ |
| |
| |
| #if defined(__BEOS__) && defined(__INTEL__) |
| # define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##> |
| # define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##> |
| # define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##> |
| # define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##> |
| # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##> |
| # define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 |
| # define _STLP_NO_NATIVE_WIDE_STREAMS 1 |
| /* |
| # define _NOTHREADS 1 |
| */ |
| # ifdef _PTHREADS |
| # undef _PTHREADS |
| # endif |
| # ifdef _STLP_PTHREADS |
| # undef _STLP_PTHREADS |
| # endif |
| # define _STLP_USE_STDIO_IO 1 |
| # define _STLP_USE_GLIBC 1 |
| #endif |
| |
| /* g++ 2.7.x and above */ |
| #define _STLP_LONG_LONG long long |
| |
| #ifdef _STLP_USE_UCLIBC |
| /* |
| # ifndef __DO_C99_MATH__ |
| */ |
| /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */ |
| # define _STLP_NO_VENDOR_MATH_F |
| /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */ |
| # define _STLP_NO_VENDOR_MATH_L |
| # define _STLP_NO_LONG_DOUBLE |
| /* |
| # endif |
| */ |
| #endif |
| |
| #if defined (__OpenBSD__) || defined (__FreeBSD__) |
| # define _STLP_NO_VENDOR_MATH_L |
| # define _STLP_NO_VENDOR_STDLIB_L /* no llabs */ |
| # ifndef __unix |
| # define __unix |
| # endif |
| #endif |
| |
| #if defined (__alpha__) |
| # define _STLP_NO_VENDOR_MATH_L |
| # define _STLP_NO_IEC559_SUPPORT |
| #endif |
| |
| #if defined (__hpux) |
| # define _STLP_NO_VENDOR_STDLIB_L /* no llabs */ |
| /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */ |
| # define _STLP_NO_VENDOR_MATH_F |
| #endif |
| |
| #if (__GNUC__ >= 3) |
| # ifndef _STLP_HAS_NO_NEW_C_HEADERS |
| /* |
| # ifndef _STLP_USE_UCLIBC |
| */ |
| # define _STLP_HAS_NATIVE_FLOAT_ABS |
| /* |
| # endif |
| */ |
| # else |
| # ifdef _STLP_USE_GLIBC |
| # define _STLP_VENDOR_LONG_DOUBLE_MATH 1 |
| # endif |
| # endif |
| #endif |
| |
| #if (__GNUC__ < 3) |
| # define _STLP_HAS_NO_NEW_C_HEADERS 1 |
| # define _STLP_VENDOR_GLOBAL_CSTD 1 |
| # define _STLP_DONT_USE_PTHREAD_SPINLOCK 1 |
| # ifndef __HONOR_STD |
| # define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1 |
| # endif |
| /* egcs fails to initialize builtin types in expr. like this : new(p) char(); */ |
| # define _STLP_DEF_CONST_PLCT_NEW_BUG 1 |
| #endif |
| |
| /* |
| #define _STLP_VENDOR_GLOBAL_CSTD 1 |
| */ |
| |
| #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95) |
| # define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT |
| # define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT |
| # define _STLP_DEF_CONST_DEF_PARAM_BUG 1 |
| #elif !defined (ANDROID) |
| // Don't drag in these externals on Android. |
| # undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT |
| # undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT |
| #endif |
| |
| #if (__GNUC_MINOR__ < 9) && (__GNUC__ < 3) /* gcc 2.8 */ |
| # define _STLP_NO_TEMPLATE_CONVERSIONS |
| # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 |
| # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 |
| # define _STLP_NO_FRIEND_TEMPLATES 1 |
| # define _STLP_HAS_NO_NAMESPACES 1 |
| # define _STLP_NO_METHOD_SPECIALIZATION 1 |
| # define _STLP_NO_MEMBER_TEMPLATES 1 |
| # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 |
| # define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS |
| /* DJGPP doesn't seem to implement it in 2.8.x */ |
| # ifdef DJGPP |
| # define _STLP_NO_STATIC_TEMPLATE_DATA 1 |
| # endif |
| #endif |
| |
| #if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__) |
| /* Will it work with 2.6 ? I doubt it. */ |
| # if ( __GNUC_MINOR__ < 6 ) |
| __GIVE_UP_WITH_STL(GCC_272); |
| # endif |
| |
| # define _STLP_NO_RELOPS_NAMESPACE |
| # define _STLP_NON_TYPE_TMPL_PARAM_BUG |
| # define _STLP_LIMITED_DEFAULT_TEMPLATES 1 |
| # define _STLP_DEFAULT_TYPE_PARAM 1 |
| # define _STLP_NO_BAD_ALLOC |
| # define _STLP_NO_ARROW_OPERATOR 1 |
| # ifndef _STLP_NO_STATIC_TEMPLATE_DATA |
| # define _STLP_NO_STATIC_TEMPLATE_DATA |
| # endif |
| # define _STLP_STATIC_CONST_INIT_BUG 1 |
| # define _STLP_NO_METHOD_SPECIALIZATION 1 |
| |
| # if !defined (__CYGWIN32__) |
| # define _STLP_NESTED_TYPE_PARAM_BUG 1 |
| # define _STLP_BASE_MATCH_BUG 1 |
| /* unused operators are required (forward) */ |
| # define _STLP_CONST_CONSTRUCTOR_BUG |
| # define _STLP_NO_DEFAULT_NON_TYPE_PARAM |
| # endif |
| # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 |
| # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 |
| # define _STLP_NO_EXCEPTION_HEADER 1 |
| #else /* ! <= 2.7.* */ |
| #endif /* ! <= 2.7.* */ |
| |
| /* static template data members workaround strategy for gcc tries |
| * to use weak symbols. |
| * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll |
| * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your |
| * compilation unit ( or CFLAGS for it ) _before_ including any STL header ). |
| */ |
| #if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE ) |
| /* systems using GNU ld or format that supports weak symbols |
| may use "weak" attribute |
| Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */ |
| # if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \ |
| (( defined (__SVR4) || defined ( __svr4__ )) && \ |
| ( defined (sun) || defined ( __sun__ ))) |
| # define _STLP_WEAK_ATTRIBUTE 1 |
| # endif |
| #endif /* _STLP_WEAK_ATTRIBUTE */ |
| |
| |
| /* strict ANSI prohibits "long long" ( gcc) */ |
| #if defined ( __STRICT_ANSI__ ) |
| # undef _STLP_LONG_LONG |
| /* |
| # define _STLP_STRICT_ANSI 1 |
| */ |
| #endif |
| |
| /* |
| #if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT) |
| # define _STLP_USE_TEMPLATE_EXPORT |
| # define _STLP_EXPORT_TEMPLATE_KEYWORD extern |
| # define _STLP_IMPORT_TEMPLATE_KEYWORD extern |
| #endif |
| */ |
| |
| #ifndef __EXCEPTIONS |
| # undef _STLP_DONT_USE_EXCEPTIONS |
| # define _STLP_DONT_USE_EXCEPTIONS 1 |
| #endif |
| |
| #if (__GNUC__ >= 3) |
| |
| # if !defined (_STLP_NATIVE_INCLUDE_PATH) |
| # if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__)))) |
| # define _STLP_NATIVE_INCLUDE_PATH ../g++-v3 |
| # else |
| # if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__)) |
| # define _STLP_NATIVE_INCLUDE_PATH ../c++ |
| /* |
| * Before version 3.4.0 the 0 patch level was not part of the include path: |
| */ |
| # elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \ |
| (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ |
| (__GNUC__ > 3)) |
| # define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__ |
| # else |
| # define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__ |
| # endif |
| # endif |
| # endif |
| |
| /* Instantiation scheme that used (default) in gcc 3 made void of sense explicit |
| instantiation within library: nothing except increased library size. - ptr |
| */ |
| # define _STLP_NO_FORCE_INSTANTIATE |
| |
| #elif (__GNUC_MINOR__ < 8) |
| |
| # if !defined (_STLP_NATIVE_INCLUDE_PATH) |
| # define _STLP_NATIVE_INCLUDE_PATH ../g++-include |
| # endif |
| |
| /* tuning of static template data members workaround */ |
| # if ( _STLP_STATIC_TEMPLATE_DATA < 1 ) |
| # if ( _STLP_WEAK_ATTRIBUTE > 0 ) |
| # define _STLP_WEAK __attribute__ (( weak )) |
| # else |
| # define _STLP_WEAK |
| # endif /* _STLP_WEAK_ATTRIBUTE */ |
| |
| # ifdef __PUT_STATIC_DATA_MEMBERS_HERE |
| # define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init |
| # else |
| # define __DECLARE_INSTANCE(type,item,init) |
| # endif /* __PUT_STATIC_DATA_MEMBERS_HERE */ |
| # endif /* _STLP_STATIC_TEMPLATE_DATA */ |
| |
| #else |
| |
| /* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in |
| * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages. |
| * I expect "g++-3" not being used in later releases. |
| * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit), |
| * please change the macro below to point to your directory. |
| */ |
| |
| # if !defined (_STLP_NATIVE_INCLUDE_PATH) |
| # if defined(__DJGPP) |
| # define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx |
| # elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97) |
| # define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3 |
| # elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \ |
| !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) ) |
| # define _STLP_NATIVE_INCLUDE_PATH ../g++-3 |
| # elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ ) |
| /* this really sucks, as GNUpro does not really identifies itself, so we have to guess |
| * depending on a platform |
| */ |
| # ifdef __hpux |
| # define _STLP_NATIVE_INCLUDE_PATH ../g++-3 |
| # else |
| # define _STLP_NATIVE_INCLUDE_PATH ../g++-2 |
| # endif |
| # else |
| # define _STLP_NATIVE_INCLUDE_PATH g++ |
| # endif |
| # endif |
| |
| /* <exception> et al */ |
| # ifdef __FreeBSD__ |
| # if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95) |
| # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include |
| # endif |
| # else |
| /* azov */ |
| # ifndef __Lynx__ |
| # if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97) |
| /* |
| # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3 |
| */ |
| # else |
| # define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include |
| # endif |
| # endif |
| # endif |
| |
| #endif /* GNUC_MINOR < 8 */ |
| |
| #if !defined (_STLP_NATIVE_C_INCLUDE_PATH) |
| # define _STLP_NATIVE_C_INCLUDE_PATH ../include |
| #endif |
| |
| /* Tune settings for the case where static template data members are not |
| * instaniated by default |
| */ |
| #if defined ( _STLP_NO_STATIC_TEMPLATE_DATA ) |
| # define _STLP_STATIC_TEMPLATE_DATA 0 |
| # if !defined ( _STLP_WEAK_ATTRIBUTE ) |
| # define _STLP_WEAK_ATTRIBUTE 0 |
| # endif |
| # ifdef __PUT_STATIC_DATA_MEMBERS_HERE |
| # define __DECLARE_INSTANCE(type,item,init) type item init |
| # else |
| # define __DECLARE_INSTANCE(type,item,init) |
| # endif |
| #else |
| # define _STLP_STATIC_TEMPLATE_DATA 1 |
| #endif |