diff --git a/public/build.h b/public/build.h index abfe1902..a7bb78f4 100644 --- a/public/build.h +++ b/public/build.h @@ -27,7 +27,7 @@ OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to */ #pragma once -#if !defined(BUILD_H) +#ifndef BUILD_H #define BUILD_H // All XASH_* macros set by this header are guaranteed to have positive value otherwise not defined @@ -35,10 +35,10 @@ For more information, please refer to // Any new define must be undefined at first // You can generate #undef list below with this oneliner: // $ cat build.h | sed 's/\t//g' | grep '^#define XASH' | awk '{ print $2 }' | sort | uniq | awk '{ print "#undef " $1 }' -// +// // So in various buildscripts you can grep for ^#undef XASH and select only second word // or in another oneliner: -// $ cat build.h | grep '^#undef XASH' | awk '{ print $2 }' +// $ cat build.h | grep '^#undef XASH' | awk '{ print $2 }' #undef XASH_64BIT #undef XASH_AMD64 @@ -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