Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_config.hpp	(working copy)
@@ -22,7 +22,7 @@
 
 #include <boost/config.hpp>
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
 // we need to import/export our code only if the user has specifically
 // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 // libraries to be dynamically linked, or BOOST_ARCHIVE_DYN_LINK
@@ -30,12 +30,12 @@
 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_ARCHIVE_DYN_LINK)
 // export if this is our own source, otherwise import:
 #ifdef BOOST_ARCHIVE_SOURCE
-# define BOOST_ARCHIVE_DECL __declspec(dllexport)
+# define BOOST_ARCHIVE_DECL BOOST_SYMBOL_EXPORT
 #else
-# define BOOST_ARCHIVE_DECL __declspec(dllimport)
+# define BOOST_ARCHIVE_DECL BOOST_SYMBOL_IMPORT
 #endif  // BOOST_ARCHIVE_SOURCE
 #endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 //
 // if BOOST_ARCHIVE_DECL isn't defined yet define it now:
 #ifndef BOOST_ARCHIVE_DECL
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_iarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_iarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_iarchive.hpp	(working copy)
@@ -37,8 +37,8 @@
 namespace detail {
 
 class basic_iarchive_impl;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iserializer;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer;
+class basic_iserializer;
+class basic_pointer_iserializer;
 //////////////////////////////////////////////////////////////////////
 // class basic_iarchive - read serialized objects from a input stream
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive :
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_iserializer.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_iserializer.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_iserializer.hpp	(working copy)
@@ -39,8 +39,8 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer;
+class basic_iarchive;
+class basic_pointer_iserializer;
 
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iserializer : 
     public basic_serializer
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_oarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_oarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_oarchive.hpp	(working copy)
@@ -39,8 +39,8 @@
 namespace detail {
 
 class basic_oarchive_impl;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer;
+class basic_oserializer;
+class basic_pointer_oserializer;
 //////////////////////////////////////////////////////////////////////
 // class basic_oarchive - write serialized objects to an output stream
 class BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive :
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_oserializer.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_oserializer.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_oserializer.hpp	(working copy)
@@ -40,8 +40,8 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer;
+class basic_oarchive;
+class basic_pointer_oserializer;
 
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer : 
     public basic_serializer
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_iserializer.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_iserializer.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_iserializer.hpp	(working copy)
@@ -37,8 +37,8 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iserializer;
+class basic_iarchive;
+class basic_iserializer;
 
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer 
     : public basic_serializer {
Index: /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_oserializer.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_oserializer.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/basic_pointer_oserializer.hpp	(working copy)
@@ -36,8 +36,8 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive;
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer;
+class basic_oarchive;
+class basic_oserializer;
 
 class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer : 
     public basic_serializer
Index: /home/hunold/src/devel/boost/boost/archive/detail/decl.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/decl.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/decl.hpp	(working copy)
@@ -24,21 +24,21 @@
 #include <boost/config.hpp>
 #include <boost/preprocessor/facilities/empty.hpp>
 
-#if defined(BOOST_HAS_DECLSPEC)
+#if defined(BOOST_SYMBOL_EXPORT)
     #if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SERIALIZATION_DYN_LINK))
         #if defined(BOOST_ARCHIVE_SOURCE)
             #if defined(__BORLANDC__)
             #define BOOST_ARCHIVE_DECL(T) T __export
             #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T)  T __export
             #else
-            #define BOOST_ARCHIVE_DECL(T) __declspec(dllexport) T
-            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T)  __declspec(dllexport) T
+            #define BOOST_ARCHIVE_DECL(T) BOOST_SYMBOL_EXPORT T
+            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T)  BOOST_SYMBOL_EXPORT T
             #endif
         #else
             #if defined(__BORLANDC__)
             #define BOOST_ARCHIVE_DECL(T) T __import
             #else
-            #define BOOST_ARCHIVE_DECL(T) __declspec(dllimport) T
+            #define BOOST_ARCHIVE_DECL(T) BOOST_SYMBOL_IMPORT T
             #endif
         #endif
         #if defined(BOOST_WARCHIVE_SOURCE)
@@ -46,25 +46,25 @@
             #define BOOST_WARCHIVE_DECL(T) T __export
             #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __export
             #else
-            #define BOOST_WARCHIVE_DECL(T) __declspec(dllexport) T
-            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllexport) T
+            #define BOOST_WARCHIVE_DECL(T) BOOST_SYMBOL_EXPORT T
+            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) BOOST_SYMBOL_EXPORT T
             #endif
         #else
             #if defined(__BORLANDC__)
             #define BOOST_WARCHIVE_DECL(T) T __import
             #else
