Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1363 - trunk/CMake


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1363 - trunk/CMake
  • Date: Wed, 2 May 2007 23:09:43 -0600 (MDT)

Author: abe
Date: Wed May  2 23:09:43 2007
New Revision: 1363

Modified:
   trunk/CMake/CheckSSE.cmake
Log:

Updated CheckSSE code to automatically try "-msse -msse2" command line
options instead of only suggesting they be manually added. Now sse
works on gcc/linux automatically.

M    CheckSSE.cmake


Modified: trunk/CMake/CheckSSE.cmake
==============================================================================
--- trunk/CMake/CheckSSE.cmake  (original)
+++ trunk/CMake/CheckSSE.cmake  Wed May  2 23:09:43 2007
@@ -1,13 +1,44 @@
 
+
 ##################################################################
-# Check to see if the system supports SSE2.
+# Test compilation.
+
+SET(NOT_MANTA_SSE 1)
+
+# First try.
 FILE(WRITE ${CMAKE_BINARY_DIR}/test/test.c "#include <emmintrin.h>\nstatic 
__m128 foo;\n\n")
 EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
   ARGS -c ${CMAKE_CXX_FLAGS} -o /dev/null ${CMAKE_BINARY_DIR}/test/test.c
   OUTPUT_VARIABLE OUTPUT
   RETURN_VALUE NOT_MANTA_SSE )
 
-IF(NOT NOT_MANTA_SSE)
+# If not, Try adding -msse flags and see if that makes it work.
+IF (NOT_MANTA_SSE) 
+
+  SET(BACKUP ${CMAKE_CXX_FLAGS})
+  SET(CMAKE_CXX_FLAGS "-msse -msse2 ${BACKUP}")
+  
+  # Test again.
+  FILE(WRITE ${CMAKE_BINARY_DIR}/test/test.c "#include <emmintrin.h>\nstatic 
__m128 foo;\n\n")
+  EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
+    ARGS -c ${CMAKE_CXX_FLAGS} -o /dev/null ${CMAKE_BINARY_DIR}/test/test.c
+    OUTPUT_VARIABLE OUTPUT
+    RETURN_VALUE NOT_MANTA_SSE )
+
+  # Reset the flags if they didn't help
+  IF(NOT_MANTA_SSE)
+    SET(CMAKE_CXX_FLAGS ${BACKUP})
+  ENDIF(NOT_MANTA_SSE)
+
+ENDIF(NOT_MANTA_SSE) 
+
+# Add additional try compile tests here...
+
+##################################################################
+# Check if any of the tests passed.
+
+IF(NOT NOT_MANTA_SSE) # In other words, if any tests passed.
+
   SET(MANTA_SSE TRUE CACHE BOOL "Compile SSE code.")
 
   # Check to see if the system is using gcc sse intrinsics.
@@ -15,22 +46,28 @@
   EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
     ARGS -c ${CMAKE_CXX_FLAGS} -o /dev/null ${CMAKE_BINARY_DIR}/test/test.c
     OUTPUT_VARIABLE OUTPUT
-    RETURN_VALUE NOT_MANTA_SSE_GCC )  
-  
+    RETURN_VALUE NOT_MANTA_SSE_GCC )
+
   IF(NOT NOT_MANTA_SSE_GCC)
     SET(MANTA_SSE_GCC TRUE CACHE BOOL "Found *epi64x intrinsics")
   ELSE(NOT NOT_MANTA_SSE_GCC)
     SET(MANTA_SSE_GCC FALSE CACHE BOOL "Couldn't find *epi64x intrinsics" 
FORCE)
   ENDIF(NOT NOT_MANTA_SSE_GCC)
 
-ELSE(NOT NOT_MANTA_SSE)
+ELSE(NOT NOT_MANTA_SSE) # All tests failed.
+
   IF(MANTA_SSE)
-    # We tried to turn it on and it isn't available
-    MESSAGE("Couldn't compile with sse.  Try adding -msse -msse2 to 
CMAKE_CXX_FLAGS compiler flags.")
-    MESSAGE("compiler: " ${CMAKE_CXX_COMPILER})
+    MESSAGE("Couldn't compile with sse (already tried -msse options..).")
+    MESSAGE("compiler:       " ${CMAKE_CXX_COMPILER})
     MESSAGE("compiler flags: " ${CMAKE_CXX_FLAGS})
     MESSAGE(${OUTPUT})
   ENDIF(MANTA_SSE)
+
+  # Nothing is available.
   SET(MANTA_SSE FALSE CACHE BOOL "Couldn't compile SSE code." FORCE)
   SET(MANTA_SSE_GCC FALSE CACHE BOOL "Couldn't find *epi64x intrinsics." 
FORCE)
-ENDIF(NOT NOT_MANTA_SSE)
\ No newline at end of file
+
+ENDIF(NOT NOT_MANTA_SSE)
+
+
+




  • [MANTA] r1363 - trunk/CMake, abe, 05/02/2007

Archive powered by MHonArc 2.6.16.

Top of page