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:
parent
2dc39b8c32
commit
e4897a78b9
21
Tests/Architecture/CMakeLists.txt
Normal file
21
Tests/Architecture/CMakeLists.txt
Normal 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
2
Tests/Architecture/bar.c
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
extern int foo(void);
|
||||||
|
int main() { return foo(); }
|
1
Tests/Architecture/foo.c
Normal file
1
Tests/Architecture/foo.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
int foo(void) { return 0; }
|
@ -77,7 +77,8 @@ IF(BUILD_TESTING)
|
|||||||
"Should the tests that use '--build-target package' be run?"
|
"Should the tests that use '--build-target package' be run?"
|
||||||
ON)
|
ON)
|
||||||
MARK_AS_ADVANCED(CTEST_TEST_CPACK)
|
MARK_AS_ADVANCED(CTEST_TEST_CPACK)
|
||||||
IF(APPLE AND CTEST_TEST_CPACK)
|
SET(CTEST_TEST_OSX_ARCH 0)
|
||||||
|
IF(APPLE)
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND sw_vers -productVersion
|
COMMAND sw_vers -productVersion
|
||||||
OUTPUT_VARIABLE OSX_VERSION
|
OUTPUT_VARIABLE OSX_VERSION
|
||||||
@ -87,8 +88,10 @@ IF(BUILD_TESTING)
|
|||||||
MESSAGE(STATUS "Forcing CTEST_TEST_CPACK=OFF on OSX < 10.4")
|
MESSAGE(STATUS "Forcing CTEST_TEST_CPACK=OFF on OSX < 10.4")
|
||||||
MESSAGE(STATUS "OSX_VERSION='${OSX_VERSION}'")
|
MESSAGE(STATUS "OSX_VERSION='${OSX_VERSION}'")
|
||||||
SET(CTEST_TEST_CPACK OFF)
|
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(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,
|
# Use 1500 or CTEST_TEST_TIMEOUT for long test timeout value,
|
||||||
# whichever is greater.
|
# whichever is greater.
|
||||||
@ -133,6 +136,11 @@ IF(BUILD_TESTING)
|
|||||||
IF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
|
IF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
|
||||||
ADD_TEST_MACRO(Policy0002 Policy0002)
|
ADD_TEST_MACRO(Policy0002 Policy0002)
|
||||||
ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "Make")
|
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_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/COnly")
|
||||||
SET(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")
|
SET(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user