epoc32/include/stdapis/stlport/config/_gcc.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
/* STLport configuration file
williamr@2
     2
 * It is internal STLport header - DO NOT include it directly
williamr@2
     3
 */
williamr@2
     4
williamr@2
     5
#define _STLP_COMPILER "gcc"
williamr@2
     6
williamr@2
     7
/* Systems having GLIBC installed have different traits */
williamr@2
     8
#if defined (__linux__)
williamr@2
     9
#  ifndef _STLP_USE_GLIBC
williamr@2
    10
#    define _STLP_USE_GLIBC 1
williamr@2
    11
#  endif
williamr@2
    12
#  if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC)
williamr@2
    13
#    define _STLP_USE_UCLIBC 1
williamr@2
    14
#  endif
williamr@2
    15
#endif
williamr@2
    16
williamr@2
    17
#if defined (__CYGWIN__) && \
williamr@2
    18
     (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99)
williamr@2
    19
#  define _STLP_NO_VENDOR_MATH_L
williamr@2
    20
#  define _STLP_NO_VENDOR_STDLIB_L
williamr@2
    21
#endif
williamr@2
    22
williamr@2
    23
#if (__GNUC__ < 3)
williamr@2
    24
#  define _STLP_NO_VENDOR_STDLIB_L
williamr@2
    25
#endif
williamr@2
    26
williamr@4
    27
#if defined (__SYMBIAN32__) && !defined (_STLP_NO_VENDOR_STDLIB_L)
williamr@4
    28
//The following macro is defined so that the vendor's APIs dont get picked. Rather the ones from PIPS are used.
williamr@4
    29
#  define _STLP_NO_VENDOR_STDLIB_L
williamr@4
    30
#endif // (__SYMBIAN32__) && !defined (_STLP_NO_VENDOR_STDLIB_L)
williamr@4
    31
williamr@2
    32
/* We guess if we are using the cygwin distrib that has a special include schema.
williamr@2
    33
 * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a
williamr@2
    34
 * mingw install. We are forced to use a configuration option
williamr@2
    35
 */
williamr@2
    36
#if !defined (_STLP_NATIVE_INCLUDE_PATH) && \
williamr@2
    37
    (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN))
williamr@2
    38
#  if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3))
williamr@2
    39
#    define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++
williamr@2
    40
#  elif defined (_STLP_NO_CYGWIN)
williamr@2
    41
#    define _STLP_NATIVE_INCLUDE_PATH ../mingw
williamr@2
    42
/*#  else
williamr@2
    43
 * Before version gcc 3.4, the cygwin package include path was conform to the
williamr@2
    44
 * GNU convention which is set later in this file.
williamr@2
    45
 */
williamr@2
    46
#  endif
williamr@2
    47
#endif
williamr@2
    48
williamr@2
    49
#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4))
williamr@2
    50
/* define for gcc versions before 3.4.0. */
williamr@2
    51
#  define _STLP_NO_MEMBER_TEMPLATE_KEYWORD
williamr@2
    52
#endif
williamr@2
    53
williamr@2
    54
/* azov: gcc on lynx have a bug that causes internal
williamr@2
    55
 * compiler errors when compiling STLport with namespaces turned on.
williamr@2
    56
 * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES
williamr@2
    57
 */
williamr@2
    58
#if defined (__Lynx__) && (__GNUC__ < 3)
williamr@2
    59
#  define _STLP_HAS_NO_NAMESPACES 1
williamr@2
    60
#  define _STLP_NO_STATIC_TEMPLATE_DATA 1
williamr@2
    61
/* turn off useless warning about including system headers */
williamr@2
    62
#  define __NO_INCLUDE_WARN__ 1
williamr@2
    63
#endif
williamr@2
    64
williamr@2
    65
/* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate
williamr@4
    66
   static template data. If you are using GNU ld, please say so in user_config.h header */
williamr@2
    67
#if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \
williamr@2
    68
   ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) )
williamr@2
    69
#  define _STLP_NO_STATIC_TEMPLATE_DATA
williamr@2
    70
#endif
williamr@2
    71
williamr@2
    72
#if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \
williamr@2
    73
                             (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \
williamr@2
    74
                             (defined (__MINGW32__) && defined (_MT)))
williamr@2
    75
#  define _REENTRANT
williamr@2
    76
#endif
williamr@2
    77
williamr@2
    78
#if defined (__DJGPP)
williamr@2
    79
