From 777dd3a03c4d954036744a89de1e36dcbbf68bff Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 3 Jul 2023 01:40:41 +0300 Subject: [PATCH] public: add definitions for PowerPC This doesn't mean we have a port but at least it allows building for ppc64el --- public/build.c | 4 ++++ public/build.h | 6 ++++++ public/buildenums.h | 3 +++ public/tests/test_build.c | 6 ++++++ 4 files changed, 19 insertions(+) diff --git a/public/build.c b/public/build.c index b356a491..858e8518 100644 --- a/public/build.c +++ b/public/build.c @@ -162,6 +162,10 @@ const char *Q_ArchitectureStringByID( const int arch, const uint abi, const int return "e2k"; case ARCHITECTURE_JS: return "javascript"; + case ARCHITECTURE_PPC: + return endianness == ENDIANNESS_LITTLE ? + ( is64 ? "ppc64el" : "ppcel" ): + ( is64 ? "ppc64" : "ppc" ); case ARCHITECTURE_MIPS: return endianness == ENDIANNESS_LITTLE ? ( is64 ? "mips64el" : "mipsel" ): diff --git a/public/build.h b/public/build.h index 3b483499..2f8fffae 100644 --- a/public/build.h +++ b/public/build.h @@ -76,6 +76,7 @@ Then you can use another oneliner to query all variables: #undef XASH_NETBSD #undef XASH_OPENBSD #undef XASH_POSIX +#undef XASH_PPC #undef XASH_RISCV #undef XASH_RISCV_DOUBLEFP #undef XASH_RISCV_SINGLEFP @@ -195,6 +196,11 @@ Then you can use another oneliner to query all variables: #elif defined __e2k__ #define XASH_64BIT 1 #define XASH_E2K 1 +#elif defined __PPC__ || defined __powerpc__ + #define XASH_PPC 1 + #if defined __PPC64__ || defined __powerpc64__ + #define XASH_64BIT 1 + #endif #elif defined _M_ARM // msvc #define XASH_ARM 7 #define XASH_ARM_HARDFP 1 diff --git a/public/buildenums.h b/public/buildenums.h index cd798eb7..9a895fc6 100644 --- a/public/buildenums.h +++ b/public/buildenums.h @@ -89,6 +89,7 @@ GNU General Public License for more details. #define ARCHITECTURE_JS 6 #define ARCHITECTURE_E2K 7 #define ARCHITECTURE_RISCV 8 +#define ARCHITECTURE_PPC 9 #if XASH_AMD64 #define XASH_ARCHITECTURE ARCHITECTURE_AMD64 @@ -104,6 +105,8 @@ GNU General Public License for more details. #define XASH_ARCHITECTURE ARCHITECTURE_E2K #elif XASH_RISCV #define XASH_ARCHITECTURE ARCHITECTURE_RISCV +#elif XASH_PPC + #define XASH_ARCHITECTURE ARCHITECTURE_PPC #else #error #endif diff --git a/public/tests/test_build.c b/public/tests/test_build.c index b28c7641..2467bb1a 100644 --- a/public/tests/test_build.c +++ b/public/tests/test_build.c @@ -47,6 +47,12 @@ static struct { ARCHITECTURE_MIPS, 0, ENDIANNESS_LITTLE, true, "mips64el" }, { ARCHITECTURE_MIPS, 0, ENDIANNESS_LITTLE, false, "mipsel" }, +// all possible PowerPC names +{ ARCHITECTURE_PPC, 0, ENDIANNESS_BIG, true, "ppc64" }, +{ ARCHITECTURE_PPC, 0, ENDIANNESS_BIG, false, "ppc" }, +{ ARCHITECTURE_PPC, 0, ENDIANNESS_LITTLE, true, "ppc64el" }, +{ ARCHITECTURE_PPC, 0, ENDIANNESS_LITTLE, false, "ppcel" }, + // All ARM is little endian only (for now?) // Arm64 is always arm64, no matter the version (for now) // Arm64 don't care about hardfp bit