diff --git a/cmake/DaemonFlags.cmake b/cmake/DaemonFlags.cmake index e5b095e454..5f80248afb 100644 --- a/cmake/DaemonFlags.cmake +++ b/cmake/DaemonFlags.cmake @@ -27,6 +27,8 @@ include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) +add_definitions(-DDAEMON_BUILD_${CMAKE_BUILD_TYPE}) + # Set flag without checking, optional argument specifies build type macro(set_c_flag FLAG) if (${ARGC} GREATER 1) diff --git a/src/engine/renderer/tr_model_iqm.cpp b/src/engine/renderer/tr_model_iqm.cpp index f2a461eb0c..7a889e428f 100644 --- a/src/engine/renderer/tr_model_iqm.cpp +++ b/src/engine/renderer/tr_model_iqm.cpp @@ -34,6 +34,12 @@ Maryland 20850 USA. #include "tr_local.h" +/* Flags -O2, -O3 and -0s produce SIGBUS in R_LoadIQModel() on armhf, +see https://github.com/DaemonEngine/Daemon/issues/736 */ +#if defined(DAEMON_ARCH_armhf) && !defined(DAEMON_BUILD_Debug) && __GNUC__ + #pragma GCC optimize("O1") +#endif + #define LL(x) x=LittleLong(x) static inline void *IQMPtr( iqmHeader_t *header, int offset ) {