RunCMakeTest.cmake 16 KB

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