-            #define BOOST_WARCHIVE_DECL(T) __declspec(dllimport) T
+            #define BOOST_WARCHIVE_DECL(T) BOOST_SYMBOL_IMPORT T
             #endif
         #endif
         #if !defined(BOOST_WARCHIVE_SOURCE) && !defined(BOOST_ARCHIVE_SOURCE)
             #if defined(__BORLANDC__)
             #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __import
             #else
-            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllimport) T
+            #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) BOOST_SYMBOL_IMPORT T
             #endif
         #endif
     #endif
-#endif // BOOST_HAS_DECLSPEC
+#endif // BOOST_SYMBOL_EXPORT
 
 #if ! defined(BOOST_ARCHIVE_DECL)
     #define BOOST_ARCHIVE_DECL(T) T
Index: /home/hunold/src/devel/boost/boost/archive/detail/interface_iarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/interface_iarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/interface_iarchive.hpp	(working copy)
@@ -27,7 +27,7 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer;
+class basic_pointer_iserializer;
 
 template<class Archive>
 class interface_iarchive 
Index: /home/hunold/src/devel/boost/boost/archive/detail/interface_oarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/detail/interface_oarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/detail/interface_oarchive.hpp	(working copy)
@@ -29,7 +29,7 @@
 namespace archive {
 namespace detail {
 
-class BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer;
+class basic_pointer_oserializer;
 
 template<class Archive>
 class interface_oarchive 
Index: /home/hunold/src/devel/boost/boost/archive/polymorphic_iarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/polymorphic_iarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/polymorphic_iarchive.hpp	(working copy)
@@ -46,8 +46,8 @@
 } // namespace serialization
 namespace archive {
 namespace detail {
-    class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive;
-    class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive;
+    class basic_iarchive;
+    class basic_iarchive;
 }
 
 class polymorphic_iarchive;
Index: /home/hunold/src/devel/boost/boost/archive/polymorphic_oarchive.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/archive/polymorphic_oarchive.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/archive/polymorphic_oarchive.hpp	(working copy)
@@ -45,8 +45,8 @@
 } // namespace serialization
 namespace archive {
 namespace detail {
-    class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive;
-    class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer;
+    class basic_oarchive;
+    class basic_oserializer;
 }
 
 class polymorphic_oarchive;
Index: /home/hunold/src/devel/boost/boost/config/compiler/gcc.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/config/compiler/gcc.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/config/compiler/gcc.hpp	(working copy)
@@ -116,6 +116,16 @@
 #  endif
 #endif
 
+//
+// Symbol visibility support for gcc-4.x
+// MinGW/Cygwin is handled via platform/win32.hpp
+//
+#if __GNUC__ >= 4 && !defined(__MINGW32__) && !defined(__CYGWIN__)
+#  define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
+#  define BOOST_SYMBOL_IMPORT BOOST_SYMBOL_EXPORT
+#endif
+
+//
 // C++0x features not implemented in any GCC version
 //
 #define BOOST_NO_CONSTEXPR
Index: /home/hunold/src/devel/boost/boost/config/platform/win32.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/config/platform/win32.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/config/platform/win32.hpp	(working copy)
@@ -25,6 +25,12 @@
 #  define BOOST_HAS_DECLSPEC
 #endif
 
+//
+// all compilers support dllexport/-import
+//
+#define BOOST_SYMBOL_EXPORT __declspec(dllexport)
+#define BOOST_SYMBOL_IMPORT __declspec(dllimport)
+
 #if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
 #  define BOOST_HAS_STDINT_H
 #  define __STDC_LIMIT_MACROS
Index: /home/hunold/src/devel/boost/boost/date_time/compiler_config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/date_time/compiler_config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/date_time/compiler_config.hpp	(working copy)
@@ -118,7 +118,7 @@
  * 
  */
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
    // we need to import/export our code only if the user has specifically
    // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
    // libraries to be dynamically linked, or BOOST_DATE_TIME_DYN_LINK
@@ -126,12 +126,12 @@
 #  if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK)
       // export if this is our own source, otherwise import:
 #     ifdef BOOST_DATE_TIME_SOURCE
-#       define BOOST_DATE_TIME_DECL __declspec(dllexport)
+#       define BOOST_DATE_TIME_DECL BOOST_SYMBOL_EXPORT
 #     else
-#       define BOOST_DATE_TIME_DECL __declspec(dllimport)
+#       define BOOST_DATE_TIME_DECL BOOST_SYMBOL_IMPORT
 #     endif  // BOOST_DATE_TIME_SOURCE
 #  endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 //
 // if BOOST_WHATEVER_DECL isn't defined yet define it now:
 #ifndef BOOST_DATE_TIME_DECL
Index: /home/hunold/src/devel/boost/boost/filesystem/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/filesystem/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/filesystem/config.hpp	(working copy)
@@ -70,7 +70,7 @@
 #    error Dynamic linking Boost.Filesystem does not work for Borland; use static linking instead
 #  endif
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
 // we need to import/export our code only if the user has specifically
 // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 // libraries to be dynamically linked, or BOOST_FILESYSTEM_DYN_LINK
@@ -78,12 +78,12 @@
 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
 // export if this is our own source, otherwise import:
 #ifdef BOOST_FILESYSTEM_SOURCE
-# define BOOST_FILESYSTEM_DECL __declspec(dllexport)
+# define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_EXPORT
 #else
-# define BOOST_FILESYSTEM_DECL __declspec(dllimport)
+# define BOOST_FILESYSTEM_DECL BOOST_SYMBOL_IMPORT
 #endif  // BOOST_FILESYSTEM_SOURCE
 #endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 //
 // if BOOST_FILESYSTEM_DECL isn't defined yet define it now:
 #ifndef BOOST_FILESYSTEM_DECL
Index: /home/hunold/src/devel/boost/boost/graph/dll_import_export.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/graph/dll_import_export.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/graph/dll_import_export.hpp	(working copy)
@@ -13,15 +13,15 @@
 
 #include <boost/config.hpp>
 
-#ifdef BOOST_HAS_DECLSPEC
+#ifdef BOOST_SYMBOL_EXPORT
 #  if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_GRAPH_DYN_LINK)
 #    ifdef BOOST_GRAPH_SOURCE
-#      define BOOST_GRAPH_DECL __declspec(dllexport)
+#      define BOOST_GRAPH_DECL BOOST_SYMBOL_EXPORT
 #    else
-#      define BOOST_GRAPH_DECL __declspec(dllimport)
+#      define BOOST_GRAPH_DECL BOOST_SYMBOL_IMPORT
 #    endif  // BOOST_GRAPH_SOURCE
 #  endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 
 #ifndef BOOST_GRAPH_DECL
 #  define BOOST_GRAPH_DECL
Index: /home/hunold/src/devel/boost/boost/iostreams/detail/config/dyn_link.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/iostreams/detail/config/dyn_link.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/iostreams/detail/config/dyn_link.hpp	(working copy)
@@ -20,12 +20,12 @@
 
 //------------------Enable dynamic linking on windows-------------------------// 
 
-#ifdef BOOST_HAS_DECLSPEC 
+#ifdef BOOST_SYMBOL_EXPORT 
 # if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_IOSTREAMS_DYN_LINK)
 #  ifdef BOOST_IOSTREAMS_SOURCE
-#   define BOOST_IOSTREAMS_DECL __declspec(dllexport)
+#   define BOOST_IOSTREAMS_DECL BOOST_SYMBOL_EXPORT
 #  else
-#   define BOOST_IOSTREAMS_DECL __declspec(dllimport)
+#   define BOOST_IOSTREAMS_DECL BOOST_SYMBOL_IMPORT
 #  endif  
 # endif  
 #endif 
Index: /home/hunold/src/devel/boost/boost/math/tr1.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/math/tr1.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/math/tr1.hpp	(working copy)
@@ -22,7 +22,7 @@
 
 #endif // __cplusplus
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
 // we need to import/export our code only if the user has specifically
 // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 // libraries to be dynamically linked, or BOOST_MATH_TR1_DYN_LINK
@@ -30,12 +30,12 @@
 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_MATH_TR1_DYN_LINK)
 // export if this is our own source, otherwise import:
 #ifdef BOOST_MATH_TR1_SOURCE
-# define BOOST_MATH_TR1_DECL __declspec(dllexport)
+# define BOOST_MATH_TR1_DECL BOOST_SYMBOL_EXPORT
 #else
-# define BOOST_MATH_TR1_DECL __declspec(dllimport)
+# define BOOST_MATH_TR1_DECL BOOST_SYMBOL_IMPORT
 #endif  // BOOST_MATH_TR1_SOURCE
 #endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 //
 // if BOOST_MATH_TR1_DECL isn't defined yet define it now:
 #ifndef BOOST_MATH_TR1_DECL
Index: /home/hunold/src/devel/boost/boost/mpi/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/mpi/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/mpi/config.hpp	(working copy)
@@ -80,12 +80,12 @@
  *                                                                           *
  *****************************************************************************/
 
-#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_MPI_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_MPI_STATIC_LINK)
+#if defined(BOOST_SYMPOL_EXPORT) && (defined(BOOST_MPI_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_MPI_STATIC_LINK)
 #  if defined(BOOST_MPI_SOURCE)
-#     define BOOST_MPI_DECL __declspec(dllexport)
+#     define BOOST_MPI_DECL BOOST_SYMBOL_EXPORT
 #     define BOOST_MPI_BUILD_DLL
 #  else
-#     define BOOST_MPI_DECL __declspec(dllimport)
+#     define BOOST_MPI_DECL BOOST_SYMBOL_IMPORT
 #  endif
 #endif
 
Index: /home/hunold/src/devel/boost/boost/mpi/python/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/mpi/python/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/mpi/python/config.hpp	(working copy)
@@ -20,12 +20,12 @@
  *                                                                           *
  *****************************************************************************/
 
-#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_MPI_PYTHON_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_MPI_PYTHON_STATIC_LINK)
+#if defined(BOOST_SYMBOL_EXPORT) && (defined(BOOST_MPI_PYTHON_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_MPI_PYTHON_STATIC_LINK)
 #  if defined(BOOST_MPI_PYTHON_SOURCE)
-#     define BOOST_MPI_PYTHON_DECL __declspec(dllexport)
+#     define BOOST_MPI_PYTHON_DECL BOOST_SYMBOL_EXPORT
 #     define BOOST_MPI_PYTHON_BUILD_DLL
 #  else
-#     define BOOST_MPI_PYTHON_DECL __declspec(dllimport)
+#     define BOOST_MPI_PYTHON_DECL BOOST_SYMBOL_IMPORT
 #  endif
 #endif
 
Index: /home/hunold/src/devel/boost/boost/program_options/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/program_options/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/program_options/config.hpp	(working copy)
@@ -35,16 +35,16 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // Windows DLL suport
-#ifdef BOOST_HAS_DECLSPEC
+#ifdef BOOST_SYMBOL_EXPORT
 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_PROGRAM_OPTIONS_DYN_LINK)
 // export if this is our own source, otherwise import:
 #ifdef BOOST_PROGRAM_OPTIONS_SOURCE
