|
- //-----------------------------------------------------------------------------
- // Project : SDK Core
- //
- // Category : SDK Core Interfaces
- // Filename : pluginterfaces/base/fplatform.h
- // Created by : Steinberg, 01/2004
- // Description : Detect platform and set define
- //
- //-----------------------------------------------------------------------------
- // This file is part of a Steinberg SDK. It is subject to the license terms
- // in the LICENSE file found in the top-level directory of this distribution
- // and at www.steinberg.net/sdklicenses.
- // No part of the SDK, including this file, may be copied, modified, propagated,
- // or distributed except according to the terms contained in the LICENSE file.
- //-----------------------------------------------------------------------------
-
- #pragma once
-
- #define kLittleEndian 0
- #define kBigEndian 1
-
- #undef PLUGIN_API
-
- #if !defined (__INTEL_CXX11_MODE__)
- #define SMTG_INTEL_CXX11_MODE 0
- #else
- #define SMTG_INTEL_CXX11_MODE __INTEL_CXX11_MODE__
- #endif
-
- #if !defined (__INTEL_COMPILER)
- #define SMTG_INTEL_COMPILER 0
- #else
- #define SMTG_INTEL_COMPILER __INTEL_COMPILER
- #endif
-
- //-----------------------------------------------------------------------------
- // WIN32 AND WIN64 (WINDOWS)
- //-----------------------------------------------------------------------------
- #if defined (_WIN32)
- //-----------------------------------------------------------------------------
- // ARM32 AND ARM64 (WINDOWS)
- #if (defined(_M_ARM64) || defined(_M_ARM))
- #define SMTG_OS_WINDOWS_ARM 1
- #endif
-
- #define SMTG_OS_LINUX 0
- #define SMTG_OS_MACOS 0
- #define SMTG_OS_WINDOWS 1
- #define SMTG_OS_IOS 0
- #define SMTG_OS_OSX 0
-
- #define BYTEORDER kLittleEndian
-
- #define COM_COMPATIBLE 1
- #define PLUGIN_API __stdcall
- #define SMTG_PTHREADS 0
-
- #ifndef _CRT_SECURE_NO_WARNINGS
- #define _CRT_SECURE_NO_WARNINGS
- #endif
-
- #pragma warning (disable : 4244) // Conversion from 'type1' to 'type2', possible loss of data.
- #pragma warning (disable : 4250) // Inheritance via dominance is allowed
- #pragma warning (disable : 4996) // deprecated functions
-
- #pragma warning (3 : 4189) // local variable is initialized but not referenced
- #pragma warning (3 : 4238) // nonstandard extension used : class rvalue used as lvalue
-
- #if defined (_WIN64) || defined (_M_ARM64)
- #define SMTG_PLATFORM_64 1
- #else
- #define SMTG_PLATFORM_64 0
- #endif
-
- #ifndef WIN32
- #define WIN32 1
- #endif
-
- #ifdef __cplusplus
- #define SMTG_CPP11 __cplusplus >= 201103L || _MSC_VER > 1600 || SMTG_INTEL_CXX11_MODE
- #define SMTG_CPP11_STDLIBSUPPORT SMTG_CPP11
- #define SMTG_HAS_NOEXCEPT _MSC_VER >= 1900 || (SMTG_INTEL_CXX11_MODE && SMTG_INTEL_COMPILER >= 1300)
- #endif
-
- #define SMTG_DEPRECATED_ATTRIBUTE(message) __declspec (deprecated ("Is Deprecated: " message))
- //-----------------------------------------------------------------------------
- // LINUX
- //-----------------------------------------------------------------------------
- #elif __gnu_linux__
- #define SMTG_OS_LINUX 1
- #define SMTG_OS_MACOS 0
- #define SMTG_OS_WINDOWS 0
- #define SMTG_OS_IOS 0
- #define SMTG_OS_OSX 0
-
- #include <endian.h>
- #if __BYTE_ORDER == __LITTLE_ENDIAN
- #define BYTEORDER kLittleEndian
- #else
- #define BYTEORDER kBigEndian
- #endif
-
- #define COM_COMPATIBLE 0
- #define PLUGIN_API
- #define SMTG_PTHREADS 1
-
- #if __LP64__
- #define SMTG_PLATFORM_64 1
- #else
- #define SMTG_PLATFORM_64 0
- #endif
- #ifdef __cplusplus
- #include <cstddef>
- #define SMTG_CPP11 (__cplusplus >= 201103L)
- #ifndef SMTG_CPP11
- #error unsupported compiler
- #endif
- #define SMTG_CPP11_STDLIBSUPPORT 1
- #define SMTG_HAS_NOEXCEPT 1
- #endif
- //-----------------------------------------------------------------------------
- // Mac and iOS
- //-----------------------------------------------------------------------------
- #elif __APPLE__
- #include <TargetConditionals.h>
- #define SMTG_OS_LINUX 0
- #define SMTG_OS_MACOS 1
- #define SMTG_OS_WINDOWS 0
- #define SMTG_OS_IOS TARGET_OS_IPHONE
- #define SMTG_OS_OSX TARGET_OS_MAC && !TARGET_OS_IPHONE
-
- #if !SMTG_OS_IOS
- #ifndef __CF_USE_FRAMEWORK_INCLUDES__
- #define __CF_USE_FRAMEWORK_INCLUDES__
- #endif
- #ifndef TARGET_API_MAC_CARBON
- #define TARGET_API_MAC_CARBON 1
- #endif
- #endif
- #if __LP64__
- #define SMTG_PLATFORM_64 1
- #else
- #define SMTG_PLATFORM_64 0
- #endif
- #if defined (__BIG_ENDIAN__)
- #define BYTEORDER kBigEndian
- #else
- #define BYTEORDER kLittleEndian
- #endif
-
- #define COM_COMPATIBLE 0
- #define PLUGIN_API
- #define SMTG_PTHREADS 1
-
- #if !defined(__PLIST__) && !defined(SMTG_DISABLE_DEFAULT_DIAGNOSTICS)
- #ifdef __clang__
- #pragma GCC diagnostic ignored "-Wswitch-enum"
- #pragma GCC diagnostic ignored "-Wparentheses"
- #pragma GCC diagnostic ignored "-Wuninitialized"
- #if __clang_major__ >= 3
- #pragma GCC diagnostic ignored "-Wtautological-compare"
- #pragma GCC diagnostic ignored "-Wunused-value"
- #if __clang_major__ >= 4 || __clang_minor__ >= 1
- #pragma GCC diagnostic ignored "-Wswitch"
- #pragma GCC diagnostic ignored "-Wcomment"
- #endif
- #if __clang_major__ >= 5
- #pragma GCC diagnostic ignored "-Wunsequenced"
- #if __clang_minor__ >= 1
- #pragma GCC diagnostic ignored "-Wunused-const-variable"
- #endif
- #endif
- #endif
- #endif
- #endif
- #ifdef __cplusplus
- #include <cstddef>
- #define SMTG_CPP11 (__cplusplus >= 201103L || SMTG_INTEL_CXX11_MODE)
- #if defined (_LIBCPP_VERSION) && SMTG_CPP11
- #define SMTG_CPP11_STDLIBSUPPORT 1
- #define SMTG_HAS_NOEXCEPT 1
- #else
- #define SMTG_CPP11_STDLIBSUPPORT 0
- #define SMTG_HAS_NOEXCEPT 0
- #endif
- #endif
- #else
- #pragma error unknown platform
- #endif
-
- //-----------------------------------------------------------------------------
- #if !SMTG_RENAME_ASSERT
- #undef WINDOWS
- #undef MAC
- #undef PTHREADS
- #undef PLATFORM_64
-
- #if SMTG_OS_WINDOWS
- #define WINDOWS SMTG_OS_WINDOWS
- #endif
- #if SMTG_OS_MACOS
- #define MAC SMTG_OS_MACOS
- #endif
- #define PLATFORM_64 SMTG_PLATFORM_64
- #define PTHREADS SMTG_PTHREADS
- #endif
- //-----------------------------------------------------------------------------
-
- //-----------------------------------------------------------------------------
- #if SMTG_CPP11
- #define SMTG_OVERRIDE override
- #else
- #define SMTG_OVERRIDE
- #endif
- #if SMTG_HAS_NOEXCEPT
- #define SMTG_NOEXCEPT noexcept
- #else
- #define SMTG_NOEXCEPT
- #endif
-
- //-----------------------------------------------------------------------------
- // Deprecation setting
- //-----------------------------------------------------------------------------
- #ifndef SMTG_DEPRECATED_ATTRIBUTE
- #define SMTG_DEPRECATED_ATTRIBUTE(msg)
- #endif
-
- #define SMTG_DEPRECATED_MSG(msg) SMTG_DEPRECATED_ATTRIBUTE(msg)
- //-----------------------------------------------------------------------------
|