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 __has_feature(cxx_attributes)
11 # define BENCHMARK_NORETURN [[noreturn]]
12 #elif defined(__GNUC__)
13 # define BENCHMARK_NORETURN __attribute__((noreturn))
14 #else
15 # define BENCHMARK_NORETURN
16 #endif
17 
18 #if defined(__CYGWIN__)
19 # define BENCHMARK_OS_CYGWIN 1
20 #elif defined(_WIN32)
21 # define BENCHMARK_OS_WINDOWS 1
22 #elif defined(__APPLE__)
23 // TODO(ericwf) This doesn't actually check that it is a Mac OSX system. Just
24 // that it is an apple system.
25 # define BENCHMARK_OS_MACOSX 1
26 #elif defined(__FreeBSD__)
27 # define BENCHMARK_OS_FREEBSD 1
28 #elif defined(__linux__)
29 # define BENCHMARK_OS_LINUX 1
30 #endif
31 
32 #if defined(__clang__)
33 # define COMPILER_CLANG
34 #elif defined(_MSC_VER)
35 # define COMPILER_MSVC
36 #elif defined(__GNUC__)
37 # define COMPILER_GCC
38 #endif
39 
40 #endif // BENCHMARK_INTERNAL_MACROS_H_
41