Merge topic 'fix-tests-failing-with-Xcode4'

1a53fb7 Use correct default multiple architecture values in test
5f7acc8 Base architecture choice logic on Xcode version
c050c59 Fix BuildDepends test to work with Xcode 4
923b030 Fix Architecture test to work with Xcode 4
This commit is contained in:
Brad King 2011-07-26 14:57:38 -04:00 committed by CMake Topic Stage
commit 2305b575f1
2 changed files with 63 additions and 4 deletions

View File

@ -1,6 +1,32 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
project(Architecture C) project(Architecture C)
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)
set(arch0 i386)
set(arch1 ppc)
if(is_xcode4)
# Xcode 4, use modern architectures as defaults
# Arch 'ppc' no longer works: tools no longer available starting with Xcode 4
set(arch0 i386)
set(arch1 x86_64)
endif()
add_library(foo foo.c) add_library(foo foo.c)
if(CMAKE_OSX_ARCHITECTURES) if(CMAKE_OSX_ARCHITECTURES)
get_property(archs TARGET foo PROPERTY OSX_ARCHITECTURES) get_property(archs TARGET foo PROPERTY OSX_ARCHITECTURES)
@ -10,12 +36,24 @@ if(CMAKE_OSX_ARCHITECTURES)
"Expected [${CMAKE_OSX_ARCHITECTURES}], got [${archs}]." "Expected [${CMAKE_OSX_ARCHITECTURES}], got [${archs}]."
) )
endif() endif()
list(LENGTH archs archs_len)
if(archs_len GREATER 1)
list(GET archs 0 arch0)
list(GET archs 1 arch1)
endif() endif()
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES i386) endif()
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES_DEBUG ppc)
message("is_xcode4='${is_xcode4}'")
message("archs='${archs}'")
message("arch0='${arch0}'")
message("arch1='${arch1}'")
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES ${arch0})
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES_DEBUG ${arch1})
add_executable(bar bar.c) add_executable(bar bar.c)
target_link_libraries(bar foo) target_link_libraries(bar foo)
set_property(TARGET bar PROPERTY OUTPUT_NAME Architecture) set_property(TARGET bar PROPERTY OUTPUT_NAME Architecture)
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES ppc) set_property(TARGET bar PROPERTY OSX_ARCHITECTURES ${arch1})
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES_DEBUG i386) set_property(TARGET bar PROPERTY OSX_ARCHITECTURES_DEBUG ${arch0})

View File

@ -1,9 +1,30 @@
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.6)
project(testRebuild) 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) if(APPLE)
# only use multi-arch if the sysroot exists on this machine # only use multi-arch if the sysroot exists on this machine
if(EXISTS "${CMAKE_OSX_SYSROOT}") if(EXISTS "${CMAKE_OSX_SYSROOT}")
set(CMAKE_OSX_ARCHITECTURES "ppc;i386") set(CMAKE_OSX_ARCHITECTURES "ppc;i386")
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()
endif(EXISTS "${CMAKE_OSX_SYSROOT}") endif(EXISTS "${CMAKE_OSX_SYSROOT}")
endif(APPLE) endif(APPLE)