Skip to content

Commit 905859a

Browse files
committed
changing endianness getter
1 parent 213a8f6 commit 905859a

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

includes/mlx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: maldavid <contact@kbz8.me> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */
9-
/* Updated: 2024/12/17 00:15:34 by maldavid ### ########.fr */
9+
/* Updated: 2024/12/17 00:27:35 by maldavid ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -48,7 +48,7 @@ typedef union mlx_color
4848
{
4949
struct
5050
{
51-
#if MLX_ENDIAN_ORDER == MLX_LITTLE_ENDIAN
51+
#if MLX_BYTEORDER == MLX_LITTLE_ENDIAN
5252
uint8_t a;
5353
uint8_t b;
5454
uint8_t g;

includes/mlx_profile.h

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* 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 */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -49,6 +49,14 @@
4949
#define MLX_PLAT_MACOS
5050
#elif defined(unix) || defined(__unix__) || defined(__unix)
5151
#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
5260
#else
5361
#error "Unknown environment (not Windows, not Linux, not MacOS, not Unix)"
5462
#endif
@@ -142,9 +150,48 @@
142150
#endif
143151
#endif
144152

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
148195

149196
#include <stdint.h>
150197

0 commit comments

Comments
 (0)