source: NonGTP/Boost/boost/config/compiler/visualc.hpp @ 857

Revision 857, 5.4 KB checked in by igarcia, 18 years ago (diff)
Line 
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 < 1310 // 1310 == VC++ 7.1
67#  define BOOST_NO_SWPRINTF
68#endif
69
70#if _MSC_VER <= 1400  // 1400 == VC++ 8.0
71#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
72#endif
73
74#ifndef _NATIVE_WCHAR_T_DEFINED
75#  define BOOST_NO_INTRINSIC_WCHAR_T
76#endif
77
78#ifdef _WIN32_WCE
79#  define BOOST_NO_THREADEX
80#  define BOOST_NO_GETSYSTEMTIMEASFILETIME
81#endif
82
83//   
84// check for exception handling support:   
85#ifndef _CPPUNWIND   
86#  define BOOST_NO_EXCEPTIONS   
87#endif
88
89//
90// __int64 support:
91//
92#if (_MSC_VER >= 1200)
93#   define BOOST_HAS_MS_INT64
94#endif
95#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
96#   define BOOST_HAS_LONG_LONG
97#endif
98//
99// disable Win32 API's if compiler extentions are
100// turned off:
101//
102#ifndef _MSC_EXTENSIONS
103#  define BOOST_DISABLE_WIN32
104#endif
105
106//
107// all versions support __declspec:
108//
109#define BOOST_HAS_DECLSPEC
110//
111// prefix and suffix headers:
112//
113#ifndef BOOST_ABI_PREFIX
114#  define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
115#endif
116#ifndef BOOST_ABI_SUFFIX
117#  define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
118#endif
119
120// TODO:
121// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
122// artificial versions assigned to them only refer to the versions of some IDE
123// these compilers have been shipped with, and even that is not all of it. Some
124// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
125// IOW, you can't use these 'versions' in any sensible way. Sorry.
126# if defined(UNDER_CE)
127#   if _MSC_VER < 1200
128      // Note: these are so far off, they are not really supported
129#   elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
130#     define BOOST_COMPILER_VERSION evc4.0
131#     error unknown CE compiler
132#   else
133#     error unknown CE compiler
134#   endif
135# else
136#   if _MSC_VER < 1200
137      // Note: these are so far off, they are not really supported
138#     define BOOST_COMPILER_VERSION 5.0
139#   elif _MSC_VER < 1300
140#       define BOOST_COMPILER_VERSION 6.0
141#   elif _MSC_VER == 1300
142#     define BOOST_COMPILER_VERSION 7.0
143#   elif _MSC_VER == 1310
144#     define BOOST_COMPILER_VERSION 7.1
145#   elif _MSC_VER == 1400
146#     define BOOST_COMPILER_VERSION 8.0
147#   else
148#     define BOOST_COMPILER_VERSION _MSC_VER
149#   endif
150# endif
151
152#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
153
154//
155// versions check:
156// we don't support Visual C++ prior to version 6:
157#if _MSC_VER < 1200
158#error "Compiler not supported or configured - please reconfigure"
159#endif
160//
161// last known and checked version is 1400 (VC8):
162#if (_MSC_VER > 1400)
163#  if defined(BOOST_ASSERT_CONFIG)
164#     error "Unknown compiler version - please run the configure tests and report the results"
165#  else
166#     pragma message("Unknown compiler version - please run the configure tests and report the results")
167#  endif
168#endif
Note: See TracBrowser for help on using the repository browser.