Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r48794 - in trunk/boost/config: . compiler
From: john_at_[hidden]
Date: 2008-09-16 07:04:53


Author: johnmaddock
Date: 2008-09-16 07:04:52 EDT (Tue, 16 Sep 2008)
New Revision: 48794
URL: http://svn.boost.org/trac/boost/changeset/48794

Log:
Added patches from issue #2327 but without the new config macros or test changes yet.
Added:
   trunk/boost/config/compiler/codegear.hpp (contents, props changed)
Text files modified:
   trunk/boost/config/compiler/borland.hpp | 54 ++++++++++++++++++++++++++++++++-------
   trunk/boost/config/select_compiler_config.hpp | 4 ++
   2 files changed, 48 insertions(+), 10 deletions(-)

Modified: trunk/boost/config/compiler/borland.hpp
==============================================================================
--- trunk/boost/config/compiler/borland.hpp (original)
+++ trunk/boost/config/compiler/borland.hpp 2008-09-16 07:04:52 EDT (Tue, 16 Sep 2008)
@@ -19,11 +19,13 @@
 // last known and checked version is 0x600 (Builder X preview)
 // or 0x593 (CodeGear C++ Builder 2007 December 2007 update):
 #if (__BORLANDC__ > 0x593) && (__BORLANDC__ != 0x600)
-# if defined(BOOST_ASSERT_CONFIG)
+//# if defined(BOOST_ASSERT_CONFIG)
 # error "Unknown compiler version - please run the configure tests and report the results"
-# else
-# pragma message( "Unknown compiler version - please run the configure tests and report the results")
-# endif
+//# else
+//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+//# endif
+#elif (__BORLANDC__ == 0x600)
+# error "CBuilderX preview compiler is no longer supported"
 #endif
 
 //
@@ -108,21 +110,52 @@
 
 // Borland C++ Builder 2007 December 2007 Update and below:
 #if (__BORLANDC__ <= 0x593)
-# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
-# define BOOST_NO_USING_TEMPLATE
-# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
    // we shouldn't really need this - but too many things choke
    // without it, this needs more investigation:
 # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
-# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 # define BOOST_NO_IS_ABSTRACT
 # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 
 // Temporary workaround
 #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif
 
+// Borland C++ Builder 2008 and below:
+#if (__BORLANDC__ <= 0x601)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_ILLEGAL_CV_REFERENCES
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#endif
+
+//
+// Positive Feature detection
+//
+// Borland C++ Builder 2008 and below:
+#if (__BORLANDC__ >= 0x599)
+# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
+#endif
+
+#if defined( BOOST_CODEGEAR_0X_SUPPORT )
+# #if __BORLANDC__ >= 0x610
+# define BOOST_HAS_ALIGNOF
+# define BOOST_HAS_CHAR16_T
+# define BOOST_HAS_CHAR32_T
+# define BOOST_HAS_DECLTYPE
+//# define BOOST_HAS_DEFAULTED_FN
+//# define BOOST_HAS_DELETED_FN
+# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+//# define BOOST_HAS_NULLPTR
+//# define BOOST_HAS_RAW_STRING
+# define BOOST_HAS_REF_QUALIFIER
+# define BOOST_HAS_RVALUE_REFS
+//# define BOOST_HAS_SCOPED_ENUM
+# define BOOST_HAS_STATIC_ASSERT
+//# define BOOST_HAS_VARIADIC_TMPL
+# #endif //__BORLANDC__ >= 0x610
 #endif
 
 #if __BORLANDC__ >= 0x590
@@ -207,3 +240,4 @@
 #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
 
 
+

Added: trunk/boost/config/compiler/codegear.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/config/compiler/codegear.hpp 2008-09-16 07:04:52 EDT (Tue, 16 Sep 2008)
@@ -0,0 +1,134 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// CodeGear C++ compiler setup:
+
+#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
+// these warnings occur frequently in optimized template code
+# pragma warn -8004 // var assigned value, but never used
+# pragma warn -8008 // condition always true/false
+# pragma warn -8066 // dead code can never execute
+# pragma warn -8104 // static members with ctors not threadsafe
+# pragma warn -8105 // reference member in class without ctors
+#endif
+//
+// versions check:
+// last known and checked version is 0x610
+#if (__CODEGEARC__ > 0x610)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
+// CodeGear C++ Builder 2009
+#if (__CODEGEARC__ <= 0x610)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# define BOOST_NO_USING_TEMPLATE
+ // we shouldn't really need this - but too many things choke
+ // without it, this needs more investigation:
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+
+// Still need tests writing
+// # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
+// # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
+
+# ifdef NDEBUG
+ // fix broken <cstring> so that Boost.test works:
+# include <cstring>
+# undef strcmp
+# endif
+ // fix broken errno declaration:
+# include <errno.h>
+# ifndef errno
+# define errno errno
+# endif
+
+#endif
+
+
+# define BOOST_HAS_CHAR16_T
+# define BOOST_HAS_CHAR32_T
+# define BOOST_HAS_LONG_LONG
+
+//# define BOOST_HAS_ALIGNOF
+# define BOOST_HAS_DECLTYPE
+# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+//# define BOOST_HAS_RVALUE_REFS
+# define BOOST_HAS_SCOPED_ENUM
+//# define BOOST_HAS_STATIC_ASSERT
+# define BOOST_HAS_STD_TYPE_TRAITS
+
+# define BOOST_HAS_TR1_HASH
+# define BOOST_HAS_TR1_TYPE_TRAITS
+# define BOOST_HAS_TR1_UNORDERED_MAP
+# define BOOST_HAS_TR1_UNORDERED_SET
+
+# define BOOST_HAS_MACRO_USE_FACET
+
+
+ // On non-Win32 platforms let the platform config figure this out:
+# ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+# endif
+
+//
+// __int64:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// all versions support __declspec:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DECLSPEC
+#endif
+//
+// ABI fixing headers:
+//
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
+

Modified: trunk/boost/config/select_compiler_config.hpp
==============================================================================
--- trunk/boost/config/select_compiler_config.hpp (original)
+++ trunk/boost/config/select_compiler_config.hpp 2008-09-16 07:04:52 EDT (Tue, 16 Sep 2008)
@@ -72,6 +72,10 @@
 // Greenhills C++
 # define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
 
+#elif defined __CODEGEARC__
+// CodeGear - must be checked for before Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/codegear.hpp"
+
 #elif defined __BORLANDC__
 // Borland
 # define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk