summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/Tutorial/RunCMakeTest.cmake
blob: fbd8b96f56291d4fab830bfd464f6e0904dcf0ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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 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)