File: RunCMakeTest.cmake

package info (click to toggle)
cmake 4.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 152,348 kB
  • sloc: ansic: 403,894; cpp: 303,807; sh: 4,097; python: 3,582; yacc: 3,106; lex: 1,279; f90: 538; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 239; objc: 215; perl: 213; xml: 198; makefile: 108; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (59 lines) | stat: -rw-r--r-- 2,377 bytes parent folder | download | duplicates (2)
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
include(RunCMake)

function(install_test test)
  cmake_parse_arguments(ARGS "PARALLEL;NINJA;TOUCH_CACHE" "ARGS;COMPONENT" "" ${ARGN})
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-install)
  set(RunCMake_TEST_OPTIONS -DINSTALL_PARALLEL=${ARGS_PARALLEL} -DCMAKE_INSTALL_PREFIX=install)
  set(RunCMake_TEST_OUTPUT_MERGE 1)
  if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
  endif()
  if (ARGS_COMPONENT)
    list(APPEND ARGS_ARGS "--component ${ARGS_COMPONENT}")
  endif()
  run_cmake(install)
  set(RunCMake_TEST_NO_CLEAN 1)
  if (ARGS_TOUCH_CACHE)
    run_cmake_command(${test}-sleep ${CMAKE_COMMAND} -E sleep 2)
    run_cmake_command(${test}-touch
      ${CMAKE_COMMAND} -E touch ${RunCMake_TEST_BINARY_DIR}/CMakeFiles/cmake.check_cache)
  endif()
  if (ARGS_NINJA)
    if (ARGS_PARALLEL)
      set(INSTALL_COUNT 5)
    else()
      set(INSTALL_COUNT 1)
    endif()
    set(RunCMake-check-file check-num-installs.cmake)
    run_cmake_command(${test}-install ${CMAKE_COMMAND} -E env --unset=NINJA_STATUS ${CMAKE_COMMAND} --build . --config Debug ${ARGS_ARGS})
    unset(RunCMake-check-file)
  else()
    if (ARGS_COMPONENT)
      if(ARGS_COMPONENT MATCHES "^[a-zA-Z0-9_.+-]+$")
        set(INSTALL_MANIFEST "install_manifest_${ARGS_COMPONENT}.txt")
      else()
        string(MD5 COMPONENT_HASH "${ARGS_COMPONENT}")
        set(INSTALL_MANIFEST "install_manifest_${COMPONENT_HASH}.txt")
      endif()
      set(INSTALL_COUNT 0)
    else()
      set(INSTALL_MANIFEST "install_manifest.txt")
      set(INSTALL_COUNT 5)
    endif()
    set(INSTALL_MANIFEST ${RunCMake_TEST_BINARY_DIR}/${INSTALL_MANIFEST})
    set(RunCMake-check-file check-manifest.cmake)
    run_cmake_command(${test}-install ${CMAKE_COMMAND} -E env --unset=NINJA_STATUS ${CMAKE_COMMAND} --install . ${ARGS_ARGS})
    unset(RunCMake-check-file)
  endif()
endfunction()

install_test(parallel PARALLEL ARGS "-j 4")
install_test(no-parallel ARGS "-j 4")
install_test(out-of-date-json TOUCH_CACHE PARALLEL ARGS "-j 4")
install_test(component PARALLEL ARGS "-j 4" COMPONENT "ALPHANUMERIC123")
install_test(component-hash PARALLEL ARGS "-j 4" COMPONENT "@#$")

if(RunCMake_GENERATOR MATCHES "Ninja")
  install_test(ninja-parallel ARGS "-t install/parallel" NINJA PARALLEL)
  install_test(ninja-no-parallel ARGS "-t install" NINJA)
endif()