RunCMakeTest.cmake 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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(ExplicitCMakeLists)
  11. run_cmake(ImplicitCMakeLists)
  12. run_cmake(InterfaceLibSources)
  13. run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
  14. run_cmake_with_options(InheritedParameters -DCMake_TEST_Swift=${CMake_TEST_Swift})
  15. run_cmake(XcodeFileType)
  16. run_cmake(XcodeAttributeLocation)
  17. run_cmake(XcodeAttributeGenex)
  18. run_cmake(XcodeAttributeGenexError)
  19. run_cmake(XcodeGenerateTopLevelProjectOnly)
  20. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  21. run_cmake(XcodeDuplicateCustomCommand)
  22. endif()
  23. function(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
  24. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build)
  25. run_cmake(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
  26. set(RunCMake_TEST_NO_CLEAN 1)
  27. run_cmake_command(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build ${CMAKE_COMMAND} --build . --target shared_lib)
  28. endfunction()
  29. XcodeGenerateTopLevelProjectOnlyWithObjectLibrary()
  30. function(LinkBinariesBuildPhase mode)
  31. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LinkBinariesBuildPhase_${mode}-build)
  32. set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_LINK_BUILD_PHASE_MODE=${mode}")
  33. run_cmake(LinkBinariesBuildPhase_${mode})
  34. set(RunCMake_TEST_NO_CLEAN 1)
  35. run_cmake_command(LinkBinariesBuildPhase_${mode}-build ${CMAKE_COMMAND} --build .)
  36. endfunction()
  37. LinkBinariesBuildPhase(NONE)
  38. LinkBinariesBuildPhase(BUILT_ONLY)
  39. LinkBinariesBuildPhase(KNOWN_LOCATION)
  40. run_cmake(LinkBinariesBuildPhase_INVALID)
  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. run_cmake(PerConfigPerSourceFlags)
  51. run_cmake(PerConfigPerSourceOptions)
  52. run_cmake(PerConfigPerSourceDefinitions)
  53. run_cmake(PerConfigPerSourceIncludeDirs)
  54. if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
  55. function(XcodeObjectLibsInTwoProjectsiOS)
  56. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-ios)
  57. set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS")
  58. run_cmake(XcodeObjectLibsInTwoProjects)
  59. set(RunCMake_TEST_NO_CLEAN 1)
  60. run_cmake_command(XcodeObjectLibsInTwoProjects-build-ios ${CMAKE_COMMAND} --build . --target shared_lib -- -sdk iphonesimulator)
  61. endfunction()
  62. XcodeObjectLibsInTwoProjectsiOS()
  63. function(XcodeObjectLibsInTwoProjectsMacOS)
  64. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-macos)
  65. run_cmake(XcodeObjectLibsInTwoProjects)
  66. set(RunCMake_TEST_NO_CLEAN 1)
  67. run_cmake_command(XcodeObjectLibsInTwoProjects-build-macos ${CMAKE_COMMAND} --build . --target shared_lib)
  68. endfunction()
  69. XcodeObjectLibsInTwoProjectsMacOS()
  70. endif()
  71. function(XcodeSchemaGeneration)
  72. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
  73. set(RunCMake_TEST_NO_CLEAN 1)
  74. set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
  75. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  76. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  77. run_cmake(XcodeSchemaGeneration)
  78. if (XCODE_VERSION VERSION_GREATER_EQUAL 13)
  79. set(maybe_destination -destination platform=macOS,arch=${CMAKE_HOST_SYSTEM_PROCESSOR})
  80. else()
  81. set(maybe_destination "")
  82. endif()
  83. run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo ${maybe_destination} build)
  84. endfunction()
  85. if(NOT XCODE_VERSION VERSION_LESS 7)
  86. XcodeSchemaGeneration()
  87. run_cmake(XcodeSchemaProperty)
  88. endif()
  89. function(XcodeDependOnZeroCheck)
  90. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build)
  91. set(RunCMake_TEST_NO_CLEAN 1)
  92. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  93. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  94. run_cmake(XcodeDependOnZeroCheck)
  95. run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib)
  96. run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib)
  97. endfunction()
  98. XcodeDependOnZeroCheck()
  99. function(XcodeObjcxxFlags testName)
  100. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${testName}-build)
  101. set(RunCMake_TEST_NO_CLEAN 1)
  102. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  103. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  104. run_cmake(${testName})
  105. run_cmake_command(${testName}-build ${CMAKE_COMMAND} --build .)
  106. endfunction()
  107. XcodeObjcxxFlags(XcodeObjcFlags)
  108. XcodeObjcxxFlags(XcodeObjcxxFlags)
  109. function(XcodeRemoveExcessiveISystem)
  110. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystem-build)
  111. run_cmake(XcodeRemoveExcessiveISystem)
  112. set(RunCMake_TEST_NO_CLEAN 1)
  113. run_cmake_command(XcodeRemoveExcessiveISystem-build ${CMAKE_COMMAND} --build .)
  114. endfunction()
  115. XcodeRemoveExcessiveISystem()
  116. function(XcodeXCConfig)
  117. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeXCConfig-build)
  118. run_cmake(XcodeXCConfig)
  119. set(RunCMake_TEST_NO_CLEAN 1)
  120. run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Debug)
  121. run_cmake_command(XcodeXCConfig-build ${CMAKE_COMMAND} --build . --config Release)
  122. endfunction()
  123. XcodeXCConfig()
  124. function(BundleLinkBundle)
  125. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/BundleLinkBundle-build)
  126. run_cmake(BundleLinkBundle)
  127. set(RunCMake_TEST_NO_CLEAN 1)
  128. run_cmake_command(BundleLinkBundle-build ${CMAKE_COMMAND} --build .)
  129. endfunction()
  130. BundleLinkBundle()
  131. # Please add device-specific tests to '../XcodeProject-Device/RunCMakeTest.cmake'.