#ifndef APPLICATION_UTILITIES_GLOBAL_H #define APPLICATION_UTILITIES_GLOBAL_H #if defined(_WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) #ifndef PLATFORM_WINDOWS /// \brief Defined when compiling for Windows. #define PLATFORM_WINDOWS #endif #endif #if defined(__CYGWIN__) #ifndef PLATFORM_CYGWIN /// \brief Defined when compiling for Cygwin. #define PLATFORM_CYGWIN #endif #endif #if defined(__MINGW32__) || defined(__MINGW64__) #ifndef PLATFORM_MINGW /// \brief Defined when compiling with mingw(-w64). #define PLATFORM_MINGW #endif #endif #if defined(__linux__) || defined(__linux) || defined(__gnu_linux__) #ifndef PLATFORM_LINUX /// \brief Defined when compiling for Linux. #define PLATFORM_LINUX #endif #if defined(__ANDROID__) || defined(ANDROID) #ifndef PLATFORM_ANDROID /// \brief Defined when compiling for Android. #define PLATFORM_ANDROID #endif #endif #endif #if defined(__APPLE__) #include #if defined(TARGET_OS_MAC) && TARGET_OS_MAC #ifndef PLATFORM_MAC /// \brief Defined when compiling for Mac/Darwin. #define PLATFORM_MAC #endif #ifndef PLATFORM_BSD4 /// \brief Defined when compiling for BSD 4. #define PLATFORM_BSD4 #endif #endif #endif #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__) #ifndef PLATFORM_FREE_BSD /// \brief Defined when compiling for FreeBSD #define PLATFORM_FREE_BSD #endif #endif #if defined(__unix__) || defined(PLATFORM_LINUX) || defined(PLATFORM_FREE_BSD) || defined(PLATFORM_MAC) #ifndef PLATFORM_UNIX /// \brief Defined when compiling for any UNIX (like) system. #define PLATFORM_UNIX #endif #endif /*! * \def LIB_EXPORT * \brief Marks a symbol for shared library export. */ /*! * \def LIB_IMPORT * \brief Declares a symbol to be an import from a shared library. */ /*! * \def LIB_HIDDEN * \brief Hidden visibility indicates that the symbol will not be placed into * the dynamic symbol table, so no other module (executable or shared library) * can reference it directly. */ #ifdef PLATFORM_WINDOWS #define LIB_EXPORT __declspec(dllexport) #define LIB_IMPORT __declspec(dllimport) #define LIB_HIDDEN #else #define LIB_EXPORT __attribute__((visibility("default"))) #define LIB_IMPORT __attribute__((visibility("default"))) #define LIB_HIDDEN __attribute__((visibility("hidden"))) #endif /*! * \def VAR_UNUSED * \brief Prevents warnings about unused variables. */ #define VAR_UNUSED(x) (void)x; /*! * \def IF_DEBUG_BUILD * \brief Wraps debug-only lines conveniently. */ #ifdef DEBUG_BUILD #define IF_DEBUG_BUILD(x) x #else #define IF_DEBUG_BUILD(x) #endif #endif // APPLICATION_UTILITIES_GLOBAL_H