瀏覽代碼

Base architecture choice logic on Xcode version

Not on Darwin version.
David Cole 14 年之前
父節點
當前提交
5f7acc8d75
共有 2 個文件被更改,包括 37 次插入7 次删除
  1. 19 5
      Tests/Architecture/CMakeLists.txt
  2. 18 2
      Tests/BuildDepends/Project/CMakeLists.txt

+ 19 - 5
Tests/Architecture/CMakeLists.txt

@@ -3,8 +3,24 @@ project(Architecture C)
 
 set(archs i386 ppc)
 
-if(NOT "${DARWIN_MAJOR_VERSION}.${DARWIN_MINOR_VERSION}" VERSION_LESS 10.0)
-  # Snow Leopard or later, use modern architectures as defaults
+function(test_for_xcode4 result_var)
+  set(${result_var} 0 PARENT_SCOPE)
+  if(APPLE)
+    execute_process(COMMAND xcodebuild -version
+      OUTPUT_VARIABLE ov RESULT_VARIABLE rv
+      )
+    if("${rv}" STREQUAL "0")
+      if(ov MATCHES "^Xcode 4.[0-9].*$")
+        set(${result_var} 1 PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
+test_for_xcode4(is_xcode4)
+
+if(is_xcode4)
+  # Xcode 4, use modern architectures as defaults
   # Arch 'ppc' no longer works: tools no longer available starting with Xcode 4
   set(archs i386 x86_64)
 endif()
@@ -24,11 +40,9 @@ list(LENGTH archs archs_len)
 if(archs_len GREATER 1)
   list(GET archs 0 arch0)
   list(GET archs 1 arch1)
-else()
-  set(arch0 ${archs})
-  set(arch1 ${archs})
 endif()
 
+message("is_xcode4='${is_xcode4}'")
 message("archs='${archs}'")
 message("arch0='${arch0}'")
 message("arch1='${arch1}'")

+ 18 - 2
Tests/BuildDepends/Project/CMakeLists.txt

@@ -1,11 +1,27 @@
 cmake_minimum_required(VERSION 2.6)
 project(testRebuild)
+
+function(test_for_xcode4 result_var)
+  set(${result_var} 0 PARENT_SCOPE)
+  if(APPLE)
+    execute_process(COMMAND xcodebuild -version
+      OUTPUT_VARIABLE ov RESULT_VARIABLE rv
+      )
+    if("${rv}" STREQUAL "0")
+      if(ov MATCHES "^Xcode 4.[0-9].*$")
+        set(${result_var} 1 PARENT_SCOPE)
+      endif()
+    endif()
+  endif()
+endfunction()
+
 if(APPLE)
   # only use multi-arch if the sysroot exists on this machine
   if(EXISTS "${CMAKE_OSX_SYSROOT}")
     set(CMAKE_OSX_ARCHITECTURES "ppc;i386")
-    if(NOT "${DARWIN_MAJOR_VERSION}.${DARWIN_MINOR_VERSION}" VERSION_LESS 10.0)
-      # Snow Leopard or later, use modern architectures as defaults
+    test_for_xcode4(is_xcode4)
+    if(is_xcode4)
+      # Xcode 4, use modern architectures as defaults
       # Arch 'ppc' no longer works: tools no longer available starting with Xcode 4
       set(CMAKE_OSX_ARCHITECTURES i386 x86_64)
     endif()