Files
TL/include/tl/platform.h
jeanlemotan 8297b0b45f First
2024-07-02 18:06:33 +02:00

121 lines
3.5 KiB
C

#pragma once
/*
//possible platform versions
//note the fixed point XX.XX format, so that we can compare versions
#define TL_PLATFORM_VERSION_8_0 800
#define TL_PLATFORM_VERSION_8_1 810
#define TL_PLATFORM_VERSION_10_0 1000
//actual version
#define TL_PLATFORM_VERSION TL_PLATFORM_VERSION_8_0
*/
//////////////////////////////////////////////////////////////////////////
//PLATFORM
//////////////////////////////////////////////////////////////////////////
# if defined (__arm64__) || defined (__aarch64__) || defined(_M_ARM64)
# define TL_PLATFORM_64
# define TL_PLATFORM_ARCHITECTURE_ARM64
# elif defined(__arm__) || defined(_M_ARM)
# define TL_PLATFORM_32
# define TL_PLATFORM_ARCHITECTURE_ARM32
# elif defined(__i386__) || defined(_M_IX86)
# define TL_PLATFORM_32
# define TL_PLATFORM_ARCHITECTURE_X86
# elif defined(__x86_64__) || defined(_M_AMD64)
# define TL_PLATFORM_64
# define TL_PLATFORM_ARCHITECTURE_AMD64
# else
# pragma error "Unrecognized architecture "
# endif
//////////////////////////////////////////////////////////////////////////
//ANDROID
//////////////////////////////////////////////////////////////////////////
#if defined (__ANDROID__)
# define TL_PLATFORM_POSIX_THREADS_API
# define TL_PLATFORM_ANDROID_FAMILY
# define TL_PLATFORM_ANDROID_APP
# define TL_PLATFORM_POSIX_API
#elif defined(_WIN32) || defined(_WIN64) || defined(__MINGW64__)
# define TL_PLATFORM_WINDOWS_FAMILY
# define TL_PLATFORM_WIN_API
# define TL_PLATFORM_WINDOWS_THREADS_API
# if defined(_MSC_VER)
# pragma warning(disable:4100)
# pragma warning(disable:4251)
# endif
# if defined(WINAPI_FAMILY)
# include <winapifamily.h>
# if (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP)
//////////////////////////////////////////////////////////////////////////
// WINDOWS STORE
//////////////////////////////////////////////////////////////////////////
# define TL_PLATFORM_WINDOWS_STORE_APP
# elif (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
//////////////////////////////////////////////////////////////////////////
// WINDOWS PHONE
//////////////////////////////////////////////////////////////////////////s
# define TL_PLATFORM_WINDOWS_PHONE_APP
# else
//////////////////////////////////////////////////////////////////////////
// WINDOWS
//////////////////////////////////////////////////////////////////////////
# define TL_PLATFORM_WINDOWS_DESKTOP_APP
# endif
# else
# define TL_PLATFORM_WINDOWS_DESKTOP_APP
# endif
//no posix here unfortunately
//////////////////////////////////////////////////////////////////////////
//IOS
//////////////////////////////////////////////////////////////////////////
#elif defined(__APPLE__) || defined(MACOSX)
# include "TargetConditionals.h"
# define TL_PLATFORM_POSIX_THREADS_API
# define TL_PLATFORM_OSX_FAMILY
# define TL_PLATFORM_POSIX_API
# if (TARGET_IPHONE_SIMULATOR)
# define TL_PLATFORM_IOS_FAMILY
# define TL_PLATFORM_IOS_SIMULATOR_APP
# elif (TARGET_OS_IPHONE)
# define TL_PLATFORM_IOS_FAMILY
# define TL_PLATFORM_IOS_APP
# if(TARGET_OS_MACCATALYST)
# define TL_PLATFORM_CATALYST
# endif
# elif (TARGET_OS_MAC)
# define TL_PLATFORM_MAC_APP
# else
# error "Unknown Platform"
# endif
//////////////////////////////////////////////////////////////////////////
//LINUX
//////////////////////////////////////////////////////////////////////////
#elif defined (__linux)
# define TL_PLATFORM_LINUX_FAMILY
# define TL_PLATFORM_LINUX_APP
# define TL_PLATFORM_POSIX_API
# define TL_PLATFORM_POSIX_THREADS_API
#else
# error Unrecognized platform.
#endif