summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
authorHyper Nova Sun <hypernovasun@icloud.com>2022-04-12 04:44:20 (GMT)
committerHyper Nova Sun <hypernovasun@icloud.com>2022-04-12 16:11:47 (GMT)
commit40dd46a96a5751f4a109ae555ce3b835b4c9ca68 (patch)
tree1e813be7ef5e9cd470e5b02ee2322c6b27e13020 /Tests/RunCMake
parentda4ccb502b02af41b9db6c266df0c9ef999a1087 (diff)
downloadCMake-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')
-rw-r--r--Tests/RunCMake/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake9
-rw-r--r--Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-result.txt1
-rw-r--r--Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch-stderr.txt5
-rw-r--r--Tests/RunCMake/ObjectLibrary/TargetOverrideMultiArch.cmake3
-rw-r--r--Tests/RunCMake/ObjectLibrary/TargetOverrideSingleArch.cmake3
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)