128a9dcab78e45ff995c664d2e2c809c8b45c7d9
[platform/upstream/cmake.git] / Tests / RunCMake / XcodeProject / RunCMakeTest.cmake
1 include(RunCMake)
2
3 run_cmake(ExplicitCMakeLists)
4 run_cmake(ImplicitCMakeLists)
5 run_cmake(InterfaceLibSources)
6 run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
7 run_cmake(InheritedParameters)
8
9 run_cmake(XcodeFileType)
10 run_cmake(XcodeAttributeLocation)
11 run_cmake(XcodeAttributeGenex)
12 run_cmake(XcodeAttributeGenexError)
13 run_cmake(XcodeGenerateTopLevelProjectOnly)
14
15 if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
16   run_cmake(XcodeDuplicateCustomCommand)
17 endif()
18
19 function(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
20   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build)
21   run_cmake(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
22   set(RunCMake_TEST_NO_CLEAN 1)
23   run_cmake_command(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build ${CMAKE_COMMAND} --build . --target shared_lib)
24 endfunction()
25
26 XcodeGenerateTopLevelProjectOnlyWithObjectLibrary()
27
28 function(LinkBinariesBuildPhase mode)
29   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LinkBinariesBuildPhase_${mode}-build)
30   set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_LINK_BUILD_PHASE_MODE=${mode}")
31   run_cmake(LinkBinariesBuildPhase_${mode})
32   set(RunCMake_TEST_NO_CLEAN 1)
33   run_cmake_command(LinkBinariesBuildPhase_${mode}-build ${CMAKE_COMMAND} --build .)
34 endfunction()
35
36 LinkBinariesBuildPhase(NONE)
37 LinkBinariesBuildPhase(BUILT_ONLY)
38 LinkBinariesBuildPhase(KNOWN_LOCATION)
39 run_cmake(LinkBinariesBuildPhase_INVALID)
40
41 run_cmake(XcodeObjectNeedsEscape)
42 run_cmake(XcodeObjectNeedsQuote)
43 run_cmake(XcodeOptimizationFlags)
44 run_cmake(XcodePreserveNonOptimizationFlags)
45 run_cmake(XcodePreserveObjcFlag)
46 run_cmake(XcodePrecompileHeaders)
47 if (NOT XCODE_VERSION VERSION_LESS 6)
48   run_cmake(XcodePlatformFrameworks)
49 endif()
50
51 run_cmake(PerConfigPerSourceFlags)
52 run_cmake(PerConfigPerSourceOptions)
53 run_cmake(PerConfigPerSourceDefinitions)
54 run_cmake(PerConfigPerSourceIncludeDirs)
55
56 if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
57
58   function(XcodeObjectLibsInTwoProjectsiOS)
59     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-ios)
60     set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS")
61
62     run_cmake(XcodeObjectLibsInTwoProjects)
63
64     set(RunCMake_TEST_NO_CLEAN 1)
65
66     run_cmake_command(XcodeObjectLibsInTwoProjects-build-ios ${CMAKE_COMMAND} --build . --target shared_lib -- -sdk iphonesimulator)
67   endfunction()
68
69   XcodeObjectLibsInTwoProjectsiOS()
70
71   function(XcodeObjectLibsInTwoProjectsMacOS)
72     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-macos)
73
74     run_cmake(XcodeObjectLibsInTwoProjects)
75
76     set(RunCMake_TEST_NO_CLEAN 1)
77
78     run_cmake_command(XcodeObjectLibsInTwoProjects-build-macos ${CMAKE_COMMAND} --build . --target shared_lib)
79   endfunction()
80
81   XcodeObjectLibsInTwoProjectsMacOS()
82
83 endif()
84
85 function(XcodeSchemaGeneration)
86   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
87   set(RunCMake_TEST_NO_CLEAN 1)
88   set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
89
90   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
91   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
92
93   run_cmake(XcodeSchemaGeneration)
94   if (XCODE_VERSION VERSION_GREATER_EQUAL 13)
95     set(maybe_destination -destination platform=macOS)
96   else()
97     set(maybe_destination "")
98   endif()
99   run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo ${maybe_destination} build)
100 endfunction()
101
102 if(NOT XCODE_VERSION VERSION_LESS 7)
103   XcodeSchemaGeneration()
104   run_cmake(XcodeSchemaProperty)
105 endif()
106
107 function(XcodeDependOnZeroCheck)
108   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build)
109   set(RunCMake_TEST_NO_CLEAN 1)
110
111   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
112   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
113
114   run_cmake(XcodeDependOnZeroCheck)
115   run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib)
116   run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib)
117 endfunction()
118
119 XcodeDependOnZeroCheck()
120
121 function(XcodeObjcxxFlags testName)
122   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${testName}-build)
123   set(RunCMake_TEST_NO_CLEAN 1)
124
125   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
126   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
127
128   run_cmake(${testName})
129   run_cmake_command(${testName}-build ${CMAKE_COMMAND} --build .)
130 endfunction()
131
132 XcodeObjcxxFlags(XcodeObjcFlags)
133 XcodeObjcxxFlags(XcodeObjcxxFlags)
134
135 function(XcodeRemoveExcessiveISystem)
136   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystem-build)
137   run_cmake(XcodeRemoveExcessiveISystem)
138   set(RunCMake_TEST_NO_CLEAN 1)
139   run_cmake_command(XcodeRemoveExcessiveISystem-build ${CMAKE_COMMAND} --build .)
140 endfunction()
141
142 XcodeRemoveExcessiveISystem()
143
144 function(XcodeXCConfig)
145   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeXCConfig-build)
146   run_cmake(XcodeXCConfig)
147   set(RunCMake_TEST_NO_CLEAN 1)
148   run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Debug)
149   run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Release)
150 endfunction()
151
152 XcodeXCConfig()
153
154 function(BundleLinkBundle)
155   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BundleLinkBundle-build)
156   run_cmake(BundleLinkBundle)
157   set(RunCMake_TEST_NO_CLEAN 1)
158   run_cmake_command(BundleLinkBundle-build ${CMAKE_COMMAND} --build .)
159 endfunction()
160
161 BundleLinkBundle()
162
163
164 # Isolate device tests from host architecture selection.
165 unset(ENV{CMAKE_OSX_ARCHITECTURES})
166
167 # Use a single build tree for a few tests without cleaning.
168
169 if(NOT XCODE_VERSION VERSION_LESS 5)
170   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeInstallIOS-build)
171   set(RunCMake_TEST_NO_CLEAN 1)
172   set(RunCMake_TEST_OPTIONS
173     "-DCMAKE_SYSTEM_NAME=iOS"
174     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_BINARY_DIR}/ios_install")
175
176   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
177   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
178
179   run_cmake(XcodeInstallIOS)
180   run_cmake_command(XcodeInstallIOS-install ${CMAKE_COMMAND} --build . --target install)
181
182   unset(RunCMake_TEST_BINARY_DIR)
183   unset(RunCMake_TEST_NO_CLEAN)
184   unset(RunCMake_TEST_OPTIONS)
185
186   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesOSX-build)
187   set(RunCMake_TEST_NO_CLEAN 1)
188   set(RunCMake_TEST_OPTIONS
189     "-DCMAKE_SYSTEM_NAME=Darwin"
190     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
191
192   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
193   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
194
195   run_cmake(XcodeBundles)
196   run_cmake_command(XcodeBundles-build-macOS ${CMAKE_COMMAND} --build .)
197   run_cmake_command(XcodeBundles-install-macOS ${CMAKE_COMMAND} --build . --target install)
198
199   unset(RunCMake_TEST_BINARY_DIR)
200   unset(RunCMake_TEST_NO_CLEAN)
201   unset(RunCMake_TEST_OPTIONS)
202
203   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesIOS-build)
204   set(RunCMake_TEST_NO_CLEAN 1)
205   set(RunCMake_TEST_OPTIONS
206     "-DCMAKE_SYSTEM_NAME=iOS"
207     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
208
209   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
210   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
211
212   run_cmake(XcodeBundles)
213   run_cmake_command(XcodeBundles-build-iOS ${CMAKE_COMMAND} --build .)
214   run_cmake_command(XcodeBundles-install-iOS ${CMAKE_COMMAND} --build . --target install)
215
216   unset(RunCMake_TEST_BINARY_DIR)
217   unset(RunCMake_TEST_NO_CLEAN)
218   unset(RunCMake_TEST_OPTIONS)
219 endif()
220
221 if(NOT XCODE_VERSION VERSION_LESS 7)
222   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesWatchOS-build)
223   set(RunCMake_TEST_NO_CLEAN 1)
224   set(RunCMake_TEST_OPTIONS
225     "-DCMAKE_SYSTEM_NAME=watchOS"
226     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
227
228   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
229   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
230
231   run_cmake(XcodeBundles)
232   run_cmake_command(XcodeBundles-build-watchOS ${CMAKE_COMMAND} --build .)
233   run_cmake_command(XcodeBundles-install-watchOS ${CMAKE_COMMAND} --build . --target install)
234
235   unset(RunCMake_TEST_BINARY_DIR)
236   unset(RunCMake_TEST_NO_CLEAN)
237   unset(RunCMake_TEST_OPTIONS)
238 endif()
239
240 if(NOT XCODE_VERSION VERSION_LESS 7.1)
241   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesTvOS-build)
242   set(RunCMake_TEST_NO_CLEAN 1)
243   set(RunCMake_TEST_OPTIONS
244     "-DCMAKE_SYSTEM_NAME=tvOS"
245     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
246
247   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
248   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
249
250   run_cmake(XcodeBundles)
251   run_cmake_command(XcodeBundles-build-tvOS ${CMAKE_COMMAND} --build .)
252   run_cmake_command(XcodeBundles-install-tvOS ${CMAKE_COMMAND} --build . --target install)
253
254   unset(RunCMake_TEST_BINARY_DIR)
255   unset(RunCMake_TEST_NO_CLEAN)
256   unset(RunCMake_TEST_OPTIONS)
257 endif()
258
259 if(NOT XCODE_VERSION VERSION_LESS 7)
260   set(RunCMake_TEST_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
261   run_cmake(XcodeTbdStub)
262   unset(RunCMake_TEST_OPTIONS)
263 endif()
264
265 if(XCODE_VERSION VERSION_GREATER_EQUAL 6)
266   # XcodeIOSInstallCombined
267   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombined-build)
268   set(RunCMake_TEST_NO_CLEAN 1)
269   set(RunCMake_TEST_OPTIONS
270     "-DCMAKE_SYSTEM_NAME=iOS"
271     "-DCMAKE_IOS_INSTALL_COMBINED=YES"
272     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
273
274   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
275   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
276
277   run_cmake(XcodeIOSInstallCombined)
278   run_cmake_command(XcodeIOSInstallCombined-build ${CMAKE_COMMAND} --build .)
279   if(XCODE_VERSION VERSION_LESS 12)
280     run_cmake_command(XcodeIOSInstallCombined-install ${CMAKE_COMMAND} --build . --target install)
281   endif()
282   # --build defaults to Debug, --install defaults to Release, so we have to
283   # specify the configuration explicitly
284   run_cmake_command(XcodeIOSInstallCombined-cmakeinstall
285     ${CMAKE_COMMAND} --install . --config Debug
286   )
287
288   unset(RunCMake_TEST_BINARY_DIR)
289   unset(RunCMake_TEST_NO_CLEAN)
290   unset(RunCMake_TEST_OPTIONS)
291
292   # XcodeIOSInstallCombinedPrune
293   # FIXME(#24011): Xcode 14 removed support for older architectures the test needs.
294   if(XCODE_VERSION VERSION_LESS 14)
295     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedPrune-build)
296     set(RunCMake_TEST_NO_CLEAN 1)
297     set(RunCMake_TEST_OPTIONS
298       "-DCMAKE_SYSTEM_NAME=iOS"
299       "-DCMAKE_IOS_INSTALL_COMBINED=YES"
300       "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
301
302     file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
303     file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
304
305     run_cmake(XcodeIOSInstallCombinedPrune)
306     run_cmake_command(XcodeIOSInstallCombinedPrune-build ${CMAKE_COMMAND} --build .)
307     if(XCODE_VERSION VERSION_LESS 12)
308       run_cmake_command(XcodeIOSInstallCombinedPrune-install ${CMAKE_COMMAND} --build . --target install)
309     endif()
310     # --build defaults to Debug, --install defaults to Release, so we have to
311     # specify the configuration explicitly
312     run_cmake_command(XcodeIOSInstallCombinedPrune-cmakeinstall
313       ${CMAKE_COMMAND} --install . --config Debug
314     )
315
316     unset(RunCMake_TEST_BINARY_DIR)
317     unset(RunCMake_TEST_NO_CLEAN)
318     unset(RunCMake_TEST_OPTIONS)
319   endif()
320
321   # XcodeIOSInstallCombinedSingleArch
322   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedSingleArch-build)
323   set(RunCMake_TEST_NO_CLEAN 1)
324   set(RunCMake_TEST_OPTIONS
325     "-DCMAKE_SYSTEM_NAME=iOS"
326     "-DCMAKE_IOS_INSTALL_COMBINED=YES"
327     "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
328
329   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
330   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
331
332   run_cmake(XcodeIOSInstallCombinedSingleArch)
333   run_cmake_command(XcodeIOSInstallCombinedSingleArch-build ${CMAKE_COMMAND} --build .)
334   if(XCODE_VERSION VERSION_LESS 12)
335     run_cmake_command(XcodeIOSInstallCombinedSingleArch-install ${CMAKE_COMMAND} --build . --target install)
336   endif()
337   # --build defaults to Debug, --install defaults to Release, so we have to
338   # specify the configuration explicitly
339   run_cmake_command(XcodeIOSInstallCombinedSingleArch-cmakeinstall
340     ${CMAKE_COMMAND} --install . --config Debug
341   )
342
343   unset(RunCMake_TEST_BINARY_DIR)
344   unset(RunCMake_TEST_NO_CLEAN)
345   unset(RunCMake_TEST_OPTIONS)
346 endif()
347
348 if(NOT XCODE_VERSION VERSION_LESS 5)
349   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeMultiplatform-build)
350   set(RunCMake_TEST_NO_CLEAN 1)
351   set(RunCMake_TEST_OPTIONS "${IOS_DEPLOYMENT_TARGET}")
352
353   file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
354   file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
355
356   run_cmake(XcodeMultiplatform)
357
358   # build ios before macos
359   run_cmake_command(XcodeMultiplatform-iphonesimulator-build ${CMAKE_COMMAND} --build . -- -sdk iphonesimulator)
360   run_cmake_command(XcodeMultiplatform-iphonesimulator-install ${CMAKE_COMMAND} --build . --target install -- -sdk iphonesimulator DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_iphonesimulator)
361
362   run_cmake_command(XcodeMultiplatform-macosx-build ${CMAKE_COMMAND} --build . -- -sdk macosx)
363   run_cmake_command(XcodeMultiplatform-macosx-install ${CMAKE_COMMAND} --build . --target install -- -sdk macosx DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_macosx)
364
365   unset(RunCMake_TEST_BINARY_DIR)
366   unset(RunCMake_TEST_NO_CLEAN)
367   unset(RunCMake_TEST_OPTIONS)
368 endif()
369
370 if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
371   function(deployment_target_test SystemName SDK)
372     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DeploymentTarget-${SDK}-build)
373     set(RunCMake_TEST_NO_CLEAN 1)
374     set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=${SystemName}" "-DCMAKE_OSX_SYSROOT=${SDK}")
375
376     file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
377     file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
378
379     run_cmake(DeploymentTarget)
380     run_cmake_command(DeploymentTarget-${SDK} ${CMAKE_COMMAND} --build .)
381   endfunction()
382
383   deployment_target_test(Darwin macosx)
384   deployment_target_test(iOS iphoneos)
385   deployment_target_test(iOS iphonesimulator)
386   deployment_target_test(tvOS appletvos)
387   deployment_target_test(tvOS appletvsimulator)
388   deployment_target_test(watchOS watchos)
389   deployment_target_test(watchOS watchsimulator)
390 endif()
391
392 if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
393   function(xctest_lookup_test SystemName SDK)
394     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XCTestLookup-${SDK}-build)
395     set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=${SystemName}" "-DCMAKE_OSX_SYSROOT=${SDK}")
396
397     run_cmake(XCTestLookup)
398   endfunction()
399
400   xctest_lookup_test(Darwin macosx)
401   xctest_lookup_test(iOS iphoneos)
402   xctest_lookup_test(iOS iphonesimulator)
403   xctest_lookup_test(tvOS appletvos)
404   xctest_lookup_test(tvOS appletvsimulator)
405 endif()
406
407 if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
408   function(XcodeRemoveExcessiveISystemSDK SDK)
409     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystemSDK-${SDK}-build)
410     set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS" "-DCMAKE_OSX_SYSROOT=${SDK}")
411     run_cmake(XcodeRemoveExcessiveISystem)
412     set(RunCMake_TEST_NO_CLEAN 1)
413     run_cmake_command(XcodeRemoveExcessiveISystemSDK-${SDK}-build ${CMAKE_COMMAND} --build .)
414   endfunction()
415
416   XcodeRemoveExcessiveISystemSDK(iphoneos)
417   XcodeRemoveExcessiveISystemSDK(iphonesimulator)
418 endif()
419
420 if (XCODE_VERSION VERSION_GREATER_EQUAL 7.3)
421   function(xctest_add_bundle_test SystemName SDK BuildSystemVersion ExpectedOutputDir)
422     set(RunCMake_TEST_BINARY_DIR
423       ${RunCMake_BINARY_DIR}/DeploymentTarget-${SystemName}-${SDK}-${BuildSystemVersion}-build)
424     set(RunCMake_TEST_OPTIONS
425       "-DCMAKE_SYSTEM_NAME=${SystemName}"
426       "-DCMAKE_OSX_SYSROOT=${SDK}"
427       "-DTEST_EXPECTED_OUTPUT_DIR=${ExpectedOutputDir}")
428     unset(RunCMake_GENERATOR_TOOLSET)
429     if(BuildSystemVersion)
430       set(RunCMake_GENERATOR_TOOLSET "buildsystem=${BuildSystemVersion}")
431     endif()
432     run_cmake(XCTestAddBundle)
433   endfunction()
434
435   if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
436     xctest_add_bundle_test(Darwin macosx "1" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
437     xctest_add_bundle_test(Darwin macosx "12" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
438     xctest_add_bundle_test(iOS iphonesimulator "1" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
439     if (XCODE_VERSION VERSION_LESS 12.5)
440       xctest_add_bundle_test(iOS iphonesimulator "12" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>")
441     else()
442       xctest_add_bundle_test(iOS iphonesimulator "12" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
443     endif()
444   else()
445     xctest_add_bundle_test(Darwin macosx "" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
446     xctest_add_bundle_test(iOS iphonesimulator "" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
447   endif()
448 endif()
449
450 # Please add macOS-only tests above before the device-specific tests.