diff options
author | Hyper Nova Sun <hypernovasun@icloud.com> | 2022-04-12 04:44:20 (GMT) |
---|---|---|
committer | Hyper Nova Sun <hypernovasun@icloud.com> | 2022-04-12 16:11:47 (GMT) |
commit | 40dd46a96a5751f4a109ae555ce3b835b4c9ca68 (patch) | |
tree | 1e813be7ef5e9cd470e5b02ee2322c6b27e13020 /Tests/RunCMake | |
parent | da4ccb502b02af41b9db6c266df0c9ef999a1087 (diff) | |
download | CMake-40dd46a96a5751f4a109ae555ce3b835b4c9ca68.zip CMake-40dd46a96a5751f4a109ae555ce3b835b4c9ca68.tar.gz CMake-40dd46a96a5751f4a109ae555ce3b835b4c9ca68.tar.bz2 |
Xcode: Add tests for OBJECT library per target `OSX_ARCHITECTURES`
Added test to cover handling of when `CMAKE_OSX_ARCHITECTURES` differs from
OBJECT library target's `OSX_ARCHITECTURES`:
TargetOverrideSingleArch:
- When `CMAKE_OSX_ARCHITECTURES` is set to multiple archs,
- But OBJECT library's `OSX_ARCHITECTURES` is set to single
- Assert that OBJECT library target "`HasKnownObjectFileLocation`" and is
installable
TargetOverrideMultiArch:
- When `CMAKE_OSX_ARCHITECTURES` is set to single arch,
- But OBJECT library's `OSX_ARCHITECTURES` is set to multiple
- Assert that OBJECT library target does not "`HasKnownObjectFileLocation`"
and hence not installable
Diffstat (limited to 'Tests/RunCMake')
6 files changed, 24 insertions, 0 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index dbff293..024c388 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -352,6 +352,9 @@ if(MSVC) add_RunCMake_test(MSVCRuntimeTypeInfo) add_RunCMake_test(MSVCWarningFlags) endif() +if(XCODE_VERSION) + set(ObjectLibrary_ARGS -DXCODE_VERSION=${XCODE_VERSION}) +endif() add_RunCMake_test(ObjectLibrary) add_RunCMake_test(ParseImplicitIncludeInfo) add_RunCMake_test(ParseImplicitLinkInfo) diff --git a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake index 8515ba5..0e31b78 100644 --- a/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake +++ b/Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake @@ -8,12 +8,21 @@ run_cmake(BadObjSource2) if(RunCMake_GENERATOR STREQUAL "Xcode" AND "$ENV{CMAKE_OSX_ARCHITECTURES}" MATCHES "[;$]") run_cmake(ImportMultiArch) run_cmake(InstallNotSupported) + + set(osx_archs $ENV{CMAKE_OSX_ARCHITECTURES}) + list(GET osx_archs 0 osx_arch) + run_cmake_with_options(TargetOverrideSingleArch -Dosx_arch=${osx_arch}) else() run_cmake(Import) run_cmake(Install) run_cmake(InstallLinkedObj1) run_cmake(InstallLinkedObj2) + + if(RunCMake_GENERATOR STREQUAL "Xcode" AND XCODE_VERSION VERSION_GREATER_EQUAL 13) + run_cmake(TargetOverrideMultiArch) + endif() endif() + run_cmake(Export) function (run_object_lib_build name) diff --git a/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-result.txt b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-stderr.txt b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-stderr.txt new file mode 100644 index 0000000..eb0593c --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at TargetOverrideMultiArch.cmake:[0-9]+ \(install\): + install TARGETS given OBJECT library "A" whose objects may not be installed + under Xcode with multiple architectures. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch.cmake b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch.cmake new file mode 100644 index 0000000..ada77f8 --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch.cmake @@ -0,0 +1,3 @@ +add_library(A OBJECT a.c) +set_target_properties(A PROPERTIES OSX_ARCHITECTURES "x86_64;arm64") +install(TARGETS A DESTINATION lib) diff --git a/Tests/RunCMake/ObjectLibrary/TargetOverrideSingleArch.cmake b/Tests/RunCMake/ObjectLibrary/TargetOverrideSingleArch.cmake new file mode 100644 index 0000000..3f400e8 --- /dev/null +++ b/Tests/RunCMake/ObjectLibrary/TargetOverrideSingleArch.cmake @@ -0,0 +1,3 @@ +add_library(A OBJECT a.c) +set_target_properties(A PROPERTIES OSX_ARCHITECTURES ${osx_arch}) +install(TARGETS A DESTINATION lib) |