| include(RunCMake) | |
| run_cmake(Inspect) | |
| include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake") | |
| function(run_tutorial_step name) | |
| if(ARGV1 STREQUAL "TUTORIALPROJECT_SUBDIR") | |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}/TutorialProject) | |
| else() | |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}) | |
| endif() | |
| set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}/build) | |
| set(config Release) | |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) | |
| set(exe ${RunCMake_TEST_BINARY_DIR}/Tutorial/${config}/Tutorial) | |
| else() | |
| set(exe ${RunCMake_TEST_BINARY_DIR}/Tutorial/Tutorial) | |
| list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=${config}) | |
| endif() | |
| if(ARGV1 STREQUAL "NO_PRESET") | |
| list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_CXX_STANDARD=11) | |
| else() | |
| list(APPEND RunCMake_TEST_OPTIONS --preset tutorial) | |
| endif() | |
| if(ARGV2 STREQUAL "SETUP_CMAKE_PREFIX") | |
| list(APPEND RunCMake_TEST_OPTIONS | |
| "-DCMAKE_PREFIX_PATH=${Tutorial_SOURCE_DIR}/${name}/install\;${RunCMake_BINARY_DIR}/${name}/install" | |
| ) | |
| endif() | |
| list(APPEND RunCMake_TEST_OPTIONS -B ${RunCMake_TEST_BINARY_DIR}) | |
| run_cmake(${name}-configure) | |
| unset(RunCMake_TEST_OPTIONS) | |
| set(RunCMake_TEST_NO_CLEAN 1) | |
| set(RunCMake_TEST_OUTPUT_MERGE 1) | |
| run_cmake_command(${name}-build ${CMAKE_COMMAND} --build . --config ${config}) | |
| if(name STREQUAL "Step0") | |
| return() | |
| endif() | |
| unset(RunCMake_TEST_OUTPUT_MERGE) | |
| set(RunCMake-stdout-file ${name}-run-stdout.txt) | |
| run_cmake_command(${name}-run ${exe} 25) | |
| endfunction() | |
| run_tutorial_step(Step0 NO_PRESET) | |
| run_tutorial_step(Step3 NO_PRESET) | |
| if(NOT can_build_cxx20_tutorial) | |
| return() | |
| endif() | |
| foreach(num RANGE 4 6) | |
| run_tutorial_step(Step${num}) | |
| endforeach() | |
| if(NOT can_build_sse2_tutorial) | |
| return() | |
| endif() | |
| foreach(num RANGE 7 9) | |
| run_tutorial_step(Step${num}) | |
| endforeach() | |
| run_tutorial_step(Step10 TUTORIALPROJECT_SUBDIR) | |
| function(install_simpletest name) | |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}/SimpleTest) | |
| set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}/build-simpletest) | |
| set(config Release) | |
| list(APPEND RunCMake_TEST_OPTIONS | |
| -B ${RunCMake_TEST_BINARY_DIR} | |
| -DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/${name}/install | |
| --preset tutorial | |
| ) | |
| run_cmake(${name}-simpletest-configure) | |
| set(RunCMake_TEST_NO_CLEAN 1) | |
| set(RunCMake_TEST_OUTPUT_MERGE 1) | |
| run_cmake_command(${name}-simpletest-install ${CMAKE_COMMAND} --install ${RunCMake_TEST_BINARY_DIR} --config ${config}) | |
| endfunction() | |
| install_simpletest(Step11) | |
| run_tutorial_step(Step11 TUTORIALPROJECT_SUBDIR SETUP_CMAKE_PREFIX) | |
| install_simpletest(Complete) | |
| run_tutorial_step(Complete TUTORIALPROJECT_SUBDIR SETUP_CMAKE_PREFIX) |