this repo has no description
1// (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( GECODE_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(GECODE_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 GECODE_BOOST_NO_INTEGRAL_INT64_T
34# define GECODE_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
35# define GECODE_BOOST_NO_PRIVATE_IN_AGGREGATE
36# define GECODE_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 GECODE_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
40# define GECODE_BOOST_SP_NO_SP_CONVERTIBLE
41#endif
42
43// CodeGear C++ Builder 2010
44#if (__CODEGEARC__ <= 0x621)
45# define GECODE_BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
46# define GECODE_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
47# define GECODE_BOOST_NO_MEMBER_TEMPLATE_FRIENDS
48# define GECODE_BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
49# define GECODE_BOOST_NO_USING_TEMPLATE
50# define GECODE_BOOST_NO_TWO_PHASE_NAME_LOOKUP
51// Temporary hack, until specific MPL preprocessed headers are generated
52# define GECODE_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 GECODE_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 GECODE_BOOST_NO_STATIC_ASSERT
80#else
81#define GECODE_BOOST_HAS_STATIC_ASSERT
82#endif
83#define GECODE_BOOST_HAS_CHAR16_T
84#define GECODE_BOOST_HAS_CHAR32_T
85#define GECODE_BOOST_HAS_LONG_LONG
86// #define GECODE_BOOST_HAS_ALIGNOF
87#define GECODE_BOOST_HAS_DECLTYPE
88#define GECODE_BOOST_HAS_EXPLICIT_CONVERSION_OPS
89// #define GECODE_BOOST_HAS_RVALUE_REFS
90#define GECODE_BOOST_HAS_SCOPED_ENUM
91// #define GECODE_BOOST_HAS_STATIC_ASSERT
92#define GECODE_BOOST_HAS_STD_TYPE_TRAITS
93
94#define GECODE_BOOST_NO_AUTO_DECLARATIONS
95#define GECODE_BOOST_NO_AUTO_MULTIDECLARATIONS
96#define GECODE_BOOST_NO_CONSTEXPR
97#define GECODE_BOOST_NO_DEFAULTED_FUNCTIONS
98#define GECODE_BOOST_NO_DELETED_FUNCTIONS
99#define GECODE_BOOST_NO_EXTERN_TEMPLATE
100#define GECODE_BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
101#define GECODE_BOOST_NO_INITIALIZER_LISTS
102#define GECODE_BOOST_NO_LAMBDAS
103#define GECODE_BOOST_NO_NOEXCEPT
104#define GECODE_BOOST_NO_NULLPTR
105#define GECODE_BOOST_NO_RAW_LITERALS
106#define GECODE_BOOST_NO_RVALUE_REFERENCES
107#define GECODE_BOOST_NO_SFINAE_EXPR
108#define GECODE_BOOST_NO_TEMPLATE_ALIASES
109#define GECODE_BOOST_NO_UNICODE_LITERALS
110#define GECODE_BOOST_NO_VARIADIC_TEMPLATES
111#define GECODE_BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
112
113//
114// TR1 macros:
115//
116#define GECODE_BOOST_HAS_TR1_HASH
117#define GECODE_BOOST_HAS_TR1_TYPE_TRAITS
118#define GECODE_BOOST_HAS_TR1_UNORDERED_MAP
119#define GECODE_BOOST_HAS_TR1_UNORDERED_SET
120
121#define GECODE_BOOST_HAS_MACRO_USE_FACET
122
123#define GECODE_BOOST_NO_INITIALIZER_LISTS
124
125// On non-Win32 platforms let the platform config figure this out:
126#ifdef _WIN32
127# define GECODE_BOOST_HAS_STDINT_H
128#endif
129
130//
131// __int64:
132//
133#if !defined(__STRICT_ANSI__)
134# define GECODE_BOOST_HAS_MS_INT64
135#endif
136//
137// check for exception handling support:
138//
139#if !defined(_CPPUNWIND) && !defined(GECODE_BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(GECODE_BOOST_NO_EXCEPTIONS)
140# define GECODE_BOOST_NO_EXCEPTIONS
141#endif
142//
143// all versions have a <dirent.h>:
144//
145#if !defined(__STRICT_ANSI__)
146# define GECODE_BOOST_HAS_DIRENT_H
147#endif
148//
149// all versions support __declspec:
150//
151#if defined(__STRICT_ANSI__)
152// config/platform/win32.hpp will define GECODE_BOOST_SYMBOL_EXPORT, etc., unless already defined
153# define GECODE_BOOST_SYMBOL_EXPORT
154#endif
155//
156// ABI fixing headers:
157//
158#ifndef GECODE_BOOST_ABI_PREFIX
159# define GECODE_BOOST_ABI_PREFIX "gecode/third-party/boost/config/abi/borland_prefix.hpp"
160#endif
161#ifndef GECODE_BOOST_ABI_SUFFIX
162# define GECODE_BOOST_ABI_SUFFIX "gecode/third-party/boost/config/abi/borland_suffix.hpp"
163#endif
164//
165// Disable Win32 support in ANSI mode:
166//
167# pragma defineonoption GECODE_BOOST_DISABLE_WIN32 -A
168//
169// MSVC compatibility mode does some nasty things:
170// TODO: look up if this doesn't apply to the whole 12xx range
171//
172#if defined(_MSC_VER) && (_MSC_VER <= 1200)
173# define GECODE_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
174# define GECODE_BOOST_NO_VOID_RETURNS
175#endif
176
177#define GECODE_BOOST_COMPILER "CodeGear C++ version " GECODE_BOOST_STRINGIZE(__CODEGEARC__)
178