| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- include(RunCMake)
- run_cmake(ExplicitCMakeLists)
- run_cmake(ImplicitCMakeLists)
- run_cmake(InterfaceLibSources)
- run_cmake_with_options(SearchPaths -DCMAKE_CONFIGURATION_TYPES=Debug)
- run_cmake(InheritedParameters)
- run_cmake(XcodeFileType)
- run_cmake(XcodeAttributeLocation)
- run_cmake(XcodeAttributeGenex)
- run_cmake(XcodeAttributeGenexError)
- run_cmake(XcodeGenerateTopLevelProjectOnly)
- if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
- run_cmake(XcodeDuplicateCustomCommand)
- endif()
- function(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build)
- run_cmake(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary)
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(XcodeGenerateTopLevelProjectOnlyWithObjectLibrary-build ${CMAKE_COMMAND} --build . --target shared_lib)
- endfunction()
- XcodeGenerateTopLevelProjectOnlyWithObjectLibrary()
- function(LinkBinariesBuildPhase mode)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LinkBinariesBuildPhase_${mode}-build)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_LINK_BUILD_PHASE_MODE=${mode}")
- run_cmake(LinkBinariesBuildPhase_${mode})
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(LinkBinariesBuildPhase_${mode}-build ${CMAKE_COMMAND} --build .)
- endfunction()
- LinkBinariesBuildPhase(NONE)
- LinkBinariesBuildPhase(BUILT_ONLY)
- LinkBinariesBuildPhase(KNOWN_LOCATION)
- run_cmake(LinkBinariesBuildPhase_INVALID)
- run_cmake(XcodeObjectNeedsEscape)
- run_cmake(XcodeObjectNeedsQuote)
- run_cmake(XcodeOptimizationFlags)
- run_cmake(XcodePreserveNonOptimizationFlags)
- run_cmake(XcodePreserveObjcFlag)
- run_cmake(XcodePrecompileHeaders)
- if (NOT XCODE_VERSION VERSION_LESS 6)
- run_cmake(XcodePlatformFrameworks)
- endif()
- run_cmake(PerConfigPerSourceFlags)
- run_cmake(PerConfigPerSourceOptions)
- run_cmake(PerConfigPerSourceDefinitions)
- run_cmake(PerConfigPerSourceIncludeDirs)
- if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
- function(XcodeObjectLibsInTwoProjectsiOS)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-ios)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS")
- run_cmake(XcodeObjectLibsInTwoProjects)
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(XcodeObjectLibsInTwoProjects-build-ios ${CMAKE_COMMAND} --build . --target shared_lib -- -sdk iphonesimulator)
- endfunction()
- XcodeObjectLibsInTwoProjectsiOS()
- function(XcodeObjectLibsInTwoProjectsMacOS)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeObjectLibsInTwoProjects-build-macos)
- run_cmake(XcodeObjectLibsInTwoProjects)
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(XcodeObjectLibsInTwoProjects-build-macos ${CMAKE_COMMAND} --build . --target shared_lib)
- endfunction()
- XcodeObjectLibsInTwoProjectsMacOS()
- endif()
- function(XcodeSchemaGeneration)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeSchemaGeneration)
- run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo build)
- endfunction()
- if(NOT XCODE_VERSION VERSION_LESS 7)
- XcodeSchemaGeneration()
- run_cmake(XcodeSchemaProperty)
- endif()
- function(XcodeDependOnZeroCheck)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeDependOnZeroCheck)
- run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib)
- run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib)
- endfunction()
- XcodeDependOnZeroCheck()
- function(XcodeObjcxxFlags testName)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${testName}-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(${testName})
- run_cmake_command(${testName}-build ${CMAKE_COMMAND} --build .)
- endfunction()
- XcodeObjcxxFlags(XcodeObjcFlags)
- XcodeObjcxxFlags(XcodeObjcxxFlags)
- function(XcodeRemoveExcessiveISystem)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystem-build)
- run_cmake(XcodeRemoveExcessiveISystem)
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(XcodeRemoveExcessiveISystem-build ${CMAKE_COMMAND} --build .)
- endfunction()
- XcodeRemoveExcessiveISystem()
- # Isolate device tests from host architecture selection.
- unset(ENV{CMAKE_OSX_ARCHITECTURES})
- # Use a single build tree for a few tests without cleaning.
- if(NOT XCODE_VERSION VERSION_LESS 5)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeInstallIOS-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=iOS"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_BINARY_DIR}/ios_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeInstallIOS)
- run_cmake_command(XcodeInstallIOS-install ${CMAKE_COMMAND} --build . --target install)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesOSX-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=Darwin"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeBundles)
- run_cmake_command(XcodeBundles-build-macOS ${CMAKE_COMMAND} --build .)
- run_cmake_command(XcodeBundles-install-macOS ${CMAKE_COMMAND} --build . --target install)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesIOS-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=iOS"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeBundles)
- run_cmake_command(XcodeBundles-build-iOS ${CMAKE_COMMAND} --build .)
- run_cmake_command(XcodeBundles-install-iOS ${CMAKE_COMMAND} --build . --target install)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(NOT XCODE_VERSION VERSION_LESS 7)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesWatchOS-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=watchOS"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeBundles)
- run_cmake_command(XcodeBundles-build-watchOS ${CMAKE_COMMAND} --build .)
- run_cmake_command(XcodeBundles-install-watchOS ${CMAKE_COMMAND} --build . --target install)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(NOT XCODE_VERSION VERSION_LESS 7.1)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesTvOS-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=tvOS"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeBundles)
- run_cmake_command(XcodeBundles-build-tvOS ${CMAKE_COMMAND} --build .)
- run_cmake_command(XcodeBundles-install-tvOS ${CMAKE_COMMAND} --build . --target install)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(NOT XCODE_VERSION VERSION_LESS 7)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
- run_cmake(XcodeTbdStub)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(XCODE_VERSION VERSION_GREATER_EQUAL 6)
- # XcodeIOSInstallCombined
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombined-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=iOS"
- "-DCMAKE_IOS_INSTALL_COMBINED=YES"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeIOSInstallCombined)
- run_cmake_command(XcodeIOSInstallCombined-build ${CMAKE_COMMAND} --build .)
- if(XCODE_VERSION VERSION_LESS 12)
- run_cmake_command(XcodeIOSInstallCombined-install ${CMAKE_COMMAND} --build . --target install)
- endif()
- # --build defaults to Debug, --install defaults to Release, so we have to
- # specify the configuration explicitly
- run_cmake_command(XcodeIOSInstallCombined-cmakeinstall
- ${CMAKE_COMMAND} --install . --config Debug
- )
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- # XcodeIOSInstallCombinedPrune
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedPrune-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=iOS"
- "-DCMAKE_IOS_INSTALL_COMBINED=YES"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeIOSInstallCombinedPrune)
- run_cmake_command(XcodeIOSInstallCombinedPrune-build ${CMAKE_COMMAND} --build .)
- if(XCODE_VERSION VERSION_LESS 12)
- run_cmake_command(XcodeIOSInstallCombinedPrune-install ${CMAKE_COMMAND} --build . --target install)
- endif()
- # --build defaults to Debug, --install defaults to Release, so we have to
- # specify the configuration explicitly
- run_cmake_command(XcodeIOSInstallCombinedPrune-cmakeinstall
- ${CMAKE_COMMAND} --install . --config Debug
- )
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- # XcodeIOSInstallCombinedSingleArch
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeIOSInstallCombinedSingleArch-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=iOS"
- "-DCMAKE_IOS_INSTALL_COMBINED=YES"
- "-DCMAKE_INSTALL_PREFIX:PATH=${RunCMake_TEST_BINARY_DIR}/_install")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeIOSInstallCombinedSingleArch)
- run_cmake_command(XcodeIOSInstallCombinedSingleArch-build ${CMAKE_COMMAND} --build .)
- if(XCODE_VERSION VERSION_LESS 12)
- run_cmake_command(XcodeIOSInstallCombinedSingleArch-install ${CMAKE_COMMAND} --build . --target install)
- endif()
- # --build defaults to Debug, --install defaults to Release, so we have to
- # specify the configuration explicitly
- run_cmake_command(XcodeIOSInstallCombinedSingleArch-cmakeinstall
- ${CMAKE_COMMAND} --install . --config Debug
- )
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(NOT XCODE_VERSION VERSION_LESS 5)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeMultiplatform-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS "${IOS_DEPLOYMENT_TARGET}")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(XcodeMultiplatform)
- # build ios before macos
- run_cmake_command(XcodeMultiplatform-iphonesimulator-build ${CMAKE_COMMAND} --build . -- -sdk iphonesimulator)
- run_cmake_command(XcodeMultiplatform-iphonesimulator-install ${CMAKE_COMMAND} --build . --target install -- -sdk iphonesimulator DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_iphonesimulator)
- run_cmake_command(XcodeMultiplatform-macosx-build ${CMAKE_COMMAND} --build . -- -sdk macosx)
- run_cmake_command(XcodeMultiplatform-macosx-install ${CMAKE_COMMAND} --build . --target install -- -sdk macosx DESTDIR=${RunCMake_TEST_BINARY_DIR}/_install_macosx)
- unset(RunCMake_TEST_BINARY_DIR)
- unset(RunCMake_TEST_NO_CLEAN)
- unset(RunCMake_TEST_OPTIONS)
- endif()
- if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
- function(deployment_target_test SystemName SDK)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DeploymentTarget-${SDK}-build)
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=${SystemName}" "-DCMAKE_OSX_SYSROOT=${SDK}")
- file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
- file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
- run_cmake(DeploymentTarget)
- run_cmake_command(DeploymentTarget-${SDK} ${CMAKE_COMMAND} --build .)
- endfunction()
- deployment_target_test(Darwin macosx)
- deployment_target_test(iOS iphoneos)
- deployment_target_test(iOS iphonesimulator)
- deployment_target_test(tvOS appletvos)
- deployment_target_test(tvOS appletvsimulator)
- deployment_target_test(watchOS watchos)
- deployment_target_test(watchOS watchsimulator)
- endif()
- if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
- function(xctest_lookup_test SystemName SDK)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XCTestLookup-${SDK}-build)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=${SystemName}" "-DCMAKE_OSX_SYSROOT=${SDK}")
- run_cmake(XCTestLookup)
- endfunction()
- xctest_lookup_test(Darwin macosx)
- xctest_lookup_test(iOS iphoneos)
- xctest_lookup_test(iOS iphonesimulator)
- xctest_lookup_test(tvOS appletvos)
- xctest_lookup_test(tvOS appletvsimulator)
- endif()
- if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
- function(XcodeRemoveExcessiveISystemSDK SDK)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeRemoveExcessiveISystemSDK-${SDK}-build)
- set(RunCMake_TEST_OPTIONS "-DCMAKE_SYSTEM_NAME=iOS" "-DCMAKE_OSX_SYSROOT=${SDK}")
- run_cmake(XcodeRemoveExcessiveISystem)
- set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(XcodeRemoveExcessiveISystemSDK-${SDK}-build ${CMAKE_COMMAND} --build .)
- endfunction()
- XcodeRemoveExcessiveISystemSDK(iphoneos)
- XcodeRemoveExcessiveISystemSDK(iphonesimulator)
- endif()
- if (XCODE_VERSION VERSION_GREATER_EQUAL 7.3)
- function(xctest_add_bundle_test SystemName SDK BuildSystemVersion ExpectedOutputDir)
- set(RunCMake_TEST_BINARY_DIR
- ${RunCMake_BINARY_DIR}/DeploymentTarget-${SystemName}-${SDK}-${BuildSystemVersion}-build)
- set(RunCMake_TEST_OPTIONS
- "-DCMAKE_SYSTEM_NAME=${SystemName}"
- "-DCMAKE_OSX_SYSROOT=${SDK}"
- "-DTEST_EXPECTED_OUTPUT_DIR=${ExpectedOutputDir}")
- unset(RunCMake_GENERATOR_TOOLSET)
- if(BuildSystemVersion)
- set(RunCMake_GENERATOR_TOOLSET "buildsystem=${BuildSystemVersion}")
- endif()
- run_cmake(XCTestAddBundle)
- endfunction()
- if(XCODE_VERSION VERSION_GREATER_EQUAL 12)
- xctest_add_bundle_test(Darwin macosx "1" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
- xctest_add_bundle_test(Darwin macosx "12" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
- xctest_add_bundle_test(iOS iphoneos "1" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
- xctest_add_bundle_test(iOS iphoneos "12" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>")
- else()
- xctest_add_bundle_test(Darwin macosx "" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
- xctest_add_bundle_test(iOS iphoneos "" "$<TARGET_BUNDLE_CONTENT_DIR:TestedApp>/PlugIns")
- endif()
- endif()
- # Please add macOS-only tests above before the device-specific tests.
|