mirror of
https://github.com/reactos/reactos.git
synced 2024-09-11 05:12:43 +00:00
266 lines
9 KiB
C
266 lines
9 KiB
C
/* STLport configuration file
|
|
* It is internal STLport header - DO NOT include it directly
|
|
* Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0, ICL
|
|
*/
|
|
|
|
#if !defined (_STLP_COMPILER)
|
|
# define _STLP_COMPILER "Microsoft Visual Studio C++"
|
|
#endif
|
|
|
|
#if !defined (__ICL) && !defined (_STLP_MSVC)
|
|
# define _STLP_MSVC _MSC_VER
|
|
#endif
|
|
|
|
#if !defined (_STLP_MSVC_LIB)
|
|
# define _STLP_MSVC_LIB _MSC_VER
|
|
#endif
|
|
|
|
#if defined (__BUILDING_STLPORT) && defined (_MANAGED)
|
|
/* Building a managed version of STLport is not supported because we haven't
|
|
* found a good reason to support it. However, building a managed translation
|
|
* unit using STLport _is_ supported.
|
|
*/
|
|
# error Sorry but building a managed version of STLport is not supported.
|
|
#endif
|
|
|
|
#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
|
|
/* This is a specific section for compilers coming with platform SDKs. Native
|
|
* library coming with it is different from the one coming with commercial
|
|
* MSVC compilers so there is some specific settings.
|
|
*/
|
|
# define _STLP_NATIVE_INCLUDE_PATH ../crt
|
|
# define _STLP_VENDOR_GLOBAL_CSTD
|
|
# define _STLP_VENDOR_TERMINATE_STD
|
|
# define _STLP_GLOBAL_NEW_HANDLER
|
|
# if (_STLP_MSVC_LIB <= 1400)
|
|
/* We hope this bug will be fixed in future versions. */
|
|
# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
|
|
# endif
|
|
#endif
|
|
|
|
#define _STLP_CALL __cdecl
|
|
|
|
#ifndef _STLP_LONG_LONG
|
|
# define _STLP_LONG_LONG __int64
|
|
#endif
|
|
|
|
#define _STLP_PRAGMA_ONCE
|
|
|
|
/* These switches depend on compiler flags. We are hoping here that compilers
|
|
* simulating MSVC behavior use identical macros to report compilation context.
|
|
* Otherwise those macros will have to be undef in specific compiler configuration
|
|
* files.
|
|
*/
|
|
#ifndef _CPPUNWIND
|
|
# define _STLP_DONT_USE_EXCEPTIONS 1
|
|
#endif
|
|
|
|
#ifndef _CPPRTTI
|
|
# define _STLP_NO_RTTI 1
|
|
#endif
|
|
|
|
#if defined (_MT) && !defined (_STLP_NO_THREADS)
|
|
# define _STLP_THREADS 1
|
|
#endif
|
|
|
|
#if !defined (_NATIVE_WCHAR_T_DEFINED)
|
|
# define _STLP_WCHAR_T_IS_USHORT 1
|
|
#endif
|
|
|
|
#define _STLP_NO_VENDOR_STDLIB_L 1
|
|
|
|
#if defined (_STLP_MSVC)
|
|
|
|
# if (_STLP_MSVC < 1200)
|
|
# error Microsoft Visual C++ compilers before version 6 (SP5) are not supported.
|
|
# endif
|
|
|
|
# define _STLP_NORETURN_FUNCTION __declspec(noreturn)
|
|
|
|
/* Full compiler version comes from boost library intrinsics.hpp header. */
|
|
# if defined (_MSC_FULL_VER) && (_MSC_FULL_VER >= 140050215)
|
|
# define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
|
|
# define _STLP_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
|
|
# define _STLP_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
|
|
# define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
|
|
# define _STLP_IS_POD(T) __is_pod(T)
|
|
# define _STLP_HAS_TYPE_TRAITS_INTRINSICS
|
|
# endif
|
|
|
|
# ifndef _STLP_MSVC50_COMPATIBILITY
|
|
# define _STLP_MSVC50_COMPATIBILITY 1
|
|
# endif
|
|
|
|
# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
|
|
# define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1
|
|
# define _STLP_NO_STATIC_CONST_DEFINITION 1
|
|
|
|
/* # ifndef __BUILDING_STLPORT
|
|
* # define _STLP_USE_TEMPLATE_EXPORT 1
|
|
* # endif
|
|
*/
|
|
|
|
/** Note: the macro _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT is defined
|
|
unconditionally and undef'ed here when applicable. */
|
|
# if defined (UNDER_CE)
|
|
/* eVCx:
|
|
uncaught_exception is declared in the SDKs delivered with eVC4 (eVC3 is
|
|
unknown) and they all reside in namespace 'std' there. However, they are not
|
|
part of any lib so linking fails. When using VC8 to crosscompile for CE 5 on
|
|
an ARMV4I, the uncaught_exception test fails, the function returns the wrong
|
|
value. */
|
|
/* All eVCs up to at least VC8/CE5 have a broken new operator that
|
|
returns null instead of throwing bad_alloc. */
|
|
# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
|
|
# else
|
|
/* VCx:
|
|
These are present at least since VC6, but the uncaught_exception() of VC6 is
|
|
broken, it returns the wrong value in the unittests. 7.1 and later seem to
|
|
work, 7.0 is still unknown (we assume it works until negative report). */
|
|
# if (_STLP_MSVC >= 1300)// VC7 and later
|
|
# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
|
|
# endif
|
|
# if (_STLP_MSVC < 1300)
|
|
# define _STLP_NOTHROW
|
|
# endif
|
|
# endif
|
|
|
|
# if (_STLP_MSVC <= 1300)
|
|
# define _STLP_STATIC_CONST_INIT_BUG 1
|
|
# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
|
|
# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
|
|
/* There is no partial spec, and MSVC breaks on simulating it for iterator_traits queries */
|
|
# define _STLP_USE_OLD_HP_ITERATOR_QUERIES
|
|
# define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
|
|
# define _STLP_NO_METHOD_SPECIALIZATION 1
|
|
# define _STLP_DEF_CONST_PLCT_NEW_BUG 1
|
|
# define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1
|
|
/* VC++ cannot handle default allocator argument in template constructors */
|
|
# define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
|
|
# define _STLP_NO_QUALIFIED_FRIENDS 1
|
|
# endif
|
|
|
|
# if (_STLP_MSVC < 1300) /* including MSVC 6.0 */
|
|
# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
|
|
# define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
|
|
# endif
|
|
|
|
# define _STLP_HAS_NATIVE_FLOAT_ABS 1
|
|
|
|
// TODO: some eVC4 compilers report _MSC_VER 1201 or 1202, which category do they belong to?
|
|
# if (_STLP_MSVC > 1200) && (_STLP_MSVC < 1310)
|
|
# define _STLP_NO_MOVE_SEMANTIC
|
|
# endif
|
|
|
|
# if (_STLP_MSVC < 1300)
|
|
/* TODO: remove this if it is handled and documented elsewhere
|
|
* dums: VC6 do not handle correctly member templates of class that are explicitely
|
|
* instanciated to be exported. There is a workaround, seperate the non template methods
|
|
* from the template ones within 2 different classes and only export the non template one.
|
|
* It is implemented for basic_string and locale at the writing of this note.
|
|
* However this problem hos not been considered as important enough to remove template member
|
|
* methods for other classes. Moreover Boost (www.boost.org) required it to be granted.
|
|
* The workaround is activated thanks to the _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND macro defined
|
|
* later in this config file.
|
|
*/
|
|
/*
|
|
# if defined (_DLL)
|
|
# define _STLP_NO_MEMBER_TEMPLATES 1
|
|
# endif
|
|
*/
|
|
|
|
/* Boris : not defining this macro for SP5 causes other problems */
|
|
/*# if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) */
|
|
# define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
|
|
/*# endif */
|
|
# define _STLP_DONT_USE_BOOL_TYPEDEF 1
|
|
# define _STLP_DONT_RETURN_VOID 1
|
|
# endif
|
|
|
|
# if (_STLP_MSVC < 1300) /* MSVC 6.0 and earlier */
|
|
# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
|
|
/* defined for DEBUG and NDEBUG too, to allow user mix own debug build with STLP release library */
|
|
# define _STLP_USE_ABBREVS
|
|
# endif
|
|
|
|
#endif /* _STLP_MSVC */
|
|
|
|
/* The desktop variants starting with VC8 have a set of more secure replacements
|
|
* for the error-prone string handling functions of the C standard lib. */
|
|
/* When user do not consider 'unsafe' string functions as deprecated using _CRT_SECURE_NO_DEPRECATE
|
|
* macro we use 'unsafe' functions for performance reasons. */
|
|
#if (_STLP_MSVC_LIB >= 1400) && !defined (_STLP_USING_PLATFORM_SDK_COMPILER) && !defined (UNDER_CE) && \
|
|
!defined (_CRT_SECURE_NO_DEPRECATE)
|
|
# define _STLP_USE_SAFE_STRING_FUNCTIONS 1
|
|
#endif
|
|
|
|
#if (_STLP_MSVC_LIB <= 1310)
|
|
# define _STLP_VENDOR_GLOBAL_CSTD
|
|
#endif
|
|
|
|
#if (_STLP_MSVC_LIB >= 1300) && !defined(UNDER_CE)
|
|
/* Starting with MSVC 7.0 and compilers simulating it,
|
|
* we assume that the new SDK is granted:
|
|
*/
|
|
# define _STLP_NEW_PLATFORM_SDK 1
|
|
#endif
|
|
|
|
#if (_STLP_MSVC_LIB < 1300) /* including MSVC 6.0 */
|
|
# define _STLP_GLOBAL_NEW_HANDLER 1
|
|
# define _STLP_VENDOR_UNEXPECTED_STD
|
|
# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
|
|
#endif
|
|
|
|
#define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
|
|
#define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
|
|
#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
|
|
#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
|
|
|
|
#if defined (__DLL) || defined (_DLL) || defined (_RTLDLL) || defined (_AFXDLL)
|
|
# define _STLP_RUNTIME_DLL
|
|
#endif
|
|
#if defined (__BUILDING_STLPORT) && \
|
|
(defined (_STLP_USE_DYNAMIC_LIB) || \
|
|
defined (_STLP_RUNTIME_DLL) && !defined (_STLP_USE_STATIC_LIB))
|
|
# define _STLP_DLL
|
|
#endif
|
|
#include <stl/config/_detect_dll_or_lib.h>
|
|
#undef _STLP_RUNTIME_DLL
|
|
#undef _STLP_DLL
|
|
|
|
#if defined (_STLP_USE_DYNAMIC_LIB)
|
|
# undef _STLP_USE_DECLSPEC
|
|
# define _STLP_USE_DECLSPEC 1
|
|
# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300)
|
|
# define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND 1
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined (_STLP_IMPORT_TEMPLATE_KEYWORD)
|
|
# if !defined (_MSC_EXTENSIONS) || defined (_STLP_MSVC) && (_STLP_MSVC >= 1300)
|
|
# define _STLP_IMPORT_TEMPLATE_KEYWORD
|
|
# else
|
|
# define _STLP_IMPORT_TEMPLATE_KEYWORD extern
|
|
# endif
|
|
#endif
|
|
#define _STLP_EXPORT_TEMPLATE_KEYWORD
|
|
|
|
#include <stl/config/_auto_link.h>
|
|
|
|
#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
|
|
/* The Windows 64 bits SDK required for the moment link to bufferoverflowU.lib for
|
|
* additional buffer overrun checks. Rather than require the STLport build system and
|
|
* users to explicitely link with it we use the MSVC auto link feature.
|
|
*/
|
|
# if !defined (_STLP_DONT_USE_AUTO_LINK) || defined (__BUILDING_STLPORT)
|
|
# pragma comment (lib, "bufferoverflowU.lib")
|
|
# if defined (_STLP_VERBOSE)
|
|
# pragma message ("STLport: Auto linking to bufferoverflowU.lib")
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#if defined (_STLP_MSVC)
|
|
# include <stl/config/_feedback.h>
|
|
#endif
|