]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - include/c++/stl/stl/config/_gcc.h
Add STLport 5.1.4
[polintos/scott/priv.git] / include / c++ / stl / stl / config / _gcc.h
diff --git a/include/c++/stl/stl/config/_gcc.h b/include/c++/stl/stl/config/_gcc.h
new file mode 100644 (file)
index 0000000..5d1f7ae
--- /dev/null
@@ -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
+
+/* <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
+