#  define _STLP_RAND48    1
williamr@2
    80
#  define _NOTHREADS    1
williamr@2
    81
#  undef  _PTHREADS
williamr@2
    82
#  define _STLP_LITTLE_ENDIAN
williamr@2
    83
#endif
williamr@2
    84
williamr@4
    85
#ifdef __SYMBIAN32__
williamr@4
    86
#  if !defined(_STLP_LITTLE_ENDIAN)
williamr@4
    87
#    define _STLP_LITTLE_ENDIAN
williamr@4
    88
#  endif
williamr@4
    89
#endif
williamr@4
    90
#if defined (__MINGW32__) && !defined (__SYMBIAN32__)
williamr@2
    91
/* Mingw32, egcs compiler using the Microsoft C runtime */
williamr@4
    92
#  define _STLP_VENDOR_GLOBAL_CSTD
williamr@2
    93
#  undef  _STLP_NO_DRAND48
williamr@2
    94
#  define _STLP_NO_DRAND48
williamr@2
    95
#  define _STLP_CALL
williamr@2
    96
williamr@2
    97
#  if defined (_STLP_NEW_PLATFORM_SDK)
williamr@2
    98
/* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */
williamr@2
    99
#    undef _STLP_NEW_PLATFORM_SDK
williamr@2
   100
#  endif
williamr@2
   101
#endif /* __MINGW32__ */
williamr@2
   102
williamr@4
   103
#if defined (__CYGWIN__) || defined (__MINGW32__) && !defined(__SYMBIAN32__)
williamr@2
   104
#  if !defined (_STLP_USE_STATIC_LIB)
williamr@2
   105
#    define _STLP_USE_DECLSPEC 1
williamr@2
   106
#    if !defined (_STLP_USE_DYNAMIC_LIB)
williamr@2
   107
#      define _STLP_USE_DYNAMIC_LIB
williamr@2
   108
#    endif
williamr@2
   109
#    define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
williamr@2
   110
#    define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
williamr@2
   111
#    define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
williamr@2
   112
#  endif
williamr@2
   113
/* The following is defined independently of _STLP_USE_STATIC_LIB because it is also
williamr@2
   114
 * used to import symbols from PSDK under MinGW
williamr@2
   115
 */
williamr@2
   116
#  define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
williamr@2
   117
#endif
williamr@2
   118
williamr@4
   119
#if !defined (__SYMBIAN32__) && (defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__)))
williamr@2
   120
#  if !defined (__MINGW32__) && !defined (__CYGWIN__)
williamr@2
   121
#    define _STLP_NO_NATIVE_MBSTATE_T    1
williamr@2
   122
#  endif
williamr@2
   123
#  if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)
williamr@2
   124
#    define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
williamr@2
   125
#  endif
williamr@2
   126
#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
williamr@2
   127
#endif
williamr@2
   128
williamr@2
   129
#define _STLP_NORETURN_FUNCTION __attribute__((noreturn))
williamr@2
   130
williamr@2
   131
/* Mac OS X is a little different with namespaces and cannot instantiate
williamr@2
   132
 * static data members in template classes */
williamr@2
   133
#if defined (__APPLE__)
williamr@2
   134
#  if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))
williamr@2
   135
/* Mac OS X is missing a required typedef and standard macro */
williamr@2
   136
typedef unsigned int wint_t;
williamr@2
   137
#  endif
williamr@2
   138
williamr@2
   139
#  define __unix
williamr@2
   140
williamr@2
   141
#  if (__GNUC__ < 3)
williamr@2
   142
williamr@2
   143
 /* Mac OS X needs one and only one source file to initialize all static data
williamr@2
   144
  * members in template classes. Only one source file in an executable or
williamr@2
   145
  * library can declare instances for such data members, otherwise duplicate
williamr@2
   146
  * symbols will be generated. */
williamr@2
   147
williamr@2
   148
#    define _STLP_NO_STATIC_TEMPLATE_DATA
williamr@2
   149
#    define _STLP_STATIC_CONST_INIT_BUG 1
williamr@2
   150
#    define _STLP_STATIC_TEMPLATE_DATA 0
williamr@2
   151
#    define _STLP_WEAK_ATTRIBUTE 1
williamr@2
   152
 /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle
williamr@2
   153
  * parameterized macros in #include statements */
williamr@2
   154
#    define _STLP_NATIVE_HEADER(header) <../g++/##header##>
williamr@2
   155
