diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 5287e835..1ae8f0f8 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -1695,6 +1695,26 @@ + +

+ BOOST_HAS_FENV_H +

+ + +

+ Platform, Standard library +

+ + +

+ The platform has a <fenv.h>. + <boost/detail/fenv.hpp> + should be included instead of <fenv.h> + for maximum portability. +

+ + +

BOOST_HAS_STDINT_H @@ -3200,6 +3220,77 @@

+ + +

+ BOOST_CONSTEXPR +

+ + +

+ Some compilers don't support the use of constexpr. + This macro expands to nothing on those compilers, and constexpr elsewhere. For example, + when defining a constexpr function or constructor replace: +

+
constexpr tuple();
+
+

+ with: +

+
BOOST_CONSTEXPR tuple();
+
+

+

+ + + + +

+ BOOST_CONSTEXPR_OR_CONST +

+ + +

+ Some compilers don't support the use of constexpr. + This macro expands to const + on those compilers, and constexpr + elsewhere. For example, when defining const expr variables replace: + +

+
static constexpr UIntType xor_mask = a;
+
+

+ with: +

+
static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
+
+

+

+ + + + +

+ BOOST_STATIC_CONSTEXPR +

+ + +

+ This is a shortcut for static + BOOST_CONSTEXPR_OR_CONSTFor + example, when defining const expr variables replace: +

+
static constexpr UIntType xor_mask = a;
+
+

+ with: +

+
BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
+
+

+

+ + @@ -3390,6 +3481,96 @@ + +

+ BOOST_LINUX +

+ + +

+ <boost/config.hpp> +

+ + +

+ Defined if the system kernel is Linux +

+ + + + +

+ BOOST_NIX +

+ + +

+ <boost/config.hpp> +

+ + +

+ Defined if the system is POSIX compliant +

+ + + + +

+ BOOST_GENETIC_NIX +

+ + +

+ <boost/config.hpp> +

+ + +

+ Defined if the system can trace its ancestry to the original AT&T + codebase or designs, but is not certified by the Open Group. This + is the case for modern open-source BSD systems. +

+ + + + +

+ BOOST_TRADEMARK_NIX +

+ + +

+ <boost/config.hpp> +

+ + +

+ Systems certified as POSIX compliant by the Open Group. These systems + can use the UNIX trademark. Most commercially developed *nix systems + fall into this category. +

+ + + + +

+ BOOST_FUNCTIONAL_NIX +

+ + +

+ <boost/config.hpp> +

+ + +

+ Systems which behave in a manner roughly consistent with POSIX + standards. Linux and Minix fall into this category. +

+ + +

BOOST_DINKUMWARE_STDLIB diff --git a/doc/html/index.html b/doc/html/index.html index 48677667..5c2f3211 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

-

+

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)

@@ -950,7 +950,7 @@
- +

Last revised: September 26, 2010 at 09:24:20 GMT

Last revised: November 25, 2010 at 10:30:55 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 1c7e8c46..eae6572f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -71,6 +71,11 @@ The Platform does not provide `` and ``. [[`BOOST_NO_CWCTYPE`][Platform][ The Platform does not provide `` and ``. ]] +[[`BOOST_NO_FENV_H`][Platform, Standard library][ +The C standard library doesn't provide ``. [@../../../../boost/detail/fenv.hpp +``] should be included instead of `` for maximum +portability on platforms which do provide ``. +]] [[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][ The compiler fails to compile a nested class that has a dependent base class: `` @@ -798,6 +803,38 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally used to create a mangled name in combination with a predefined macro such a \_\_LINE__. ]] +[[`BOOST_CONSTEXPR`][ +Some compilers don't support the use of `constexpr`. This macro expands to nothing on those compilers, and `constexpr` +elsewhere. For example, when defining a constexpr function or constructor replace: +`` + constexpr tuple(); +`` +with: +`` + BOOST_CONSTEXPR tuple(); +`` +]] +[[`BOOST_CONSTEXPR_OR_CONST`][ +Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr` +elsewhere. For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a; +`` +]] +[[`BOOST_STATIC_CONSTEXPR`][ +This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + BOOST_STATIC_CONSTEXPR UIntType xor_mask = a; +`` +]] ] [endsect] @@ -845,6 +882,26 @@ Defined to 1 if the compiler is the Clang compiler. [[`BOOST_WINDOWS`][``][ Defined if the Windows platfrom API is available. ]] +[[`BOOST_LINUX`][``][ +Defined if the system kernel is Linux +]] +[[`BOOST_NIX`][``][ +Defined if the system is POSIX compliant +]] +[[`BOOST_GENETIC_NIX`][``][ +Defined if the system can trace its ancestry to the original AT&T codebase or +designs, but is not certified by the Open Group. This is the case for modern +open-source BSD systems. +]] +[[`BOOST_TRADEMARK_NIX`][``][ +Systems certified as POSIX compliant by the Open Group. These systems can use +the UNIX trademark. Most commercially developed *nix systems fall into this +category. +]] +[[`BOOST_FUNCTIONAL_NIX`][``][ +Systems which behave in a manner roughly consistent with POSIX standards. Linux +and Minix fall into this category. +]] [[`BOOST_DINKUMWARE_STDLIB`][``][ Defined if the dinkumware standard library is in use, takes the same value as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1. diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index e562caff..f5a0a007 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -414,7 +414,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_DYN_LINK) # undef BOOST_DYN_LINK #endif -#if defined(BOOST_AUTO_LINK_NOMANGLE) -# undef BOOST_AUTO_LINK_NOMANGLE -#endif diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index a989fd63..2816ab88 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -12,6 +12,9 @@ // // versions check: // we don't support Borland prior to version 5.4: + +#define BOOST_BORLAND __BORLANDC__ + #if __BORLANDC__ < 0x540 # error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp index 278222dc..c2cedb17 100644 --- a/include/boost/config/compiler/comeau.hpp +++ b/include/boost/config/compiler/comeau.hpp @@ -14,6 +14,8 @@ #include "boost/config/compiler/common_edg.hpp" +#define BOOST_COMO __COMO_VERSION__ + #if (__COMO_VERSION__ <= 4245) # if defined(_MSC_VER) && _MSC_VER <= 1300 diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 682c73af..9042578b 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -62,10 +62,13 @@ #if (__EDG_VERSION__ < 310) # define BOOST_NO_EXTERN_TEMPLATE #endif -#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) +#if (__EDG_VERSION__ <= 310) // No support for initializer lists # define BOOST_NO_INITIALIZER_LISTS #endif +#if (__EDG_VERSION__ < 400) +# define BOOST_NO_VARIADIC_MACROS +#endif #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS @@ -88,7 +91,6 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index eeaf9982..7ce7fe6b 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -89,7 +89,6 @@ # define BOOST_NO_EXCEPTIONS #endif - // // Threading support: Turn this on unconditionally here (except for // those platforms where we can know for sure). It will get turned off again @@ -148,8 +147,6 @@ // C++0x features not implemented in any GCC version // -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_NULLPTR #define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later @@ -211,6 +208,13 @@ # define BOOST_NO_UNICODE_LITERALS #endif +// C++0x features in 4.5.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_NULLPTR +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ @@ -231,8 +235,8 @@ # error "Compiler not configured - please reconfigure" #endif // -// last known and checked version is 4.4 (Pre-release): -#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4)) +// last known and checked version is 4.6 (Pre-release): +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 21083b7a..81854a0f 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -12,6 +12,8 @@ // Metrowerks C++ compiler setup: +#define BOOST_MWERKS __MWERKS__ + // locale support is disabled when linking with the dynamic runtime # ifdef _MSL_NO_LOCALE # define BOOST_NO_STD_LOCALE diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 85fa4625..e718dbb6 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -11,6 +11,10 @@ // Sun C++ compiler setup: +// Macro identifying the Sun compiler + +#define BOOST_SUNCC __SUNPRO_CC + # if __SUNPRO_CC <= 0x500 # define BOOST_NO_MEMBER_TEMPLATES # define BOOST_NO_FUNCTION_TEMPLATE_ORDERING diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 6755287d..38789367 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -37,6 +37,9 @@ // #endif +/// Visual Studio has no fenv.h +#define BOOST_NO_FENV_H + #if (_MSC_VER <= 1300) // 1300 == VC++ 7.0 # if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za @@ -94,10 +97,6 @@ # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS #endif -#if _MSC_VER <= 1600 // 1600 == VC++ 10.0 -# define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#endif - #if _MSC_VER == 1500 // 1500 == VC++ 9.0 // A bug in VC9: # define BOOST_NO_ADL_BARRIER @@ -181,6 +180,7 @@ #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 + #if _MSC_VER >= 1600 #define BOOST_HAS_STDINT_H #endif @@ -198,10 +198,11 @@ #define BOOST_NO_INITIALIZER_LISTS #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 +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP // // prefix and suffix headers: // diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp index 894ef42c..ec22a42f 100644 --- a/include/boost/config/platform/aix.hpp +++ b/include/boost/config/platform/aix.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2001 - 2002. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -9,6 +10,13 @@ #define BOOST_PLATFORM "IBM Aix" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + +#define BOOST_AIX 1 + #define BOOST_HAS_UNISTD_H #define BOOST_HAS_NL_TYPES_H #define BOOST_HAS_NANOSLEEP diff --git a/include/boost/config/platform/amigaos.hpp b/include/boost/config/platform/amigaos.hpp index 34bcf412..a1f12f6d 100644 --- a/include/boost/config/platform/amigaos.hpp +++ b/include/boost/config/platform/amigaos.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2002. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -7,6 +8,8 @@ #define BOOST_PLATFORM "AmigaOS" +#define BOOST_AMIGA 1 + #define BOOST_DISABLE_THREADS #define BOOST_NO_CWCHAR #define BOOST_NO_STD_WSTRING diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp index 48c3d8dc..cda00164 100644 --- a/include/boost/config/platform/beos.hpp +++ b/include/boost/config/platform/beos.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -9,6 +10,13 @@ #define BOOST_PLATFORM "BeOS" +#define BOOST_BEOS 1 + +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_NO_CWCHAR #define BOOST_NO_CWCTYPE #define BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index a0142978..9720c777 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -1,6 +1,7 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001. // (C) Copyright Douglas Gregor 2002. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -9,18 +10,30 @@ // generic BSD config options: -#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) -#error "This platform is not BSD" +#if !defined(__FreeBSD__) && \ + !defined(__NetBSD__) && \ + !defined(__OpenBSD__) && \ + !defined(__DragonFly__) + #error "This platform is not BSD" #endif +#define BOOST_NIX 1 +#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #ifdef __FreeBSD__ -#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) + #define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) + #define BOOST_FREEBSD __FreeBSD__ #elif defined(__NetBSD__) -#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) + #define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) + #define BOOST_NETBSD __NetBSD__ #elif defined(__OpenBSD__) -#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) + #define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) + #define BOOST_OPENBSD __OpenBSD__ #elif defined(__DragonFly__) -#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) + #define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) + #define BOOST_DFBSD __DragonFly__ #endif // diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 8e1bcb01..aba37193 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -1,52 +1,56 @@ -// (C) Copyright John Maddock 2001 - 2003. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// (C) Copyright John Maddock 2001 - 2003 +// (C) Copyright Bryce Lelbach 2010 +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// See http://www.boost.org for most recent version. -// See http://www.boost.org for most recent version. +#define BOOST_PLATFORM "Cygwin" // Platform name. +#define BOOST_CYGWIN __CYGWIN__ // Boost platform ID macros. -// cygwin specific config options: - -#define BOOST_PLATFORM "Cygwin" #define BOOST_HAS_DIRENT_H #define BOOST_HAS_LOG1P #define BOOST_HAS_EXPM1 -// -// Threading API: -// See if we have POSIX threads, if we do use them, otherwise -// revert to native Win threads. +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + +// See if we have POSIX threads, otherwise revert to native Win threads. #define BOOST_HAS_UNISTD_H #include -#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_PTHREADS -# define BOOST_HAS_SCHED_YIELD -# define BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_SIGACTION + +#if defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) && \ + !defined(BOOST_HAS_WINTHREADS) + #define BOOST_HAS_PTHREADS + #define BOOST_HAS_SCHED_YIELD + #define BOOST_HAS_GETTIMEOFDAY + #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE + #define BOOST_HAS_SIGACTION #else -# if !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_WINTHREADS -# endif -# define BOOST_HAS_FTIME + #if !defined(BOOST_HAS_WINTHREADS) + #define BOOST_HAS_WINTHREADS + #endif + #define BOOST_HAS_FTIME #endif -// -// find out if we have a stdint.h, there should be a better way to do this: -// +// Find out if we have a stdint.h, there should be a better way to do this. #include + #ifdef _STDINT_H -#define BOOST_HAS_STDINT_H + #define BOOST_HAS_STDINT_H #endif -// boilerplate code: +/// Cygwin has no fenv.h +#define BOOST_NO_FENV_H + #include -// -// Cygwin lies about XSI conformance, there is no nl_types.h: -// +// Cygwin lies about XSI conformance, there is no nl_types.h. #ifdef BOOST_HAS_NL_TYPES_H -# undef BOOST_HAS_NL_TYPES_H + #undef BOOST_HAS_NL_TYPES_H #endif diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp index 19ce68e5..2aefb2d2 100644 --- a/include/boost/config/platform/hpux.hpp +++ b/include/boost/config/platform/hpux.hpp @@ -3,6 +3,7 @@ // (C) Copyright David Abrahams 2002. // (C) Copyright Toon Knapen 2003. // (C) Copyright Boris Gubenko 2006 - 2007. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -13,6 +14,13 @@ #define BOOST_PLATFORM "HP-UX" +#define BOOST_HPUX 1 // platform ID macro + +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // In principle, HP-UX has a nice under the name // However, it has the following problem: // Use of UINT32_C(0) results in "0u l" for the preprocessed source diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp index aeae49c8..4915d813 100644 --- a/include/boost/config/platform/irix.hpp +++ b/include/boost/config/platform/irix.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,6 +12,11 @@ #define BOOST_PLATFORM "SGI Irix" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_NO_SWPRINTF // // these are not auto detected by POSIX feature tests: diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 51ae1334..3e7f02c7 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -13,6 +14,13 @@ // make sure we have __GLIBC_PREREQ if available at all #include +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + +#define BOOST_LINUX 1 + // // added to glibc 2.1.1 // We can only test for 2.1 though: diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp index 2780ef99..d018703d 100644 --- a/include/boost/config/platform/macos.hpp +++ b/include/boost/config/platform/macos.hpp @@ -1,6 +1,7 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001 - 2002. // (C) Copyright Bill Kempf 2002. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -13,6 +14,11 @@ #if __MACH__ && !defined(_MSL_USING_MSL_C) +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // Using the Mac OS X system BSD-style C library. # ifndef BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp index b1377c8d..0c54373d 100644 --- a/include/boost/config/platform/qnxnto.hpp +++ b/include/boost/config/platform/qnxnto.hpp @@ -1,4 +1,5 @@ // (C) Copyright Jim Douglas 2005. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -7,8 +8,15 @@ // QNX specific config options: +#define BOOST_QNX 1 + #define BOOST_PLATFORM "QNX" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_HAS_UNISTD_H #include diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp index 9f925666..9a9e1f46 100644 --- a/include/boost/config/platform/solaris.hpp +++ b/include/boost/config/platform/solaris.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -10,6 +11,11 @@ #define BOOST_PLATFORM "Sun Solaris" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_HAS_GETTIMEOFDAY // boilerplate code: diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp index ad379431..798dfac4 100644 --- a/include/boost/config/platform/symbian.hpp +++ b/include/boost/config/platform/symbian.hpp @@ -1,6 +1,7 @@ // (C) Copyright Yuriy Krasnoschek 2009. // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -9,13 +10,16 @@ // symbian specific config options: - #define BOOST_PLATFORM "Symbian" #define BOOST_SYMBIAN 1 - #if defined(__S60_3X__) -// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL +// Open C / C++ plugin was introdused in this SDK, earlier versions don't have +// CRT / STL +# define BOOST_NIX 1 +//# define BOOST_GENETIC_NIX 1 +//# define BOOST_TRADEMARK_NIX 1 +# define BOOST_FUNCTIONAL_NIX 1 # define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK // make sure we have __GLIBC_PREREQ if available at all # include diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 6ec5171e..3b128bf4 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -1,4 +1,5 @@ // (C) Copyright Dustin Spicuzza 2009. +// (C) Copyright Bryce Lelbach 2010 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +24,11 @@ #define _POSIX_TIMERS 1 #define _POSIX_THREADS 1 +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // vxworks doesn't work with asio serial ports #define BOOST_ASIO_DISABLE_SERIAL_PORT diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index f59c4ea7..72c3dceb 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -31,7 +31,6 @@ # 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 @@ -39,6 +38,11 @@ # define BOOST_HAS_UNISTD_H #endif +#if defined(__MINGW32__) && (__GNUC__ >= 4) +# define BOOST_HAS_EXPM1 +# define BOOST_HAS_LOG1P +# define BOOST_HAS_GETTIMEOFDAY +#endif // // Win32 will normally be using native Win32 threads, // but there is a pthread library avaliable as an option, diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index e33fef12..a7579daa 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -107,6 +107,7 @@ # define BOOST_NO_0X_HDR_UNORDERED_SET # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPEINDEX +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #endif #if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) @@ -125,7 +126,6 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD -# define BOOST_NO_NUMERIC_LIMITS_LOWEST #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 01dd4907..75bfc4aa 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -54,7 +54,6 @@ # define BOOST_HAS_THREADS #endif - #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ && defined(BOOST_HAS_LONG_LONG) @@ -63,6 +62,16 @@ # undef BOOST_HAS_LONG_LONG #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include +#endif + #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 4d426473..5731fe5e 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,6 +40,17 @@ # define BOOST_NO_STRINGSTREAM #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include +#endif + + // // Assume no std::locale without own iostreams (this may be an // incorrect assumption in some cases): diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 0e1c9b2b..85176a4d 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,6 +16,16 @@ # endif #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include +#endif + // // __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS // for versions prior to 4.1(beta) diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 0fc092f0..3fcf6e05 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,6 +12,16 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include +#endif + // C++0x headers not yet implemented // # define BOOST_NO_0X_HDR_ARRAY diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 722758f9..4e608d24 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -349,6 +349,13 @@ #define BOOST_HAS_RVALUE_REFS #endif +// +// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_VARIADIC_TEMPLATES is not defined +// +#if !defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL) +#define BOOST_HAS_VARIADIC_TMPL +#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: @@ -632,6 +639,10 @@ namespace std{ using ::typeinfo; } # if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ || defined(_POSIX_SOURCE) # define BOOST_PLATFORM "Generic Unix" +# define BOOST_NIX 1 +//# define BOOST_GENETIC_NIX 1 +//# define BOOST_TRADEMARK_NIX 1 +# define BOOST_FUNCTIONAL_NIX 1 # else # define BOOST_PLATFORM "Unknown" # endif @@ -643,5 +654,19 @@ namespace std{ using ::typeinfo; } # ifndef BOOST_GPU_ENABLED # define BOOST_GPU_ENABLED # endif + +// +// constexpr workarounds +// +#if defined(BOOST_NO_CONSTEXPR) +#define BOOST_CONSTEXPR +#define BOOST_CONSTEXPR_OR_CONST const +#else +#define BOOST_CONSTEXPR constexpr +#define BOOST_CONSTEXPR_OR_CONST constexpr +#endif + +#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST + #endif diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp new file mode 100644 index 00000000..97ed5124 --- /dev/null +++ b/test/boost_no_fenv_h.ipp @@ -0,0 +1,78 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_FENV_H +// TITLE: fenv.h +// DESCRIPTION: There is no POSIX available. If is +// available, should be included +// instead of directly including . + +#include + +namespace boost_no_fenv_h { + +int test() +{ + /// POSIX required typedefs + typedef ::fenv_t has_fenv_t; + typedef ::fexcept_t has_fexcept_t; + + /// POSIX required macros + #if !defined(FE_DIVBYZERO) + #error platform does not define FE_DIVBYZERO + #endif + + #if !defined(FE_INEXACT) + #error platform does not define FE_INEXACT + #endif + + #if !defined(FE_INVALID) + #error platform does not define FE_INVALID + #endif + + #if !defined(FE_OVERFLOW) + #error platform does not define FE_OVERFLOW + #endif + + #if !defined(FE_UNDERFLOW) + #error platform does not define FE_UNDERFLOW + #endif + + #if !defined(FE_DOWNWARD) + #error platform does not define FE_DOWNWARD + #endif + + #if !defined(FE_TONEAREST) + #error platform does not define FE_TONEAREST + #endif + + #if !defined(FE_UPWARD) + #error platform does not define FE_UPWARD + #endif + + #if !defined(FE_DFL_ENV) + #error platform does not define FE_DFL_ENV + #endif + + int (*has_feclearexcept)(int) = ::feclearexcept; + int (*has_fegetenv)(fenv_t*) = ::fegetenv; + int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept; + int (*has_fegetround)(void) = ::fegetround; + int (*has_feholdexcept)(fenv_t*) = ::feholdexcept; + int (*has_feraiseexcept)(int) = ::feraiseexcept; + int (*has_fesetenv)(const fenv_t*) = ::fesetenv; + int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag; + int (*has_fesetround)(int) = ::fesetround; + int (*has_fetestexcept)(int) = ::fetestexcept; + int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv; + + return 0; +} + +} + diff --git a/test/config_info.cpp b/test/config_info.cpp index 1f6bb1da..762e6c56 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -27,6 +27,10 @@ #include #endif +#if defined(__MINGW32__) +# include <_mingw.h> +#endif + static unsigned int indent = 4; static unsigned int width = 40; @@ -794,6 +798,8 @@ void print_platform_macros() PRINT_MACRO(_THREAD_SAFE); PRINT_MACRO(_XOPEN_SOURCE_EXTENDED); PRINT_MACRO(XPG); + PRINT_MACRO(__MINGW32_MAJOR_VERSION); + PRINT_MACRO(__MINGW32_MINOR_VERSION); // POSIX: PRINT_MACRO(_POSIX_ADVISORY_INFO); PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO); @@ -900,6 +906,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_DISABLE_THREADS); PRINT_MACRO(BOOST_DISABLE_WIN32); PRINT_MACRO(BOOST_HAS_THREADS); + PRINT_MACRO(BOOST_WINDOWS); // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!! PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG); @@ -1071,30 +1078,15 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); PRINT_MACRO(BOOST_NO_VOID_RETURNS); - - - - - - - - - - - - - - - - - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_MSVC); PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0)); + PRINT_MACRO(BOOST_CONSTEXPR); + PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST); + PRINT_MACRO(BOOST_STATIC_CONSTEXPR); } void print_separator() diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp new file mode 100644 index 00000000..9b2f4103 --- /dev/null +++ b/test/no_fenv_h_fail.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FENV_H +// This file should not compile, if it does then +// BOOST_NO_FENV_H should not be defined. +// See file boost_no_fenv_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp new file mode 100644 index 00000000..573d6244 --- /dev/null +++ b/test/no_fenv_h_pass.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FENV_H +// This file should compile, if it does not then +// BOOST_NO_FENV_H should be defined. +// See file boost_no_fenv_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} +