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 | |