Test OSX_ARCHITECTURES target property

We test the property with a project that fails to link due to an
architecture mismatch between an executable and a static library.

See issue #8725.
This commit is contained in:
Brad King 2009-10-21 13:01:17 -04:00
parent 2dc39b8c32
commit e4897a78b9
4 changed files with 34 additions and 2 deletions

View File

@ -0,0 +1,21 @@
cmake_minimum_required(VERSION 2.8)
project(Architecture C)
add_library(foo foo.c)
if(CMAKE_OSX_ARCHITECTURES)
get_property(archs TARGET foo PROPERTY OSX_ARCHITECTURES)
if(NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "${archs}")
message(FATAL_ERROR
"OSX_ARCHITECTURES property not initialized by CMAKE_OSX_ARCHITECTURES.\n"
"Expected [${CMAKE_OSX_ARCHITECTURES}], got [${archs}]."
)
endif()
endif()
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES i386)
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES_DEBUG ppc)
add_executable(bar bar.c)
target_link_libraries(bar foo)
set_property(TARGET bar PROPERTY OUTPUT_NAME Architecture)
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES ppc)
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES_DEBUG i386)

2
Tests/Architecture/bar.c Normal file
View File

@ -0,0 +1,2 @@
extern int foo(void);
int main() { return foo(); }

1
Tests/Architecture/foo.c Normal file
View File

@ -0,0 +1 @@
int foo(void) { return 0; }

View File

@ -77,7 +77,8 @@ IF(BUILD_TESTING)
"Should the tests that use '--build-target package' be run?"
ON)
MARK_AS_ADVANCED(CTEST_TEST_CPACK)
IF(APPLE AND CTEST_TEST_CPACK)
SET(CTEST_TEST_OSX_ARCH 0)
IF(APPLE)
EXECUTE_PROCESS(
COMMAND sw_vers -productVersion
OUTPUT_VARIABLE OSX_VERSION
@ -87,8 +88,10 @@ IF(BUILD_TESTING)
MESSAGE(STATUS "Forcing CTEST_TEST_CPACK=OFF on OSX < 10.4")
MESSAGE(STATUS "OSX_VERSION='${OSX_VERSION}'")
SET(CTEST_TEST_CPACK OFF)
ELSE(OSX_VERSION MATCHES "^10\\.[0123]" OR OSX_VERSION MATCHES "ProductVersion:\t10\\.[0123]")
SET(CTEST_TEST_OSX_ARCH 1)
ENDIF(OSX_VERSION MATCHES "^10\\.[0123]" OR OSX_VERSION MATCHES "ProductVersion:\t10\\.[0123]")
ENDIF(APPLE AND CTEST_TEST_CPACK)
ENDIF(APPLE)
# Use 1500 or CTEST_TEST_TIMEOUT for long test timeout value,
# whichever is greater.
@ -133,6 +136,11 @@ IF(BUILD_TESTING)
IF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
ADD_TEST_MACRO(Policy0002 Policy0002)
ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
IF(CTEST_TEST_OSX_ARCH)
ADD_TEST_MACRO(Architecture Architecture)
SET_TESTS_PROPERTIES(Architecture PROPERTIES
PASS_REGULAR_EXPRESSION "(file is not of required architecture|does not match cputype)")
ENDIF(CTEST_TEST_OSX_ARCH)
SET(CMAKE_BUILD_TEST_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/COnly")
SET(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")