Text archives Help
- 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.