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