imgtools/imglib/boostlibrary/boost/config/compiler/visualc.hpp
changeset 0 044383f39525
equal deleted inserted replaced
-1:000000000000 0:044383f39525
       
     1 //  (C) Copyright John Maddock 2001 - 2003. 
       
     2 //  (C) Copyright Darin Adler 2001 - 2002. 
       
     3 //  (C) Copyright Peter Dimov 2001. 
       
     4 //  (C) Copyright Aleksey Gurtovoy 2002. 
       
     5 //  (C) Copyright David Abrahams 2002 - 2003. 
       
     6 //  (C) Copyright Beman Dawes 2002 - 2003. 
       
     7 //  Use, modification and distribution are subject to the 
       
     8 //  Boost Software License, Version 1.0. (See accompanying file 
       
     9 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       
    10 
       
    11 //  See http://www.boost.org for most recent version.
       
    12 
       
    13 //  Microsoft Visual C++ compiler setup:
       
    14 
       
    15 #define BOOST_MSVC _MSC_VER
       
    16 
       
    17 // turn off the warnings before we #include anything
       
    18 #pragma warning( disable : 4503 ) // warning: decorated name length exceeded
       
    19 
       
    20 #if _MSC_VER < 1300  // 1200 == VC++ 6.0, 1200-1202 == eVC++4
       
    21 #  pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
       
    22 #  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
       
    23 #  define BOOST_NO_VOID_RETURNS
       
    24 #  define BOOST_NO_EXCEPTION_STD_NAMESPACE
       
    25 
       
    26 #  if BOOST_MSVC == 1202
       
    27 #    define BOOST_NO_STD_TYPEINFO
       
    28 #  endif
       
    29 
       
    30    // disable min/max macro defines on vc6:
       
    31    //
       
    32 #endif
       
    33 
       
    34 #if (_MSC_VER <= 1300)  // 1300 == VC++ 7.0
       
    35 
       
    36 #  if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)      // VC7 bug with /Za
       
    37 #    define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
       
    38 #  endif
       
    39 
       
    40 #  define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
       
    41 #  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
       
    42 #  define BOOST_NO_PRIVATE_IN_AGGREGATE
       
    43 #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
       
    44 #  define BOOST_NO_INTEGRAL_INT64_T
       
    45 #  define BOOST_NO_DEDUCED_TYPENAME
       
    46 #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
       
    47 
       
    48 //    VC++ 6/7 has member templates but they have numerous problems including
       
    49 //    cases of silent failure, so for safety we define:
       
    50 #  define BOOST_NO_MEMBER_TEMPLATES
       
    51 //    For VC++ experts wishing to attempt workarounds, we define:
       
    52 #  define BOOST_MSVC6_MEMBER_TEMPLATES
       
    53 
       
    54 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
       
    55 #  define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
       
    56 #  define BOOST_NO_CV_VOID_SPECIALIZATIONS
       
    57 #  define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
       
    58 #  define BOOST_NO_USING_TEMPLATE
       
    59 #  define BOOST_NO_SWPRINTF
       
    60 #  define BOOST_NO_TEMPLATE_TEMPLATES
       
    61 #  define BOOST_NO_SFINAE
       
    62 #  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
       
    63 #  define BOOST_NO_IS_ABSTRACT
       
    64 #  define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
       
    65 // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
       
    66 #  if (_MSC_VER > 1200)
       
    67 #     define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
       
    68 #  endif
       
    69 
       
    70 #endif
       
    71 
       
    72 #if _MSC_VER < 1400 
       
    73 // although a conforming signature for swprint exists in VC7.1
       
    74 // it appears not to actually work:
       
    75 #  define BOOST_NO_SWPRINTF
       
    76 #endif
       
    77 
       
    78 #if defined(UNDER_CE)
       
    79 // Windows CE does not have a conforming signature for swprintf
       
    80 #  define BOOST_NO_SWPRINTF
       
    81 #endif
       
    82 
       
    83 #if _MSC_VER <= 1400  // 1400 == VC++ 8.0
       
    84 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
       
    85 #endif
       
    86 
       
    87 #if _MSC_VER <= 1600  // 1600 == VC++ 10.0
       
    88 #  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
       
    89 #endif
       
    90 
       
    91 #if _MSC_VER == 1500  // 1500 == VC++ 9.0
       
    92    // A bug in VC9:
       
    93 #  define BOOST_NO_ADL_BARRIER
       
    94 #endif
       
    95 
       
    96 #if _MSC_VER <= 1500  || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
       
    97 #  define BOOST_NO_INITIALIZER_LISTS
       
    98 #endif
       
    99 
       
   100 #ifndef _NATIVE_WCHAR_T_DEFINED
       
   101 #  define BOOST_NO_INTRINSIC_WCHAR_T
       
   102 #endif
       
   103 
       
   104 #if defined(_WIN32_WCE) || defined(UNDER_CE)
       
   105 #  define BOOST_NO_THREADEX
       
   106 #  define BOOST_NO_GETSYSTEMTIMEASFILETIME
       
   107 #  define BOOST_NO_SWPRINTF
       
   108 #endif
       
   109 
       
   110 //   
       
   111 // check for exception handling support:   
       
   112 #ifndef _CPPUNWIND 
       
   113 #  define BOOST_NO_EXCEPTIONS   
       
   114 #endif 
       
   115 
       
   116 //
       
   117 // __int64 support:
       
   118 //
       
   119 #if (_MSC_VER >= 1200)
       
   120 #   define BOOST_HAS_MS_INT64
       
   121 #endif
       
   122 #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
       
   123 #   define BOOST_HAS_LONG_LONG
       
   124 #else
       
   125 #   define BOOST_NO_LONG_LONG
       
   126 #endif
       
   127 #if (_MSC_VER >= 1400) && !defined(_DEBUG)
       
   128 #   define BOOST_HAS_NRVO
       
   129 #endif
       
   130 //
       
   131 // disable Win32 API's if compiler extentions are
       
   132 // turned off:
       
   133 //
       
   134 #ifndef _MSC_EXTENSIONS
       
   135 #  define BOOST_DISABLE_WIN32
       
   136 #endif
       
   137 #ifndef _CPPRTTI
       
   138 #  define BOOST_NO_RTTI
       
   139 #endif
       
   140 
       
   141 //
       
   142 // all versions support __declspec:
       
   143 //
       
   144 #define BOOST_HAS_DECLSPEC
       
   145 //
       
   146 // C++0x features
       
   147 //
       
   148 //   See above for BOOST_NO_LONG_LONG
       
   149 #define BOOST_NO_CHAR16_T
       
   150 #define BOOST_NO_CHAR32_T
       
   151 #define BOOST_NO_CONSTEXPR
       
   152 #define BOOST_NO_DECLTYPE
       
   153 #define BOOST_NO_DEFAULTED_FUNCTIONS
       
   154 #define BOOST_NO_DELETED_FUNCTIONS
       
   155 #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
       
   156 #define BOOST_NO_EXTERN_TEMPLATE
       
   157 #define BOOST_NO_RAW_LITERALS
       
   158 #define BOOST_NO_SCOPED_ENUMS
       
   159 #define BOOST_NO_UNICODE_LITERALS
       
   160 #define BOOST_NO_VARIADIC_TEMPLATES
       
   161 
       
   162 // MSVC 2010 CTP has some support for C++0x, but we still disable it until the compiler release
       
   163 // #if _MSC_VER < 1600
       
   164 #define BOOST_NO_RVALUE_REFERENCES
       
   165 #define BOOST_NO_STATIC_ASSERT
       
   166 #define BOOST_NO_AUTO_DECLARATIONS
       
   167 #define BOOST_NO_AUTO_MULTIDECLARATIONS
       
   168 // #endif // _MSC_VER < 1600
       
   169 
       
   170 //
       
   171 // prefix and suffix headers:
       
   172 //
       
   173 #ifndef BOOST_ABI_PREFIX
       
   174 #  define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
       
   175 #endif
       
   176 #ifndef BOOST_ABI_SUFFIX
       
   177 #  define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
       
   178 #endif
       
   179 
       
   180 // TODO:
       
   181 // these things are mostly bogus. 1200 means version 12.0 of the compiler. The 
       
   182 // artificial versions assigned to them only refer to the versions of some IDE
       
   183 // these compilers have been shipped with, and even that is not all of it. Some
       
   184 // were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
       
   185 // IOW, you can't use these 'versions' in any sensible way. Sorry.
       
   186 # if defined(UNDER_CE)
       
   187 #   if _MSC_VER < 1200
       
   188       // Note: these are so far off, they are not really supported
       
   189 #   elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
       
   190 #     define BOOST_COMPILER_VERSION evc4.0
       
   191 #   elif _MSC_VER == 1400
       
   192 #     define BOOST_COMPILER_VERSION evc8
       
   193 #   elif _MSC_VER == 1500
       
   194 #     define BOOST_COMPILER_VERSION evc9
       
   195 #   elif _MSC_VER == 1600
       
   196 #     define BOOST_COMPILER_VERSION evc10
       
   197 #   else
       
   198 #      if defined(BOOST_ASSERT_CONFIG)
       
   199 #         error "Unknown EVC++ compiler version - please run the configure tests and report the results"
       
   200 #      else
       
   201 #         pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
       
   202 #      endif
       
   203 #   endif
       
   204 # else
       
   205 #   if _MSC_VER < 1200
       
   206       // Note: these are so far off, they are not really supported
       
   207 #     define BOOST_COMPILER_VERSION 5.0
       
   208 #   elif _MSC_VER < 1300
       
   209 #       define BOOST_COMPILER_VERSION 6.0
       
   210 #   elif _MSC_VER == 1300
       
   211 #     define BOOST_COMPILER_VERSION 7.0
       
   212 #   elif _MSC_VER == 1310
       
   213 #     define BOOST_COMPILER_VERSION 7.1
       
   214 #   elif _MSC_VER == 1400
       
   215 #     define BOOST_COMPILER_VERSION 8.0
       
   216 #   elif _MSC_VER == 1500
       
   217 #     define BOOST_COMPILER_VERSION 9.0
       
   218 #   elif _MSC_VER == 1600
       
   219 #     define BOOST_COMPILER_VERSION 10.0
       
   220 #   else
       
   221 #     define BOOST_COMPILER_VERSION _MSC_VER
       
   222 #   endif
       
   223 # endif
       
   224 
       
   225 #define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
       
   226 
       
   227 //
       
   228 // versions check:
       
   229 // we don't support Visual C++ prior to version 6:
       
   230 #if _MSC_VER < 1200
       
   231 #error "Compiler not supported or configured - please reconfigure"
       
   232 #endif
       
   233 //
       
   234 // last known and checked version is 1500 (VC9):
       
   235 #if (_MSC_VER > 1600)
       
   236 #  if defined(BOOST_ASSERT_CONFIG)
       
   237 #     error "Unknown compiler version - please run the configure tests and report the results"
       
   238 #  else
       
   239 #     pragma message("Unknown compiler version - please run the configure tests and report the results")
       
   240 #  endif
       
   241 #endif