-# define BOOST_PROGRAM_OPTIONS_DECL __declspec(dllexport)
+# define BOOST_PROGRAM_OPTIONS_DECL BOOST_SYMBOL_EXPORT
 #else
-# define BOOST_PROGRAM_OPTIONS_DECL __declspec(dllimport)
+# define BOOST_PROGRAM_OPTIONS_DECL BOOST_SYMBOL_IMPORT
 #endif  // BOOST_PROGRAM_OPTIONS_SOURCE
 #endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 
 #ifndef BOOST_PROGRAM_OPTIONS_DECL
 #define BOOST_PROGRAM_OPTIONS_DECL
Index: /home/hunold/src/devel/boost/boost/python/detail/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/python/detail/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/python/detail/config.hpp	(working copy)
@@ -68,28 +68,13 @@
 
 #if defined(BOOST_PYTHON_DYNAMIC_LIB)
 
-#  if !defined(_WIN32) && !defined(__CYGWIN__)                                  \
-    && !defined(BOOST_PYTHON_USE_GCC_SYMBOL_VISIBILITY)                         \
-    && BOOST_WORKAROUND(__GNUC__, >= 3) && (__GNUC_MINOR__ >=5 || __GNUC__ > 3)
-#    define BOOST_PYTHON_USE_GCC_SYMBOL_VISIBILITY 1
-#  endif 
-
-#  if BOOST_PYTHON_USE_GCC_SYMBOL_VISIBILITY
+#  if defined(BOOST_SYMBOL_EXPORT)
 #     if defined(BOOST_PYTHON_SOURCE)
