fatal/portability.h (40 lines of code) (raw):
/*
* Copyright (c) 2016, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#ifndef FATAL_INCLUDE_fatal_portability_h
#define FATAL_INCLUDE_fatal_portability_h
///////////////////////
// FATAL_HAS_BUILTIN //
///////////////////////
/**
* TODO: DOCUMENT
*/
#if defined(__has_builtin)
# define FATAL_HAS_BUILTIN(...) __has_builtin(__VA_ARGS__)
#else
# define FATAL_HAS_BUILTIN(...) 0
#endif
// Generalize warning push/pop.
#if defined(__clang__) || defined(__GNUC__)
# define FATAL_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
# define FATAL_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
# define FATAL_GCC_DIAGNOSTIC_IGNORED_INTERNAL2(warningName) #warningName
# define FATAL_GCC_DIAGNOSTIC_IGNORED(warningName) \
_Pragma( \
FATAL_GCC_DIAGNOSTIC_IGNORED_INTERNAL2(GCC diagnostic ignored warningName))
#else
# define FATAL_DIAGNOSTIC_PUSH
# define FATAL_DIAGNOSTIC_POP
# define FATAL_GCC_DIAGNOSTIC_IGNORED(warningName)
#endif
#if __GNUC__ && __GNUC__ < 5
# define FATAL_GCC_DIAGNOSTIC_IGNORED_SHADOW_IF_BROKEN \
FATAL_GCC_DIAGNOSTIC_IGNORED("-Wshadow")
#else
# define FATAL_GCC_DIAGNOSTIC_IGNORED_SHADOW_IF_BROKEN
#endif
//////////////////////////////
// FATAL_ATTR_ALWAYS_INLINE //
//////////////////////////////
/**
* TODO: DOCUMENT
*/
#ifdef _MSC_VER
# define FATAL_ATTR_ALWAYS_INLINE __forceinline
#elif __clang__ || __GNUC__
# define FATAL_ATTR_ALWAYS_INLINE __attribute__((always_inline))
#else
# define FATAL_ATTR_ALWAYS_INLINE
#endif
//////////////////////////////////
// FATAL_ATTR_VISIBILITY_HIDDEN //
//////////////////////////////////
/**
* TODO: DOCUMENT
*/
#ifdef _MSC_VER
# define FATAL_ATTR_VISIBILITY_HIDDEN
#elif __clang__ || __GNUC__
# define FATAL_ATTR_VISIBILITY_HIDDEN __attribute__((visibility("hidden")))
#else
# define FATAL_ATTR_VISIBILITY_HIDDEN
#endif
#endif