File: RunCMakeTest.cmake

package info (click to toggle)
cmake 4.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152,456 kB
  • sloc: ansic: 403,896; cpp: 303,920; sh: 4,105; python: 3,583; 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: 111; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (83 lines) | stat: -rw-r--r-- 2,881 bytes parent folder | download | duplicates (4)
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
cmake_minimum_required(VERSION 3.16)
include(RunCMake)

# Function to build and install a project.
function(run_install_test case)
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build)
  run_cmake(${case})
  set(RunCMake_TEST_NO_CLEAN 1)
  run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug)
  # Check "all" components.
  set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-all)
  set(maybe_stderr "${case}-all-stderr-${CMAKE_C_COMPILER_ID}.txt")
  if(EXISTS "${RunCMake_SOURCE_DIR}/${maybe_stderr}")
    set(RunCMake-stderr-file "${maybe_stderr}")
  endif()
  run_cmake_command(${case}-all ${CMAKE_COMMAND} --install . --prefix ${CMAKE_INSTALL_PREFIX} --config Debug)
endfunction()

# Function to check the contents of the output files.
function(check_contents filename contents_regex)
  if(EXISTS "${CMAKE_INSTALL_PREFIX}/${filename}")
    file(READ "${CMAKE_INSTALL_PREFIX}/${filename}" contents)
    if(NOT contents MATCHES "${contents_regex}")
      string(APPEND RunCMake_TEST_FAILED "File contents:
  ${contents}
do not match what we expected:
  ${contents_regex}
in file:
  ${CMAKE_INSTALL_PREFIX}/${filename}\n")
      set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    endif()
  else()
    string(APPEND RunCMake_TEST_FAILED "File ${CMAKE_INSTALL_PREFIX}/${filename} does not exist")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
  endif()
endfunction()

if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
  if(NOT CMake_INSTALL_NAME_TOOL_BUG)
    run_install_test(macos)
    run_install_test(macos-rpath)
    run_install_test(macos-unresolved)
    run_install_test(macos-conflict)
    run_install_test(macos-notfile)
    run_install_test(macos-parent-rpath-propagation)
    run_install_test(file-filter)
  endif()
  run_cmake(project)
  run_cmake(badargs1)
  run_cmake(badargs2)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
  run_install_test(windows)
  run_install_test(windows-unresolved)
  run_install_test(windows-conflict)
  run_install_test(windows-notfile)
  run_install_test(file-filter)
  run_cmake(project)
  run_cmake(badargs1)
  run_cmake(badargs2)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
  if(DEFINED ENV{LDFLAGS})
    # Some setups prebake disable-new-dtags into LDFLAGS
    string(REPLACE "-Wl,--disable-new-dtags" "" new_ldflags "$ENV{LDFLAGS}")
    set(ENV{LDFLAGS} "${new_ldflags}")
  endif()

  if(NOT CMake_COMPILER_FORCES_NEW_DTAGS)
    run_install_test(linux)
    run_install_test(linux-parent-rpath-propagation)
    run_install_test(file-filter)
  endif()
  run_install_test(linux-unresolved)
  run_install_test(linux-conflict)
  run_install_test(linux-notfile)
  run_install_test(linux-indirect-dependencies)
  run_cmake(project)
  run_cmake(badargs1)
  run_cmake(badargs2)
else()
  run_cmake(unsupported)
endif()

run_install_test(variable-propagation)