| |
| include(RunCMake) |
| |
| function(run_and_build test) |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| set(config_options "-DCMAKE_CONFIGURATION_TYPES=Debug") |
| else() |
| set(config_options -DCMAKE_BUILD_TYPE=Debug) |
| endif() |
| set(RunCMake_TEST_OPTIONS ${config_options}) |
| set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${test}-build") |
| run_cmake_with_options(${test}) |
| set(RunCMake_TEST_NO_CLEAN 1) |
| if(ARGN) |
| foreach(target IN LISTS ARGN) |
| run_cmake_command(${test}-${target} ${CMAKE_COMMAND} --build . --config Debug --target ${target} --verbose) |
| endforeach() |
| else() |
| run_cmake_command(${test}-build ${CMAKE_COMMAND} --build . --config Debug --verbose) |
| endif() |
| endfunction() |
| |
| function(run_and_check test) |
| set(RunCMake_TEST_OUTPUT_MERGE TRUE) |
| run_and_build(${test} ${ARGN}) |
| endfunction() |
| |
| |
| run_cmake(FileNoExist) |
| run_cmake(TargetProperties) |
| |
| run_and_build(FileSetProperties) |
| run_and_build(CustomCommandInput) |
| run_and_build(IncludeDirectoriesOrder) |
| run_and_build(FileSetTransitivity) |
| run_and_check(CompileOptionsOrder) |
| if(APPLE) |
| run_cmake(FileSetFramework1) |
| run_and_build(FileSetFramework2) |
| endif() |
| if (RunCMake_GENERATOR MATCHES "Ninja") |
| run_cmake(IndependentFilesWarning) |
| if (RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| set(IndependentFiles_target "CMakeFiles/lib1.dir/Debug/independent.c${CMAKE_C_OUTPUT_EXTENSION}") |
| else () |
| set(IndependentFiles_target "CMakeFiles/lib1.dir/independent.c${CMAKE_C_OUTPUT_EXTENSION}") |
| endif () |
| set(RunCMake-check-file IndependentFiles-check.cmake) |
| run_and_build(IndependentFiles ${IndependentFiles_target}) |
| endif() |
| |
| # Some environments are excluded because they are not able to honor verbose mode |
| if ((RunCMake_GENERATOR MATCHES "Makefiles|Ninja|Xcode" |
| OR (RunCMake_GENERATOR MATCHES "Visual Studio" AND MSVC_VERSION GREATER_EQUAL "1600")) |
| AND NOT CMAKE_C_COMPILER_ID STREQUAL "Intel") |
| run_and_check(FileSetProperties2 lib1 main) |
| endif() |
| |
| function(run_export_import name) |
| if(ARGV1) |
| set(importname ${ARGV1}) |
| else() |
| set(importname ${name}) |
| endif() |
| |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| set(_config_options "-DCMAKE_CONFIGURATION_TYPES=Debug\\\\;Release") |
| else() |
| set(_config_options -DCMAKE_BUILD_TYPE=Debug) |
| endif() |
| |
| set(RunCMake_TEST_NO_CLEAN 1) |
| set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${name}Export-build") |
| set(RunCMake_TEST_OPTIONS "--install-prefix=${RunCMake_TEST_BINARY_DIR}/install" ${_config_options}) |
| file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") |
| file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") |
| run_cmake(${name}Export) |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| run_cmake_command(${name}Export-build-Debug ${CMAKE_COMMAND} --build . --config Debug) |
| run_cmake_command(${name}Export-install-Debug ${CMAKE_COMMAND} --install . --config Debug) |
| run_cmake_command(${name}Export-build-Release ${CMAKE_COMMAND} --build . --config Release) |
| run_cmake_command(${name}Export-install-Release ${CMAKE_COMMAND} --install . --config Release) |
| else() |
| run_cmake_command(${name}Export-build ${CMAKE_COMMAND} --build . --config Debug) |
| run_cmake_command(${name}Export-install ${CMAKE_COMMAND} --install . --config Debug) |
| endif() |
| unset(RunCMake_TEST_OPTIONS) |
| |
| set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${importname}Import-build") |
| unset(RunCMake_TEST_OPTIONS) |
| file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") |
| file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") |
| run_cmake(${importname}Import) |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| run_cmake_command(${importname}Import-build-Debug ${CMAKE_COMMAND} --build . --config Debug) |
| run_cmake_command(${importname}Import-build-Release ${CMAKE_COMMAND} --build . --config Release) |
| else() |
| run_cmake_command(${importname}Import-build ${CMAKE_COMMAND} --build . --config Debug) |
| endif() |
| |
| unset(RunCMake_TEST_BINARY_DIR) |
| unset(RunCMake_TEST_NO_CLEAN) |
| endfunction() |
| |
| run_cmake(InstallMissingSetsInterface) |
| run_cmake(InstallMissingSetsInterfacePostInstall) |
| run_export_import(FileSet) |