• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "TargetConditionals.h"
34   #if defined(TARGET_OS_MAC)
35     #define BENCHMARK_OS_MACOSX 1
36     #if defined(TARGET_OS_IPHONE)
37       #define BENCHMARK_OS_IOS 1
38     #endif
39   #endif
40 #elif defined(__FreeBSD__)
41 #define BENCHMARK_OS_FREEBSD 1
42 #elif defined(__linux__)
43 #define BENCHMARK_OS_LINUX 1
44 #elif defined(__native_client__)
45 #define BENCHMARK_OS_NACL 1
46 #elif defined(EMSCRIPTEN)
47 #define BENCHMARK_OS_EMSCRIPTEN 1
48 #endif
49 
50 #if !__has_feature(cxx_exceptions) && !defined(__cpp_exceptions) \
51      && !defined(__EXCEPTIONS)
52 #define BENCHMARK_HAS_NO_EXCEPTIONS
53 #endif
54 
55 #endif  // BENCHMARK_INTERNAL_MACROS_H_
56