From 4bca4b40958fe65358c0847ec49d8711de53750a Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Thu, 5 Oct 2023 11:56:50 +0300
Subject: [PATCH] move BLARGG_BIG_ENDIAN/BLARGG_LITTLE_ENDIAN definition to
build system.
---
Android.mk | 2 +-
CMakeLists.txt | 8 +++++++
gme/blargg_endian.h | 52 +--------------------------------------------
3 files changed, 10 insertions(+), 52 deletions(-)
diff --git a/Android.mk b/Android.mk
index d33d222..3beeb76 100644
--- a/Android.mk
+++ b/Android.mk
@@ -9,7 +9,7 @@ FILE_LIST := $(wildcard $(LOCAL_PATH)/gme/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_CPPFLAGS := -Wall -W -Wextra -std=c++11 -O2 -DBLARGG_BUILD_DLL \
-DLIBGME_VISIBILITY -fvisibility=hidden -fvisibility-inlines-hidden \
- -fwrapv -DVGM_YM2612_GENS
+ -fwrapv -DVGM_YM2612_GENS -DBLARGG_LITTLE_ENDIAN=1
LOCAL_SANITIZE := undefined
LOCAL_CPP_FEATURES := exceptions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1644db3..5cc62c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,7 @@
project(libgme)
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
+include (TestBigEndian)
include (CheckCXXCompilerFlag)
include (CTest)
@@ -69,6 +70,13 @@ option(ENABLE_UBSAN "Enable Undefined Behavior Sanitizer error-checking" ON)
option(BUILD_FRAMEWORK "Build framework instead of dylib (on macOS)" OFF)
+test_big_endian(WORDS_BIGENDIAN)
+if(WORDS_BIGENDIAN)
+ add_definitions(-DBLARGG_BIG_ENDIAN=1)
+else()
+ add_definitions(-DBLARGG_LITTLE_ENDIAN=1)
+endif()
+
# static builds need to find static zlib (and static forms of other needed
# libraries. Ensure CMake looks only for static libs if we're doing a static
# build. See https://stackoverflow.com/a/44738756
diff --git a/gme/blargg_endian.h b/gme/blargg_endian.h
index c3e81c2..9690889 100644
--- a/gme/blargg_endian.h
+++ b/gme/blargg_endian.h
@@ -19,57 +19,7 @@
// BLARGG_BIG_ENDIAN, BLARGG_LITTLE_ENDIAN: Determined automatically, otherwise only
// one may be #defined to 1. Only needed if something actually depends on byte order.
-#if !defined (BLARGG_BIG_ENDIAN) && !defined (BLARGG_LITTLE_ENDIAN)
-#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__)
- #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
- #define BLARGG_LITTLE_ENDIAN 1
- #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
- #define BLARGG_BIG_ENDIAN 1
- #endif
-#elif defined(__linux__)
- #include <endian.h>
- #if __BYTE_ORDER == __LITTLE_ENDIAN
- #define BLARGG_LITTLE_ENDIAN 1
- #elif __BYTE_ORDER == __BIG_ENDIAN
- #define BLARGG_BIG_ENDIAN 1
- #endif
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__APPLE__) || \
- defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
- #include <machine/endian.h>
- #if BYTE_ORDER == LITTLE_ENDIAN
- #define BLARGG_LITTLE_ENDIAN 1
- #elif BYTE_ORDER == BIG_ENDIAN
- #define BLARGG_BIG_ENDIAN 1
- #endif
-#elif defined(BLARGG_CPU_X86) || defined(_WIN32)
- #define BLARGG_LITTLE_ENDIAN 1
-#elif defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \
- defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__)
- #define BLARGG_BIG_ENDIAN 1
-#elif defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \
- defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__)
- #define BLARGG_LITTLE_ENDIAN 1
-#elif defined(__MORPHOS__) || (defined(__amigaos__) && (defined(__NEWLIB__)))
- #include <machine/endian.h>
- #if (BYTE_ORDER == LITTLE_ENDIAN)
- #define BLARGG_LITTLE_ENDIAN 1
- #elif (BYTE_ORDER == BIG_ENDIAN)
- #define BLARGG_BIG_ENDIAN 1
- #endif
-#elif defined(__amigaos__) && defined(__CLIB2__)
- #include <unistd.h>
- #if (BYTE_ORDER == LITTLE_ENDIAN)
- #define BLARGG_LITTLE_ENDIAN 1
- #elif (BYTE_ORDER == BIG_ENDIAN)
- #define BLARGG_BIG_ENDIAN 1
- #endif
-#elif defined(__mc68000__) || defined(__M68K__) || defined(__m68k__) || defined(__MC68K__)
- #define BLARGG_BIG_ENDIAN 1
-#elif defined(__hppa) || defined(__hppa__)
- #define BLARGG_BIG_ENDIAN 1
-#endif
-#endif
-
+// BLARGG_BIG_ENDIAN or BLARGG_LITTLE_ENDIAN must be defined by the build system.
#if !defined(BLARGG_BIG_ENDIAN) && !defined(BLARGG_LITTLE_ENDIAN)
#error Unspecified endianness.
#endif