From d3f67d1e9c7562026909a07cb53ea0f20c12a500 Mon Sep 17 00:00:00 2001
From: voidanix <voidanix@keyedlimepie.org>
Date: Sat, 23 Mar 2024 23:25:52 +0100
Subject: [PATCH] Fix GCC builds with Debug build type

When compiling with -DCMAKE_BUILD_TYPE=Debug, GCC would (correctly) fail to
compile intrinsics in stb and host1x due to lack of optimizations.

Sadly, the compilation error given is bogus and Clang completing the builds
without issues does raise some eyebrows.

Therefore, force optimizations for the offending files under GCC when
creating Debug builds.

Signed-off-by: voidanix <voidanix@keyedlimepie.org>
---
 src/common/CMakeLists.txt     | 9 +++++++++
 src/video_core/CMakeLists.txt | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index e97a415189..1d2e973841 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -240,6 +240,15 @@ if (MSVC)
   )
 else()
   set_source_files_properties(stb.cpp PROPERTIES COMPILE_OPTIONS "-Wno-implicit-fallthrough;-Wno-missing-declarations;-Wno-missing-field-initializers")
+
+  # Get around GCC failing with intrinsics in Debug
+  if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    set_property(
+      SOURCE stb.cpp
+      APPEND
+      PROPERTY COMPILE_OPTIONS ";-O2"
+    )
+  endif()
 endif()
 
 if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index e5cd0278fa..0afa3d7036 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -425,6 +425,11 @@ else()
 
     # VMA
     set_source_files_properties(vulkan_common/vma.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-unused-variable;-Wno-unused-parameter;-Wno-missing-field-initializers")
+
+    # Get around GCC failing with intrinsics in Debug
+    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE MATCHES "Debug")
+        set_source_files_properties(host1x/vic.cpp PROPERTIES COMPILE_OPTIONS "-O2")
+    endif()
 endif()
 
 if (ARCHITECTURE_x86_64)
-- 
GitLab