epoc32/include/tools/stlport/stl/config/_msvc.h
branchSymbian2
changeset 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/tools/stlport/stl/config/_msvc.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -0,0 +1,355 @@
     1.4 +/* STLport configuration file
     1.5 + * It is internal STLport header - DO NOT include it directly
     1.6 + * Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0, ICL
     1.7 + */
     1.8 +
     1.9 +#if !defined (_STLP_COMPILER)
    1.10 +#  define _STLP_COMPILER "Microsoft Visual Studio C++"
    1.11 +#endif
    1.12 +
    1.13 +#if !defined (__ICL) && !defined (_STLP_MSVC)
    1.14 +#  define _STLP_MSVC _MSC_VER
    1.15 +#endif
    1.16 +
    1.17 +#if !defined (_STLP_MSVC_LIB)
    1.18 +#  define _STLP_MSVC_LIB _MSC_VER
    1.19 +#endif
    1.20 +
    1.21 +#if defined (__BUILDING_STLPORT) && defined (_MANAGED)
    1.22 +/* Building a managed version of STLport is not supported because we haven't
    1.23 + * found a good reason to support it. However, building a managed translation
    1.24 + * unit using STLport _is_ supported.
    1.25 + */
    1.26 +#  error Sorry but building a managed version of STLport is not supported.
    1.27 +#endif
    1.28 +
    1.29 +#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
    1.30 +/* This is a specific section for compilers coming with platform SDKs. Native
    1.31 + * library coming with it is different from the one coming with commercial
    1.32 + * MSVC compilers so there is some specific settings.
    1.33 + */
    1.34 +#  define _STLP_NATIVE_INCLUDE_PATH ../crt
    1.35 +#  define _STLP_VENDOR_GLOBAL_CSTD
    1.36 +#  define _STLP_VENDOR_TERMINATE_STD
    1.37 +#  define _STLP_GLOBAL_NEW_HANDLER
    1.38 +#  if (_STLP_MSVC_LIB <= 1400)
    1.39 +/* We hope this bug will be fixed in future versions. */
    1.40 +#    define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
    1.41 +#  endif
    1.42 +#endif
    1.43 +
    1.44 +#define _STLP_CALL __cdecl
    1.45 +
    1.46 +#ifndef _STLP_LONG_LONG
    1.47 +#  define _STLP_LONG_LONG __int64
    1.48 +#endif
    1.49 +
    1.50 +#define _STLP_PRAGMA_ONCE
    1.51 +
    1.52 +/* These switches depend on compiler flags. We are hoping here that compilers
    1.53 + * simulating MSVC behavior use identical macros to report compilation context.
    1.54 + * Otherwise those macros will have to be undef in specific compiler configuration
    1.55 + * files.
    1.56 + */
    1.57 +#ifndef _CPPUNWIND
    1.58 +#  define _STLP_DONT_USE_EXCEPTIONS 1
    1.59 +#endif
    1.60 +
    1.61 +#ifndef _CPPRTTI
    1.62 +#  define _STLP_NO_RTTI 1
    1.63 +#endif
    1.64 +
    1.65 +#if defined (_MT) && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT)
    1.66 +#  define _REENTRANT 1
    1.67 +#endif
    1.68 +
    1.69 +#if !defined (_NATIVE_WCHAR_T_DEFINED)
    1.70 +#  define _STLP_WCHAR_T_IS_USHORT 1
    1.71 +#endif
    1.72 +
    1.73 +#define _STLP_MINIMUM_IMPORT_STD
    1.74 +#define _STLP_NO_VENDOR_STDLIB_L 1
    1.75 +
    1.76 +#if defined (_STLP_MSVC)
    1.77 +
    1.78 +#define _STLP_NORETURN_FUNCTION __declspec(noreturn)
    1.79 +
    1.80 +/* Full compiler version comes from boost library intrinsics.hpp header. */
    1.81 +#  if defined (_MSC_FULL_VER) && (_MSC_FULL_VER >= 140050215)
    1.82 +#    define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
    1.83 +#    define _STLP_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
    1.84 +#    define _STLP_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
    1.85 +#    define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
    1.86 +#    define _STLP_IS_POD(T) __is_pod(T)
    1.87 +#    define _STLP_HAS_TYPE_TRAITS_INTRINSICS
    1.88 +#  endif
    1.89 +
    1.90 +#  ifndef _STLP_MSVC50_COMPATIBILITY
    1.91 +#    define _STLP_MSVC50_COMPATIBILITY   1
    1.92 +#  endif
    1.93 +
    1.94 +#  define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
    1.95 +#  define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1
    1.96 +
    1.97 +/* # ifndef __BUILDING_STLPORT
    1.98 + * #  define _STLP_USE_TEMPLATE_EXPORT 1
    1.99 + * # endif
   1.100 + */
   1.101 +#  if (_STLP_MSVC <= 1400)
   1.102 +#    define _STLP_STATIC_CONST_INIT_BUG   1
   1.103 +#  endif
   1.104 +
   1.105 +/** Note: the macro _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT is defined
   1.106 +unconditionally and undef'ed here when applicable. */
   1.107 +#  if defined(UNDER_CE)
   1.108 +/* eVCx:
   1.109 +uncaught_exception is declared in the SDKs delivered with eVC4 (eVC3 is
   1.110 +unknown) and they all reside in namespace 'std' there. However, they are not
   1.111 +part of any lib so linking fails. When using VC8 to crosscompile for CE 5 on
   1.112 +an ARMV4I, the uncaught_exception test fails, the function returns the wrong
   1.113 +value. */
   1.114 +#  else
   1.115 +/* VCx:
   1.116 +These are present at least since VC6, but the uncaught_exception() of VC6 is
   1.117 +broken, it returns the wrong value in the unittests. 7.1 and later seem to
   1.118 +work, 7.0 is still unknown (we assume it works until negative report). */
   1.119 +#    if (_STLP_MSVC >= 1300)// VC7 and later
   1.120 +#      undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
   1.121 +#      if !defined (_STLP_DONT_USE_EXCEPTIONS)
   1.122 +#        define _STLP_NOTHROW throw()
   1.123 +#      endif
   1.124 +#    endif
   1.125 +#  endif
   1.126 +
   1.127 +#  if (_STLP_MSVC <= 1300)
   1.128 +#    define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
   1.129 +#    define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
   1.130 +/* There is no partial spec, and MSVC breaks on simulating it for iterator_traits queries */
   1.131 +#    define _STLP_USE_OLD_HP_ITERATOR_QUERIES
   1.132 +#    define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
   1.133 +#    define _STLP_NO_METHOD_SPECIALIZATION 1
   1.134 +#    define _STLP_DEF_CONST_PLCT_NEW_BUG 1
   1.135 +#    define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1
   1.136 +/* VC++ cannot handle default allocator argument in template constructors */
   1.137 +#    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
   1.138 +#    define _STLP_NO_QUALIFIED_FRIENDS    1
   1.139 +#    define _STLP_NO_FRIEND_TEMPLATES
   1.140 +/* Fails to properly resolve call to sin() from within sin() */
   1.141 +#  endif
   1.142 +
   1.143 +#  if (_STLP_MSVC < 1300)
   1.144 +#    define _STLP_NO_IEC559_SUPPORT 1
   1.145 +#  endif
   1.146 +
   1.147 +#  if (_STLP_MSVC < 1300) /* including MSVC 6.0 */
   1.148 +/* These work, as long they are inline */
   1.149 +#    define _STLP_INLINE_MEMBER_TEMPLATES 1
   1.150 +#    define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
   1.151 +#    define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
   1.152 +#  endif
   1.153 +
   1.154 +#  if (_STLP_MSVC >= 1200)
   1.155 +#    define _STLP_HAS_NATIVE_FLOAT_ABS 1
   1.156 +#  endif
   1.157 +
   1.158 +// TODO: some eVC4 compilers report _MSC_VER 1201 or 1202, which category do they belong to?
   1.159 +#  if (_STLP_MSVC > 1200) && (_STLP_MSVC < 1310)
   1.160 +#    define _STLP_NO_MOVE_SEMANTIC
   1.161 +#  endif
   1.162 +
   1.163 +#  if (_STLP_MSVC < 1300)
   1.164 +/* TODO: remove this if it is handled and documented elsewhere
   1.165 + * dums: VC6 do not handle correctly member templates of class that are explicitely
   1.166 + * instanciated to be exported. There is a workaround, seperate the non template methods
   1.167 + * from the template ones within 2 different classes and only export the non template one.
   1.168 + * It is implemented for basic_string and locale at the writing of this note.
   1.169 + * However this problem hos not  been considered as important enough to remove template member
   1.170 + * methods for other classes. Moreover Boost (www.boost.org) required it to be granted.
   1.171 + * The workaround is activated thanks to the _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND macro defined
   1.172 + * later in this config file.
   1.173 + */
   1.174 +/*
   1.175 +#    if defined (_DLL)
   1.176 +#      define _STLP_NO_MEMBER_TEMPLATES 1
   1.177 +#    endif
   1.178 +*/
   1.179 +
   1.180 +/* Boris : not defining this macro for SP5 causes other problems */
   1.181 +/*#    if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) */
   1.182 +#    define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
   1.183 +/*#    endif */
   1.184 +#    define _STLP_DONT_USE_BOOL_TYPEDEF 1
   1.185 +#    define _STLP_DONT_RETURN_VOID 1
   1.186 +#  endif
   1.187 +
   1.188 +/*
   1.189 + * MSVC6 is known to have many trouble with namespace management but
   1.190 + * MSVC .Net 2003 and 2005 also have a bug difficult to reproduce without
   1.191 + * STLport:
   1.192 + * namespace stlp_std {
   1.193 + *   typedef int foo_int;
   1.194 + * }
   1.195 + * #include <map>
   1.196 + * const foo_int bar = 0;
   1.197 + *
   1.198 + * As you can see foo is available without namespace specification as if
   1.199 + * a using namespace stlp_std has been performed. Defining _STLP_USING_NAMESPACE_BUG
   1.200 + * restore the expected compilation error.
   1.201 + */
   1.202 +#  define _STLP_USING_NAMESPACE_BUG 1
   1.203 +
   1.204 +#  if (_STLP_MSVC < 1300) /* MSVC 6.0 and earlier */
   1.205 +/* defined for DEBUG and NDEBUG too, to allow user mix own debug build with STLP release library */
   1.206 +#    define _STLP_USE_ABBREVS
   1.207 +#  endif
   1.208 +
   1.209 +// TODO: what is the earliest version for this? If it is 1200, use _STLP_MSVC>=1200.
   1.210 +#  if (_STLP_MSVC > 1100) && (_STLP_MSVC < 1300)
   1.211 +typedef char __stl_char;
   1.212 +#    define _STLP_DEFAULTCHAR __stl_char
   1.213 +#  endif
   1.214 +
   1.215 +#  if (_STLP_MSVC < 1200) /* before VC++ 6.0 */
   1.216 +/* #  define _STLP_NO_MEMBER_TEMPLATES 1 */
   1.217 +/* #  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 */
   1.218 +#    define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS 1
   1.219 +#    define _STLP_DONT_USE_PARTIAL_SPEC_WRKD 1
   1.220 +#    define _STLP_QUALIFIED_SPECIALIZATION_BUG 1
   1.221 +#    define _STLP_NON_TYPE_TMPL_PARAM_BUG 1
   1.222 +#    define _STLP_THROW_RETURN_BUG 1
   1.223 +#    define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
   1.224 +#    define _STLP_DEF_CONST_DEF_PARAM_BUG 1
   1.225 +#  endif
   1.226 +
   1.227 +#  if (_STLP_MSVC < 1100 )
   1.228 +#    ifndef _STLP_USE_NO_IOSTREAMS
   1.229 +#      define _STLP_USE_NO_IOSTREAMS
   1.230 +#    endif
   1.231 +/* #  define _STLP_NESTED_TYPE_PARAM_BUG 1 */
   1.232 +/* Debug mode does not work for 4.2 */
   1.233 +#    if defined (_STLP_DEBUG)
   1.234 +#      pragma message ("STLport debug mode does not work for VC++ 4.2, turning _STLP_DEBUG off ...")
   1.235 +#      undef _STLP_DEBUG
   1.236 +#    endif
   1.237 +#    define _STLP_NO_BOOL            1
   1.238 +#    define _STLP_NEED_TYPENAME      1
   1.239 +#    define _STLP_NEED_EXPLICIT      1
   1.240 +#    define _STLP_NEED_MUTABLE       1
   1.241 +#    define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
   1.242 +#    define _STLP_LIMITED_DEFAULT_TEMPLATES 1
   1.243 +#    define _STLP_NONTEMPL_BASE_MATCH_BUG 1
   1.244 +#    define _STLP_BROKEN_USING_DIRECTIVE  1
   1.245 +#    define _STLP_NO_ARROW_OPERATOR 1
   1.246 +#    define _STLP_NO_SIGNED_BUILTINS 1
   1.247 +#    define _STLP_NO_EXCEPTION_SPEC 1
   1.248 +#    define _STLP_HAS_NO_NAMESPACES 1
   1.249 +#    define _STLP_NO_AT_MEMBER_FUNCTION 1
   1.250 +#    define _STLP_NO_MEMBER_TEMPLATES 1
   1.251 +#  endif /* 1100 */
   1.252 +
   1.253 +#endif /* _STLP_MSVC */
   1.254 +
   1.255 +/** The desktop variants starting with VC8 have a set of more secure replacements
   1.256 +for the error-prone string handling functions of the C standard lib. */
   1.257 +#if (_STLP_MSVC_LIB >= 1400) && !defined (_STLP_USING_PLATFORM_SDK_COMPILER) && !defined(UNDER_CE)
   1.258 +#  define _STLP_USE_SAFE_STRING_FUNCTIONS 1
   1.259 +#endif
   1.260 +
   1.261 +#if (_STLP_MSVC_LIB <= 1310)
   1.262 +#  define _STLP_VENDOR_GLOBAL_CSTD
   1.263 +#endif
   1.264 +
   1.265 +#if (_STLP_MSVC_LIB >= 1300) && !defined(UNDER_CE)
   1.266 +/* Starting with MSVC 7.0 and compilers simulating it,
   1.267 + * we assume that the new SDK is granted:
   1.268 + */
   1.269 +#  define _STLP_NEW_PLATFORM_SDK 1
   1.270 +#endif
   1.271 +
   1.272 +#if (_STLP_MSVC_LIB < 1300) /* including MSVC 6.0 */
   1.273 +#  define _STLP_GLOBAL_NEW_HANDLER 1
   1.274 +#  define _STLP_VENDOR_UNEXPECTED_STD
   1.275 +#  define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
   1.276 +#endif
   1.277 +
   1.278 +#if (_STLP_MSVC_LIB < 1100)
   1.279 +/* up to 4.2, library is in global namespace */
   1.280 +#  define _STLP_VENDOR_GLOBAL_STD
   1.281 +#endif
   1.282 +
   1.283 +#if (_STLP_MSVC_LIB <= 1010)
   1.284 +/* "bool" is reserved in MSVC 4.1 while <yvals.h> absent, so : */
   1.285 +#  define _STLP_NO_BAD_ALLOC
   1.286 +#  define _STLP_HAS_NO_NEW_C_HEADERS 1
   1.287 +#  define _STLP_NO_NEW_NEW_HEADER 1
   1.288 +#elif (_STLP_MSVC_LIB < 1100)
   1.289 +/* VC++ 4.2 and higher */
   1.290 +#  define _STLP_YVALS_H 1
   1.291 +#  define _STLP_USE_NO_IOSTREAMS 1
   1.292 +#endif
   1.293 +
   1.294 +#define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
   1.295 +#define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
   1.296 +
   1.297 +#if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1100)
   1.298 +#  define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
   1.299 +#  define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
   1.300 +#endif
   1.301 +
   1.302 +#if defined (__DLL) || defined (_DLL) || defined (_RTLDLL) || defined (_AFXDLL)
   1.303 +#  define _STLP_RUNTIME_DLL
   1.304 +#endif
   1.305 +#if defined (__BUILDING_STLPORT) && \
   1.306 +   (defined (_STLP_USE_DYNAMIC_LIB) || \
   1.307 +    defined (_STLP_RUNTIME_DLL) && !defined (_STLP_USE_STATIC_LIB))
   1.308 +#  define _STLP_DLL
   1.309 +#endif
   1.310 +#include <stl/config/_detect_dll_or_lib.h>
   1.311 +#undef _STLP_RUNTIME_DLL
   1.312 +#undef _STLP_DLL
   1.313 +
   1.314 +#if defined (_STLP_USE_DYNAMIC_LIB)
   1.315 +#  undef  _STLP_USE_DECLSPEC
   1.316 +#  define _STLP_USE_DECLSPEC 1
   1.317 +#  if (_STLP_MSVC >= 1200) && (_STLP_MSVC < 1300)
   1.318 +#    define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND 1
   1.319 +#  endif
   1.320 +#endif
   1.321 +
   1.322 +#if !defined (_STLP_IMPORT_TEMPLATE_KEYWORD)
   1.323 +#  if !defined (_MSC_EXTENSIONS) || defined(_STLP_MSVC) && _STLP_MSVC >= 1300
   1.324 +#    define _STLP_IMPORT_TEMPLATE_KEYWORD
   1.325 +#  else
   1.326 +#    define _STLP_IMPORT_TEMPLATE_KEYWORD extern
   1.327 +#  endif
   1.328 +#endif
   1.329 +#define _STLP_EXPORT_TEMPLATE_KEYWORD
   1.330 +
   1.331 +#if defined (_STLP_MSVC) && (_STLP_MSVC < 1200)
   1.332 +/*    only static STLport lib now works for VC 5.0 */
   1.333 +#  undef  _STLP_USE_STATIC_LIB
   1.334 +#  undef  _STLP_USE_DYNAMIC_LIB
   1.335 +#  define _STLP_USE_STATIC_LIB
   1.336 +/*    disable hook which makes template symbols to be searched for in the library */
   1.337 +#  undef _STLP_NO_CUSTOM_IO
   1.338 +#endif
   1.339 +
   1.340 +#include <stl/config/_auto_link.h>
   1.341 +
   1.342 +#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
   1.343 +/* The Windows 64 bits SDK required for the moment link to bufferoverflowU.lib for
   1.344 + * additional buffer overrun checks. Rather than require the STLport build system and
   1.345 + * users to explicitely link with it we use the MSVC auto link feature.
   1.346 + */
   1.347 +#  if !defined (_STLP_DONT_USE_AUTO_LINK) || defined (__BUILDING_STLPORT)
   1.348 +#    pragma comment (lib, "bufferoverflowU.lib")
   1.349 +#    if defined (_STLP_VERBOSE_AUTO_LINK)
   1.350 +#      pragma message ("STLport: Auto linking to bufferoverflowU.lib")
   1.351 +#    endif
   1.352 +#  endif
   1.353 +#endif
   1.354 +
   1.355 +/* Local Variables:
   1.356 + * mode:C++
   1.357 + * End:
   1.358 + */