diff options
-rw-r--r-- | CMakeLists.txt | 23 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 24 |
2 files changed, 21 insertions, 26 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c95509b0a08..1b65c888cfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -273,7 +273,7 @@ if(WITH_PYTHON_MODULE) set(WITH_HEADLESS ON) endif() -TEST_SSE_SUPPORT() +TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG) # don't store paths to libs for portable distrobution if(WITH_INSTALL_PORTABLE) @@ -1128,34 +1128,17 @@ endif() # See TEST_SSE_SUPPORT() for how this is defined. if(WITH_RAYOPTIMIZATION) - if(CMAKE_COMPILER_IS_GNUCC) - set(_sse "-msse") - set(_sse2 "-msse2") - elseif(MSVC) - set(_sse "/arch:SSE") - set(_sse2 "/arch:SSE2") - elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") - set(_sse) # icc only has sse2 - set(_sse2 "-xSSE2") - else() - message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known") - set(_sse) - set(_sse2) - endif() - if(SUPPORT_SSE_BUILD) - set(PLATFORM_CFLAGS " ${_sse} ${PLATFORM_CFLAGS}") + set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}") add_definitions(-D__SSE__ -D__MMX__) endif() if(SUPPORT_SSE2_BUILD) - set(PLATFORM_CFLAGS " ${_sse2} ${PLATFORM_CFLAGS}") + set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}") add_definitions(-D__SSE2__) if(NOT SUPPORT_SSE_BUILD) # dont double up add_definitions(-D__MMX__) endif() endif() - unset(_sse) - unset(_sse2) endif() diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 709779dc3eb..52e48a0c1ca 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -325,18 +325,30 @@ macro(setup_liblinks endif() endmacro() -macro(TEST_SSE_SUPPORT) +macro(TEST_SSE_SUPPORT + _sse_flags + _sse2_flags) + include(CheckCSourceRuns) # message(STATUS "Detecting SSE support") - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_REQUIRED_FLAGS "-msse -msse2") + if(CMAKE_COMPILER_IS_GNUCC) + set(${_sse_flags} "-msse") + set(${_sse2_flags} "-msse2") elseif(MSVC) - set(CMAKE_REQUIRED_FLAGS "/arch:SSE2") # TODO, SSE 1 ? + set(${_sse_flags} "/arch:SSE") + set(${_sse2_flags} "/arch:SSE2") elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") - set(CMAKE_REQUIRED_FLAGS "-xSSE2") + set(${_sse_flags}) # icc only has sse2 + set(${_sse2_flags} "-xSSE2") else() - message(STATUS "Compiler: '${CMAKE_C_COMPILER_ID}' has no SSE flags defiend for it!") + message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known") + set(_sse_flags) + set(_sse2_flags) + endif() + + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_REQUIRED_FLAGS ${_sse_flags} ${_sse2_flags}) endif() if(NOT DEFINED ${SUPPORT_SSE_BUILD}) |