//----------------------------------------------------------------------------- // 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 #undef WINDOWS #undef MAC //----------------------------------------------------------------------------- // WIN32 AND WIN64 #if defined (_WIN32) #define WINDOWS 1 #define BYTEORDER kLittleEndian #define COM_COMPATIBLE 1 #define PLUGIN_API __stdcall #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) // WIN64 only #define PLATFORM_64 1 #endif #ifndef WIN32 #define WIN32 1 #endif #ifdef __cplusplus #define SMTG_CPP11 __cplusplus >= 201103L || _MSC_VER > 1600 || __INTEL_CXX11_MODE__ #define SMTG_CPP11_STDLIBSUPPORT SMTG_CPP11 #endif //----------------------------------------------------------------------------- // LINUX #elif __gnu_linux__ #define LINUX 1 #include #if __BYTE_ORDER == __LITTLE_ENDIAN #define BYTEORDER kLittleEndian #else #define BYTEORDER kBigEndian #endif #define COM_COMPATIBLE 0 #define PLUGIN_API #define PTHREADS 1 #if __LP64__ #define PLATFORM_64 1 #endif #ifdef __cplusplus #include #define SMTG_CPP11 (__cplusplus >= 201103L) #ifndef SMTG_CPP11 #error unsupported compiler #endif #define SMTG_CPP11_STDLIBSUPPORT 1 #endif //----------------------------------------------------------------------------- // Mac and iOS #elif __APPLE__ #include #define MAC 1 #define PTHREADS 1 #if !TARGET_OS_IPHONE #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 PLATFORM_64 1 #endif #if defined (__BIG_ENDIAN__) #define BYTEORDER kBigEndian #else #define BYTEORDER kLittleEndian #endif #define COM_COMPATIBLE 0 #define PLUGIN_API #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 #define SMTG_CPP11 (__cplusplus >= 201103L || __INTEL_CXX11_MODE__) #if defined (_LIBCPP_VERSION) && SMTG_CPP11 #define SMTG_CPP11_STDLIBSUPPORT 1 #else #define SMTG_CPP11_STDLIBSUPPORT 0 #endif #endif #else #pragma error unknown platform #endif //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- #if SMTG_CPP11 #define SMTG_OVERRIDE override #else #define SMTG_OVERRIDE #endif