CodeMover prototype
[dyninst.git] / external / boost / config / compiler / codegear.hpp
1 //  (C) Copyright John Maddock 2001 - 2003.\r
2 //  (C) Copyright David Abrahams 2002 - 2003.\r
3 //  (C) Copyright Aleksey Gurtovoy 2002.\r
4 //  Use, modification and distribution are subject to the\r
5 //  Boost Software License, Version 1.0. (See accompanying file\r
6 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
7 \r
8 //  See http://www.boost.org for most recent version.\r
9 \r
10 //  CodeGear C++ compiler setup:\r
11 \r
12 #if !defined( BOOST_WITH_CODEGEAR_WARNINGS )\r
13 // these warnings occur frequently in optimized template code\r
14 # pragma warn -8004 // var assigned value, but never used\r
15 # pragma warn -8008 // condition always true/false\r
16 # pragma warn -8066 // dead code can never execute\r
17 # pragma warn -8104 // static members with ctors not threadsafe\r
18 # pragma warn -8105 // reference member in class without ctors\r
19 #endif\r
20 //\r
21 // versions check:\r
22 // last known and checked version is 0x610\r
23 #if (__CODEGEARC__ > 0x610)\r
24 #  if defined(BOOST_ASSERT_CONFIG)\r
25 #     error "Unknown compiler version - please run the configure tests and report the results"\r
26 #  else\r
27 #     pragma message( "Unknown compiler version - please run the configure tests and report the results")\r
28 #  endif\r
29 #endif\r
30 \r
31 // CodeGear C++ Builder 2009\r
32 #if (__CODEGEARC__ <= 0x610)\r
33 #  define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL\r
34 #  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS\r
35 #  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS\r
36 #  define BOOST_NO_PRIVATE_IN_AGGREGATE\r
37 #  define BOOST_NO_TWO_PHASE_NAME_LOOKUP\r
38 #  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE\r
39 #  define BOOST_NO_USING_TEMPLATE\r
40    // we shouldn't really need this - but too many things choke\r
41    // without it, this needs more investigation:\r
42 #  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS\r
43 #  define BOOST_NO_TYPENAME_WITH_CTOR    // Cannot use typename keyword when making temporaries of a dependant type\r
44 #  define BOOST_NO_NESTED_FRIENDSHIP     // TC1 gives nested classes access rights as any other member\r
45 \r
46 // Temporary hack, until specific MPL preprocessed headers are generated\r
47 #  define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS\r
48 \r
49 #  ifdef NDEBUG\r
50       // fix broken <cstring> so that Boost.test works:\r
51 #     include <cstring>\r
52 #     undef strcmp\r
53 #  endif\r
54    // fix broken errno declaration:\r
55 #  include <errno.h>\r
56 #  ifndef errno\r
57 #     define errno errno\r
58 #  endif\r
59 \r
60 #endif\r
61 \r
62 \r
63 #  define BOOST_HAS_CHAR16_T\r
64 #  define BOOST_HAS_CHAR32_T\r
65 #  define BOOST_HAS_LONG_LONG\r
66 \r
67 //#  define BOOST_HAS_ALIGNOF\r
68 #  define BOOST_HAS_DECLTYPE\r
69 #  define BOOST_HAS_EXPLICIT_CONVERSION_OPS\r
70 //#  define BOOST_HAS_RVALUE_REFS\r
71 #  define BOOST_HAS_SCOPED_ENUM\r
72 //#  define BOOST_HAS_STATIC_ASSERT\r
73 #  define BOOST_HAS_STD_TYPE_TRAITS\r
74 \r
75 #  define BOOST_HAS_TR1_HASH\r
76 #  define BOOST_HAS_TR1_TYPE_TRAITS\r
77 #  define BOOST_HAS_TR1_UNORDERED_MAP\r
78 #  define BOOST_HAS_TR1_UNORDERED_SET\r
79 \r
80 #  define BOOST_HAS_MACRO_USE_FACET\r
81 \r
82 \r
83    // On non-Win32 platforms let the platform config figure this out:\r
84 # ifdef _WIN32\r
85 #    define BOOST_HAS_STDINT_H\r
86 # endif\r
87 \r
88 //\r
89 // __int64:\r
90 //\r
91 #if !defined(__STRICT_ANSI__)\r
92 #  define BOOST_HAS_MS_INT64\r
93 #endif\r
94 //\r
95 // check for exception handling support:\r
96 //\r
97 #if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)\r
98 #  define BOOST_NO_EXCEPTIONS\r
99 #endif\r
100 //\r
101 // all versions have a <dirent.h>:\r
102 //\r
103 #if !defined(__STRICT_ANSI__)\r
104 #  define BOOST_HAS_DIRENT_H\r
105 #endif\r
106 //\r
107 // all versions support __declspec:\r
108 //\r
109 #if !defined(__STRICT_ANSI__)\r
110 #  define BOOST_HAS_DECLSPEC\r
111 #endif\r
112 //\r
113 // ABI fixing headers:\r
114 //\r
115 #ifndef BOOST_ABI_PREFIX\r
116 #  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"\r
117 #endif\r
118 #ifndef BOOST_ABI_SUFFIX\r
119 #  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"\r
120 #endif\r
121 //\r
122 // Disable Win32 support in ANSI mode:\r
123 //\r
124 #  pragma defineonoption BOOST_DISABLE_WIN32 -A\r
125 //\r
126 // MSVC compatibility mode does some nasty things:\r
127 // TODO: look up if this doesn't apply to the whole 12xx range\r
128 //\r
129 #if defined(_MSC_VER) && (_MSC_VER <= 1200)\r
130 #  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP\r
131 #  define BOOST_NO_VOID_RETURNS\r
132 #endif\r
133 \r
134 #define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)\r
135 \r