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