RunCMakeTest.cmake 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. include(RunCMake)
  2. if(XCODE_VERSION VERSION_GREATER_EQUAL 9)
  3. set(IOS_DEPLOYMENT_TARGET "-DCMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET=10")
  4. endif()
  5. run_cmake(XcodeFileType)
  6. run_cmake(XcodeAttributeLocation)
  7. run_cmake(XcodeAttributeGenex)
  8. run_cmake(XcodeAttributeGenexError)
  9. run_cmake(XcodeGenerateTopLevelProjectOnly)
  10. run_cmake(XcodeObjectNeedsEscape)
  11. run_cmake(XcodeObjectNeedsQuote)
  12. run_cmake(XcodeOptimizationFlags)
  13. run_cmake(XcodePreserveNonOptimizationFlags)
  14. run_cmake(XcodePreserveObjcFlag)
  15. if (NOT XCODE_VERSION VERSION_LESS 6)
  16. run_cmake(XcodePlatformFrameworks)
  17. endif()
  18. run_cmake(PerConfigPerSourceFlags)
  19. # Use a single build tree for a few tests without cleaning.
  20. if(NOT XCODE_VERSION VERSION_LESS 5)
  21. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeInstallIOS-build)
  22. set(RunCMake_TEST_NO_CLEAN 1)
  23. set(RunCMake_TEST_OPTIONS
  24. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_BINARY_DIR}/ios_install"
  25. "${IOS_DEPLOYMENT_TARGET}")
  26. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  27. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  28. run_cmake(XcodeInstallIOS)
  29. run_cmake_command(XcodeInstallIOS-install ${CMAKE_COMMAND} --build . --target install)
  30. unset(RunCMake_TEST_BINARY_DIR)
  31. unset(RunCMake_TEST_NO_CLEAN)
  32. unset(RunCMake_TEST_OPTIONS)
  33. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesOSX-build)
  34. set(RunCMake_TEST_NO_CLEAN 1)
  35. set(RunCMake_TEST_OPTIONS
  36. "-DTEST_IOS=OFF"
  37. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
  38. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  39. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  40. run_cmake(XcodeBundles)
  41. run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .)
  42. run_cmake_command(XcodeBundles-install ${CMAKE_COMMAND} --build . --target install)
  43. unset(RunCMake_TEST_BINARY_DIR)
  44. unset(RunCMake_TEST_NO_CLEAN)
  45. unset(RunCMake_TEST_OPTIONS)
  46. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesIOS-build)
  47. set(RunCMake_TEST_NO_CLEAN 1)
  48. set(RunCMake_TEST_OPTIONS
  49. "-DTEST_IOS=ON"
  50. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install"
  51. "${IOS_DEPLOYMENT_TARGET}")
  52. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  53. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  54. run_cmake(XcodeBundles)
  55. run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .)
  56. run_cmake_command(XcodeBundles-install ${CMAKE_COMMAND} --build . --target install)
  57. unset(RunCMake_TEST_BINARY_DIR)
  58. unset(RunCMake_TEST_NO_CLEAN)
  59. unset(RunCMake_TEST_OPTIONS)
  60. endif()
  61. if(NOT XCODE_VERSION VERSION_LESS 7)
  62. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesWatchOS-build)
  63. set(RunCMake_TEST_NO_CLEAN 1)
  64. set(RunCMake_TEST_OPTIONS
  65. "-DTEST_WATCHOS=ON"
  66. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
  67. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  68. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  69. run_cmake(XcodeBundles)
  70. run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .)
  71. run_cmake_command(XcodeBundles-install ${CMAKE_COMMAND} --build . --target install)
  72. unset(RunCMake_TEST_BINARY_DIR)
  73. unset(RunCMake_TEST_NO_CLEAN)
  74. unset(RunCMake_TEST_OPTIONS)
  75. endif()
  76. if(NOT XCODE_VERSION VERSION_LESS 7.1)
  77. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesTvOS-build)
  78. set(RunCMake_TEST_NO_CLEAN 1)
  79. set(RunCMake_TEST_OPTIONS
  80. "-DTEST_TVOS=ON"
  81. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
  82. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  83. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  84. run_cmake(XcodeBundles)
  85. run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .)
  86. run_cmake_command(XcodeBundles-install ${CMAKE_COMMAND} --build . --target install)
  87. unset(RunCMake_TEST_BINARY_DIR)
  88. unset(RunCMake_TEST_NO_CLEAN)
  89. unset(RunCMake_TEST_OPTIONS)
  90. endif()
  91. if(NOT XCODE_VERSION VERSION_LESS 7)
  92. set(RunCMake_TEST_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
  93. run_cmake(XcodeTbdStub)
  94. unset(RunCMake_TEST_OPTIONS)
  95. endif()
  96. if(NOT XCODE_VERSION VERSION_LESS 6)
  97. # XcodeIOSInstallCombined
  98. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombined-build)
  99. set(RunCMake_TEST_NO_CLEAN 1)
  100. set(RunCMake_TEST_OPTIONS
  101. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install"
  102. "-DCMAKE_IOS_INSTALL_COMBINED=YES"
  103. "${IOS_DEPLOYMENT_TARGET}")
  104. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  105. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  106. run_cmake(XcodeIOSInstallCombined)
  107. run_cmake_command(XcodeIOSInstallCombined-build ${CMAKE_COMMAND} --build .)
  108. run_cmake_command(XcodeIOSInstallCombined-install ${CMAKE_COMMAND} --build . --target install)
  109. unset(RunCMake_TEST_BINARY_DIR)
  110. unset(RunCMake_TEST_NO_CLEAN)
  111. unset(RunCMake_TEST_OPTIONS)
  112. # XcodeIOSInstallCombinedPrune
  113. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedPrune-build)
  114. set(RunCMake_TEST_NO_CLEAN 1)
  115. set(RunCMake_TEST_OPTIONS
  116. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install"
  117. "-DCMAKE_IOS_INSTALL_COMBINED=YES"
  118. "${IOS_DEPLOYMENT_TARGET}")
  119. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  120. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  121. run_cmake(XcodeIOSInstallCombinedPrune)
  122. run_cmake_command(XcodeIOSInstallCombinedPrune-build ${CMAKE_COMMAND} --build .)
  123. run_cmake_command(XcodeIOSInstallCombinedPrune-install ${CMAKE_COMMAND} --build . --target install)
  124. unset(RunCMake_TEST_BINARY_DIR)
  125. unset(RunCMake_TEST_NO_CLEAN)
  126. unset(RunCMake_TEST_OPTIONS)
  127. # XcodeIOSInstallCombinedSingleArch
  128. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedSingleArch-build)
  129. set(RunCMake_TEST_NO_CLEAN 1)
  130. set(RunCMake_TEST_OPTIONS
  131. "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install"
  132. "-DCMAKE_IOS_INSTALL_COMBINED=YES"
  133. "${IOS_DEPLOYMENT_TARGET}")
  134. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  135. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  136. run_cmake(XcodeIOSInstallCombinedSingleArch)
  137. run_cmake_command(XcodeIOSInstallCombinedSingleArch-build ${CMAKE_COMMAND} --build .)
  138. run_cmake_command(XcodeIOSInstallCombinedSingleArch-install ${CMAKE_COMMAND} --build . --target install)
  139. unset(RunCMake_TEST_BINARY_DIR)
  140. unset(RunCMake_TEST_NO_CLEAN)
  141. unset(RunCMake_TEST_OPTIONS)
  142. endif()
  143. if(NOT XCODE_VERSION VERSION_LESS 5)
  144. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeMultiplatform-build)
  145. set(RunCMake_TEST_NO_CLEAN 1)
  146. set(RunCMake_TEST_OPTIONS "${IOS_DEPLOYMENT_TARGET}")
  147. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  148. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  149. run_cmake(XcodeMultiplatform)
  150. # build ios before macos
  151. run_cmake_command(XcodeMultiplatform-iphonesimulator-build ${CMAKE_COMMAND} --build . -- -sdk iphonesimulator)
  152. run_cmake_command(XcodeMultiplatform-iphonesimulator-install ${CMAKE_COMMAND} --build . --target install -- -sdk iphonesimulator DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_iphonesimulator)
  153. run_cmake_command(XcodeMultiplatform-macosx-build ${CMAKE_COMMAND} --build . -- -sdk macosx)
  154. run_cmake_command(XcodeMultiplatform-macosx-install ${CMAKE_COMMAND} --build . --target install -- -sdk macosx DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_macosx)
  155. unset(RunCMake_TEST_BINARY_DIR)
  156. unset(RunCMake_TEST_NO_CLEAN)
  157. unset(RunCMake_TEST_OPTIONS)
  158. endif()
  159. function(XcodeSchemaGeneration)
  160. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
  161. set(RunCMake_TEST_NO_CLEAN 1)
  162. set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
  163. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  164. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  165. run_cmake(XcodeSchemaGeneration)
  166. run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo build)
  167. endfunction()
  168. if(NOT XCODE_VERSION VERSION_LESS 7)
  169. XcodeSchemaGeneration()
  170. endif()