brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · f4894ba Raw
112 lines · c
1#ifndef BENCHMARK_INTERNAL_MACROS_H_2#define BENCHMARK_INTERNAL_MACROS_H_3 4/* Needed to detect STL */5#include <cstdlib>6 7// clang-format off8 9#ifndef __has_feature10#define __has_feature(x) 011#endif12 13#if defined(__clang__)14  #if !defined(COMPILER_CLANG)15    #define COMPILER_CLANG16  #endif17#elif defined(_MSC_VER)18  #if !defined(COMPILER_MSVC)19    #define COMPILER_MSVC20  #endif21#elif defined(__GNUC__)22  #if !defined(COMPILER_GCC)23    #define COMPILER_GCC24  #endif25#endif26 27#if __has_feature(cxx_attributes)28  #define BENCHMARK_NORETURN [[noreturn]]29#elif defined(__GNUC__)30  #define BENCHMARK_NORETURN __attribute__((noreturn))31#elif defined(COMPILER_MSVC)32  #define BENCHMARK_NORETURN __declspec(noreturn)33#else34  #define BENCHMARK_NORETURN35#endif36 37#if defined(__CYGWIN__)38  #define BENCHMARK_OS_CYGWIN 139#elif defined(_WIN32)40  #define BENCHMARK_OS_WINDOWS 141  // WINAPI_FAMILY_PARTITION is defined in winapifamily.h.42  // We include windows.h which implicitly includes winapifamily.h for compatibility.43  #ifndef NOMINMAX44    #define NOMINMAX45  #endif46  #include <windows.h>47  #if defined(WINAPI_FAMILY_PARTITION)48    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)49      #define BENCHMARK_OS_WINDOWS_WIN32 150    #elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)51      #define BENCHMARK_OS_WINDOWS_RT 152    #endif53  #endif54  #if defined(__MINGW32__)55    #define BENCHMARK_OS_MINGW 156  #endif57#elif defined(__APPLE__)58  #define BENCHMARK_OS_APPLE 159  #include "TargetConditionals.h"60  #if defined(TARGET_OS_MAC)61    #define BENCHMARK_OS_MACOSX 162    #if defined(TARGET_OS_IPHONE)63      #define BENCHMARK_OS_IOS 164    #endif65  #endif66#elif defined(__FreeBSD__)67  #define BENCHMARK_OS_FREEBSD 168#elif defined(__NetBSD__)69  #define BENCHMARK_OS_NETBSD 170#elif defined(__OpenBSD__)71  #define BENCHMARK_OS_OPENBSD 172#elif defined(__DragonFly__)73  #define BENCHMARK_OS_DRAGONFLY 174#elif defined(__linux__)75  #define BENCHMARK_OS_LINUX 176#elif defined(__native_client__)77  #define BENCHMARK_OS_NACL 178#elif defined(__EMSCRIPTEN__)79  #define BENCHMARK_OS_EMSCRIPTEN 180#elif defined(__rtems__)81  #define BENCHMARK_OS_RTEMS 182#elif defined(__Fuchsia__)83#define BENCHMARK_OS_FUCHSIA 184#elif defined (__SVR4) && defined (__sun)85#define BENCHMARK_OS_SOLARIS 186#elif defined(__QNX__)87#define BENCHMARK_OS_QNX 188#elif defined(__MVS__)89#define BENCHMARK_OS_ZOS 190#elif defined(__hexagon__)91#define BENCHMARK_OS_QURT 192#endif93 94#if defined(__ANDROID__) && defined(__GLIBCXX__)95#define BENCHMARK_STL_ANDROID_GNUSTL 196#endif97 98#if !__has_feature(cxx_exceptions) && !defined(__cpp_exceptions) \99     && !defined(__EXCEPTIONS)100  #define BENCHMARK_HAS_NO_EXCEPTIONS101#endif102 103#if defined(COMPILER_CLANG) || defined(COMPILER_GCC)104  #define BENCHMARK_MAYBE_UNUSED __attribute__((unused))105#else106  #define BENCHMARK_MAYBE_UNUSED107#endif108 109// clang-format on110 111#endif  // BENCHMARK_INTERNAL_MACROS_H_112