os/ossrv/ossrv_pub/boost_apis/boost/config/compiler/visualc.hpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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    // disable min/max macro defines on vc6:
    26    //
    27 #endif
    28 
    29 #if (_MSC_VER <= 1300)  // 1300 == VC++ 7.0
    30 
    31 #  if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS)      // VC7 bug with /Za
    32 #    define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
    33 #  endif
    34 
    35 #  define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
    36 #  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
    37 #  define BOOST_NO_PRIVATE_IN_AGGREGATE
    38 #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
    39 #  define BOOST_NO_INTEGRAL_INT64_T
    40 #  define BOOST_NO_DEDUCED_TYPENAME
    41 #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
    42 
    43 //    VC++ 6/7 has member templates but they have numerous problems including
    44 //    cases of silent failure, so for safety we define:
    45 #  define BOOST_NO_MEMBER_TEMPLATES
    46 //    For VC++ experts wishing to attempt workarounds, we define:
    47 #  define BOOST_MSVC6_MEMBER_TEMPLATES
    48 
    49 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    50 #  define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
    51 #  define BOOST_NO_CV_VOID_SPECIALIZATIONS
    52 #  define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
    53 #  define BOOST_NO_USING_TEMPLATE
    54 #  define BOOST_NO_SWPRINTF
    55 #  define BOOST_NO_TEMPLATE_TEMPLATES
    56 #  define BOOST_NO_SFINAE
    57 #  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
    58 #  define BOOST_NO_IS_ABSTRACT
    59 // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
    60 #  if (_MSC_VER > 1200)
    61 #     define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
    62 #  endif
    63 
    64 #endif
    65 
    66 #if _MSC_VER < 1400 
    67 // although a conforming signature for swprint exists in VC7.1
    68 // it appears not to actually work:
    69 #  define BOOST_NO_SWPRINTF
    70 #endif
    71 
    72 #if _MSC_VER <= 1400  // 1400 == VC++ 8.0
    73 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    74 #endif
    75 
    76 #ifndef _NATIVE_WCHAR_T_DEFINED
    77 #  define BOOST_NO_INTRINSIC_WCHAR_T
    78 #endif
    79 
    80 #ifdef _WIN32_WCE
    81 #  define BOOST_NO_THREADEX
    82 #  define BOOST_NO_GETSYSTEMTIMEASFILETIME
    83 #endif
    84 
    85 //   
    86 // check for exception handling support:   
    87 #ifndef _CPPUNWIND 
    88 #  define BOOST_NO_EXCEPTIONS   
    89 #endif 
    90 
    91 //
    92 // __int64 support:
    93 //
    94 #if (_MSC_VER >= 1200)
    95 #   define BOOST_HAS_MS_INT64
    96 #endif
    97 #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
    98 #   define BOOST_HAS_LONG_LONG
    99 #endif
   100 #if (_MSC_VER >= 1400) && !defined(_DEBUG)
   101 #   define BOOST_HAS_NRVO
   102 #endif
   103 //
   104 // disable Win32 API's if compiler extentions are
   105 // turned off:
   106 //
   107 #ifndef _MSC_EXTENSIONS
   108 #  define BOOST_DISABLE_WIN32
   109 #endif
   110 
   111 //
   112 // all versions support __declspec:
   113 //
   114 #define BOOST_HAS_DECLSPEC
   115 //
   116 // prefix and suffix headers:
   117 //
   118 #ifndef BOOST_ABI_PREFIX
   119 #  define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
   120 #endif
   121 #ifndef BOOST_ABI_SUFFIX
   122 #  define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
   123 #endif
   124 
   125 // TODO:
   126 // these things are mostly bogus. 1200 means version 12.0 of the compiler. The 
   127 // artificial versions assigned to them only refer to the versions of some IDE
   128 // these compilers have been shipped with, and even that is not all of it. Some
   129 // were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
   130 // IOW, you can't use these 'versions' in any sensible way. Sorry.
   131 # if defined(UNDER_CE)
   132 #   if _MSC_VER < 1200
   133       // Note: these are so far off, they are not really supported
   134 #   elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
   135 #     define BOOST_COMPILER_VERSION evc4.0
   136 #   elif _MSC_VER == 1400
   137 #     define BOOST_COMPILER_VERSION evc8
   138 #   else
   139 #      if defined(BOOST_ASSERT_CONFIG)
   140 #         error "Unknown EVC++ compiler version - please run the configure tests and report the results"
   141 #      else
   142 #         pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
   143 #      endif
   144 #   endif
   145 # else
   146 #   if _MSC_VER < 1200
   147       // Note: these are so far off, they are not really supported
   148 #     define BOOST_COMPILER_VERSION 5.0
   149 #   elif _MSC_VER < 1300
   150 #       define BOOST_COMPILER_VERSION 6.0
   151 #   elif _MSC_VER == 1300
   152 #     define BOOST_COMPILER_VERSION 7.0
   153 #   elif _MSC_VER == 1310
   154 #     define BOOST_COMPILER_VERSION 7.1
   155 #   elif _MSC_VER == 1400
   156 #     define BOOST_COMPILER_VERSION 8.0
   157 #   else
   158 #     define BOOST_COMPILER_VERSION _MSC_VER
   159 #   endif
   160 # endif
   161 
   162 #define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
   163 
   164 //
   165 // versions check:
   166 // we don't support Visual C++ prior to version 6:
   167 #if _MSC_VER < 1200
   168 #error "Compiler not supported or configured - please reconfigure"
   169 #endif
   170 //
   171 // last known and checked version is 1400 (VC8):
   172 #if (_MSC_VER > 1400)
   173 #  if defined(BOOST_ASSERT_CONFIG)
   174 #     error "Unknown compiler version - please run the configure tests and report the results"
   175 #  else
   176 #     pragma message("Unknown compiler version - please run the configure tests and report the results")
   177 #  endif
   178 #endif