-#        define BOOST_PYTHON_DECL __attribute__ ((visibility("default")))
+#        define BOOST_PYTHON_DECL BOOST_SYMBOL_EXPORT
 #        define BOOST_PYTHON_BUILD_DLL
 #     else
-#        define BOOST_PYTHON_DECL
+#        define BOOST_PYTHON_DECL BOOST_SYMBOL_IMPORT
 #     endif
-#     define BOOST_PYTHON_DECL_FORWARD
-#     define BOOST_PYTHON_DECL_EXCEPTION __attribute__ ((visibility("default")))
-#  elif (defined(_WIN32) || defined(__CYGWIN__))
-#     if defined(BOOST_PYTHON_SOURCE)
-#        define BOOST_PYTHON_DECL __declspec(dllexport)
-#        define BOOST_PYTHON_BUILD_DLL
-#     else
-#        define BOOST_PYTHON_DECL __declspec(dllimport)
-#     endif
 #  endif
 
 #endif
@@ -98,14 +83,6 @@
 #  define BOOST_PYTHON_DECL
 #endif
 
-#ifndef BOOST_PYTHON_DECL_FORWARD
-#  define BOOST_PYTHON_DECL_FORWARD BOOST_PYTHON_DECL
-#endif
-
-#ifndef BOOST_PYTHON_DECL_EXCEPTION
-#  define BOOST_PYTHON_DECL_EXCEPTION BOOST_PYTHON_DECL
-#endif
-
 #if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
 // Replace broken Tru64/cxx offsetof macro
 # define BOOST_PYTHON_OFFSETOF(s_name, s_member) \
