From ab256e294ef3caf6ea07f82db4dfbe1ff6fd85ef Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 27 Oct 2021 20:33:21 +0300 Subject: [PATCH] public: build: add RISC-V support(based on @archanox patches), add forcing endianness from build system --- public/build.h | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/public/build.h b/public/build.h index 4edb351b..a7bb78f4 100644 --- a/public/build.h +++ b/public/build.h @@ -52,22 +52,28 @@ For more information, please refer to #undef XASH_ARMv6 #undef XASH_ARMv7 #undef XASH_ARMv8 -//#undef XASH_BIG_ENDIAN +#undef XASH_BIG_ENDIAN #undef XASH_BSD +#undef XASH_DOS4GW #undef XASH_E2K #undef XASH_EMSCRIPTEN #undef XASH_FREEBSD +#undef XASH_HAIKU #undef XASH_IOS #undef XASH_JS #undef XASH_LINUX -//#undef XASH_LITTLE_ENDIAN +#undef XASH_LITTLE_ENDIAN #undef XASH_MINGW #undef XASH_MIPS #undef XASH_MOBILE_PLATFORM #undef XASH_MSVC #undef XASH_NETBSD #undef XASH_OPENBSD -#undef XASH_HAIKU +#undef XASH_POSIX +#undef XASH_RISCV +#undef XASH_RISCV_DOUBLEFP +#undef XASH_RISCV_SINGLEFP +#undef XASH_RISCV_SOFTFP #undef XASH_WIN32 #undef XASH_WIN64 #undef XASH_X86 @@ -133,8 +139,12 @@ For more information, please refer to // //================================================================ -#if defined(XASH_LITTLE_ENDIAN) && defined(XASH_BIG_ENDIAN) - #error "Both XASH_LITTLE_ENDIAN and XASH_BIG_ENDIAN are defined" +#if defined(XASH_FORCE_LITTLE_ENDIAN) && defined(XASH_FORCE_BIG_ENDIAN) + #error "Both XASH_FORCE_LITTLE_ENDIAN and XASH_FORCE_BIG_ENDIAN are defined" +#elif defined(XASH_FORCE_LITTLE_ENDIAN) + #define XASH_LITTLE_ENDIAN 1 +#elif defined(XASH_FORCE_BIG_ENDIAN) + #define XASH_BIG_ENDIAN 1 #endif #if !defined(XASH_LITTLE_ENDIAN) && !defined(XASH_BIG_ENDIAN) @@ -207,6 +217,25 @@ For more information, please refer to #elif defined __e2k__ #define XASH_64BIT 1 #define XASH_E2K 1 +#elif defined __riscv + #define XASH_RISCV 1 + #if __riscv_xlen == 64 + #define XASH_64BIT + #elif __riscv_xlen == 32 + // ... + #else + #error "Unknown RISC-V ABI" + #endif + + #if defined __riscv_float_abi_soft + #define XASH_RISCV_SOFTFP + #elif defined __riscv_float_abi_single + #define XASH_RISCV_SINGLEFP + #elif defined __riscv_float_abi_double + #define XASH_RISCV_DOUBLEFP + #else + #error "Unknown RISC-V float ABI" + #endif #else #error "Place your architecture name here! If this is a mistake, try to fix conditions above and report a bug" #endif