#    define _STLP_NATIVE_C_HEADER(header) <../include/##header##>
williamr@2
   156
#    define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##>
williamr@2
   157
#    define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##>
williamr@2
   158
#    define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##>
williamr@2
   159
#  endif /* __GNUC__ < 3 */
williamr@2
   160
williamr@2
   161
#  define _STLP_NO_LONG_DOUBLE
williamr@2
   162
williamr@2
   163
/* Mac OS X needs all "::" scope references to be "std::" */
williamr@2
   164
#  define _STLP_USE_NEW_C_HEADERS
williamr@2
   165
williamr@2
   166
#  define _STLP_NO_VENDOR_STDLIB_L
williamr@2
   167
williamr@2
   168
#endif /* __APPLE__ */
williamr@2
   169
williamr@2
   170
williamr@2
   171
#if defined(__BEOS__) && defined(__INTEL__)
williamr@2
   172
#  define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##>
williamr@2
   173
#  define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##>
williamr@2
   174
#  define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##>
williamr@2
   175
#  define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##>
williamr@2
   176
#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##>
williamr@2
   177
#  define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
williamr@2
   178
#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
williamr@2
   179
/*
williamr@2
   180
#  define _NOTHREADS 1
williamr@2
   181
*/
williamr@2
   182
#  ifdef _PTHREADS
williamr@2
   183
#    undef  _PTHREADS
williamr@2
   184
#  endif
williamr@2
   185
#  ifdef _STLP_PTHREADS
williamr@2
   186
#    undef _STLP_PTHREADS
williamr@2
   187
#  endif
williamr@2
   188
#  define _STLP_USE_STDIO_IO 1
williamr@2
   189
#  define _STLP_USE_GLIBC 1
williamr@2
   190
#endif
williamr@2
   191
williamr@2
   192
/* g++ 2.7.x and above */
williamr@2
   193
#define _STLP_LONG_LONG long long
williamr@2
   194
williamr@2
   195
#ifdef _STLP_USE_UCLIBC
williamr@2
   196
/*
williamr@2
   197
#  ifndef __DO_C99_MATH__
williamr@2
   198
*/
williamr@2
   199
  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
williamr@2
   200
#  define _STLP_NO_VENDOR_MATH_F
williamr@2
   201
  /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */
williamr@2
   202
#  define _STLP_NO_VENDOR_MATH_L
williamr@2
   203
#  define _STLP_NO_LONG_DOUBLE
williamr@2
   204
/*
williamr@2
   205
#  endif
williamr@2
   206
*/
williamr@2
   207
#endif
williamr@2
   208
williamr@2
   209
#if defined (__OpenBSD__) || defined (__FreeBSD__)
williamr@2
   210
#  define _STLP_NO_VENDOR_MATH_L
williamr@2
   211
#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
williamr@2
   212
#  ifndef __unix
williamr@2
   213
#    define __unix
williamr@2
   214
#  endif
williamr@2
   215
#endif
williamr@2
   216
williamr@2
   217
#if defined (__alpha__)
williamr@2
   218
#  define _STLP_NO_VENDOR_MATH_L
williamr@2
   219
#  define _STLP_NO_IEC559_SUPPORT
williamr@2
   220
#endif
williamr@2
   221
williamr@2
   222
#if defined (__hpux)
williamr@2
   223
#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
williamr@2
   224
  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
williamr@2
   225
#  define _STLP_NO_VENDOR_MATH_F
williamr@2
   226
#endif
williamr@2
   227
williamr@2
   228
#if (__GNUC__ >= 3)
williamr@2
   229
#  ifndef _STLP_HAS_NO_NEW_C_HEADERS
williamr@2
   230
/*
williamr@2
   231
#    ifndef _STLP_USE_UCLIBC
williamr@2
   232
*/
williamr@2
   233
#    define _STLP_HAS_NATIVE_FLOAT_ABS
williamr@2
   234
/*
williamr@2
   235
#    endif
williamr@2
   236
*/
williamr@2
   237
#  else
williamr@2
   238
#    ifdef _STLP_USE_GLIBC
williamr@2
   239
#      define _STLP_VENDOR_LONG_DOUBLE_MATH  1
williamr@2
   240
#    endif
williamr@2
   241
#  endif
williamr@2
   242
#endif
williamr@2
   243
williamr@2
   244
#if (__GNUC__ < 3)
williamr@2
   245
#  define _STLP_HAS_NO_NEW_C_HEADERS     1
williamr@4
   246
#  if !defined(_STLP_VENDOR_GLOBAL_CSTD)
williamr@4
   247
#    define _STLP_VENDOR_GLOBAL_CSTD       1
williamr@4
   248
#  endif
williamr@2
   249
#  define _STLP_DONT_USE_PTHREAD_SPINLOCK 1
williamr@2
   250
#  ifndef __HONOR_STD
williamr@2
   251
#    define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1
williamr@2
   252
#  endif
williamr@2
   253
/* egcs fails to initialize builtin types in expr. like this : new(p) char();  */
williamr@2
   254
#  define _STLP_DEF_CONST_PLCT_NEW_BUG 1
williamr@2
   255
#endif
williamr@2
   256
williamr@2
   257
/*
williamr@2
   258
#define _STLP_VENDOR_GLOBAL_CSTD 1
williamr@2
   259
*/
williamr@2
   260
williamr@2
   261
#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
williamr@2
   262
#  define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
williamr@2
   263
#  define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
williamr@2
   264
#  define _STLP_DEF_CONST_DEF_PARAM_BUG 1
williamr@2
   265
#else
williamr@2
   266
#  undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
williamr@2
   267
#  undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
williamr@2
   268
#endif
williamr@2
   269
williamr@4
   270
#if (__GNUC_MINOR__ < 9)  && (__GNUC__ < 3) && !(defined (__SYMBIAN32__) && defined (__GCCXML__))/* gcc 2.8 */
williamr@2
   271
#  define _STLP_NO_TEMPLATE_CONVERSIONS
williamr@2
   272
#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
williamr@2
   273
#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
williamr@2
   274
#  define _STLP_NO_FRIEND_TEMPLATES 1
williamr@2
   275
#  define _STLP_HAS_NO_NAMESPACES 1
williamr@2
   276
#  define _STLP_NO_METHOD_SPECIALIZATION 1
williamr@2
   277
#  define _STLP_NO_MEMBER_TEMPLATES 1
williamr@2
   278
#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
williamr@2
   279
#  define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
williamr@2
   280
/*  DJGPP doesn't seem to implement it in 2.8.x */
williamr@2
   281
#  ifdef DJGPP
williamr@2
   282
#    define  _STLP_NO_STATIC_TEMPLATE_DATA 1
williamr@2
   283
#  endif
williamr@2
   284
#endif
williamr@2
   285
williamr@4
   286
#if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__) && !(defined (__SYMBIAN32__) && defined (__GCCXML__))
williamr@2
   287
/* Will it work with 2.6 ? I doubt it. */
williamr@2
   288
#  if ( __GNUC_MINOR__ < 6 )
williamr@2
   289
__GIVE_UP_WITH_STL(GCC_272);
williamr@2
   290
#  endif
williamr@2
   291
williamr@2
   292
#  define  _STLP_NO_RELOPS_NAMESPACE
williamr@2
   293
#  define  _STLP_NON_TYPE_TMPL_PARAM_BUG
williamr@2
   294
#  define  _STLP_LIMITED_DEFAULT_TEMPLATES 1
williamr@2
   295
#  define  _STLP_DEFAULT_TYPE_PARAM 1
williamr@2
   296
#  define  _STLP_NO_BAD_ALLOC
williamr@2
   297
#  define  _STLP_NO_ARROW_OPERATOR 1
williamr@2
   298
#  ifndef _STLP_NO_STATIC_TEMPLATE_DATA
williamr@2
   299
#    define  _STLP_NO_STATIC_TEMPLATE_DATA
williamr@2
   300
#  endif
williamr@2
   301
#  define  _STLP_STATIC_CONST_INIT_BUG 1
williamr@2
   302
#  define  _STLP_NO_METHOD_SPECIALIZATION 1
williamr@2
   303
williamr@2
   304
#  if !defined (__CYGWIN32__)
williamr@2
   305
#    define _STLP_NESTED_TYPE_PARAM_BUG   1
williamr@2
   306
#    define _STLP_BASE_MATCH_BUG       1
williamr@2
   307
/*  unused operators are required (forward) */
williamr@2
   308
#    define  _STLP_CONST_CONSTRUCTOR_BUG
williamr@2
   309
#    define _STLP_NO_DEFAULT_NON_TYPE_PARAM
williamr@2
   310
