cmake: sse flags were being defined in 2 different places
authorCampbell Barton <ideasman42@gmail.com>
Sat, 1 Oct 2011 18:29:40 +0000 (18:29 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 1 Oct 2011 18:29:40 +0000 (18:29 +0000)
CMakeLists.txt
build_files/cmake/macros.cmake

index c95509b..1b65c88 100644 (file)
@@ -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()
 
 
index 709779d..52e48a0 100644 (file)
@@ -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})