RunCMakeTest.cmake 7.4 KB

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