X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=include%2Fc%2B%2B%2Fstl%2Fstl%2Fconfig%2F_gcc.h;fp=include%2Fc%2B%2B%2Fstl%2Fstl%2Fconfig%2F_gcc.h;h=5d1f7aeee360a9849e9e91ee8b024e75b4f8f083;hp=0000000000000000000000000000000000000000;hb=173d8903eb9d51a4ea7d7fa3e52dc86c9bb6d4f1;hpb=b024710fe2b60cd4a42a8993b61333d6cdb56ca3 diff --git a/include/c++/stl/stl/config/_gcc.h b/include/c++/stl/stl/config/_gcc.h new file mode 100644 index 0000000..5d1f7ae --- /dev/null +++ b/include/c++/stl/stl/config/_gcc.h @@ -0,0 +1,462 @@ +/* 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 +#else +# 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 + +/* 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 +