|
|
|
|
|
|
|
|
|
|
|
#define THRUST_CPP11_REQUIRED_NO_ERROR |
|
#define THRUST_CPP14_REQUIRED_NO_ERROR |
|
#define THRUST_MODERN_GCC_REQUIRED_NO_ERROR |
|
|
|
#ifndef THRUST_IGNORE_MACRO_CHECKS |
|
|
|
|
|
|
|
|
|
|
|
#define THRUST_MACRO_CHECK(MACRO, HEADER) \ |
|
THRUST_MACRO_CHECK_IMPL(Identifier MACRO should not be used from Thrust \ |
|
headers due to conflicts with HEADER macros.) |
|
|
|
|
|
|
|
|
|
|
|
#if defined(_MSC_VER) // MSVC |
|
|
|
|
|
#define THRUST_MACRO_CHECK_IMPL(msg) \ |
|
\ |
|
__pragma(message(__FILE__ ":" THRUST_MACRO_CHECK_IMPL0(__LINE__) \ |
|
": error: " #msg)) \ |
|
\ |
|
static_assert(false, #msg); |
|
#define THRUST_MACRO_CHECK_IMPL0(x) THRUST_MACRO_CHECK_IMPL1(x) |
|
#define THRUST_MACRO_CHECK_IMPL1(x) #x |
|
|
|
#elif defined(__clang__) || defined(__GNUC__) |
|
|
|
|
|
#define THRUST_MACRO_CHECK_IMPL(msg) THRUST_MACRO_CHECK_IMPL0(GCC error #msg) |
|
#define THRUST_MACRO_CHECK_IMPL0(expr) _Pragma(#expr) |
|
|
|
#endif |
|
|
|
|
|
#define I THRUST_MACRO_CHECK('I', complex.h) |
|
|
|
|
|
#define small THRUST_MACRO_CHECK('small', windows.h) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define B0 THRUST_MACRO_CHECK("B0", termios.h) |
|
|
|
#endif // THRUST_IGNORE_MACRO_CHECKS |
|
|
|
#include <thrust/${header}> |
|
|