[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31233] trunk/blender: bugfix [#23257] cmake tests for SSE, but SSE2 gets enabled

Campbell Barton ideasman42 at gmail.com
Wed Aug 11 10:23:49 CEST 2010


Revision: 31233
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31233
Author:   campbellbarton
Date:     2010-08-11 10:23:48 +0200 (Wed, 11 Aug 2010)

Log Message:
-----------
bugfix [#23257] cmake tests for SSE, but SSE2 gets enabled
patch from Vinay Pawar, some minor changes by me.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/cmake/macros.cmake

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2010-08-11 05:28:44 UTC (rev 31232)
+++ trunk/blender/CMakeLists.txt	2010-08-11 08:23:48 UTC (rev 31233)
@@ -316,12 +316,6 @@
 
 	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 @@
 			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 @@
 		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 @@
 		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})

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake	2010-08-11 05:28:44 UTC (rev 31232)
+++ trunk/blender/build_files/cmake/macros.cmake	2010-08-11 08:23:48 UTC (rev 31233)
@@ -183,19 +183,38 @@
 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)
 
 





More information about the Bf-blender-cvs mailing list