Merge pull request #167 from boostorg/2017_07_21

Cherry pick patches from develop.
This commit is contained in:
jzmaddock
2017-07-23 17:08:03 +01:00
committed by GitHub
5 changed files with 38 additions and 31 deletions

View File

@ -310,6 +310,11 @@
#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable(); #define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
#endif #endif
#if (__clang_major__ == 3) && (__clang_minor__ == 0)
// Apparently a clang bug:
# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
#endif
// Clang has supported the 'unused' attribute since the first release. // Clang has supported the 'unused' attribute since the first release.
#define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__)) #define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))

View File

@ -303,6 +303,13 @@
# define BOOST_FALLTHROUGH __attribute__((fallthrough)) # define BOOST_FALLTHROUGH __attribute__((fallthrough))
#endif #endif
#ifdef __MINGW32__
// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see
// https://sourceforge.net/p/mingw-w64/bugs/527/
// Not setting this causes program termination on thread exit.
#define BOOST_NO_CXX11_THREAD_LOCAL
#endif
// //
// Unused attribute: // Unused attribute:
#if __GNUC__ >= 4 #if __GNUC__ >= 4

View File

@ -30,3 +30,22 @@
#if defined(_MSC_VER) #if defined(_MSC_VER)
# define BOOST_NO_CXX11_CONSTEXPR # define BOOST_NO_CXX11_CONSTEXPR
#endif #endif
#ifdef __CUDACC__
//
// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc:
//
#if defined(_MSC_VER)
# define BOOST_NO_CXX14_DIGIT_SEPARATORS
# define BOOST_NO_CXX11_UNICODE_LITERALS
#endif
//
// And this one effects the NVCC front end,
// See https://svn.boost.org/trac/boost/ticket/13049
//
#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100)
# define BOOST_NO_CXX11_NOEXCEPT
#endif
#endif

View File

@ -24,8 +24,9 @@
#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))) #if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
// <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines // <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
// int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h> // int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
// only when using GCC. // only when using GCC. Update 2017: this appears not to be the case for
# if defined __GNUC__ // recent glibc releases, see bug report: https://svn.boost.org/trac/boost/ticket/13045
# if defined(__GNUC__) || ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 5)))
# define BOOST_HAS_STDINT_H # define BOOST_HAS_STDINT_H
# endif # endif
#endif #endif

View File

@ -344,6 +344,10 @@ void print_compiler_macros()
PRINT_MACRO(__CUDACC_VER_MINOR__); PRINT_MACRO(__CUDACC_VER_MINOR__);
PRINT_MACRO(__CUDACC_VER_BUILD__); PRINT_MACRO(__CUDACC_VER_BUILD__);
PRINT_MACRO(__CUDACC_VER__); PRINT_MACRO(__CUDACC_VER__);
// Android:
PRINT_MACRO(ANDROID);
PRINT_MACRO(__ANDROID__);
} }
void print_stdlib_macros() void print_stdlib_macros()
@ -1135,35 +1139,6 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_USING_TEMPLATE); PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
PRINT_MACRO(BOOST_NO_VOID_RETURNS); PRINT_MACRO(BOOST_NO_VOID_RETURNS);
// END GENERATED BLOCK // END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_INTEL);