|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r62379 - in branches/release: boost boost/config boost/config/abi boost/config/compiler boost/config/platform boost/config/stdlib libs/config libs/config/doc libs/config/doc/html libs/config/doc/html/boost_config libs/config/test libs/config/test/all libs/config/test/link libs/config/test/link/test
From: bdawes_at_[hidden]
Date: 2010-06-02 10:30:09
Author: bemandawes
Date: 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
New Revision: 62379
URL: http://svn.boost.org/trac/boost/changeset/62379
Log:
Merge all config diffs from trunk
Added:
branches/release/libs/config/test/boost_no_com_value_init.ipp
- copied unchanged from r62378, /trunk/libs/config/test/boost_no_com_value_init.ipp
branches/release/libs/config/test/no_com_value_init_fail.cpp
- copied unchanged from r62378, /trunk/libs/config/test/no_com_value_init_fail.cpp
branches/release/libs/config/test/no_com_value_init_pass.cpp
- copied unchanged from r62378, /trunk/libs/config/test/no_com_value_init_pass.cpp
Properties modified:
branches/release/boost/config/ (props changed)
branches/release/boost/config.hpp (props changed)
branches/release/boost/config/compiler/ (props changed)
branches/release/libs/config/ (props changed)
branches/release/libs/config/doc/ (props changed)
Text files modified:
branches/release/boost/config/abi/borland_prefix.hpp | 2
branches/release/boost/config/auto_link.hpp | 89 +++++++++++---
branches/release/boost/config/compiler/borland.hpp | 14 +
branches/release/boost/config/compiler/clang.hpp | 13 +-
branches/release/boost/config/compiler/codegear.hpp | 28 +++-
branches/release/boost/config/compiler/common_edg.hpp | 6
branches/release/boost/config/compiler/digitalmars.hpp | 2
branches/release/boost/config/compiler/gcc.hpp | 39 ++++++
branches/release/boost/config/compiler/intel.hpp | 23 +++
branches/release/boost/config/compiler/kai.hpp | 2
branches/release/boost/config/compiler/metrowerks.hpp | 2
branches/release/boost/config/compiler/sunpro_cc.hpp | 24 +++
branches/release/boost/config/compiler/vacpp.hpp | 8 +
branches/release/boost/config/compiler/visualc.hpp | 35 ++++-
branches/release/boost/config/platform/win32.hpp | 9 +
branches/release/boost/config/stdlib/dinkumware.hpp | 11 +
branches/release/boost/config/suffix.hpp | 33 +++++
branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html | 235 ++++++++++++++++++++++++++++++++++++---
branches/release/libs/config/doc/html/index.html | 4
branches/release/libs/config/doc/macro_reference.qbk | 111 +++++++++++++++++-
branches/release/libs/config/test/all/Jamfile.v2 | 5
branches/release/libs/config/test/boost_no_0x_hdr_tuple.ipp | 1
branches/release/libs/config/test/boost_no_auto_declarations.ipp | 4
branches/release/libs/config/test/boost_no_auto_multidecl.ipp | 4
branches/release/libs/config/test/boost_no_char16_t.ipp | 3
branches/release/libs/config/test/boost_no_char32_t.ipp | 2
branches/release/libs/config/test/boost_no_decltype.ipp | 25 ++++
branches/release/libs/config/test/boost_no_extern_template.ipp | 21 +++
branches/release/libs/config/test/boost_no_initializer_lists.ipp | 7 +
branches/release/libs/config/test/boost_no_raw_literals.ipp | 4
branches/release/libs/config/test/boost_no_rtti.ipp | 4
branches/release/libs/config/test/config_info.cpp | 2
branches/release/libs/config/test/config_test.cpp | 12 +
branches/release/libs/config/test/link/Jamfile.v2 | 3
branches/release/libs/config/test/link/link_test.cpp | 38 +++++
branches/release/libs/config/test/link/link_test.hpp | 37 +++++
branches/release/libs/config/test/link/main.cpp | 4
branches/release/libs/config/test/link/test/Jamfile.v2 | 6
38 files changed, 753 insertions(+), 119 deletions(-)
Modified: branches/release/boost/config/abi/borland_prefix.hpp
==============================================================================
--- branches/release/boost/config/abi/borland_prefix.hpp (original)
+++ branches/release/boost/config/abi/borland_prefix.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -21,7 +21,7 @@
// 8026 - functions taking class by value arguments are not expanded inline
#pragma nopushoptwarn
-# pragma option push -Vx -Ve -a8 -b -pc -Vmv -VC- -Vl- -w-8027 -w-8026
+# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
Modified: branches/release/boost/config/auto_link.hpp
==============================================================================
--- branches/release/boost/config/auto_link.hpp (original)
+++ branches/release/boost/config/auto_link.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -25,6 +25,9 @@
of the library selected (useful for debugging).
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
rather than a mangled-name version.
+BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
+ This is essentially the same as the default name-mangled version, but without
+ the compiler name and version, or the Boost version. Just the build options.
These macros will be undef'ed at the end of the header, further this header
has no include guards - so be sure to include it only once from your library!
@@ -60,6 +63,8 @@
a hiphen:
s static runtime (dynamic if not present).
+ g debug/diagnostic runtime (release if not present).
+ y Python debug/diagnostic runtime (release if not present).
d debug build (release if not present).
g debug/diagnostic runtime (release if not present).
p STLPort Build.
@@ -183,8 +188,16 @@
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydp"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-gdp"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydp"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
@@ -195,8 +208,16 @@
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydpn"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-gdpn"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydpn"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gdpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
@@ -207,7 +228,9 @@
# else
-# if defined(_DEBUG)
+# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gyd"
+# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-gd"
# else
# define BOOST_LIB_RT_OPT
@@ -219,8 +242,16 @@
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydp"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-sgdp"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydp"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdp"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
@@ -231,8 +262,16 @@
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydpn"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
# define BOOST_LIB_RT_OPT "-sgdpn"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydpn"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgdpn"
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
@@ -243,7 +282,10 @@
# else
-# if defined(_DEBUG)
+# if defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgyd"
+# elif defined(_DEBUG)
# define BOOST_LIB_RT_OPT "-sgd"
# else
# define BOOST_LIB_RT_OPT "-s"
@@ -270,16 +312,26 @@
# ifdef _RTLDLL
-# ifdef BOOST_BORLAND_DEBUG
+# if defined(BOOST_BORLAND_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-yd"
+# elif defined(BOOST_BORLAND_DEBUG)
# define BOOST_LIB_RT_OPT "-d"
+# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT -y
# else
# define BOOST_LIB_RT_OPT
# endif
# else
-# ifdef BOOST_BORLAND_DEBUG
+# if defined(BOOST_BORLAND_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-syd"
+# elif defined(BOOST_BORLAND_DEBUG)
# define BOOST_LIB_RT_OPT "-sd"
+# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sy"
# else
# define BOOST_LIB_RT_OPT "-s"
# endif
@@ -309,16 +361,21 @@
&& defined(BOOST_LIB_RT_OPT) \
&& defined(BOOST_LIB_VERSION)
-#ifndef BOOST_AUTO_LINK_NOMANGLE
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+#ifdef BOOST_AUTO_LINK_TAGGED
+# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
# endif
-#else
+#elif defined(BOOST_AUTO_LINK_NOMANGLE)
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
# ifdef BOOST_LIB_DIAGNOSTIC
# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
# endif
+#else
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+# endif
#endif
#else
@@ -361,13 +418,3 @@
# undef BOOST_AUTO_LINK_NOMANGLE
#endif
-
-
-
-
-
-
-
-
-
-
Modified: branches/release/boost/config/compiler/borland.hpp
==============================================================================
--- branches/release/boost/config/compiler/borland.hpp (original)
+++ branches/release/boost/config/compiler/borland.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -218,7 +218,7 @@
//
// check for exception handling support:
//
-#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
//
@@ -230,8 +230,9 @@
//
// all versions support __declspec:
//
-#ifndef __STRICT_ANSI__
-# define BOOST_HAS_DECLSPEC
+#if defined(__STRICT_ANSI__)
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
#endif
//
// ABI fixing headers:
@@ -261,6 +262,13 @@
# define BOOST_NO_VOID_RETURNS
#endif
+// Borland did not implement value-initialization completely, as I reported
+// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
+// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, April 2010)
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
Modified: branches/release/boost/config/compiler/clang.hpp
==============================================================================
--- branches/release/boost/config/compiler/clang.hpp (original)
+++ branches/release/boost/config/compiler/clang.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -18,12 +18,6 @@
# define BOOST_NO_RTTI
#endif
-#if defined(__int32)
-// HACK: Clang only defines the type __int32 in Microsoft-compatibility mode,
-// which means that declspecs are also available
-# define BOOST_HAS_DECLSPEC
-#endif
-
#if defined(__int64)
# define BOOST_HAS_MS_INT64
#endif
@@ -59,6 +53,13 @@
// them is wrong.
#define BOOST_NO_EXTERN_TEMPLATE
+// Clang version 2.0 (trunk 103769) does not yet properly
+// value-initialize objects of a pointer-to-member type,
+// as was reported by Christopher Jefferson in May 2010, Bug 7139,
+// "ptr to member not zeroed", http://llvm.org/bugs/show_bug.cgi?id=7139
+// (Niels Dekker, LKEB, May 2010)
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
#endif
Modified: branches/release/boost/config/compiler/codegear.hpp
==============================================================================
--- branches/release/boost/config/compiler/codegear.hpp (original)
+++ branches/release/boost/config/compiler/codegear.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -19,8 +19,8 @@
#endif
//
// versions check:
-// last known and checked version is 0x620
-#if (__CODEGEARC__ > 0x620)
+// last known and checked version is 0x621
+#if (__CODEGEARC__ > 0x621)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
@@ -41,7 +41,7 @@
#endif
// CodeGear C++ Builder 2010
-#if (__CODEGEARC__ <= 0x620)
+#if (__CODEGEARC__ <= 0x621)
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
@@ -51,6 +51,15 @@
// Temporary hack, until specific MPL preprocessed headers are generated
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+// CodeGear has not yet completely implemented value-initialization, for
+// example for array types, as I reported in 2010: Embarcadero Report 83751,
+// "Value-initialization: arrays should have each element value-initialized",
+// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
+// Last checked version: Embarcadero C++ 6.21
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, April 2010)
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+
# ifdef NDEBUG
// fix broken <cstring> so that Boost.test works:
# include <cstring>
@@ -66,6 +75,11 @@
//
// C++0x macros:
//
+#if (__CODEGEARC__ <= 0x620)
+#define BOOST_NO_STATIC_ASSERT
+#else
+#define BOOST_HAS_STATIC_ASSERT
+#endif
#define BOOST_HAS_CHAR16_T
#define BOOST_HAS_CHAR32_T
#define BOOST_HAS_LONG_LONG
@@ -91,7 +105,6 @@
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
@@ -122,7 +135,7 @@
//
// check for exception handling support:
//
-#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
//
@@ -134,8 +147,9 @@
//
// all versions support __declspec:
//
-#if !defined(__STRICT_ANSI__)
-# define BOOST_HAS_DECLSPEC
+#if defined(__STRICT_ANSI__)
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
#endif
//
// ABI fixing headers:
Modified: branches/release/boost/config/compiler/common_edg.hpp
==============================================================================
--- branches/release/boost/config/compiler/common_edg.hpp (original)
+++ branches/release/boost/config/compiler/common_edg.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -44,7 +44,7 @@
#endif
// See also kai.hpp which checks a Kai-specific symbol for EH
-# if !defined(__KCC) && !defined(__EXCEPTIONS)
+# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
# endif
@@ -59,6 +59,9 @@
//
// See above for BOOST_NO_LONG_LONG
//
+#if (__EDG_VERSION__ < 310)
+# define BOOST_NO_EXTERN_TEMPLATE
+#endif
#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
// No support for initializer lists
# define BOOST_NO_INITIALIZER_LISTS
@@ -74,7 +77,6 @@
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
Modified: branches/release/boost/config/compiler/digitalmars.hpp
==============================================================================
--- branches/release/boost/config/compiler/digitalmars.hpp (original)
+++ branches/release/boost/config/compiler/digitalmars.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -51,7 +51,7 @@
// check for exception handling support:
-#ifndef _CPPUNWIND
+#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
Modified: branches/release/boost/config/compiler/gcc.hpp
==============================================================================
--- branches/release/boost/config/compiler/gcc.hpp (original)
+++ branches/release/boost/config/compiler/gcc.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -42,6 +42,7 @@
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_EXTERN_TEMPLATE
#elif __GNUC__ == 3
# if defined (__PATHSCALE__)
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
@@ -58,6 +59,7 @@
# if __GNUC_MINOR__ < 4
# define BOOST_NO_IS_ABSTRACT
# endif
+# define BOOST_NO_EXTERN_TEMPLATE
#endif
#if __GNUC__ < 4
//
@@ -69,7 +71,19 @@
# endif
#endif
-#ifndef __EXCEPTIONS
+#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
+// Previous versions of GCC did not completely implement value-initialization:
+// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
+// members", reported by Jonathan Wakely in 2006,
+// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4)
+// GCC Bug 33916, "Default constructor fails to initialize array members",
+// reported by Michael Elizabeth Chastain in 2007,
+// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4)
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#endif
+
+#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
@@ -94,6 +108,28 @@
#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
#define BOOST_HAS_NRVO
#endif
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if __GNUC__ >= 4
+# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+ // All Win32 development environments, including 64-bit Windows and MinGW, define
+ // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
+ // so does not define _WIN32 or its variants.
+# define BOOST_HAS_DECLSPEC
+# define BOOST_SYMBOL_EXPORT __attribute__((dllexport))
+# define BOOST_SYMBOL_IMPORT __attribute__((dllimport))
+# else
+# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
+# define BOOST_SYMBOL_IMPORT
+# endif
+# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
+#else
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
+#endif
+
//
// RTTI and typeinfo detection is possible post gcc-4.3:
//
@@ -107,7 +143,6 @@
// C++0x features not implemented in any GCC version
//
#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_NULLPTR
#define BOOST_NO_TEMPLATE_ALIASES
Modified: branches/release/boost/config/compiler/intel.hpp
==============================================================================
--- branches/release/boost/config/compiler/intel.hpp (original)
+++ branches/release/boost/config/compiler/intel.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -158,6 +158,29 @@
#endif
//
+// An attempt to value-initialize a pointer-to-member may trigger an
+// internal error on Intel <= 11.1 (last checked version), as was
+// reported by John Maddock, Intel support issue 589832, May 2010.
+// Moreover, according to test results from Huang-Vista-x86_32_intel,
+// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
+// cases when it should be value-initialized.
+// (Niels Dekker, LKEB, May 2010)
+#if defined(__INTEL_COMPILER)
+# if __INTEL_COMPILER <= 1110
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# endif
+#endif
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
+# define BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
+#endif
+
+//
// last known and checked version:
#if (BOOST_INTEL_CXX_VERSION > 1110)
# if defined(BOOST_ASSERT_CONFIG)
Modified: branches/release/boost/config/compiler/kai.hpp
==============================================================================
--- branches/release/boost/config/compiler/kai.hpp (original)
+++ branches/release/boost/config/compiler/kai.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -17,7 +17,7 @@
# endif
// see also common_edg.hpp which needs a special check for __KCC
-# if !defined(_EXCEPTIONS)
+# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
# endif
Modified: branches/release/boost/config/compiler/metrowerks.hpp
==============================================================================
--- branches/release/boost/config/compiler/metrowerks.hpp (original)
+++ branches/release/boost/config/compiler/metrowerks.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -48,7 +48,7 @@
# define BOOST_NO_INTRINSIC_WCHAR_T
#endif
-#if !__option(exceptions)
+#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
Modified: branches/release/boost/config/compiler/sunpro_cc.hpp
==============================================================================
--- branches/release/boost/config/compiler/sunpro_cc.hpp (original)
+++ branches/release/boost/config/compiler/sunpro_cc.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -69,6 +69,25 @@
# define BOOST_NO_IS_ABSTRACT
# endif
+# if (__SUNPRO_CC <= 0x5100)
+ // Sun 5.10 may not correctly value-initialize objects of
+ // some user defined types, as was reported in April 2010
+ // (CR 6947016), and confirmed by Steve Clamage.
+ // (Niels Dekker, LKEB, May 2010).
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# endif
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if __SUNPRO_CC > 0x500
+# define BOOST_SYMBOL_EXPORT __global
+# define BOOST_SYMBOL_IMPORT __global
+# define BOOST_SYMBOL_VISIBLE __global
+#endif
+
+
+
//
// Issues that effect all known versions:
//
@@ -78,12 +97,7 @@
//
// C++0x features
//
-
-#if(__SUNPRO_CC >= 0x590)
# define BOOST_HAS_LONG_LONG
-#else
-# define BOOST_NO_LONG_LONG
-#endif
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
Modified: branches/release/boost/config/compiler/vacpp.hpp
==============================================================================
--- branches/release/boost/config/compiler/vacpp.hpp (original)
+++ branches/release/boost/config/compiler/vacpp.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -30,6 +30,14 @@
# define BOOST_NO_INITIALIZER_LISTS
#endif
+#if (__IBMCPP__ <= 1110)
+// XL C++ V11.1 and earlier versions may not always value-initialize
+// a temporary object T(), when T is a non-POD aggregate class type.
+// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
+// high priority. -- Niels Dekker (LKEB), May 2010.
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#endif
+
//
// On AIX thread support seems to be indicated by _THREAD_SAFE:
//
Modified: branches/release/boost/config/compiler/visualc.hpp
==============================================================================
--- branches/release/boost/config/compiler/visualc.hpp (original)
+++ branches/release/boost/config/compiler/visualc.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -68,6 +68,7 @@
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
# define BOOST_NO_IS_ABSTRACT
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+# define BOOST_NO_EXTERN_TEMPLATE
// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
# if (_MSC_VER > 1200)
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
@@ -99,6 +100,24 @@
# define BOOST_NO_ADL_BARRIER
#endif
+
+#if (_MSC_VER <= 1600)
+// MSVC (including the latest checked version) has not yet completely
+// implemented value-initialization, as is reported:
+// "VC++ does not value-initialize members of derived classes without
+// user-declared constructor", reported in 2009 by Sylvester Hesp:
+// https://connect.microsoft.com/VisualStudio/feedback/details/484295
+// "Presence of copy constructor breaks member class initialization",
+// reported in 2009 by Alex Vakulenko:
+// https://connect.microsoft.com/VisualStudio/feedback/details/499606
+// "Value-initialization in new-expression", reported in 2005 by
+// Pavel Kuznetsov (MetaCommunications Engineering):
+// https://connect.microsoft.com/VisualStudio/feedback/details/100744
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, May 2010)
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#endif
+
#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
# define BOOST_NO_INITIALIZER_LISTS
#endif
@@ -115,7 +134,7 @@
//
// check for exception handling support:
-#ifndef _CPPUNWIND
+#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS
#endif
@@ -145,11 +164,6 @@
#endif
//
-// all versions support __declspec:
-//
-#define BOOST_HAS_DECLSPEC
-
-//
// C++0x features
//
// See above for BOOST_NO_LONG_LONG
@@ -159,11 +173,14 @@
#if _MSC_VER < 1600
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_DECLTYPE
#define BOOST_NO_LAMBDAS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_NULLPTR
#endif // _MSC_VER < 1600
+#if _MSC_VER >= 1600
+#define BOOST_HAS_STDINT_H
+#endif
// C++0x features not supported by any versions
#define BOOST_NO_CHAR16_T
@@ -171,19 +188,17 @@
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DECLTYPE
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
-
//
// prefix and suffix headers:
//
Modified: branches/release/boost/config/platform/win32.hpp
==============================================================================
--- branches/release/boost/config/platform/win32.hpp (original)
+++ branches/release/boost/config/platform/win32.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -21,10 +21,17 @@
# define BOOST_NO_SWPRINTF
#endif
-#if !defined(__GNUC__) && !defined(BOOST_HAS_DECLSPEC)
+// Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+// If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport),
+// its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and
+// BOOST_SYMBOL_IMPORT
+#ifndef BOOST_SYMBOL_EXPORT
# define BOOST_HAS_DECLSPEC
+# define BOOST_SYMBOL_EXPORT __declspec(dllexport)
+# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
#endif
+
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
# define BOOST_HAS_STDINT_H
# define __STDC_LIMIT_MACROS
Modified: branches/release/boost/config/stdlib/dinkumware.hpp
==============================================================================
--- branches/release/boost/config/stdlib/dinkumware.hpp (original)
+++ branches/release/boost/config/stdlib/dinkumware.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -86,6 +86,11 @@
# define BOOST_NO_STD_LOCALE
#endif
+#include <typeinfo>
+#if !_HAS_EXCEPTIONS
+# define BOOST_NO_STD_TYPEINFO
+#endif
+
// C++0x headers implemented in 520 (as shipped by Microsoft)
//
#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
@@ -100,6 +105,11 @@
# define BOOST_NO_STD_UNORDERED // deprecated; see following
# define BOOST_NO_0X_HDR_UNORDERED_MAP
# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_0X_HDR_TUPLE
+#endif
+
+#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE)
+# define BOOST_NO_0X_HDR_TUPLE
#endif
// C++0x headers not yet implemented
@@ -114,7 +124,6 @@
# define BOOST_NO_0X_HDR_MUTEX
# define BOOST_NO_0X_HDR_RATIO
# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_0X_HDR_TUPLE
#ifdef _CPPLIB_VER
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
Modified: branches/release/boost/config/suffix.hpp
==============================================================================
--- branches/release/boost/config/suffix.hpp (original)
+++ branches/release/boost/config/suffix.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -26,6 +26,19 @@
#define BOOST_CONFIG_SUFFIX_HPP
//
+// ensure that visibility macros are always defined, thus symplifying use
+//
+#ifndef BOOST_SYMBOL_EXPORT
+# define BOOST_SYMBOL_EXPORT
+#endif
+#ifndef BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_IMPORT
+#endif
+#ifndef BOOST_SYMBOL_VISIBLE
+# define BOOST_SYMBOL_VISIBLE
+#endif
+
+//
// look for long long by looking for the appropriate macros in <limits.h>.
// Note that we use limits.h rather than climits for maximal portability,
// remember that since these just declare a bunch of macros, there should be
@@ -83,6 +96,13 @@
#endif
//
+// Normalize BOOST_NO_STATIC_ASSERT and (depricated) BOOST_HAS_STATIC_ASSERT:
+//
+#if !defined(BOOST_NO_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
+# define BOOST_HAS_STATIC_ASSERT
+#endif
+
+//
// if there is no __int64 then there is no specialisation
// for numeric_limits<__int64> either:
//
@@ -314,6 +334,13 @@
# define BOOST_NO_INITIALIZER_LISTS
#endif
+//
+// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_RVALUE_REFERENCES is not defined
+//
+#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
+#define BOOST_HAS_RVALUE_REFS
+#endif
+
// BOOST_HAS_ABI_HEADERS
// This macro gets set if we have headers that fix the ABI,
// and prevent ODR violations when linking to external libraries:
@@ -554,6 +581,12 @@
#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+// When BOOST_NO_STD_TYPEINFO is defined, we can just import
+// the global definition into std namespace:
+#ifdef BOOST_NO_STD_TYPEINFO
+#include <typeinfo>
+namespace std{ using ::typeinfo; }
+#endif
// ---------------------------------------------------------------------------//
Modified: branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html (original)
+++ branches/release/libs/config/doc/html/boost_config/boost_macro_reference.html 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -174,6 +174,25 @@
<tr>
<td>
<p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_COMPLETE_VALUE_INITIALIZATION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler has not completely implemented value-initialization. See
+ also <a href="../../../../utility/value_init.htm#compiler_issues" target="_top">The
+ Utility/Value Init docs</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
</p>
</td>
@@ -1343,23 +1362,6 @@
<tr>
<td>
<p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
- </p>
- </td>
-<td>
- <p>
- Compiler
- </p>
- </td>
-<td>
- <p>
- The compiler uses <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to export/import symbols from dll's.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
<code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
</p>
</td>
@@ -2634,7 +2636,7 @@
<tr>
<td>
<p>
- <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code>
</p>
</td>
<td>
@@ -2652,8 +2654,8 @@
</td>
<td>
<p>
- The compiler does not support explicit instantiation declarations
- for templates (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">template</span></code>).
+ The compiler does not support explicit instantiation forward declarations
+ for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
</p>
</td>
</tr>
@@ -3313,6 +3315,23 @@
<tr>
<td>
<p>
+ <code class="computeroutput"><span class="identifier">BOOST_CLANG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined to 1 if the compiler is the Clang compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
<code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
</p>
</td>
@@ -3427,6 +3446,8 @@
for libraries with separate source code</a>
</h3></div></div></div>
<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility">Macros
+ controlling shared library symbol visibility</a></span></dt>
<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing">ABI
Fixing</a></span></dt>
<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection">Automatic
@@ -3434,12 +3455,180 @@
</dl></div>
<p>
The following macros and helper headers are of use to authors whose libraries
- include separate source code, and are intended to address two issues: fixing
- the ABI of the compiled library, and selecting which compiled library to
- link against based upon the compilers settings.
+ include separate source code, and are intended to address several issues:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Controlling shared library symbol visibility
+ </li>
+<li>
+ Fixing the ABI of the compiled library
+ </li>
+<li>
+ Selecting which compiled library to link against based upon the compilers
+ settings
+ </li>
+</ul></div>
+<p>
+ See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines
+ for Authors of Boost Libraries Containing Separate Source</a>
</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros
+ controlling shared library symbol visibility</a>
+</h4></div></div></div>
+<p>
+ Some compilers support C++ extensions that control which symbols will be
+ exported from shared libraries such as dynamic shared objects (DSO's) on
+ Unix-like systems or dynamic-link libraries (DLL's) on Windows.
+ </p>
+<p>
+ The Microsoft VC++ compiler has long supplied <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> extensions for this purpose, as do virtually
+ all other compilers targeting the Windows platform.
+ </p>
+<p>
+ Modern versions of the GNU GCC compiler provide the <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">visibility</span><span class="special">(</span><span class="string">"default"</span><span class="special">)))</span></code> extension to indicate that a symbol
+ should be exported. All other symbols may be hidden by using the <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">hidden</span></code>
+ or <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">ms</span><span class="special">-</span><span class="identifier">compat</span></code> compiler switches.
+ </p>
+<p>
+ Boost supplies several macros to make it easier to manage symbol visibility
+ in a way that is portable between compilers and operating systems.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates a
+ symbol is to be exported from a shared library. If the compiler
+ has no such extension, the macro is defined with no replacement
+ text.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_IMPORT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates a
+ symbol is to be imported from a shared library. If the compiler
+ has no such extension, the macro is defined with no replacement
+ text.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_VISIBLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates a
+ symbol is to be globally visible. If the compiler has no such extension,
+ the macro is defined with no replacement text. Needed for classes
+ that are not otherwise exported, but are used by RTTI. Examples
+ include class for objects that will be thrown as exceptions or
+ used in dynamic_casts, across shared library boundaries. For example,
+ a header-only exception class might look like this:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+ Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception
+ thrown from a shared library compiled by GCC with the -fvisibility=hidden
+ option.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of symbols
+ from shared libraries. <span class="emphasis"><em>Deprecated. This macro is no longer
+ necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are
+ now supplied. It is provided to support legacy code.</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Typical usage:
+ </p>
+<p>
+ <span class="bold"><strong>boost/foo/config.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_DYN_LINK</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_DYN_LINK</span><span class="special">)</span>
+<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_SOURCE</span><span class="special">)</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span>
+<span class="preprocessor"># else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_IMPORT</span>
+<span class="preprocessor"># endif</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+ <span class="bold"><strong>boost/foo/foo.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">class</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">bar</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">();</span>
+<span class="special">...</span>
+</pre>
+<p>
+ <span class="bold"><strong>boost/libs/foo/src/foo.cpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FOO_SOURCE</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+<span class="special">...</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
Fixing</a>
</h4></div></div></div>
Modified: branches/release/libs/config/doc/html/index.html
==============================================================================
--- branches/release/libs/config/doc/html/index.html (original)
+++ branches/release/libs/config/doc/html/index.html 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -28,7 +28,7 @@
</h3></div></div></div>
<div><p class="copyright">Copyright © 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
<div><div class="legalnotice">
-<a name="id793416"></a><p>
+<a name="id903664"></a><p>
Distributed under 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)
</p>
@@ -960,7 +960,7 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 02, 2010 at 17:08:14 GMT</small></p></td>
+<td align="left"><p><small>Last revised: May 27, 2010 at 08:46:14 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Modified: branches/release/libs/config/doc/macro_reference.qbk
==============================================================================
--- branches/release/libs/config/doc/macro_reference.qbk (original)
+++ branches/release/libs/config/doc/macro_reference.qbk 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -49,6 +49,10 @@
[[`BOOST_NO_AUTO_PTR`][Standard library][
If the compiler / library supplies non-standard or broken `std::auto_ptr`.
]]
+[[`BOOST_NO_COMPLETE_VALUE_INITIALIZATION`][Compiler][
+Compiler has not completely implemented value-initialization.
+See also [@../../../utility/value_init.htm#compiler_issues The Utility\/Value Init docs]
+]]
[[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][
The Platform does not provide functions for the character-classifying
operations `<ctype.h>` and `<cctype>`, only macros.
@@ -313,6 +317,7 @@
[#config_features]
+
[section Macros that describe optional features]
The following macros describe features that are not required by the C++
@@ -328,10 +333,6 @@
[[`BOOST_HAS_CLOCK_GETTIME`][Platform][
The platform has the POSIX API `clock_gettime`.
]]
-[[`BOOST_HAS_DECLSPEC`][Compiler][
-The compiler uses `__declspec(dllexport)` and `__declspec(dllimport)` to
-export/import symbols from dll's.
-]]
[[`BOOST_HAS_DIRENT_H`][Platform][
The platform has the POSIX header `<dirent.h>`.
]]
@@ -577,11 +578,11 @@
[[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support
deleted (`= delete`) functions.
]]
-[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS`][The compiler does not support
+[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support
explicit conversion operators (`explicit operator T()`).
]]
[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support
-explicit instantiation declarations for templates (`explicit template`).
+explicit instantiation forward declarations for templates (`extern template ...`).
]]
[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support
default template arguments for function templates.
@@ -864,9 +865,98 @@
[section Macros for libraries with separate source code]
The following macros and helper headers are of use to authors whose libraries
-include separate source code, and are intended to address two issues: fixing
-the ABI of the compiled library, and selecting which compiled library to link
-against based upon the compilers settings.
+include separate source code, and are intended to address several issues:
+
+* Controlling shared library symbol visibility
+* Fixing the ABI of the compiled library
+* Selecting which compiled library to link against based upon the compilers settings
+
+See [@http://svn.boost.org/trac/boost/wiki/Guidelines/Separate Guidelines for Authors of Boost Libraries Containing Separate Source]
+
+[section Macros controlling shared library symbol visibility]
+
+Some compilers support C++ extensions that control which symbols
+will be exported from shared libraries such as dynamic shared objects (DSO's) on Unix-like
+systems or dynamic-link libraries (DLL's) on Windows.
+
+The Microsoft VC++ compiler has long supplied
+`__declspec(dllexport)` and `__declspec(dllimport)` extensions for this purpose,
+as do virtually all other compilers targeting the Windows platform.
+
+Modern versions of the GNU GCC compiler provide the `__attribute__((visibility("default")))`
+extension to indicate that a symbol should be exported. All other symbols may be hidden by using the
+`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switches.
+
+Boost supplies several macros to make it easier to manage symbol visibility in a way that
+is portable between compilers and operating systems.
+
+[table
+[[Macro ][Description ]]
+[[`BOOST_SYMBOL_EXPORT`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be exported from a shared library.
+If the compiler has no such extension, the macro is defined with no replacement text.
+]]
+[[`BOOST_SYMBOL_IMPORT`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be imported from a shared library.
+If the compiler has no such extension, the macro is defined with no replacement text.
+]]
+[[`BOOST_SYMBOL_VISIBLE`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be globally visible.
+If the compiler has no such extension, the macro is defined with no replacement text.
+Needed for classes that are not otherwise exported, but are used by RTTI. Examples include
+class for objects that will be thrown as exceptions or used in dynamic_casts,
+across shared library boundaries. For example, a header-only exception class might look like this:
+``
+ class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
+``
+Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception thrown from a shared library
+compiled by GCC with the -fvisibility=hidden option.
+]]
+[[`BOOST_HAS_DECLSPEC`][
+The compiler has C++ extensions `__declspec(dllexport)` and `__declspec(dllimport)` to control
+export/import of symbols from shared libraries.
+['Deprecated. This macro is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+are now supplied. It is provided to support legacy code.]
+]]
+]
+
+Typical usage:
+
+[*boost/foo/config.hpp]
+
+ ...
+ #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
+ # if defined(BOOST_FOO_SOURCE)
+ # define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
+ # else
+ # define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
+ # endif
+ #else
+ # define BOOST_FOO_DECL
+ #endif
+ ...
+
+[*boost/foo/foo.hpp]
+
+ #include <boost/foo/config.hpp>
+ ...
+ class BOOST_FOO_DECL bar { ... };
+ ...
+ void BOOST_FOO_DECL f();
+ ...
+
+[*boost/libs/foo/src/foo.cpp]
+
+ #define BOOST_FOO_SOURCE
+ #include <boost/foo/foo.hpp>
+ ...
+ void BOOST_FOO_DECL f()
+ {
+ ...
+ }
+ ...
+
+[endsect]
[section ABI Fixing]
@@ -988,3 +1078,6 @@
[endsect]
[endsect]
+
+
+
Modified: branches/release/libs/config/test/all/Jamfile.v2
==============================================================================
--- branches/release/libs/config/test/all/Jamfile.v2 (original)
+++ branches/release/libs/config/test/all/Jamfile.v2 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -1,7 +1,7 @@
#
# Regression test Jamfile for boost configuration setup.
# *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Sun Oct 11 13:04:18 2009
+# This file was automatically generated on Fri Apr 09 12:24:54 2010
# by libs/config/tools/generate.cpp
# Copyright John Maddock.
# Use, modification and distribution are subject to the
@@ -265,6 +265,9 @@
test-suite "BOOST_NO_CHAR32_T" :
[ run ../no_char32_t_pass.cpp ]
[ compile-fail ../no_char32_t_fail.cpp ] ;
+test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" :
+[ run ../no_com_value_init_pass.cpp ]
+[ compile-fail ../no_com_value_init_fail.cpp ] ;
test-suite "BOOST_NO_CONCEPTS" :
[ run ../no_concepts_pass.cpp ]
[ compile-fail ../no_concepts_fail.cpp ] ;
Modified: branches/release/libs/config/test/boost_no_0x_hdr_tuple.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_0x_hdr_tuple.ipp (original)
+++ branches/release/libs/config/test/boost_no_0x_hdr_tuple.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -16,6 +16,7 @@
int test()
{
+ std::tuple<int, int, long> t(0, 1, 2);
return 0;
}
Modified: branches/release/libs/config/test/boost_no_auto_declarations.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_auto_declarations.ipp (original)
+++ branches/release/libs/config/test/boost_no_auto_declarations.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -11,14 +11,14 @@
namespace boost_no_auto_declarations {
-void check(int& x)
+void check_f(int& x)
{
}
int test()
{
auto x = 10;
- check(x);
+ check_f(x);
return 0;
}
Modified: branches/release/libs/config/test/boost_no_auto_multidecl.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_auto_multidecl.ipp (original)
+++ branches/release/libs/config/test/boost_no_auto_multidecl.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -11,14 +11,14 @@
namespace boost_no_auto_multideclarations {
-void check(int& x, int*& y)
+void check_f(int& x, int*& y)
{
}
int test()
{
auto x = 10, *y = &x;
- check(x, y);
+ check_f(x, y);
return 0;
}
Modified: branches/release/libs/config/test/boost_no_char16_t.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_char16_t.ipp (original)
+++ branches/release/libs/config/test/boost_no_char16_t.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -1,3 +1,4 @@
+
// (C) Copyright Beman Dawes 2008
// Use, modification and distribution are subject to the
@@ -14,7 +15,7 @@
int test()
{
- char16_t c;
+ const char16_t* p = u"abc";
return 0;
}
Modified: branches/release/libs/config/test/boost_no_char32_t.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_char32_t.ipp (original)
+++ branches/release/libs/config/test/boost_no_char32_t.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -14,7 +14,7 @@
int test()
{
- char32_t c;
+ const char32_t* p = U"abc";
return 0;
}
Modified: branches/release/libs/config/test/boost_no_decltype.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_decltype.ipp (original)
+++ branches/release/libs/config/test/boost_no_decltype.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -1,3 +1,4 @@
+
// (C) Copyright Beman Dawes 2008
// Use, modification and distribution are subject to the
@@ -12,10 +13,34 @@
namespace boost_no_decltype {
+struct test_class
+{
+ test_class() {}
+};
+
+test_class get_test_class()
+{
+ return test_class();
+}
+
+template<typename F>
+void baz(F f)
+{
+ //
+ // Strangely VC-10 deduces the return type of F
+ // to be "test_class&". Remove the constructor
+ // from test_class and then decltype does work OK!!
+ //
+ typedef decltype(f()) res;
+ res r;
+}
+
int test()
{
int i;
decltype(i) j;
+ decltype(get_test_class()) k;
+ baz(get_test_class);
return 0;
}
Modified: branches/release/libs/config/test/boost_no_extern_template.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_extern_template.ipp (original)
+++ branches/release/libs/config/test/boost_no_extern_template.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -12,7 +12,26 @@
namespace boost_no_extern_template {
-extern template<class T> void f(T);
+template<class T, class U> void f(T const* p, U const* q)
+{
+ p = q;
+}
+
+template <class T>
+class must_not_compile
+{
+public:
+ void f(T const* p, int const* q);
+};
+
+template <class T>
+void must_not_compile<T>::f(T const* p, int const* q)
+{
+ p = q;
+}
+
+extern template void f<>(int const*, float const*);
+extern template class must_not_compile<int>;
int test()
{
Modified: branches/release/libs/config/test/boost_no_initializer_lists.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_initializer_lists.ipp (original)
+++ branches/release/libs/config/test/boost_no_initializer_lists.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -11,11 +11,18 @@
// DESCRIPTION: If the compiler does not support C++0x initializer lists
#include <initializer_list>
+#include <vector>
namespace boost_no_initializer_lists {
+void f(std::initializer_list<int>)
+{
+}
+
int test()
{
+ std::vector<std::string> v{"once", "upon", "a", "time"}; // See C++ std 8.5.4
+ f( { 1, 2, 3, 4 } );
std::initializer_list<int> x = { 1, 2 };
return 0;
}
Modified: branches/release/libs/config/test/boost_no_raw_literals.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_raw_literals.ipp (original)
+++ branches/release/libs/config/test/boost_no_raw_literals.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -14,8 +14,8 @@
int test()
{
- const char* s = R"[abc]";
- const wchar_t* ws = LR"[abc]";
+ const char* s = R"(abc)";
+ const wchar_t* ws = LR"(abc)";
return 0;
}
Modified: branches/release/libs/config/test/boost_no_rtti.ipp
==============================================================================
--- branches/release/libs/config/test/boost_no_rtti.ipp (original)
+++ branches/release/libs/config/test/boost_no_rtti.ipp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -36,7 +36,7 @@
namespace boost_no_rtti
{
-int check(const A& a)
+int check_f(const A& a)
{
return typeid(a) == typeid(B) ? 0 : 1;
}
@@ -45,7 +45,7 @@
{
try{
B b;
- return check(b);
+ return check_f(b);
}
catch(...)
{
Modified: branches/release/libs/config/test/config_info.cpp
==============================================================================
--- branches/release/libs/config/test/config_info.cpp (original)
+++ branches/release/libs/config/test/config_info.cpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -985,6 +985,7 @@
PRINT_MACRO(BOOST_NO_AUTO_PTR);
PRINT_MACRO(BOOST_NO_CHAR16_T);
PRINT_MACRO(BOOST_NO_CHAR32_T);
+ PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION);
PRINT_MACRO(BOOST_NO_CONCEPTS);
PRINT_MACRO(BOOST_NO_CONSTEXPR);
PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
@@ -1080,6 +1081,7 @@
+
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
Modified: branches/release/libs/config/test/config_test.cpp
==============================================================================
--- branches/release/libs/config/test/config_test.cpp (original)
+++ branches/release/libs/config/test/config_test.cpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Sun Oct 11 13:04:18 2009
+// This file was automatically generated on Fri Apr 09 12:24:54 2010
// by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the
@@ -172,6 +172,11 @@
#else
namespace boost_no_char32_t = empty_boost;
#endif
+#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#include "boost_no_com_value_init.ipp"
+#else
+namespace boost_no_complete_value_initialization = empty_boost;
+#endif
#ifndef BOOST_NO_CONCEPTS
#include "boost_no_concepts.ipp"
#else
@@ -1251,6 +1256,11 @@
std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count;
}
+ if(0 != boost_no_complete_value_initialization::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
if(0 != boost_no_concepts::test())
{
std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl;
Modified: branches/release/libs/config/test/link/Jamfile.v2
==============================================================================
--- branches/release/libs/config/test/link/Jamfile.v2 (original)
+++ branches/release/libs/config/test/link/Jamfile.v2 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -14,3 +14,6 @@
debug release
;
+run main.cpp link_test : : : <define>BOOST_DYN_LINK=1 <define>BOOST_CONFIG_NO_LIB <link>shared <runtime-link>shared <threading>single : link_test_test ;
+
+
Modified: branches/release/libs/config/test/link/link_test.cpp
==============================================================================
--- branches/release/libs/config/test/link/link_test.cpp (original)
+++ branches/release/libs/config/test/link/link_test.cpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -9,6 +9,8 @@
#define BOOST_CONFIG_SOURCE
#include "link_test.hpp"
+#include <iostream>
+#include <iomanip>
bool BOOST_CONFIG_DECL check_options(
bool m_dyn_link,
@@ -17,10 +19,36 @@
bool m_debug,
bool m_stlp_debug)
{
- return (m_dyn_link == dyn_link)
- && (m_dyn_rtl == dyn_rtl)
- && (m_has_threads == has_threads)
- && (m_debug == debug)
- && (m_stlp_debug == stl_debug);
+ if(m_dyn_link != dyn_link)
+ {
+ std::cout << "Dynamic link options do not match" << std::endl;
+ std::cout << "Application setting = " << m_dyn_link << " Library setting = " << dyn_link << std::endl;
+ return false;
+ }
+ if(m_dyn_rtl != dyn_rtl)
+ {
+ std::cout << "Runtime library options do not match" << std::endl;
+ std::cout << "Application setting = " << m_dyn_rtl << " Library setting = " << dyn_rtl << std::endl;
+ return false;
+ }
+ if(m_has_threads != has_threads)
+ {
+ std::cout << "Threading options do not match" << std::endl;
+ std::cout << "Application setting = " << m_has_threads << " Library setting = " << has_threads << std::endl;
+ return false;
+ }
+ if(m_debug != debug)
+ {
+ std::cout << "Debug options do not match" << std::endl;
+ std::cout << "Application setting = " << m_debug << " Library setting = " << debug << std::endl;
+ return false;
+ }
+ if(m_stlp_debug != stl_debug)
+ {
+ std::cout << "STLPort debug options do not match" << std::endl;
+ std::cout << "Application setting = " << m_stlp_debug << " Library setting = " << stl_debug << std::endl;
+ return false;
+ }
+ return true;
}
Modified: branches/release/libs/config/test/link/link_test.hpp
==============================================================================
--- branches/release/libs/config/test/link/link_test.hpp (original)
+++ branches/release/libs/config/test/link/link_test.hpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -44,11 +44,11 @@
//
// set up import and export options:
//
-#if defined(BOOST_HAS_DECLSPEC) && defined(BOOST_DYN_LINK)
+#if defined(BOOST_DYN_LINK)
# ifdef BOOST_CONFIG_SOURCE
-# define BOOST_CONFIG_DECL __declspec(dllexport)
+# define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT
# else
-# define BOOST_CONFIG_DECL __declspec(dllimport)
+# define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT
# endif
#endif
#ifndef BOOST_CONFIG_DECL
@@ -73,5 +73,36 @@
# include <boost/config/auto_link.hpp>
#endif
+#ifndef BOOST_NO_EXTERN_TEMPLATE
+
+template <class T>
+T test_free_proc(T v)
+{
+ return v;
+}
+
+template <class T>
+struct tester
+{
+ static int test();
+};
+
+template <class T>
+int tester<T>::test()
+{
+ return 0;
+}
+
+#ifdef BOOST_CONFIG_SOURCE
+template BOOST_SYMBOL_EXPORT int test_free_proc<int>(int);
+template BOOST_SYMBOL_EXPORT int tester<int>::test();
+#else
+extern template BOOST_SYMBOL_IMPORT int test_free_proc<int>(int);
+extern template BOOST_SYMBOL_IMPORT int tester<int>::test();
+#endif
+
+#endif // BOOST_NO_EXTERN_TEMPLATE
+
#endif // BOOST_LINK_TEST_HPP
+
Modified: branches/release/libs/config/test/link/main.cpp
==============================================================================
--- branches/release/libs/config/test/link/main.cpp (original)
+++ branches/release/libs/config/test/link/main.cpp 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -9,6 +9,10 @@
int main()
{
+#ifndef BOOST_NO_EXTERN_TEMPLATE
+ test_free_proc<int>(0);
+ tester<int>::test();
+#endif
return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1;
}
Modified: branches/release/libs/config/test/link/test/Jamfile.v2
==============================================================================
--- branches/release/libs/config/test/link/test/Jamfile.v2 (original)
+++ branches/release/libs/config/test/link/test/Jamfile.v2 2010-06-02 10:30:04 EDT (Wed, 02 Jun 2010)
@@ -69,13 +69,14 @@
:
;
+
explicit link_test ;
run ../main.cpp link_test
- : : : <toolset>msvc-8.0:<build>no <link>static <runtime-link>static <threading>single debug : link_test_ssd ;
+ : : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single debug : link_test_ssd ;
run ../main.cpp link_test
- : : : <toolset>msvc-8.0:<build>no <link>static <runtime-link>static <threading>single release : link_test_ssr ;
+ : : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single release : link_test_ssr ;
run ../main.cpp link_test
: : : <link>static <runtime-link>static <threading>multi debug : link_test_smd ;
@@ -113,3 +114,4 @@
+
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