#  endif
williamr@2
   311
#  define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
williamr@2
   312
#  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
williamr@4
   313
#  if !(defined (__SYMBIAN32__) && defined (__GCCXML__))
williamr@4
   314
#    define _STLP_NO_EXCEPTION_HEADER 1
williamr@4
   315
#  endif
williamr@2
   316
#else /* ! <= 2.7.* */
williamr@2
   317
#endif /* ! <= 2.7.* */
williamr@2
   318
williamr@2
   319
/* static template data members workaround strategy for gcc tries
williamr@2
   320
 * to use weak symbols.
williamr@2
   321
 * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll
williamr@2
   322
 * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your
williamr@2
   323
 * compilation unit ( or CFLAGS for it ) _before_ including any STL header ).
williamr@2
   324
 */
williamr@2
   325
#if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE )
williamr@2
   326
/* systems using GNU ld or format that supports weak symbols
williamr@2
   327
   may use "weak" attribute
williamr@2
   328
   Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */
williamr@2
   329
#  if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \
williamr@2
   330
     (( defined (__SVR4) || defined ( __svr4__ )) && \
williamr@2
   331
      ( defined (sun) || defined ( __sun__ )))
williamr@2
   332
#    define _STLP_WEAK_ATTRIBUTE 1
williamr@2
   333
#  endif
williamr@2
   334
#endif /* _STLP_WEAK_ATTRIBUTE */
williamr@2
   335
williamr@2
   336
williamr@2
   337
/* strict ANSI prohibits "long long" ( gcc) */
williamr@2
   338
#if defined ( __STRICT_ANSI__ )
williamr@2
   339
#  undef _STLP_LONG_LONG
williamr@2
   340
/*
williamr@2
   341
#    define _STLP_STRICT_ANSI 1
williamr@2
   342
*/
williamr@2
   343
#endif
williamr@2
   344
williamr@2
   345
/*
williamr@2
   346
#if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT)
williamr@2
   347
#  define _STLP_USE_TEMPLATE_EXPORT
williamr@2
   348
#  define _STLP_EXPORT_TEMPLATE_KEYWORD extern
williamr@2
   349
#  define _STLP_IMPORT_TEMPLATE_KEYWORD extern
williamr@2
   350
#endif
williamr@2
   351
*/
williamr@2
   352
williamr@2
   353
#ifndef __EXCEPTIONS
williamr@2
   354
#  undef  _STLP_DONT_USE_EXCEPTIONS
williamr@2
   355
#  define _STLP_DONT_USE_EXCEPTIONS 1
williamr@2
   356
#endif
williamr@2
   357
williamr@2
   358
#if (__GNUC__ >= 3)
williamr@2
   359
williamr@2
   360
#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
williamr@2
   361
#    if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))
williamr@2
   362
#      define _STLP_NATIVE_INCLUDE_PATH ../g++-v3
williamr@2
   363
#    else
williamr@2
   364
#      if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__))
williamr@2
   365
#        define _STLP_NATIVE_INCLUDE_PATH ../c++
williamr@2
   366
/*
williamr@2
   367
* Before version 3.4.0 the 0 patch level was not part of the include path:
williamr@2
   368
*/
williamr@2
   369
#      elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
williamr@2
   370
                                              (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
williamr@2
   371
                                              (__GNUC__ > 3))
williamr@2
   372
#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
williamr@2
   373
#      else
williamr@2
   374
#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__
williamr@2
   375
#      endif
williamr@2
   376
#    endif
williamr@2
   377
#  endif
williamr@2
   378
williamr@2
   379
/* Instantiation scheme that used (default) in gcc 3 made void of sense explicit
williamr@2
   380
   instantiation within library: nothing except increased library size. - ptr
williamr@2
   381
 */
williamr@2
   382
#  define _STLP_NO_FORCE_INSTANTIATE
williamr@2
   383
williamr@2
   384
#elif (__GNUC_MINOR__ < 8)
williamr@2
   385
williamr@2
   386
#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
williamr@4
   387
#    if !defined (__SYMBIAN32__)
williamr@4
   388
#      define _STLP_NATIVE_INCLUDE_PATH ../g++-include
williamr@4
   389
#    endif
williamr@2
   390
#  endif
williamr@2
   391
williamr@2
   392
/* tuning of static template data members workaround */
williamr@2
   393
#  if ( _STLP_STATIC_TEMPLATE_DATA < 1 )
williamr@2
   394
