Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/boost/config/compiler/visualc.hpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 5.6 KB
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 < 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
Note: See TracBrowser for help on using the repository browser.