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
This commit is contained in:
Hyper Nova Sun
2022-04-11 21:44:20 -07:00
parent da4ccb502b
commit 40dd46a96a
6 changed files with 24 additions and 0 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -0,0 +1 @@
1

View File

@@ -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\)

View File

@@ -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)

View File

@@ -0,0 +1,3 @@
add_library(A OBJECT a.c)
set_target_properties(A PROPERTIES OSX_ARCHITECTURES ${osx_arch})
install(TARGETS A DESTINATION lib)