[cmake-commits] alex committed CMakeDetermineSystem.cmake 1.18 1.18.4.1

cmake-commits at cmake.org cmake-commits at cmake.org
Tue May 1 13:11:04 EDT 2007


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

Modified Files:
      Tag: CMake-CrossCompileBasic
	CMakeDetermineSystem.cmake 
Log Message:

ENH: new variable CMAKE_TOOLCHAIN_FILE which can be used to specify a cmake
file which will be loaded even before cmake tries to detect the system, so
people can set e.g. CMAKE_SYSTEM to the value for their target platform.
Only detect CMAKE_SYSTEM if it isn't set yet.

Alex


Index: CMakeDetermineSystem.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/CMakeDetermineSystem.cmake,v
retrieving revision 1.18
retrieving revision 1.18.4.1
diff -u -d -r1.18 -r1.18.4.1
--- CMakeDetermineSystem.cmake	21 Feb 2007 15:29:36 -0000	1.18
+++ CMakeDetermineSystem.cmake	1 May 2007 17:11:01 -0000	1.18.4.1
@@ -25,37 +25,48 @@
 # Ultrix                        ULTRIX  
 # cygwin                        CYGWIN_NT-5.1
 # MacOSX                        Darwin
-IF(UNIX)
-  FIND_PROGRAM(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
-  IF(CMAKE_UNAME)
-    EXEC_PROGRAM(uname ARGS -s OUTPUT_VARIABLE CMAKE_SYSTEM_NAME)
-    EXEC_PROGRAM(uname ARGS -r OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
-    IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-      EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR
-        RETURN_VALUE val)
-    ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux")
-      EXEC_PROGRAM(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR
-        RETURN_VALUE val)
-      IF("${val}" GREATER 0)
+
+IF(CMAKE_TOOLCHAIN_FILE)
+   GET_FILENAME_COMPONENT(_ABS_CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_FILE} ABSOLUTE)
+   INCLUDE(${_ABS_CMAKE_TOOLCHAIN_FILE})
+ENDIF(CMAKE_TOOLCHAIN_FILE)
+
+IF(NOT CMAKE_SYSTEM_NAME)
+  IF(UNIX)
+    FIND_PROGRAM(CMAKE_UNAME_XXX uname)
+    message(STATUS "uname: ${CMAKE_UNAME_XXX}")
+    FIND_PROGRAM(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
+    IF(CMAKE_UNAME)
+      EXEC_PROGRAM(uname ARGS -s OUTPUT_VARIABLE CMAKE_SYSTEM_NAME)
+      EXEC_PROGRAM(uname ARGS -r OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
+      IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
         EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR
           RETURN_VALUE val)
+      ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux")
+        EXEC_PROGRAM(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR
+          RETURN_VALUE val)
+        IF("${val}" GREATER 0)
+          EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_PROCESSOR
+            RETURN_VALUE val)
+        ENDIF("${val}" GREATER 0)
+      ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+      # check the return of the last uname -m or -p 
+      IF("${val}" GREATER 0)
+          SET(CMAKE_SYSTEM_PROCESSOR "unknown")
       ENDIF("${val}" GREATER 0)
-    ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-    # check the return of the last uname -m or -p 
-    IF("${val}" GREATER 0)
-        SET(CMAKE_SYSTEM_PROCESSOR "unknown")
-    ENDIF("${val}" GREATER 0)
-    SET(CMAKE_UNAME ${CMAKE_UNAME} CACHE INTERNAL "uname command")
-    # processor may have double quote in the name, and that needs to be removed
-    STRING(REGEX REPLACE "\"" "" CMAKE_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
-    STRING(REGEX REPLACE "/" "_" CMAKE_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
-  ENDIF(CMAKE_UNAME)
-ELSE(UNIX)
-  IF(WIN32)
-    SET (CMAKE_SYSTEM_NAME "Windows")
-    SET (CMAKE_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITECTURE}")
-  ENDIF(WIN32)
-ENDIF(UNIX)
+      SET(CMAKE_UNAME ${CMAKE_UNAME} CACHE INTERNAL "uname command")
+      # processor may have double quote in the name, and that needs to be removed
+      STRING(REGEX REPLACE "\"" "" CMAKE_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
+      STRING(REGEX REPLACE "/" "_" CMAKE_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
+    ENDIF(CMAKE_UNAME)
+  ELSE(UNIX)
+    IF(WIN32)
+      SET (CMAKE_SYSTEM_NAME "Windows")
+      SET (CMAKE_SYSTEM_PROCESSOR "$ENV{PROCESSOR_ARCHITECTURE}")
+    ENDIF(WIN32)
+  ENDIF(UNIX)
+ENDIF(NOT CMAKE_SYSTEM_NAME)
+
 
 IF(NOT CMAKE_SYSTEM_NAME)
   SET(CMAKE_SYSTEM_NAME "UnknownOS")



More information about the Cmake-commits mailing list