https://git.reactos.org/?p=reactos.git;a=commitdiff;h=63944988a25335a5ac97f…
commit 63944988a25335a5ac97f4028e759aede04a8458
Author: Jérôme Gardou <jerome.gardou(a)reactos.org>
AuthorDate: Thu Apr 22 17:31:39 2021 +0200
Commit: Jérôme Gardou <zefklop(a)users.noreply.github.com>
CommitDate: Wed Apr 28 13:10:23 2021 +0200
[CMAKE] Disable SSE instruction on GCC amd64 builds
Except for user-mode modules
---
sdk/cmake/gcc.cmake | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/sdk/cmake/gcc.cmake b/sdk/cmake/gcc.cmake
index f542d34ef19..25893031e52 100644
--- a/sdk/cmake/gcc.cmake
+++ b/sdk/cmake/gcc.cmake
@@ -172,6 +172,14 @@ add_definitions(-D_inline=__inline)
# Fix build with GLIBCXX + our c++ headers
add_definitions(-D_GLIBCXX_HAVE_BROKEN_VSWPRINTF)
+# Disable SSE globally on amd64 builds.
+# We can't disable it for kernel mode modules only,
+# as we don't call set_module_type on static libraries
+# Instead we disable this options for user-mode modules
+if(ARCH STREQUAL "amd64")
+ add_compile_options(-mno-sse)
+endif()
+
# Alternative arch name
if(ARCH STREQUAL "amd64")
set(ARCH2 x86_64)
@@ -314,6 +322,9 @@ function(set_module_type_toolchain MODULE TYPE)
# Believe it or not, cmake doesn't do that
set_property(TARGET ${MODULE} APPEND PROPERTY LINK_DEPENDS
$<TARGET_PROPERTY:native-pefixup,IMPORTED_LOCATION>)
+ else()
+ # We can safely use SSE for user-mode parts
+ remove_target_compile_option(${MODULE} -mno-sse)
endif()
endfunction()