#    if ( _STLP_WEAK_ATTRIBUTE > 0 )
williamr@2
   395
#      define _STLP_WEAK __attribute__ (( weak ))
williamr@2
   396
#    else
williamr@2
   397
#      define _STLP_WEAK
williamr@2
   398
#    endif /* _STLP_WEAK_ATTRIBUTE */
williamr@2
   399
williamr@2
   400
#    ifdef __PUT_STATIC_DATA_MEMBERS_HERE
williamr@2
   401
#      define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init
williamr@2
   402
#    else
williamr@2
   403
#      define __DECLARE_INSTANCE(type,item,init)
williamr@2
   404
#    endif /* __PUT_STATIC_DATA_MEMBERS_HERE */
williamr@2
   405
#  endif /* _STLP_STATIC_TEMPLATE_DATA */
williamr@2
   406
williamr@2
   407
#else
williamr@2
   408
williamr@2
   409
/* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in
williamr@2
   410
 * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages.
williamr@2
   411
 * I expect "g++-3" not being used in later releases.
williamr@2
   412
 * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit),
williamr@2
   413
 * please change the macro below to point to your directory.
williamr@2
   414
 */
williamr@2
   415
williamr@2
   416
#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
williamr@2
   417
#    if defined(__DJGPP)
williamr@2
   418
#      define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx
williamr@2
   419
#    elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97)
williamr@2
   420
#      define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3
williamr@2
   421
#    elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \
williamr@2
   422
          !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) )
williamr@2
   423
#      define _STLP_NATIVE_INCLUDE_PATH ../g++-3
williamr@2
   424
#    elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ )
williamr@2
   425
/* this really sucks, as GNUpro does not really identifies itself, so we have to guess
williamr@2
   426
 * depending on a platform
williamr@2
   427
 */
williamr@2
   428
#      ifdef __hpux
williamr@2
   429
#        define _STLP_NATIVE_INCLUDE_PATH ../g++-3
williamr@2
   430
#      else
williamr@2
   431
#        define _STLP_NATIVE_INCLUDE_PATH ../g++-2
williamr@2
   432
#      endif
williamr@2
   433
#    else
williamr@2
   434
#      define _STLP_NATIVE_INCLUDE_PATH g++
williamr@2
   435
#    endif
williamr@2
   436
#  endif
williamr@2
   437
williamr@2
   438
/* <exception> et al */
williamr@2
   439
#  ifdef __FreeBSD__
williamr@2
   440
#    if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
williamr@2
   441
#      define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
williamr@2
   442
#    endif
williamr@2
   443
#  else
williamr@2
   444
/* azov */
williamr@2
   445
#    ifndef __Lynx__
williamr@2
   446
#      if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)
williamr@2
   447
/*
williamr@2
   448
#     define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3
williamr@2
   449
*/
williamr@2
   450
#      else
williamr@2
   451
#        define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
williamr@2
   452
#      endif
williamr@2
   453
#    endif
williamr@2
   454
#  endif
williamr@2
   455
williamr@2
   456
#endif /* GNUC_MINOR < 8 */
williamr@2
   457
williamr@2
   458
#if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
williamr@2
   459
#  define _STLP_NATIVE_C_INCLUDE_PATH ../include
williamr@2
   460
#endif
williamr@2
   461
williamr@2
   462
/* Tune settings for the case where static template data members are not
williamr@2
   463
 * instaniated by default
williamr@2
   464
 */
williamr@2
   465
#if defined ( _STLP_NO_STATIC_TEMPLATE_DATA )
williamr@2
   466
#  define _STLP_STATIC_TEMPLATE_DATA 0
williamr@2
   467
#  if !defined ( _STLP_WEAK_ATTRIBUTE )
williamr@2
   468
#    define _STLP_WEAK_ATTRIBUTE 0
williamr@2
   469
#  endif
williamr@2
   470
#  ifdef __PUT_STATIC_DATA_MEMBERS_HERE
williamr@2
   471
#    define __DECLARE_INSTANCE(type,item,init) type item init
williamr@2
   472
#  else
williamr@2
   473
#    define __DECLARE_INSTANCE(type,item,init)
williamr@2
   474
#  endif
williamr@2
   475
#else
williamr@2
   476
#  define _STLP_STATIC_TEMPLATE_DATA 1
williamr@2
   477
#endif
williamr@2
   478
williamr@4
   479