1 #ifndef BENCHMARK_INTERNAL_MACROS_H_ 2 #define BENCHMARK_INTERNAL_MACROS_H_ 3 4 #include "benchmark/macros.h" 5 6 #ifndef __has_feature 7 #define __has_feature(x) 0 8 #endif 9 10 #if defined(__clang__) 11 #define COMPILER_CLANG 12 #elif defined(_MSC_VER) 13 #define COMPILER_MSVC 14 #elif defined(__GNUC__) 15 #define COMPILER_GCC 16 #endif 17 18 #if __has_feature(cxx_attributes) 19 #define BENCHMARK_NORETURN [[noreturn]] 20 #elif defined(__GNUC__) 21 #define BENCHMARK_NORETURN __attribute__((noreturn)) 22 #elif defined(COMPILER_MSVC) 23 #define BENCHMARK_NORETURN __declspec(noreturn) 24 #else 25 #define BENCHMARK_NORETURN 26 #endif 27 28 #if defined(__CYGWIN__) 29 #define BENCHMARK_OS_CYGWIN 1 30 #elif defined(_WIN32) 31 #define BENCHMARK_OS_WINDOWS 1 32 #elif defined(__APPLE__) 33 // TODO(ericwf) This doesn't actually check that it is a Mac OSX system. Just 34 // that it is an apple system. 35 #define BENCHMARK_OS_MACOSX 1 36 #elif defined(__FreeBSD__) 37 #define BENCHMARK_OS_FREEBSD 1 38 #elif defined(__linux__) 39 #define BENCHMARK_OS_LINUX 1 40 #endif 41 42 #endif // BENCHMARK_INTERNAL_MACROS_H_ 43