diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-08-11 12:23:48 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-08-11 12:23:48 +0400 |
commit | e588e8e7419591e13965191274e3ca4ae995695e (patch) | |
tree | 3635992e2d926c18e340b706c3a42aa2eb6a6249 | |
parent | d739a1788d338795039530c2d6503b93ab805161 (diff) |
bugfix [#23257] cmake tests for SSE, but SSE2 gets enabled
patch from Vinay Pawar, some minor changes by me.
-rw-r--r-- | CMakeLists.txt | 37 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 25 |
2 files changed, 40 insertions, 22 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 87265e959e5..cb131c6e5e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -316,12 +316,6 @@ IF(UNIX AND NOT APPLE) SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-char-subscripts") - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_LINKFLAGS "-pthread") # Better warnings @@ -633,12 +627,6 @@ IF(WIN32) SET(WITH_JACK OFF) ENDIF(WITH_JACK) - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - ENDIF(MSVC) ENDIF(WIN32) @@ -819,12 +807,6 @@ IF(APPLE) SET(TIFF_LIBPATH ${TIFF}/lib) ENDIF(WITH_IMAGE_TIFF) - IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}") - ADD_DEFINITIONS(-D__SSE__) - ADD_DEFINITIONS(-D__MMX__) - ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - SET(EXETYPE MACOSX_BUNDLE) SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") @@ -868,9 +850,26 @@ IF(WITH_BUILDINFO) ENDIF(BUILD_REV_RETURN) ENDIF(WIN32) ENDIF(WITH_BUILDINFO) - #----------------------------------------------------------------------------- # Common. + +IF(WITH_RAYOPTIMIZATION) + IF(CMAKE_COMPILER_IS_GNUCC) + IF(SUPPORT_SSE_BUILD) + SET(PLATFORM_CFLAGS " -msse ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE__) + ADD_DEFINITIONS(-D__MMX__) + ENDIF(SUPPORT_SSE_BUILD) + IF(SUPPORT_SSE2_BUILD) + SET(PLATFORM_CFLAGS " -msse2 ${PLATFORM_CFLAGS}") + ADD_DEFINITIONS(-D__SSE2__) + IF(NOT SUPPORT_SSE_BUILD) # dont double up + ADD_DEFINITIONS(-D__MMX__) + ENDIF(NOT SUPPORT_SSE_BUILD) + ENDIF(SUPPORT_SSE2_BUILD) + ENDIF(CMAKE_COMPILER_IS_GNUCC) +ENDIF(WITH_RAYOPTIMIZATION) + IF(WITH_IMAGE_OPENJPEG) set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg) set(OPENJPEG_INC ${OPENJPEG}) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 22c090342ef..0957ace301c 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -183,19 +183,38 @@ MACRO(SETUP_LIBLINKS ENDMACRO(SETUP_LIBLINKS) MACRO(TEST_SSE_SUPPORT) - INCLUDE(CheckCXXSourceCompiles) + INCLUDE(CheckCSourceRuns) MESSAGE(STATUS "Detecting SSE support") IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_REQUIRED_FLAGS "-msse -msse2") ELSEIF(MSVC) - SET(CMAKE_REQUIRED_FLAGS "/arch:SSE2") + SET(CMAKE_REQUIRED_FLAGS "/arch:SSE2") # TODO, SSE 1 ? ENDIF() - CHECK_CXX_SOURCE_COMPILES(" + CHECK_C_SOURCE_RUNS(" #include <xmmintrin.h> int main() { __m128 v = _mm_setzero_ps(); return 0; }" SUPPORT_SSE_BUILD) + + CHECK_C_SOURCE_RUNS(" + #include <emmintrin.h> + int main() { __m128d v = _mm_setzero_pd(); return 0; }" + SUPPORT_SSE2_BUILD) + MESSAGE(STATUS "Detecting SSE support") + + IF(SUPPORT_SSE_BUILD) + MESSAGE(STATUS " ...SSE support found.") + ELSE(SUPPORT_SSE_BUILD) + MESSAGE(STATUS " ...SSE support missing.") + ENDIF(SUPPORT_SSE_BUILD) + + IF(SUPPORT_SSE2_BUILD) + MESSAGE(STATUS " ...SSE2 support found.") + ELSE(SUPPORT_SSE2_BUILD) + MESSAGE(STATUS " ...SSE2 support missing.") + ENDIF(SUPPORT_SSE2_BUILD) + ENDMACRO(TEST_SSE_SUPPORT) |