RunCMakeTest.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. include(RunCMake)
  2. function(install_test test parallel install_arg)
  3. cmake_parse_arguments(ARGS "NINJA;TOUCH_CACHE" "VERIFY_SCRIPT" "" ${ARGN})
  4. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-install)
  5. set(RunCMake_TEST_OPTIONS -DINSTALL_PARALLEL=${parallel})
  6. set(RunCMake_TEST_OUTPUT_MERGE 1)
  7. if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
  8. list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
  9. endif()
  10. run_cmake(install)
  11. set(RunCMake_TEST_NO_CLEAN 1)
  12. if (ARGS_TOUCH_CACHE)
  13. run_cmake_command(${test}-touch
  14. ${CMAKE_COMMAND} -E touch ${RunCMake_TEST_BINARY_DIR}/CMakeFiles/cmake.check_cache)
  15. endif()
  16. if (ARGS_NINJA)
  17. run_cmake_command(${test}-install ${CMAKE_COMMAND} --build . --config Debug -t ${install_arg})
  18. else()
  19. run_cmake_command(${test}-install ${CMAKE_COMMAND} --install . -j ${install_arg})
  20. endif()
  21. set(RunCMake_TEST_COMMAND_WORKING_DIRECTORY ${RunCMake_SOURCE_DIR})
  22. if (ARGS_VERIFY_SCRIPT)
  23. run_cmake_command(${test}-verify-parallel
  24. ${CMAKE_COMMAND} -P ${ARGS_VERIFY_SCRIPT} ${RunCMake_TEST_BINARY_DIR}/.ninja_log)
  25. endif()
  26. endfunction()
  27. install_test(parallel 1 4)
  28. install_test(no-parallel 0 4)
  29. install_test(out-of-date-json 1 4 TOUCH_CACHE)
  30. if(RunCMake_GENERATOR MATCHES "Ninja")
  31. install_test(ninja-parallel 1 install/parallel VERIFY_SCRIPT check-parallel.cmake NINJA)
  32. install_test(ninja-no-parallel 0 install VERIFY_SCRIPT check-single.cmake NINJA)
  33. endif()