ObjFW
Toggle main menu visibility
Loading...
Searching...
No Matches
platform.h
1
/*
2
* Copyright (c) 2008-2026 Jonathan Schleifer <js@nil.im>
3
*
4
* All rights reserved.
5
*
6
* This program is free software: you can redistribute it and/or modify it
7
* under the terms of the GNU Lesser General Public License version 3.0 only,
8
* as published by the Free Software Foundation.
9
*
10
* This program is distributed in the hope that it will be useful, but WITHOUT
11
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13
* version 3.0 for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public License
16
* version 3.0 along with this program. If not, see
17
* <https://www.gnu.org/licenses/>.
18
*/
19
20
#include "objfw-defs.h"
21
22
/* Required to build universal binaries on OS X */
23
#ifdef OF_UNIVERSAL
24
# if __BIG_ENDIAN__
25
# define OF_BIG_ENDIAN
26
# define OF_FLOAT_BIG_ENDIAN
27
# elif !__LITTLE_ENDIAN__
28
# error OF_UNIVERSAL defined, but neither __BIG_ENDIAN__ nor __LITTLE_ENDIAN__!
29
# endif
30
#endif
31
32
#if (defined(__x86_64__) || defined(__amd64__)) && \
33
(defined(__LP64__) || defined(_WIN64))
34
# define OF_AMD64
35
#elif defined(__i386__)
36
# define OF_X86
37
#elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__)
38
# define OF_POWERPC64
39
#elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__)
40
# define OF_POWERPC
41
#elif defined(__arm64__) || defined(__aarch64__) || defined(__ARM64_ARCH_8__)
42
# define OF_ARM64
43
#elif defined(__arm__) || defined(__ARM__)
44
# define OF_ARM
45
# if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
46
defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
47
defined(__ARM_ARCH_7EM__)
48
# define OF_ARMV7
49
# endif
50
# if defined(OF_ARMV7) || defined(__ARM_ARCH_6__) || \
51
defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || \
52
defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || \
53
defined(__ARM_ARCH_6T2__)
54
# define OF_ARMV6
55
# endif
56
#elif defined(_MIPS_SIM)
57
# if _MIPS_SIM == _ABI64
58
# define OF_MIPS64
59
# define OF_MIPS64_N64
60
# elif _MIPS_SIM == _ABIN32
61
# define OF_MIPS64
62
# define OF_MIPS64_N32
63
# elif _MIPS_SIM == _ABIO32
64
# define OF_MIPS
65
# define OF_MIPS_O32
66
# endif
67
#elif defined(__mips_eabi) && _MIPS_SZPTR == 32
68
# define OF_MIPS
69
# define OF_MIPS_EABI
70
#elif defined(__sparc64__) || (defined(__sparc__) && defined(__arch64__))
71
# define OF_SPARC64
72
#elif defined(__sparc__) && !defined(__arch64__)
73
# define OF_SPARC
74
#elif defined(__hppa64__) || defined(_PA_RISC2_0)
75
# define OF_PA_RISC_2_0
76
#elif defined(__hppa__) || defined(_PA_RISC1_0) || defined(_PA_RISC1_1)
77
# define OF_PA_RISC
78
#elif defined(__ia64__) || defined(__IA64__)
79
# define OF_ITANIUM
80
#elif defined(__m68k__)
81
# define OF_M68K
82
# ifdef __mc68060__
83
# define OF_M68060
84
# endif
85
# if defined(__mc68040__) || defined(OF_M68060)
86
# define OF_M68040
87
# endif
88
# if defined(__mc68030__) || defined(OF_M68040)
89
# define OF_M68030
90
# endif
91
# if defined(__mc68020__) || defined(OF_M68030)
92
# define OF_M68020
93
# endif
94
# if defined(__mc68010__) || defined(OF_M68020)
95
# define OF_M68010
96
# endif
97
#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
98
# define OF_RISCV64
99
#elif defined(__riscv)
100
# define OF_RISCV
101
#elif defined(__s390x__)
102
# define OF_S390X
103
#elif defined(__s390__)
104
# define OF_S390
105
#elif defined(__sh__)
106
# define OF_SUPERH
107
#elif defined(__e2k__)
108
# define OF_ELBRUS_2000
109
#elif defined(__loongarch64)
110
# define OF_LOONGARCH64
111
#endif
112
113
#if defined(__APPLE__)
114
# include <TargetConditionals.h>
115
# if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || \
116
(defined(TARGET_OS_SIMULATOR) && TARGET_OS_SIMULATOR)
117
# define OF_IOS
118
# else
119
# define OF_MACOS
120
# endif
121
#elif defined(__linux__)
122
# define OF_LINUX
123
#elif defined(_WIN32)
124
# define OF_WINDOWS
125
#elif defined(__FreeBSD__)
126
# define OF_FREEBSD
127
#elif defined(__NetBSD__)
128
# define OF_NETBSD
129
#elif defined(__OpenBSD__)
130
# define OF_OPENBSD
131
#elif defined(__DragonFly__)
132
# define OF_DRAGONFLYBSD
133
#elif defined(__ANDROID__)
134
# define OF_ANDROID
135
#elif defined(__HAIKU__)
136
# define OF_HAIKU
137
#elif defined(_AIX)
138
# define OF_AIX
139
#elif defined(__MORPHOS__)
140
# define OF_MORPHOS
141
# define OF_AMIGAOS
142
#elif defined(__amigaos4__)
143
# define OF_AMIGAOS4
144
# define OF_AMIGAOS
145
#elif defined(__amigaos__)
146
# define OF_AMIGAOS_M68K
147
# define OF_AMIGAOS
148
#elif defined(__sun__)
149
# define OF_SOLARIS
150
#elif defined(__QNX__)
151
# define OF_QNX
152
#elif defined(__hpux__)
153
# define OF_HPUX
154
#elif defined(_PSP)
155
# define OF_PSP
156
#elif defined(__DJGPP__)
157
# define OF_DJGPP
158
# define OF_MSDOS
159
#elif defined(__riscos__)
160
# define OF_ACORN_RISC_OS
161
#elif defined(__MINT__)
162
# define OF_MINT
163
#elif defined(__gnu_hurd__)
164
# define OF_HURD
165
#elif defined(__serenity__)
166
# define OF_SERENITYOS
167
#endif
168
169
#ifdef __GLIBC__
170
# define OF_GLIBC
171
#endif
172
173
#if defined(__ELF__)
174
# define OF_ELF
175
#elif defined(__MACH__)
176
# define OF_MACH_O
177
#endif
178
179
#if defined(__PIC__) || defined(__pic__)
180
# define OF_PIC
181
#endif
src
platform.h
Generated by
1.17.0