[cmake-commits] alex committed TestBigEndian.cmake 1.15 1.16

cmake-commits at cmake.org cmake-commits at cmake.org
Mon Aug 13 11:04:21 EDT 2007


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv4944

Modified Files:
	TestBigEndian.cmake 
Log Message:

ENH: for universal binaries return the endianess based on the processor

Alex


Index: TestBigEndian.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/TestBigEndian.cmake,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- TestBigEndian.cmake	13 Aug 2007 01:08:14 -0000	1.15
+++ TestBigEndian.cmake	13 Aug 2007 15:04:19 -0000	1.16
@@ -42,7 +42,7 @@
   
      FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c"
           TEST_ENDIANESS_FILE_CONTENT)
-      
+
      TRY_COMPILE(HAVE_${VARIABLE}
       "${CMAKE_BINARY_DIR}"
       "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c"
@@ -53,23 +53,33 @@
 
         FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
             CMAKE_TEST_ENDIANESS_STRINGS_LE LIMIT_COUNT 1 REGEX "THIS IS LITTLE ENDIAN")
-  
+
         FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin"
             CMAKE_TEST_ENDIANESS_STRINGS_BE LIMIT_COUNT 1 REGEX "THIS IS BIG ENDIAN")
- 
+
+        # on mac, if there are universal binaries built both will be true
+        # return the result depending on the machine on which cmake runs
+        IF(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
+          IF(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc)
+            SET(CMAKE_TEST_ENDIANESS_STRINGS_BE TRUE)
+            SET(CMAKE_TEST_ENDIANESS_STRINGS_LE FALSE)
+          ELSE(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc)
+            SET(CMAKE_TEST_ENDIANESS_STRINGS_BE FALSE)
+            SET(CMAKE_TEST_ENDIANESS_STRINGS_LE TRUE)
+          ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES powerpc)
+          MESSAGE(STATUS "TEST_BIG_ENDIAN found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
+        ENDIF(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
+
         IF(CMAKE_TEST_ENDIANESS_STRINGS_LE)
           SET(${VARIABLE} 0 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
           MESSAGE(STATUS "Check if the system is big endian - little endian")
         ENDIF(CMAKE_TEST_ENDIANESS_STRINGS_LE)
-        
+
         IF(CMAKE_TEST_ENDIANESS_STRINGS_BE)
           SET(${VARIABLE} 1 CACHE INTERNAL "Result of TEST_BIG_ENDIAN" FORCE)
           MESSAGE(STATUS "Check if the system is big endian - big endian")
         ENDIF(CMAKE_TEST_ENDIANESS_STRINGS_BE)
-        
-        IF(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
-          MESSAGE(STATUS "TEST_BIG_ENDIAN found different results, consider setting CMAKE_OSX_ARCHITECTURES or CMAKE_TRY_COMPILE_OSX_ARCHITECTURES to one or no architecture !")
-        ENDIF(CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  CMAKE_TEST_ENDIANESS_STRINGS_LE)
+
         IF(NOT CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  NOT CMAKE_TEST_ENDIANESS_STRINGS_LE)
           MESSAGE(SEND_ERROR "TEST_BIG_ENDIAN found no result!")
         ENDIF(NOT CMAKE_TEST_ENDIANESS_STRINGS_BE  AND  NOT CMAKE_TEST_ENDIANESS_STRINGS_LE)



More information about the Cmake-commits mailing list