1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
|
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
/*
File: TargetConditionals.h
Contains: Autoconfiguration of TARGET_ conditionals for Mac OS X and iPhone
Note: TargetConditionals.h in 3.4 Universal Interfaces works
with all compilers. This header only recognizes compilers
known to run on Mac OS X.
*/
#if __has_include(<TargetConditionals.h>)
#include <TargetConditionals.h>
#else
#ifndef __TARGETCONDITIONALS__
#define __TARGETCONDITIONALS__
/****************************************************************************************************
TARGET_CPU_*
These conditionals specify which microprocessor instruction set is being
generated. At most one of these is true, the rest are false.
TARGET_CPU_PPC - Compiler is generating PowerPC instructions for 32-bit mode
TARGET_CPU_PPC64 - Compiler is generating PowerPC instructions for 64-bit mode
TARGET_CPU_68K - Compiler is generating 680x0 instructions
TARGET_CPU_X86 - Compiler is generating x86 instructions
TARGET_CPU_ARM - Compiler is generating ARM instructions
TARGET_CPU_MIPS - Compiler is generating MIPS instructions
TARGET_CPU_SPARC - Compiler is generating Sparc instructions
TARGET_CPU_ALPHA - Compiler is generating Dec Alpha instructions
TARGET_CPU_WASM32 - Compiler is generating WebAssembly instructions for 32-bit mode
TARGET_OS_*
These conditionals specify in which Operating System the generated code will
run. Indention is used to show which conditionals are evolutionary subclasses.
The MAC/WIN32/UNIX conditionals are mutually exclusive.
The IOS/TV/WATCH conditionals are mutually exclusive.
TARGET_OS_WIN32 - Generated code will run under 32-bit Windows
TARGET_OS_UNIX - Generated code will run under some Unix (not OSX)
TARGET_OS_CYGWIN - Generated code will run under 64-bit Cygwin
TARGET_OS_WASI - Generated code will run under WebAssembly System Interface
TARGET_OS_MAC - Generated code will run under Mac OS X variant
TARGET_OS_IPHONE - Generated code for firmware, devices, or simulator
TARGET_OS_IOS - Generated code will run under iOS
TARGET_OS_TV - Generated code will run under Apple TV OS
TARGET_OS_WATCH - Generated code will run under Apple Watch OS
TARGET_OS_SIMULATOR - Generated code will run under a simulator
TARGET_OS_EMBEDDED - Generated code for firmware
TARGET_IPHONE_SIMULATOR - DEPRECATED: Same as TARGET_OS_SIMULATOR
TARGET_OS_NANO - DEPRECATED: Same as TARGET_OS_WATCH
TARGET_RT_*
These conditionals specify in which runtime the generated code will
run. This is needed when the OS and CPU support more than one runtime
(e.g. Mac OS X supports CFM and mach-o).
TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers
TARGET_RT_BIG_ENDIAN - Generated code uses big endian format for integers
TARGET_RT_64_BIT - Generated code uses 64-bit pointers
TARGET_RT_MAC_CFM - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used
TARGET_RT_MAC_MACHO - TARGET_OS_MAC is true and Mach-O/dlyd runtime is used
****************************************************************************************************/
#if __APPLE__
#define TARGET_OS_DARWIN 1
#define TARGET_OS_LINUX 0
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 0
#elif __ANDROID__
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 1
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 1
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 0
#elif __linux__
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 1
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 0
#elif __CYGWIN__
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 1
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 1
#define TARGET_OS_WASI 0
#elif _WIN32 || _WIN64
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 0
#define TARGET_OS_WINDOWS 1
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 0
#elif __unix__
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 0
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 1
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 0
#elif __wasi__
#define TARGET_OS_DARWIN 0
#define TARGET_OS_LINUX 0
#define TARGET_OS_WINDOWS 0
#define TARGET_OS_BSD 0
#define TARGET_OS_ANDROID 0
#define TARGET_OS_CYGWIN 0
#define TARGET_OS_WASI 1
#else
#error unknown operating system
#endif
#define TARGET_OS_WIN32 TARGET_OS_WINDOWS
#define TARGET_OS_MAC TARGET_OS_DARWIN
#define TARGET_OS_OSX TARGET_OS_DARWIN
// iOS, watchOS, and tvOS are not supported
#define TARGET_OS_IPHONE 0
#define TARGET_OS_IOS 0
#define TARGET_OS_WATCH 0
#define TARGET_OS_TV 0
#if __x86_64__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 1
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __arm64__ || __aarch64__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 1
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __mips64__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 1
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __powerpc64__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 1
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __i386__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 1
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __arm__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 1
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __mips__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 1
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __powerpc__
#define TARGET_CPU_PPC 1
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 0
#elif __s390x__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 1
#define TARGET_CPU_WASM32 0
#elif __wasm32__
#define TARGET_CPU_PPC 0
#define TARGET_CPU_PPC64 0
#define TARGET_CPU_X86 0
#define TARGET_CPU_X86_64 0
#define TARGET_CPU_ARM 0
#define TARGET_CPU_ARM64 0
#define TARGET_CPU_MIPS 0
#define TARGET_CPU_MIPS64 0
#define TARGET_CPU_S390X 0
#define TARGET_CPU_WASM32 1
#else
#error unknown architecture
#endif
#if __LITTLE_ENDIAN__
#define TARGET_RT_LITTLE_ENDIAN 1
#define TARGET_RT_BIG_ENDIAN 0
#elif __BIG_ENDIAN__
#define TARGET_RT_LITTLE_ENDIAN 0
#define TARGET_RT_BIG_ENDIAN 1
#else
#error unknown endian
#endif
#if __LP64__ || __LLP64__ || __POINTER_WIDTH__-0 == 64
#define TARGET_RT_64_BIT 1
#else
#define TARGET_RT_64_BIT 0
#endif
#endif /* __TARGETCONDITIONALS__ */
#endif // __has_include
|