1*58b9f456SAndroid Build Coastguard Worker #ifndef BENCHMARK_INTERNAL_MACROS_H_ 2*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_INTERNAL_MACROS_H_ 3*58b9f456SAndroid Build Coastguard Worker 4*58b9f456SAndroid Build Coastguard Worker #include "benchmark/benchmark.h" 5*58b9f456SAndroid Build Coastguard Worker 6*58b9f456SAndroid Build Coastguard Worker /* Needed to detect STL */ 7*58b9f456SAndroid Build Coastguard Worker #include <cstdlib> 8*58b9f456SAndroid Build Coastguard Worker 9*58b9f456SAndroid Build Coastguard Worker // clang-format off 10*58b9f456SAndroid Build Coastguard Worker 11*58b9f456SAndroid Build Coastguard Worker #ifndef __has_feature 12*58b9f456SAndroid Build Coastguard Worker #define __has_feature(x) 0 13*58b9f456SAndroid Build Coastguard Worker #endif 14*58b9f456SAndroid Build Coastguard Worker 15*58b9f456SAndroid Build Coastguard Worker #if defined(__clang__) 16*58b9f456SAndroid Build Coastguard Worker #if !defined(COMPILER_CLANG) 17*58b9f456SAndroid Build Coastguard Worker #define COMPILER_CLANG 18*58b9f456SAndroid Build Coastguard Worker #endif 19*58b9f456SAndroid Build Coastguard Worker #elif defined(_MSC_VER) 20*58b9f456SAndroid Build Coastguard Worker #if !defined(COMPILER_MSVC) 21*58b9f456SAndroid Build Coastguard Worker #define COMPILER_MSVC 22*58b9f456SAndroid Build Coastguard Worker #endif 23*58b9f456SAndroid Build Coastguard Worker #elif defined(__GNUC__) 24*58b9f456SAndroid Build Coastguard Worker #if !defined(COMPILER_GCC) 25*58b9f456SAndroid Build Coastguard Worker #define COMPILER_GCC 26*58b9f456SAndroid Build Coastguard Worker #endif 27*58b9f456SAndroid Build Coastguard Worker #endif 28*58b9f456SAndroid Build Coastguard Worker 29*58b9f456SAndroid Build Coastguard Worker #if __has_feature(cxx_attributes) 30*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_NORETURN [[noreturn]] 31*58b9f456SAndroid Build Coastguard Worker #elif defined(__GNUC__) 32*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_NORETURN __attribute__((noreturn)) 33*58b9f456SAndroid Build Coastguard Worker #elif defined(COMPILER_MSVC) 34*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_NORETURN __declspec(noreturn) 35*58b9f456SAndroid Build Coastguard Worker #else 36*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_NORETURN 37*58b9f456SAndroid Build Coastguard Worker #endif 38*58b9f456SAndroid Build Coastguard Worker 39*58b9f456SAndroid Build Coastguard Worker #if defined(__CYGWIN__) 40*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_CYGWIN 1 41*58b9f456SAndroid Build Coastguard Worker #elif defined(_WIN32) 42*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_WINDOWS 1 43*58b9f456SAndroid Build Coastguard Worker #if defined(__MINGW32__) 44*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_MINGW 1 45*58b9f456SAndroid Build Coastguard Worker #endif 46*58b9f456SAndroid Build Coastguard Worker #elif defined(__APPLE__) 47*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_APPLE 1 48*58b9f456SAndroid Build Coastguard Worker #include "TargetConditionals.h" 49*58b9f456SAndroid Build Coastguard Worker #if defined(TARGET_OS_MAC) 50*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_MACOSX 1 51*58b9f456SAndroid Build Coastguard Worker #if defined(TARGET_OS_IPHONE) 52*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_IOS 1 53*58b9f456SAndroid Build Coastguard Worker #endif 54*58b9f456SAndroid Build Coastguard Worker #endif 55*58b9f456SAndroid Build Coastguard Worker #elif defined(__FreeBSD__) 56*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_FREEBSD 1 57*58b9f456SAndroid Build Coastguard Worker #elif defined(__NetBSD__) 58*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_NETBSD 1 59*58b9f456SAndroid Build Coastguard Worker #elif defined(__OpenBSD__) 60*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_OPENBSD 1 61*58b9f456SAndroid Build Coastguard Worker #elif defined(__linux__) 62*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_LINUX 1 63*58b9f456SAndroid Build Coastguard Worker #elif defined(__native_client__) 64*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_NACL 1 65*58b9f456SAndroid Build Coastguard Worker #elif defined(__EMSCRIPTEN__) 66*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_EMSCRIPTEN 1 67*58b9f456SAndroid Build Coastguard Worker #elif defined(__rtems__) 68*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_RTEMS 1 69*58b9f456SAndroid Build Coastguard Worker #elif defined(__Fuchsia__) 70*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_FUCHSIA 1 71*58b9f456SAndroid Build Coastguard Worker #elif defined (__SVR4) && defined (__sun) 72*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_OS_SOLARIS 1 73*58b9f456SAndroid Build Coastguard Worker #endif 74*58b9f456SAndroid Build Coastguard Worker 75*58b9f456SAndroid Build Coastguard Worker #if defined(__ANDROID__) && defined(__GLIBCXX__) 76*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_STL_ANDROID_GNUSTL 1 77*58b9f456SAndroid Build Coastguard Worker #endif 78*58b9f456SAndroid Build Coastguard Worker 79*58b9f456SAndroid Build Coastguard Worker #if !__has_feature(cxx_exceptions) && !defined(__cpp_exceptions) \ 80*58b9f456SAndroid Build Coastguard Worker && !defined(__EXCEPTIONS) 81*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_HAS_NO_EXCEPTIONS 82*58b9f456SAndroid Build Coastguard Worker #endif 83*58b9f456SAndroid Build Coastguard Worker 84*58b9f456SAndroid Build Coastguard Worker #if defined(COMPILER_CLANG) || defined(COMPILER_GCC) 85*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_MAYBE_UNUSED __attribute__((unused)) 86*58b9f456SAndroid Build Coastguard Worker #else 87*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_MAYBE_UNUSED 88*58b9f456SAndroid Build Coastguard Worker #endif 89*58b9f456SAndroid Build Coastguard Worker 90*58b9f456SAndroid Build Coastguard Worker // clang-format on 91*58b9f456SAndroid Build Coastguard Worker 92*58b9f456SAndroid Build Coastguard Worker #endif // BENCHMARK_INTERNAL_MACROS_H_ 93