sl@0: // (C) Copyright John Maddock 2001 - 2003. sl@0: // (C) Copyright Darin Adler 2001 - 2002. sl@0: // (C) Copyright Peter Dimov 2001. sl@0: // (C) Copyright Aleksey Gurtovoy 2002. sl@0: // (C) Copyright David Abrahams 2002 - 2003. sl@0: // (C) Copyright Beman Dawes 2002 - 2003. sl@0: // Use, modification and distribution are subject to the sl@0: // Boost Software License, Version 1.0. (See accompanying file sl@0: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) sl@0: sl@0: // See http://www.boost.org for most recent version. sl@0: sl@0: // Microsoft Visual C++ compiler setup: sl@0: sl@0: #define BOOST_MSVC _MSC_VER sl@0: sl@0: // turn off the warnings before we #include anything sl@0: #pragma warning( disable : 4503 ) // warning: decorated name length exceeded sl@0: sl@0: #if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4 sl@0: # pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info sl@0: # define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS sl@0: # define BOOST_NO_VOID_RETURNS sl@0: # define BOOST_NO_EXCEPTION_STD_NAMESPACE sl@0: // disable min/max macro defines on vc6: sl@0: // sl@0: #endif sl@0: sl@0: #if (_MSC_VER <= 1300) // 1300 == VC++ 7.0 sl@0: sl@0: # if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za sl@0: # define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS sl@0: # endif sl@0: sl@0: # define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS sl@0: # define BOOST_NO_INCLASS_MEMBER_INITIALIZATION sl@0: # define BOOST_NO_PRIVATE_IN_AGGREGATE sl@0: # define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP sl@0: # define BOOST_NO_INTEGRAL_INT64_T sl@0: # define BOOST_NO_DEDUCED_TYPENAME sl@0: # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE sl@0: sl@0: // VC++ 6/7 has member templates but they have numerous problems including sl@0: // cases of silent failure, so for safety we define: sl@0: # define BOOST_NO_MEMBER_TEMPLATES sl@0: // For VC++ experts wishing to attempt workarounds, we define: sl@0: # define BOOST_MSVC6_MEMBER_TEMPLATES sl@0: sl@0: # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS sl@0: # define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION sl@0: # define BOOST_NO_CV_VOID_SPECIALIZATIONS sl@0: # define BOOST_NO_FUNCTION_TEMPLATE_ORDERING sl@0: # define BOOST_NO_USING_TEMPLATE sl@0: # define BOOST_NO_SWPRINTF sl@0: # define BOOST_NO_TEMPLATE_TEMPLATES sl@0: # define BOOST_NO_SFINAE sl@0: # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS sl@0: # define BOOST_NO_IS_ABSTRACT sl@0: // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)? sl@0: # if (_MSC_VER > 1200) sl@0: # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS sl@0: # endif sl@0: sl@0: #endif sl@0: sl@0: #if _MSC_VER < 1400 sl@0: // although a conforming signature for swprint exists in VC7.1 sl@0: // it appears not to actually work: sl@0: # define BOOST_NO_SWPRINTF sl@0: #endif sl@0: sl@0: #if _MSC_VER <= 1400 // 1400 == VC++ 8.0 sl@0: # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS sl@0: #endif sl@0: sl@0: #ifndef _NATIVE_WCHAR_T_DEFINED sl@0: # define BOOST_NO_INTRINSIC_WCHAR_T sl@0: #endif sl@0: sl@0: #ifdef _WIN32_WCE sl@0: # define BOOST_NO_THREADEX sl@0: # define BOOST_NO_GETSYSTEMTIMEASFILETIME sl@0: #endif sl@0: sl@0: // sl@0: // check for exception handling support: sl@0: #ifndef _CPPUNWIND sl@0: # define BOOST_NO_EXCEPTIONS sl@0: #endif sl@0: sl@0: // sl@0: // __int64 support: sl@0: // sl@0: #if (_MSC_VER >= 1200) sl@0: # define BOOST_HAS_MS_INT64 sl@0: #endif sl@0: #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS) sl@0: # define BOOST_HAS_LONG_LONG sl@0: #endif sl@0: #if (_MSC_VER >= 1400) && !defined(_DEBUG) sl@0: # define BOOST_HAS_NRVO sl@0: #endif sl@0: // sl@0: // disable Win32 API's if compiler extentions are sl@0: // turned off: sl@0: // sl@0: #ifndef _MSC_EXTENSIONS sl@0: # define BOOST_DISABLE_WIN32 sl@0: #endif sl@0: sl@0: // sl@0: // all versions support __declspec: sl@0: // sl@0: #define BOOST_HAS_DECLSPEC sl@0: // sl@0: // prefix and suffix headers: sl@0: // sl@0: #ifndef BOOST_ABI_PREFIX sl@0: # define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp" sl@0: #endif sl@0: #ifndef BOOST_ABI_SUFFIX sl@0: # define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp" sl@0: #endif sl@0: sl@0: // TODO: sl@0: // these things are mostly bogus. 1200 means version 12.0 of the compiler. The sl@0: // artificial versions assigned to them only refer to the versions of some IDE sl@0: // these compilers have been shipped with, and even that is not all of it. Some sl@0: // were shipped with freely downloadable SDKs, others as crosscompilers in eVC. sl@0: // IOW, you can't use these 'versions' in any sensible way. Sorry. sl@0: # if defined(UNDER_CE) sl@0: # if _MSC_VER < 1200 sl@0: // Note: these are so far off, they are not really supported sl@0: # elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202 sl@0: # define BOOST_COMPILER_VERSION evc4.0 sl@0: # elif _MSC_VER == 1400 sl@0: # define BOOST_COMPILER_VERSION evc8 sl@0: # else sl@0: # if defined(BOOST_ASSERT_CONFIG) sl@0: # error "Unknown EVC++ compiler version - please run the configure tests and report the results" sl@0: # else sl@0: # pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results") sl@0: # endif sl@0: # endif sl@0: # else sl@0: # if _MSC_VER < 1200 sl@0: // Note: these are so far off, they are not really supported sl@0: # define BOOST_COMPILER_VERSION 5.0 sl@0: # elif _MSC_VER < 1300 sl@0: # define BOOST_COMPILER_VERSION 6.0 sl@0: # elif _MSC_VER == 1300 sl@0: # define BOOST_COMPILER_VERSION 7.0 sl@0: # elif _MSC_VER == 1310 sl@0: # define BOOST_COMPILER_VERSION 7.1 sl@0: # elif _MSC_VER == 1400 sl@0: # define BOOST_COMPILER_VERSION 8.0 sl@0: # else sl@0: # define BOOST_COMPILER_VERSION _MSC_VER sl@0: # endif sl@0: # endif sl@0: sl@0: #define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) sl@0: sl@0: // sl@0: // versions check: sl@0: // we don't support Visual C++ prior to version 6: sl@0: #if _MSC_VER < 1200 sl@0: #error "Compiler not supported or configured - please reconfigure" sl@0: #endif sl@0: // sl@0: // last known and checked version is 1400 (VC8): sl@0: #if (_MSC_VER > 1400) sl@0: # if defined(BOOST_ASSERT_CONFIG) sl@0: # error "Unknown compiler version - please run the configure tests and report the results" sl@0: # else sl@0: # pragma message("Unknown compiler version - please run the configure tests and report the results") sl@0: # endif sl@0: #endif