9fd4499af05eb1804efe5c86afeb2c79589fc6f3
[platform/upstream/cmake.git] / Tests / RunCMake / Configure / RunCMakeTest.cmake
1 include(RunCMake)
2
3 run_cmake(ContinueAfterError)
4 run_cmake(CustomTargetAfterError)
5 run_cmake(ErrorLogs)
6 run_cmake(FailCopyFileABI)
7
8 # Use a single build tree for a few tests without cleaning.
9 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RerunCMake-build)
10 set(RunCMake_TEST_NO_CLEAN 1)
11 file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
12 file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
13 set(input  "${RunCMake_TEST_BINARY_DIR}/CustomCMakeInput.txt")
14 set(stamp  "${RunCMake_TEST_BINARY_DIR}/CustomCMakeStamp.txt")
15 set(depend "${RunCMake_TEST_BINARY_DIR}/CustomCMakeDepend.txt")
16 set(output "${RunCMake_TEST_BINARY_DIR}/CustomCMakeOutput.txt")
17 set(error  "${RunCMake_TEST_BINARY_DIR}/CustomCMakeError.txt")
18 file(WRITE "${input}" "1")
19 file(WRITE "${depend}" "1")
20 run_cmake(RerunCMake)
21 execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 1) # handle 1s resolution
22 file(WRITE "${input}" "2")
23 run_cmake_command(RerunCMake-build1 ${CMAKE_COMMAND} --build .)
24 file(WRITE "${depend}" "2")
25 run_cmake_command(RerunCMake-build2 ${CMAKE_COMMAND} --build .)
26 execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 1) # handle 1s resolution
27 file(WRITE "${depend}" "3")
28 file(WRITE "${error}" "3")
29 set(RunCMake_TEST_OUTPUT_MERGE 1)
30 run_cmake_command(RerunCMake-build3 ${CMAKE_COMMAND} --build .)
31 if(MSVC_IDE)
32   # Make sure that for Visual Studio the error occurs from within the build
33   # system.
34   file(REMOVE "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/generate.stamp.list")
35   file(WRITE "${error}" "4")
36   # With Visual Studio the error must be on stdout, otherwise the error was not
37   # emitted by ZERO_CHECK.
38   set(RunCMake_TEST_OUTPUT_MERGE 0)
39   run_cmake_command(RerunCMake-build4 ${CMAKE_COMMAND} --build .)
40 endif()
41 unset(RunCMake_TEST_OUTPUT_MERGE)
42 unset(RunCMake_TEST_BINARY_DIR)
43 unset(RunCMake_TEST_NO_CLEAN)
44
45 # Use a single build tree for a few tests without cleaning.
46 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/RemoveCache-build)
47 set(RunCMake_TEST_NO_CLEAN 1)
48 file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
49 file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
50 run_cmake(RemoveCache)
51 file(REMOVE "${RunCMake_TEST_BINARY_DIR}/CMakeCache.txt")
52 run_cmake(RemoveCache)
53
54 if(NOT RunCMake_GENERATOR MATCHES "^Ninja Multi-Config$")
55   run_cmake(NoCMAKE_CROSS_CONFIGS)
56   run_cmake(NoCMAKE_DEFAULT_BUILD_TYPE)
57   run_cmake(NoCMAKE_DEFAULT_CONFIGS)
58 endif()