Switchboard Extension SDK
Loading...
Searching...
No Matches
Platform.hpp
1#pragma once
2
3/*********
4 * APPLE *
5 ********/
6
7#if __APPLE__
8#include <TargetConditionals.h>
9#define SWITCHBOARD_APPLE 1
10
11#if TARGET_OS_IOS
12#define SWITCHBOARD_IOS 1
13#define SWITCHBOARD_PLATFORM "ios"
14#if TARGET_OS_SIMULATOR
15// iOS, tvOS, or watchOS Simulator
16#define SWITCHBOARD_IPHONE_SIMULATOR 1
17#else
18// iOS, tvOS, or watchOS device
19#define SWITCHBOARD_IPHONE 1
20#endif
21#elif TARGET_OS_MACCATALYST
22// Mac's Catalyst (ports iOS API into Mac, like UIKit).
23#define SWITCHBOARD_MACCATALYST 1
24#define SWITCHBOARD_PLATFORM "maccatalyst"
25#elif TARGET_OS_OSX
26#define SWITCHBOARD_MAC 1
27#define SWITCHBOARD_PLATFORM "macos"
28#elif TARGET_OS_WATCH
29#define SWITCHBOARD_WATCHOS 1
30#define SWITCHBOARD_IOS 1
31#define SWITCHBOARD_PLATFORM "watchos"
32#endif
33
34// Apple-specific defines
35#if defined(SWITCHBOARD_APPLE)
36#if defined(__arm__) || defined(__arm64__)
37#define SWITCHBOARD_ARM 1
38#else
39#define SWITCHBOARD_INTEL 1
40#endif
41
42#if defined(SWITCHBOARD_IOS)
43#define USE_ACCELERATE
44#define APPLE_DECODER_AVAILABLE
45#endif
46#endif
47
48/***********
49 * ANDROID *
50 **********/
51
52#elif defined(__ANDROID__)
53#define SWITCHBOARD_ANDROID 1
54#define SWITCHBOARD_PLATFORM "android"
55
56// Android-specific defines
57#if defined(SWITCHBOARD_ANDROID)
58
59#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
60#define SWITCHBOARD_ARM 1
61#elif __MMX__ || __SSE__ || __amd64__
62#define SWITCHBOARD_INTEL 1
63#endif
64
65#define USE_NEON
66#endif
67
68/***********
69 * WINDOWS *
70 **********/
71
72#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
73#define SWITCHBOARD_WINDOWS 1
74#define SWITCHBOARD_PLATFORM "windows"
75
76// Windows-specific defines
77#if defined(SWITCHBOARD_WINDOWS)
78#if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || defined(_M_ARM64)
79#define SWITCHBOARD_ARM 1
80#else
81#define SWITCHBOARD_INTEL 1
82#endif
83#endif
84
85/*********
86 * LINUX *
87 ********/
88
89#elif defined(OS_LINUX) || defined(__linux__)
90#define SWITCHBOARD_LINUX 1
91#define SWITCHBOARD_PLATFORM "linux"
92
93// Linux-specific defines
94#if defined(SWITCHBOARD_LINUX)
95#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
96#define SWITCHBOARD_ARM 1
97#elif __MMX__ || __SSE__ || __amd64__
98#define SWITCHBOARD_INTEL 1
99#endif
100#endif
101
102/*******
103 * WEB *
104 ******/
105
106
107#elif defined(PLATFORM_WEB) || defined(__wasm__)
108#define SWITCHBOARD_WEB 1
109#define SWITCHBOARD_PLATFORM "web"
110
111/************
112 * EMBEDDED *
113 ***********/
114
115#elif defined(PLATFORM_EMBEDDED)
116#define SWITCHBOARD_EMBEDDED 1
117#define SWITCHBOARD_PLATFORM "embedded"
118
119/************
120 * UNKNOWN *
121 ***********/
122#else
123#error "Unsupported platform"
124#endif
125
126