Index: /home/hunold/src/devel/boost/boost/python/detail/exception_handler.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/python/detail/exception_handler.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/python/detail/exception_handler.hpp	(working copy)
@@ -11,7 +11,7 @@
 
 namespace boost { namespace python { namespace detail {
 
-struct BOOST_PYTHON_DECL_FORWARD exception_handler;
+struct exception_handler;
 
 typedef function2<bool, exception_handler const&, function0<void> const&> handler_function;
 
Index: /home/hunold/src/devel/boost/boost/python/detail/wrapper_base.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/python/detail/wrapper_base.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/python/detail/wrapper_base.hpp	(working copy)
@@ -14,7 +14,7 @@
 
 namespace detail
 {
-  class BOOST_PYTHON_DECL_FORWARD wrapper_base;
+  class wrapper_base;
   
   namespace wrapper_base_ // ADL disabler
   {
Index: /home/hunold/src/devel/boost/boost/python/errors.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/python/errors.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/python/errors.hpp	(working copy)
@@ -14,7 +14,7 @@
 
 namespace boost { namespace python {
 
-struct BOOST_PYTHON_DECL_EXCEPTION error_already_set
+struct BOOST_PYTHON_DECL error_already_set
 {
   virtual ~error_already_set();
 };
Index: /home/hunold/src/devel/boost/boost/python/object/instance.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/python/object/instance.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/python/object/instance.hpp	(working copy)
@@ -11,7 +11,7 @@
 
 namespace boost { namespace python
 {
-  struct BOOST_PYTHON_DECL_FORWARD instance_holder;
+  struct instance_holder;
 }} // namespace boost::python
 
 namespace boost { namespace python { namespace objects { 
Index: /home/hunold/src/devel/boost/boost/regex/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/regex/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/regex/config.hpp	(working copy)
@@ -186,12 +186,12 @@
  *
  ****************************************************************************/
 
-#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
+#if defined(BOOST_SYMBOL_EXPORT) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
 #  if defined(BOOST_REGEX_SOURCE)
-#     define BOOST_REGEX_DECL __declspec(dllexport)
+#     define BOOST_REGEX_DECL BOOST_SYMBOL_EXPORT
 #     define BOOST_REGEX_BUILD_DLL
 #  else
-#     define BOOST_REGEX_DECL __declspec(dllimport)
+#     define BOOST_REGEX_DECL BOOST_SYMBOL_IMPORT
 #  endif
 #endif
 
Index: /home/hunold/src/devel/boost/boost/serialization/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/serialization/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/serialization/config.hpp	(working copy)
@@ -27,7 +27,7 @@
     #undef BOOST_SERIALIZATION_DECL
 #endif
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
 // we need to import/export our code only if the user has specifically
 // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 // libraries to be dynamically linked, or BOOST_SERIALIZATION_DYN_LINK
@@ -41,17 +41,17 @@
         #if defined(__BORLANDC__)
             #define BOOST_SERIALIZATION_DECL(T) T __export
         #else
-            #define BOOST_SERIALIZATION_DECL(T) __declspec(dllexport) T
+            #define BOOST_SERIALIZATION_DECL(T) BOOST_SYMBOL_EXPORT T
         #endif
     #else
         #if defined(__BORLANDC__)
             #define BOOST_SERIALIZATION_DECL(T) T __import
         #else
-            #define BOOST_SERIALIZATION_DECL(T) __declspec(dllimport) T
+            #define BOOST_SERIALIZATION_DECL(T) BOOST_SYMBOL_IMPORT T
         #endif
     #endif // defined(BOOST_SERIALIZATION_SOURCE)
 #endif // defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SERIALIZATION_DYN_LINK)
-#endif // BOOST_HAS_DECLSPEC
+#endif // BOOST_SYMBOL_EXPORT
 
 // if BOOST_SERIALIZATION_DECL isn't defined yet define it now:
 #ifndef BOOST_SERIALIZATION_DECL
Index: /home/hunold/src/devel/boost/boost/signals/detail/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/signals/detail/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/signals/detail/config.hpp	(working copy)
@@ -17,15 +17,15 @@
 
 #include <boost/config.hpp>
 
-#ifdef BOOST_HAS_DECLSPEC
+#ifdef BOOST_SYMBOL_EXPORT
 #  if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SIGNALS_DYN_LINK)
 #    ifdef BOOST_SIGNALS_SOURCE
-#      define BOOST_SIGNALS_DECL __declspec(dllexport)
+#      define BOOST_SIGNALS_DECL BOOST_SYMBOL_EXPORT
 #    else
-#      define BOOST_SIGNALS_DECL __declspec(dllimport)
+#      define BOOST_SIGNALS_DECL BOOST_SYMBOL_IMPORT
 #    endif  // BOOST_SIGNALS_SOURCE
 #  endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 
 #ifndef BOOST_SIGNALS_DECL
 #  define BOOST_SIGNALS_DECL
Index: /home/hunold/src/devel/boost/boost/system/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/system/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/system/config.hpp	(working copy)
@@ -31,7 +31,7 @@
 //#    error Dynamic linking Boost.System does not work for Borland; use static linking instead
 //#  endif
 
-#ifdef BOOST_HAS_DECLSPEC // defined in config system
+#ifdef BOOST_SYMBOL_EXPORT // defined in config system
 // we need to import/export our code only if the user has specifically
 // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 // libraries to be dynamically linked, or BOOST_SYSTEM_DYN_LINK
@@ -39,12 +39,12 @@
 #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)
 // export if this is our own source, otherwise import:
 #ifdef BOOST_SYSTEM_SOURCE
-# define BOOST_SYSTEM_DECL __declspec(dllexport)
+# define BOOST_SYSTEM_DECL BOOST_SYMBOL_EXPORT
 #else
-# define BOOST_SYSTEM_DECL __declspec(dllimport)
+# define BOOST_SYSTEM_DECL BOOST_SYMBOL_IMPORT
 #endif  // BOOST_SYSTEM_SOURCE
 #endif  // DYN_LINK
-#endif  // BOOST_HAS_DECLSPEC
+#endif  // BOOST_SYMBOL_EXPORT
 //
 // if BOOST_SYSTEM_DECL isn't defined yet define it now:
 #ifndef BOOST_SYSTEM_DECL
Index: /home/hunold/src/devel/boost/boost/test/detail/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/test/detail/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/test/detail/config.hpp	(working copy)
@@ -84,13 +84,13 @@
 #if defined(BOOST_TEST_DYN_LINK)
 #  define BOOST_TEST_ALTERNATIVE_INIT_API
 
-#  if defined(BOOST_HAS_DECLSPEC) && defined(BOOST_TEST_DYN_LINK)
+#  if defined(BOOST_SYMBOL_EXPORT) && defined(BOOST_TEST_DYN_LINK)
 #    ifdef BOOST_TEST_SOURCE
-#      define BOOST_TEST_DECL __declspec(dllexport)
+#      define BOOST_TEST_DECL BOOST_SYMBOL_EXPORT
 #    else
-#      define BOOST_TEST_DECL __declspec(dllimport)
+#      define BOOST_TEST_DECL BOOST_SYMBOL_IMPORT
 #    endif  // BOOST_TEST_SOURCE
-#  endif  // BOOST_HAS_DECLSPEC
+#  endif  // BOOST_SYMBOL_EXPORT
 #endif  // BOOST_TEST_DYN_LINK
 
 
Index: /home/hunold/src/devel/boost/boost/thread/detail/config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/thread/detail/config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/thread/detail/config.hpp	(working copy)
@@ -45,17 +45,17 @@
 #   endif
 #endif
 
-#if defined(BOOST_HAS_DECLSPEC)
+#if defined(BOOST_SYMBOL_EXPORT)
 #   if defined(BOOST_THREAD_BUILD_DLL) //Build dll
-#       define BOOST_THREAD_DECL __declspec(dllexport)
+#       define BOOST_THREAD_DECL BOOST_SYMBOL_EXPORT
 #   elif defined(BOOST_THREAD_USE_DLL) //Use dll
-#       define BOOST_THREAD_DECL __declspec(dllimport)
+#       define BOOST_THREAD_DECL BOOST_SYMBOL_IMPORT
 #   else
 #       define BOOST_THREAD_DECL
 #   endif
 #else
 #   define BOOST_THREAD_DECL
-#endif // BOOST_HAS_DECLSPEC
+#endif // BOOST_SYMBOL_EXPORT
 
 //
 // Automatically link to the correct build variant where possible.
@@ -89,6 +89,6 @@
 
 // Change Log:
 //   22 Jan 05 Roland Schwarz (speedsnail)
-//      Usage of BOOST_HAS_DECLSPEC macro.
+//      Usage of BOOST_SYMBOL_EXPORT macro.
 //      Default again is static lib usage.
 //      BOOST_DYN_LINK only defined when autolink included.
Index: /home/hunold/src/devel/boost/boost/wave/wave_config.hpp
===================================================================
--- /home/hunold/src/devel/boost/boost/wave/wave_config.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/boost/wave/wave_config.hpp	(working copy)
@@ -403,15 +403,15 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //  Set up dll import/export options
-#if defined(BOOST_HAS_DECLSPEC) && \
+#if defined(BOOST_SYMBOL_EXPORT) && \
     (defined(BOOST_WAVE_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && \
     !defined(BOOST_WAVE_STATIC_LINK)
     
 #if defined(BOOST_WAVE_SOURCE)
-#define BOOST_WAVE_DECL __declspec(dllexport)
+#define BOOST_WAVE_DECL BOOST_SYMBOL_EXPORT
 #define BOOST_WAVE_BUILD_DLL
 #else
-#define BOOST_WAVE_DECL __declspec(dllimport)
+#define BOOST_WAVE_DECL BOOST_SYMBOL_IMPORT
 #endif
 
 #endif // building a shared library
Index: /home/hunold/src/devel/boost/libs/config/doc/macro_reference.qbk
===================================================================
--- /home/hunold/src/devel/boost/libs/config/doc/macro_reference.qbk	(revision 61822)
+++ /home/hunold/src/devel/boost/libs/config/doc/macro_reference.qbk	(working copy)
@@ -317,6 +317,62 @@
 
 [#config_features]
 
+[section Macros controlling symbol visibility]
+
+Some compilers and/or platforms have support for controlling which symbols 
+will be exported from shared libraries. The msvc compiler using 
+`__declspec(dllexport)` and `__declspec(dllimport)` is the classic case. 
+Modern gcc also supports some analogue using `__attribute__((visibility("default")))` 
+for all symbols which should be exported and hiding all other using the
+`-fvisibility-hidden` compiler switch.
+These macros are always defined on `Windows-Platform` 
+and defined for gcc greater 4 on all platforms.
+
+[table
+[[Macro       ][Description       ]]
+[[`BOOST_HAS_DECLSPEC`][
+The compiler uses `__declspec(dllexport)` and `__declspec(dllimport)` to
+export/import symbols from dll's.
+]]
+[[`BOOST_SYMBOL_EXPORT`][
+Export the following symbols.
+]]
+[[`BOOST_SYMBOL_IMPORT`][
+Import the following symbols.
+]]
+]
+
+[endsect]
+
+
+[section Macros controlling symbol visibility]
+
+Some compilers and/or platforms have support for controlling which symbols 
+will be exported from shared libraries. The msvc compiler using 
+`__declspec(dllexport)` and `__declspec(dllimport)` is the classic case. 
+Modern gcc also supports some analogue using `__attribute__((visibility("default")))` 
+for all symbols which should be exported and hiding all other using the
+`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switch.
+These macros are always defined on `Windows-Platform` 
+and defined for gcc greater 4 on all other platforms.
+
+[table
+[[Macro       ][Description       ]]
+[[`BOOST_HAS_DECLSPEC`][
+The compiler uses `__declspec(dllexport)` and `__declspec(dllimport)` to
+export/import symbols from dll's.
+]]
+[[`BOOST_SYMBOL_EXPORT`][
+Export the following symbol from a shared library.
+]]
+[[`BOOST_SYMBOL_IMPORT`][
+Import the following symbol from a shared library.
+]]
+]
+
+[endsect]
+
+
 [section Macros that describe optional features]
 
 The following macros describe features that are not required by the C++
@@ -332,10 +388,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>`.
 ]]
Index: /home/hunold/src/devel/boost/libs/config/test/link/link_test.hpp
===================================================================
--- /home/hunold/src/devel/boost/libs/config/test/link/link_test.hpp	(revision 61822)
+++ /home/hunold/src/devel/boost/libs/config/test/link/link_test.hpp	(working copy)
@@ -44,11 +44,11 @@
 //
 // set up import and export options:
 //
-#if defined(BOOST_HAS_DECLSPEC) && defined(BOOST_DYN_LINK)
+#if defined(BOOST_SYMBOL_EXPORT) && 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
Index: /home/hunold/src/devel/boost/libs/serialization/src/basic_serializer_map.cpp
===================================================================
--- /home/hunold/src/devel/boost/libs/serialization/src/basic_serializer_map.cpp	(revision 61822)
+++ /home/hunold/src/devel/boost/libs/serialization/src/basic_serializer_map.cpp	(working copy)
@@ -16,6 +16,7 @@
 #include <utility>
 
 #define BOOST_ARCHIVE_SOURCE
+#define BOOST_SERIALIZATION_SOURCE
 #include <boost/archive/archive_exception.hpp>
 #include <boost/serialization/throw_exception.hpp>
 
Index: /home/hunold/src/devel/boost/libs/serialization/src/shared_ptr_helper.cpp
===================================================================
--- /home/hunold/src/devel/boost/libs/serialization/src/shared_ptr_helper.cpp	(revision 61822)
+++ /home/hunold/src/devel/boost/libs/serialization/src/shared_ptr_helper.cpp	(working copy)
@@ -19,6 +19,7 @@
 #include <cstddef> // NULL
 
 #define BOOST_ARCHIVE_SOURCE
+#define BOOST_SERIALIZATION_SOURCE
 
 #include <boost/serialization/throw_exception.hpp>
 #include <boost/serialization/void_cast.hpp>

