diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp index a0e8835a..14ec038e 100644 --- a/include/boost/config/compiler/comeau.hpp +++ b/include/boost/config/compiler/comeau.hpp @@ -25,26 +25,15 @@ # define BOOST_NO_VOID_RETURNS # endif - #endif // version 4245 // // enable __int64 support in VC emulation mode -// we should also set BOOST_HAS_LONG_LONG when that is -// supported, but there is no way we can detect it: // # if defined(_MSC_VER) && (_MSC_VER >= 1200) # define BOOST_HAS_MS_INT64 # endif -// -// disable win32 support unless we are in VC emulation mode, -// (what does this do to Como on top of Borland?): -// -#if defined(_WIN32) && (_MSC_VER+0 < 1000) -# define BOOST_DISABLE_WIN32 -#endif - #define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__) // diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index b54f6d8e..680f6e82 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -9,14 +9,19 @@ #include "boost/config/compiler/common_edg.hpp" -#ifdef __ICL -# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICL) +#if defined(__INTEL_COMPILER) +# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER +#elif defined(__ICL) # define BOOST_INTEL_CXX_VERSION __ICL -#else -# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICC) +#elif defined(__ICC) # define BOOST_INTEL_CXX_VERSION __ICC +#elif defined(__ECC) +# define BOOST_INTEL_CXX_VERSION __ECC #endif +#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) +#define BOOST_INTEL BOOST_INTEL_CXX_VERSION + #if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER) # define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS # define BOOST_NO_TEMPLATE_TEMPLATES @@ -26,18 +31,17 @@ # if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov) - // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup - // in the frontend even in "strict" mode, unless you use - // -Qoption,cpp,--arg_dep_lookup. (reported by Kirk Klobe & Thomas Witt) - // Similarly, -Qoption,cpp,--new_for_init enables new-style "for" loop - // variable scoping. (reported by Thomas Witt) - // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end - // changes at all. (reported by Kirk Klobe) - // That can't be right, since it supports template template - // arguments (reported by Dave Abrahams) -# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# endif +// Boost libraries assume strong standard conformance unless otherwise +// indicated by a config macro. As configured by Intel, the EDG front-end +// requires certain compiler options be set to achieve that strong conformance. +// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt) +// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for +// details as they apply to particular versions of the compiler. When the +// compiler does not predefine a macro indicating if an option has been set, +// this config file simply assumes the option has been set. +// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if +// the compiler option is not enabled. + # define BOOST_NO_SWPRINTF # endif @@ -50,10 +54,18 @@ #endif -#if _MSC_VER+0 >= 1000 -# ifndef _NATIVE_WCHAR_T_DEFINED -# define BOOST_NO_INTRINSIC_WCHAR_T +// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864 +#if BOOST_INTEL_CXX_VERSION < 700 +# define BOOST_NO_INTRINSIC_WCHAR_T +#else +// _WCHAR_T_DEFINED is the Win32 spelling +// _WCHAR_T is the Linux spelling +# if !defined(_WCHAR_T_DEFINED) && !defined(_WCHAR_T) +# define BOOST_NO_INTRINSIC_WCHAR_T # endif +#endif + +#if _MSC_VER+0 >= 1000 # if _MSC_VER >= 1200 # define BOOST_HAS_MS_INT64 # endif @@ -77,7 +89,7 @@ #endif // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 700) +#if (BOOST_INTEL_CXX_VERSION > 800) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index cab827f0..5398110a 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -12,16 +12,16 @@ # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS #endif -#if (__IBMCPP__ <= 502) -# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD -#endif - -#if (__IBMCPP__ <= 502) || !defined(BOOST_STRICT_CONFIG) +#if (__IBMCPP__ <= 502) // Actually the compiler supports inclass member initialization but it // requires a definition for the class member and it doesn't recognize // it as an integral constant expression when used as a template argument. # define BOOST_NO_INCLASS_MEMBER_INITIALIZATION # define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#endif + +#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG) #endif // @@ -40,8 +40,8 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 500: -#if (__IBMCPP__ > 502) +// last known and checked version is 600: +#if (__IBMCPP__ > 600) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # endif diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp index bd16015d..6b63d6db 100644 --- a/include/boost/config/platform/hpux.hpp +++ b/include/boost/config/platform/hpux.hpp @@ -18,17 +18,15 @@ #define BOOST_NO_SWPRINTF #define BOOST_NO_CWCTYPE +#ifdef __GNUC__ + // GNU C on HP-UX does not support threads (checked up to gcc 3.3) +# define BOOST_DISABLE_THREADS +#endif + // boilerplate code: #define BOOST_HAS_UNISTD_H #include -// HPUX has an incomplete pthreads implementation, so it doesn't -// define _POSIX_THREADS, but it might be enough to implement -// Boost.Threads. -#if !defined(BOOST_HAS_PTHREADS) && defined(_POSIX_THREAD_ATTR_STACKADDR) -# define BOOST_HAS_PTHREADS -#endif - // the following are always available: #ifndef BOOST_HAS_GETTIMEOFDAY # define BOOST_HAS_GETTIMEOFDAY diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp index d137ffc3..60059bd9 100644 --- a/include/boost/config/platform/irix.hpp +++ b/include/boost/config/platform/irix.hpp @@ -16,6 +16,10 @@ #define BOOST_HAS_GETTIMEOFDAY #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#ifdef __GNUC__ + // GNU C on IRIX does not support threads (checked up to gcc 3.3) +# define BOOST_DISABLE_THREADS +#endif // boilerplate code: #define BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 70b1129a..21e375ef 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -25,18 +25,20 @@ # endif #endif -// -// como on linux doesn't have std:: c functions: -// -#ifdef __COMO__ -# define BOOST_NO_STDC_NAMESPACE -#endif +#if defined(__LIBCOMO__) + // + // como on linux doesn't have std:: c functions: + // NOTE: versions of libcomo prior to beta28 have octal version numbering, + // e.g. version 25 is 21 (dec) + // +# if __LIBCOMO_VERSION__ <= 20 +# define BOOST_NO_STDC_NAMESPACE +# endif + +# if __LIBCOMO_VERSION__ <= 21 +# define BOOST_NO_SWPRINTF +# endif -// -// Intel on linux doesn't have swprintf in std:: -// -#ifdef __ICC -# define BOOST_NO_STDC_NAMESPACE #endif // diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp index fae4293d..3a21a5ea 100644 --- a/include/boost/config/platform/solaris.hpp +++ b/include/boost/config/platform/solaris.hpp @@ -7,7 +7,7 @@ // sun specific config options: -#define BOOST_PLATFORM "sun" +#define BOOST_PLATFORM "Sun Solaris" #define BOOST_HAS_GETTIMEOFDAY diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index d156b99b..89e36ba8 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -13,15 +13,20 @@ # define BOOST_NO_SWPRINTF #endif -#ifndef BOOST_DISABLE_WIN32 // // Win32 will normally be using native Win32 threads, -// but there is a pthread library avaliable as an option: +// but there is a pthread library avaliable as an option, +// we used to disable this when BOOST_DISABLE_WIN32 was +// defined but no longer - this should allow some +// files to be compiled in strict mode - while maintaining +// a consistent setting of BOOST_HAS_THREADS across +// all translation units (needed for shared_ptr etc). // #ifndef BOOST_HAS_PTHREADS # define BOOST_HAS_WINTHREADS #endif +#ifndef BOOST_DISABLE_WIN32 // WEK: Added #define BOOST_HAS_FTIME diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 14780ba6..8a16a48c 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -10,14 +10,18 @@ // locate which compiler we are using and define // BOOST_COMPILER_CONFIG as needed: -#if defined __GNUC__ -// GNU C++: -# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" - -# elif defined __COMO__ +# if defined __COMO__ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" +#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC) +// Intel +# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" + +# elif defined __GNUC__ +// GNU C++: +# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" + #elif defined __KCC // Kai C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp" @@ -38,10 +42,6 @@ // Borland # define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp" -#elif defined(__ICL) || defined(__ICC) -// Intel -# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp" - #elif defined __MWERKS__ // Metrowerks CodeWarrior # define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp" diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index ce8633bc..668b97c5 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -24,7 +24,7 @@ # define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp" #elif defined(__LIBCOMO__) -// Commeau STL: +// Comeau STL: #define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp" #elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index bf44f1ba..a90e8ca7 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -18,12 +18,13 @@ #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) // full dinkumware 3.06 and above // fully conforming provided the compiler supports it: -# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD) // can be defined in yvals.h +# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h # define BOOST_NO_STDC_NAMESPACE # endif # if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC) # define BOOST_NO_STD_ALLOCATOR # endif +# define BOOST_HAS_PARTIAL_STD_ALLOCATOR # if defined(_MSC_VER) && (_MSC_VER < 1300) // if this lib version is set up for vc6 then there is no std::use_facet: # define BOOST_NO_STD_USE_FACET @@ -56,6 +57,7 @@ # endif #endif + #if (defined(_MSC_VER) && (_MSC_VER <= 1300)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) // if we're using a dinkum lib that's // been configured for VC6/7 then there is diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index e60e0735..ad0d4f6f 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -5,7 +5,7 @@ // See http://www.boost.org for most recent version. -// Commeau STL: +// Comeau STL: #if !defined(__LIBCOMO__) # include @@ -15,8 +15,9 @@ #endif // -// std::streambuf is non-standard: -// +// std::streambuf is non-standard +// NOTE: versions of libcomo prior to beta28 have octal version numbering, +// e.g. version 25 is 21 (dec) #if __LIBCOMO_VERSION__ <= 22 # define BOOST_NO_STD_WSTREAMBUF #endif @@ -29,5 +30,5 @@ // #define BOOST_HAS_SGI_TYPE_TRAITS -#define BOOST_STDLIB "Commeau standard library" BOOST_STRINGIZE(__LIBCOMO_VERSION__) +#define BOOST_STDLIB "Comeau standard library " BOOST_STRINGIZE(__LIBCOMO_VERSION__) diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index b40b5b39..c221cbe8 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -49,11 +49,14 @@ // If the streams are not native, and we have a "using ::x" compiler bug // then the io stream facets are not available in namespace std:: // -#if !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) -# define BOOST_NO_STD_LOCALE -#endif -#if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) -# define BOOST_NO_STD_LOCALE +#ifdef _STLPORT_VERSION +# if !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) +# define BOOST_NO_STD_LOCALE +# endif +#else +# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__) +# define BOOST_NO_STD_LOCALE +# endif #endif //