blob: 90790dec0ccf0b65c1d9059285e92e3edc5eaccf [file] [log] [blame]
Jeff Thompsonf7d49942013-08-01 16:47:40 -07001// (C) Copyright John Maddock 2001 - 2003.
2// (C) Copyright David Abrahams 2002 - 2003.
3// (C) Copyright Aleksey Gurtovoy 2002.
4// Use, modification and distribution are subject to the
5// Boost Software License, Version 1.0. (See accompanying file
6// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8// See http://www.boost.org for most recent version.
9
10// CodeGear C++ compiler setup:
11
12#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
13// these warnings occur frequently in optimized template code
14# pragma warn -8004 // var assigned value, but never used
15# pragma warn -8008 // condition always true/false
16# pragma warn -8066 // dead code can never execute
17# pragma warn -8104 // static members with ctors not threadsafe
18# pragma warn -8105 // reference member in class without ctors
19#endif
20//
21// versions check:
22// last known and checked version is 0x621
23#if (__CODEGEARC__ > 0x621)
24# if defined(BOOST_ASSERT_CONFIG)
25# error "Unknown compiler version - please run the configure tests and report the results"
26# else
27# pragma message( "Unknown compiler version - please run the configure tests and report the results")
28# endif
29#endif
30
31// CodeGear C++ Builder 2009
32#if (__CODEGEARC__ <= 0x613)
33# define BOOST_NO_INTEGRAL_INT64_T
34# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
35# define BOOST_NO_PRIVATE_IN_AGGREGATE
36# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
37 // we shouldn't really need this - but too many things choke
38 // without it, this needs more investigation:
39# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
40# define BOOST_SP_NO_SP_CONVERTIBLE
41#endif
42
43// CodeGear C++ Builder 2010
44#if (__CODEGEARC__ <= 0x621)
45# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
46# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
47# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
48# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
49# define BOOST_NO_USING_TEMPLATE
50# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
51// Temporary hack, until specific MPL preprocessed headers are generated
52# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
53
54// CodeGear has not yet completely implemented value-initialization, for
55// example for array types, as I reported in 2010: Embarcadero Report 83751,
56// "Value-initialization: arrays should have each element value-initialized",
57// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
58// Last checked version: Embarcadero C++ 6.21
59// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
60// (Niels Dekker, LKEB, April 2010)
61# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
62
63# if defined(NDEBUG) && defined(__cplusplus)
64 // fix broken <cstring> so that Boost.test works:
65# include <cstring>
66# undef strcmp
67# endif
68 // fix broken errno declaration:
69# include <errno.h>
70# ifndef errno
71# define errno errno
72# endif
73
74#endif
75//
76// C++0x macros:
77//
78#if (__CODEGEARC__ <= 0x620)
79#define BOOST_NO_CXX11_STATIC_ASSERT
80#else
81#define BOOST_HAS_STATIC_ASSERT
82#endif
83#define BOOST_HAS_CHAR16_T
84#define BOOST_HAS_CHAR32_T
85#define BOOST_HAS_LONG_LONG
86// #define BOOST_HAS_ALIGNOF
87#define BOOST_HAS_DECLTYPE
88#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
89// #define BOOST_HAS_RVALUE_REFS
90#define BOOST_HAS_SCOPED_ENUM
91// #define BOOST_HAS_STATIC_ASSERT
92#define BOOST_HAS_STD_TYPE_TRAITS
93
94#define BOOST_NO_CXX11_AUTO_DECLARATIONS
95#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
96#define BOOST_NO_CXX11_CONSTEXPR
97#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
98#define BOOST_NO_CXX11_DELETED_FUNCTIONS
99#define BOOST_NO_CXX11_EXTERN_TEMPLATE
100#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
101#define BOOST_NO_CXX11_LAMBDAS
102#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
103#define BOOST_NO_CXX11_NOEXCEPT
104#define BOOST_NO_CXX11_NULLPTR
105#define BOOST_NO_CXX11_RANGE_BASED_FOR
106#define BOOST_NO_CXX11_RAW_LITERALS
107#define BOOST_NO_CXX11_RVALUE_REFERENCES
108#define BOOST_NO_SFINAE_EXPR
109#define BOOST_NO_CXX11_TEMPLATE_ALIASES
110#define BOOST_NO_CXX11_UNICODE_LITERALS
111#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
112#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
113
114//
115// TR1 macros:
116//
117#define BOOST_HAS_TR1_HASH
118#define BOOST_HAS_TR1_TYPE_TRAITS
119#define BOOST_HAS_TR1_UNORDERED_MAP
120#define BOOST_HAS_TR1_UNORDERED_SET
121
122#define BOOST_HAS_MACRO_USE_FACET
123
124#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
125
126// On non-Win32 platforms let the platform config figure this out:
127#ifdef _WIN32
128# define BOOST_HAS_STDINT_H
129#endif
130
131//
132// __int64:
133//
134#if !defined(__STRICT_ANSI__)
135# define BOOST_HAS_MS_INT64
136#endif
137//
138// check for exception handling support:
139//
140#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
141# define BOOST_NO_EXCEPTIONS
142#endif
143//
144// all versions have a <dirent.h>:
145//
146#if !defined(__STRICT_ANSI__)
147# define BOOST_HAS_DIRENT_H
148#endif
149//
150// all versions support __declspec:
151//
152#if defined(__STRICT_ANSI__)
153// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
154# define BOOST_SYMBOL_EXPORT
155#endif
156//
157// ABI fixing headers:
158//
159#ifndef BOOST_ABI_PREFIX
Jeff Thompson2277ce52013-08-01 17:34:11 -0700160# define BOOST_ABI_PREFIX "ndnboost/config/abi/borland_prefix.hpp"
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700161#endif
162#ifndef BOOST_ABI_SUFFIX
Jeff Thompson2277ce52013-08-01 17:34:11 -0700163# define BOOST_ABI_SUFFIX "ndnboost/config/abi/borland_suffix.hpp"
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700164#endif
165//
166// Disable Win32 support in ANSI mode:
167//
168# pragma defineonoption BOOST_DISABLE_WIN32 -A
169//
170// MSVC compatibility mode does some nasty things:
171// TODO: look up if this doesn't apply to the whole 12xx range
172//
173#if defined(_MSC_VER) && (_MSC_VER <= 1200)
174# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
175# define BOOST_NO_VOID_RETURNS
176#endif
177
178#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
179