https://git.reactos.org/?p=reactos.git;a=commitdiff;h=63944988a25335a5ac97f4028e759aede04a8458

commit 63944988a25335a5ac97f4028e759aede04a8458
Author:     Jérôme Gardou <[email protected]>
AuthorDate: Thu Apr 22 17:31:39 2021 +0200
Commit:     Jérôme Gardou <[email protected]>
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()
 

Reply via email to