RunCMakeTest.cmake 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. include(RunCMake)
  2. function(RunClean)
  3. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Clean-build)
  4. run_cmake(Clean -DCMAKE_CONFIGURATION_TYPES=Debug)
  5. set(RunCMake_TEST_NO_CLEAN 1)
  6. run_cmake_command(Clean-build xcodebuild)
  7. run_cmake_command(Clean-clean xcodebuild clean)
  8. endfunction()
  9. RunClean()
  10. run_cmake_with_options(ArchsStandard "-DCMAKE_OSX_ARCHITECTURES=$(ARCHS_STANDARD)")
  11. run_cmake(ExplicitCMakeLists)
  12. run_cmake(ImplicitCMakeLists)
  13. run_cmake(InterfaceLibSources)
  14. run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
  15. run_cmake_with_options(InheritedParameters -DCMake_TEST_Swift=${CMake_TEST_Swift})
  16. run_cmake(XcodeFileType)
  17. run_cmake(XcodeAttributeLocation)
  18. run_cmake(XcodeAttributeGenex)
  19. run_cmake(XcodeAttributeGenexError)
  20. run_cmake(XcodeGenerateTopLevelProjectOnly)
  21. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  22. run_cmake(XcodeDuplicateCustomCommand)
  23. endif()
  24. function(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
  25. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build)
  26. run_cmake(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
  27. set(RunCMake_TEST_NO_CLEAN 1)
  28. run_cmake_command(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build ${CMAKE_COMMAND} --build . --target shared_lib)
  29. endfunction()
  30. XcodeGenerateTopLevelProjectOnlyWithObjectLibrary()
  31. function(LinkBinariesBuildPhase mode)
  32. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LinkBinariesBuildPhase_${mode}-build)
  33. set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_LINK_BUILD_PHASE_MODE=${mode}")
  34. run_cmake(LinkBinariesBuildPhase_${mode})
  35. set(RunCMake_TEST_NO_CLEAN 1)
  36. run_cmake_command(LinkBinariesBuildPhase_${mode}-build ${CMAKE_COMMAND} --build .)
  37. endfunction()
  38. LinkBinariesBuildPhase(NONE)
  39. LinkBinariesBuildPhase(BUILT_ONLY)
  40. LinkBinariesBuildPhase(KNOWN_LOCATION)
  41. run_cmake(LinkBinariesBuildPhase_INVALID)
  42. run_cmake(XcodeObjectNeedsEscape)
  43. run_cmake(XcodeObjectNeedsQuote)
  44. run_cmake(XcodeOptimizationFlags)
  45. run_cmake(XcodePreserveNonOptimizationFlags)
  46. run_cmake(XcodePreserveObjcFlag)
  47. run_cmake(XcodePrecompileHeaders)
  48. if (NOT XCODE_VERSION VERSION_LESS 6)
  49. run_cmake(XcodePlatformFrameworks)
  50. endif()
  51. run_cmake(PerConfigPerSourceFlags)
  52. run_cmake(PerConfigPerSourceOptions)
  53. run_cmake(PerConfigPerSourceDefinitions)
  54. run_cmake(PerConfigPerSourceIncludeDirs)
  55. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  56. function(XcodeObjectLibsInTwoProjectsiOS)
  57. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-ios)
  58. set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS")
  59. run_cmake(XcodeObjectLibsInTwoProjects)
  60. set(RunCMake_TEST_NO_CLEAN 1)
  61. run_cmake_command(XcodeObjectLibsInTwoProjects-build-ios ${CMAKE_COMMAND} --build . --target shared_lib -- -sdk iphonesimulator)
  62. endfunction()
  63. XcodeObjectLibsInTwoProjectsiOS()
  64. function(XcodeObjectLibsInTwoProjectsMacOS)
  65. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-macos)
  66. run_cmake(XcodeObjectLibsInTwoProjects)
  67. set(RunCMake_TEST_NO_CLEAN 1)
  68. run_cmake_command(XcodeObjectLibsInTwoProjects-build-macos ${CMAKE_COMMAND} --build . --target shared_lib)
  69. endfunction()
  70. XcodeObjectLibsInTwoProjectsMacOS()
  71. block()
  72. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BundlePostBuild-build)
  73. run_cmake(BundlePostBuild)
  74. set(RunCMake_TEST_NO_CLEAN 1)
  75. run_cmake_command(BundlePostBuild-build ${CMAKE_COMMAND} --build . --config Debug)
  76. endblock()
  77. endif()
  78. function(XcodeSchemaGeneration)
  79. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
  80. set(RunCMake_TEST_NO_CLEAN 1)
  81. set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
  82. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  83. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  84. run_cmake(XcodeSchemaGeneration)
  85. if (XCODE_VERSION VERSION_GREATER_EQUAL 13)
  86. set(maybe_destination -destination platform=macOS,arch=${CMAKE_HOST_SYSTEM_PROCESSOR})
  87. else()
  88. set(maybe_destination "")
  89. endif()
  90. run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo ${maybe_destination} build)
  91. endfunction()
  92. if(NOT XCODE_VERSION VERSION_LESS 7)
  93. XcodeSchemaGeneration()
  94. run_cmake(XcodeSchemaProperty)
  95. endif()
  96. function(XcodeDependOnZeroCheck)
  97. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build)
  98. set(RunCMake_TEST_NO_CLEAN 1)
  99. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  100. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  101. run_cmake(XcodeDependOnZeroCheck)
  102. run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib)
  103. run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib)
  104. endfunction()
  105. XcodeDependOnZeroCheck()
  106. function(XcodeObjcxxFlags testName)
  107. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${testName}-build)
  108. set(RunCMake_TEST_NO_CLEAN 1)
  109. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  110. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  111. run_cmake(${testName})
  112. run_cmake_command(${testName}-build ${CMAKE_COMMAND} --build .)
  113. endfunction()
  114. XcodeObjcxxFlags(XcodeObjcFlags)
  115. XcodeObjcxxFlags(XcodeObjcxxFlags)
  116. function(XcodeRemoveExcessiveISystem)
  117. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystem-build)
  118. run_cmake(XcodeRemoveExcessiveISystem)
  119. set(RunCMake_TEST_NO_CLEAN 1)
  120. run_cmake_command(XcodeRemoveExcessiveISystem-build ${CMAKE_COMMAND} --build .)
  121. endfunction()
  122. XcodeRemoveExcessiveISystem()
  123. function(XcodeXCConfig)
  124. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeXCConfig-build)
  125. run_cmake(XcodeXCConfig)
  126. set(RunCMake_TEST_NO_CLEAN 1)
  127. run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Debug)
  128. run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Release)
  129. endfunction()
  130. XcodeXCConfig()
  131. function(BundleLinkBundle)
  132. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BundleLinkBundle-build)
  133. run_cmake(BundleLinkBundle)
  134. set(RunCMake_TEST_NO_CLEAN 1)
  135. run_cmake_command(BundleLinkBundle-build ${CMAKE_COMMAND} --build .)
  136. endfunction()
  137. BundleLinkBundle()
  138. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  139. block()
  140. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeWorkspace-build)
  141. run_cmake(XcodeWorkspace)
  142. set(RunCMake_TEST_NO_CLEAN 1)
  143. run_cmake_command(XcodeWorkspace-build ${CMAKE_COMMAND} --build . --config Debug)
  144. run_cmake_command(XcodeWorkspace-build2 ${CMAKE_COMMAND} --build . --config Debug --target custom1 custom2)
  145. endblock()
  146. endif()
  147. # Please add device-specific tests to '../XcodeProject-Device/RunCMakeTest.cmake'.