|
6 | 6 | /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
7 | 7 | /* +#+#+#+#+#+ +#+ */
|
8 | 8 | /* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */
|
9 |
| -/* Updated: 2024/12/17 00:14:47 by maldavid ### ########.fr */ |
| 9 | +/* Updated: 2024/12/17 00:35:35 by maldavid ### ########.fr */ |
10 | 10 | /* */
|
11 | 11 | /* ************************************************************************** */
|
12 | 12 |
|
|
49 | 49 | #define MLX_PLAT_MACOS
|
50 | 50 | #elif defined(unix) || defined(__unix__) || defined(__unix)
|
51 | 51 | #define MLX_PLAT_UNIX
|
| 52 | +#elif defined(__sun) && defined(__SVR4) |
| 53 | + #define MLX_PLAT_SOLARIS |
| 54 | +#elif defined(__OpenBSD__) |
| 55 | + #define MLX_PLAT_OPENBSD |
| 56 | +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) |
| 57 | + #define MLX_PLAT_FREEBSD |
| 58 | +#elif defined(__NetBSD__) |
| 59 | + #define MLX_PLAT_NETBSD |
52 | 60 | #else
|
53 | 61 | #error "Unknown environment (not Windows, not Linux, not MacOS, not Unix)"
|
54 | 62 | #endif
|
|
142 | 150 | #endif
|
143 | 151 | #endif
|
144 | 152 |
|
145 |
| -#define MLX_LITTLE_ENDIAN 0x41424344UL |
146 |
| -#define MLX_BIG_ENDIAN 0x44434241UL |
147 |
| -#define MLX_ENDIAN_ORDER ('ABCD') |
| 153 | +#define MLX_LITTLE_ENDIAN 1234 |
| 154 | +#define MLX_BIG_ENDIAN 4321 |
| 155 | + |
| 156 | +#ifndef MLX_BYTEORDER |
| 157 | + #if defined(MLX_PLAT_LINUX) |
| 158 | + #include <endian.h> |
| 159 | + #define MLX_BYTEORDER __BYTE_ORDER |
| 160 | + #elif defined(MLX_PLAT_SOLARIS) |
| 161 | + #include <sys/byteorder.h> |
| 162 | + #if defined(_LITTLE_ENDIAN) |
| 163 | + #define MLX_BYTEORDER MLX_LITTLE_ENDIAN |
| 164 | + #elif defined(_BIG_ENDIAN) |
| 165 | + #define MLX_BYTEORDER MLX_BIG_ENDIAN |
| 166 | + #else |
| 167 | + #error Unsupported endianness |
| 168 | + #endif |
| 169 | + #elif defined(MLX_PLAT_OPENBSD) || defined(__DragonFly__) |
| 170 | + #include <endian.h> |
| 171 | + #define MLX_BYTEORDER BYTE_ORDER |
| 172 | + #elif defined(MLX_PLAT_FREEBSD) || defined(MLX_PLAT_NETBSD) |
| 173 | + #include <sys/endian.h> |
| 174 | + #define MLX_BYTEORDER BYTE_ORDER |
| 175 | + #elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) |
| 176 | + #if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) |
| 177 | + #define MLX_BYTEORDER MLX_LITTLE_ENDIAN |
| 178 | + #elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) |
| 179 | + #define MLX_BYTEORDER MLX_BIG_ENDIAN |
| 180 | + #else |
| 181 | + #error Unsupported endianness |
| 182 | + #endif |
| 183 | + #else |
| 184 | + #if defined(__hppa__) || \ |
| 185 | + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ |
| 186 | + (defined(__MIPS__) && defined(__MIPSEB__)) || \ |
| 187 | + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ |
| 188 | + defined(__sparc__) || defined(__sparc) |
| 189 | + #define MLX_BYTEORDER MLX_BIG_ENDIAN |
| 190 | + #else |
| 191 | + #define MLX_BYTEORDER MLX_LITTLE_ENDIAN |
| 192 | + #endif |
| 193 | + #endif |
| 194 | +#endif |
148 | 195 |
|
149 | 196 | #include <stdint.h>
|
150 | 197 |
|
|
0 commit comments