19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* STLport configuration file 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * It is internal STLport header - DO NOT include it directly 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0, ICL 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_COMPILER) 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_COMPILER "Microsoft Visual Studio C++" 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (__ICL) && !defined (_STLP_MSVC) 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_MSVC _MSC_VER 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_MSVC_LIB) 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_MSVC_LIB _MSC_VER 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__BUILDING_STLPORT) && defined (_MANAGED) 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Building a managed version of STLport is not supported because we haven't 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * found a good reason to support it. However, building a managed translation 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * unit using STLport _is_ supported. 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# error Sorry but building a managed version of STLport is not supported. 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USING_PLATFORM_SDK_COMPILER) 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* This is a specific section for compilers coming with platform SDKs. Native 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * library coming with it is different from the one coming with commercial 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * MSVC compilers so there is some specific settings. 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NATIVE_INCLUDE_PATH ../crt 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_VENDOR_GLOBAL_CSTD 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_VENDOR_TERMINATE_STD 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_GLOBAL_NEW_HANDLER 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC_LIB <= 1400) 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* We hope this bug will be fixed in future versions. */ 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CALL __cdecl 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_LONG_LONG 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_LONG_LONG __int64 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_PRAGMA_ONCE 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* These switches depend on compiler flags. We are hoping here that compilers 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * simulating MSVC behavior use identical macros to report compilation context. 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Otherwise those macros will have to be undef in specific compiler configuration 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * files. 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _CPPUNWIND 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DONT_USE_EXCEPTIONS 1 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _CPPRTTI 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_RTTI 1 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_MT) && !defined (_STLP_NO_THREADS) 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_THREADS 1 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_NATIVE_WCHAR_T_DEFINED) 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_WCHAR_T_IS_USHORT 1 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_VENDOR_STDLIB_L 1 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MSVC) 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if (_STLP_MSVC < 1200) 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# error Microsoft Visual C++ compilers before version 6 (SP5) are not supported. 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_NORETURN_FUNCTION __declspec(noreturn) 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Full compiler version comes from boost library intrinsics.hpp header. */ 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_MSC_FULL_VER) && (_MSC_FULL_VER >= 140050215) 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T) 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T) 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_IS_POD(T) __is_pod(T) 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_TYPE_TRAITS_INTRINSICS 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_MSVC50_COMPATIBILITY 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_MSVC50_COMPATIBILITY 1 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_NO_STATIC_CONST_DEFINITION 1 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* # ifndef __BUILDING_STLPORT 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * # define _STLP_USE_TEMPLATE_EXPORT 1 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * # endif 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/** Note: the macro _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT is defined 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockunconditionally and undef'ed here when applicable. */ 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (UNDER_CE) 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* eVCx: 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockuncaught_exception is declared in the SDKs delivered with eVC4 (eVC3 is 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockunknown) and they all reside in namespace 'std' there. However, they are not 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpart of any lib so linking fails. When using VC8 to crosscompile for CE 5 on 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockan ARMV4I, the uncaught_exception test fails, the function returns the wrong 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvalue. */ 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* All eVCs up to at least VC8/CE5 have a broken new operator that 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott returns null instead of throwing bad_alloc. */ 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* VCx: 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve BlockThese are present at least since VC6, but the uncaught_exception() of VC6 is 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbroken, it returns the wrong value in the unittests. 7.1 and later seem to 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockwork, 7.0 is still unknown (we assume it works until negative report). */ 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC >= 1300)// VC7 and later 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if (_STLP_MSVC < 1300) 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_NOTHROW 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC <= 1300) 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_STATIC_CONST_INIT_BUG 1 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* There is no partial spec, and MSVC breaks on simulating it for iterator_traits queries */ 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_USE_OLD_HP_ITERATOR_QUERIES 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_METHOD_SPECIALIZATION 1 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* VC++ cannot handle default allocator argument in template constructors */ 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_QUALIFIED_FRIENDS 1 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC < 1300) /* including MSVC 6.0 */ 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_HAS_NATIVE_FLOAT_ABS 1 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// TODO: some eVC4 compilers report _MSC_VER 1201 or 1202, which category do they belong to? 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC > 1200) && (_STLP_MSVC < 1310) 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_MOVE_SEMANTIC 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC < 1300) 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* TODO: remove this if it is handled and documented elsewhere 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * dums: VC6 do not handle correctly member templates of class that are explicitely 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * instanciated to be exported. There is a workaround, seperate the non template methods 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * from the template ones within 2 different classes and only export the non template one. 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * It is implemented for basic_string and locale at the writing of this note. 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * However this problem hos not been considered as important enough to remove template member 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * methods for other classes. Moreover Boost (www.boost.org) required it to be granted. 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * The workaround is activated thanks to the _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND macro defined 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * later in this config file. 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_DLL) 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_MEMBER_TEMPLATES 1 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block*/ 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Boris : not defining this macro for SP5 causes other problems */ 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*# if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) */ 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*# endif */ 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DONT_USE_BOOL_TYPEDEF 1 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DONT_RETURN_VOID 1 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if (_STLP_MSVC < 1300) /* MSVC 6.0 and earlier */ 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* defined for DEBUG and NDEBUG too, to allow user mix own debug build with STLP release library */ 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_USE_ABBREVS 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_MSVC */ 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* The desktop variants starting with VC8 have a set of more secure replacements 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * for the error-prone string handling functions of the C standard lib. */ 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* When user do not consider 'unsafe' string functions as deprecated using _CRT_SECURE_NO_DEPRECATE 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * macro we use 'unsafe' functions for performance reasons. */ 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (_STLP_MSVC_LIB >= 1400) && !defined (_STLP_USING_PLATFORM_SDK_COMPILER) && !defined (UNDER_CE) && \ 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott !defined (_CRT_SECURE_NO_DEPRECATE) 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_USE_SAFE_STRING_FUNCTIONS 1 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_STLP_MSVC_LIB <= 1310) 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_VENDOR_GLOBAL_CSTD 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_STLP_MSVC_LIB >= 1300) && !defined(UNDER_CE) 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Starting with MSVC 7.0 and compilers simulating it, 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * we assume that the new SDK is granted: 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NEW_PLATFORM_SDK 1 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (_STLP_MSVC_LIB < 1300) /* including MSVC 6.0 */ 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_GLOBAL_NEW_HANDLER 1 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_VENDOR_UNEXPECTED_STD 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_EXPORT_DECLSPEC __declspec(dllexport) 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__DLL) || defined (_DLL) || defined (_RTLDLL) || defined (_AFXDLL) 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_RUNTIME_DLL 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__BUILDING_STLPORT) && \ 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block (defined (_STLP_USE_DYNAMIC_LIB) || \ 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block defined (_STLP_RUNTIME_DLL) && !defined (_STLP_USE_STATIC_LIB)) 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_DLL 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_detect_dll_or_lib.h> 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_RUNTIME_DLL 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_DLL 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_DYNAMIC_LIB) 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# undef _STLP_USE_DECLSPEC 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_USE_DECLSPEC 1 234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND 1 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_IMPORT_TEMPLATE_KEYWORD) 240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (_MSC_EXTENSIONS) || defined (_STLP_MSVC) && (_STLP_MSVC >= 1300) 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_IMPORT_TEMPLATE_KEYWORD 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# define _STLP_IMPORT_TEMPLATE_KEYWORD extern 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_EXPORT_TEMPLATE_KEYWORD 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_auto_link.h> 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USING_PLATFORM_SDK_COMPILER) 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* The Windows 64 bits SDK required for the moment link to bufferoverflowU.lib for 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * additional buffer overrun checks. Rather than require the STLport build system and 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * users to explicitely link with it we use the MSVC auto link feature. 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !defined (_STLP_DONT_USE_AUTO_LINK) || defined (__BUILDING_STLPORT) 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# pragma comment (lib, "bufferoverflowU.lib") 257e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_VERBOSE) 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# pragma message ("STLport: Auto linking to bufferoverflowU.lib") 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 263e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_MSVC) 264e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <stl/config/_feedback.h> 265e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 266