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