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