File: build-database-check.cmake

package info (click to toggle)
cmake 4.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152,336 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 (88 lines) | stat: -rw-r--r-- 3,063 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
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("${CMAKE_CURRENT_LIST_DIR}/../check-json.cmake")

function (check_build_database expect_basename fname component)
  if (component STREQUAL "NO_EXIST")
    if (EXISTS "${RunCMake_TEST_BINARY_DIR}/${fname}")
      list(APPEND RunCMake_TEST_FAILED
        "Build database detected before it is expected (${fname}).")
      set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    endif ()
    return ()
  endif ()

  if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/${fname}")
    list(APPEND RunCMake_TEST_FAILED
      "No build database detected (${fname}).")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    return ()
  endif ()

  if (component STREQUAL "ALL")
    set(CXXModules_config "Debug")
    set(suffix "all")
  elseif (component STREQUAL "ALL_MULTI")
    set(CXXModules_config "Debug")
    set(CXXModules_config_other "Release")
    set(suffix "all-multi")
  elseif (component STREQUAL "JUST_CXX")
    set(CXXModules_config "Debug")
    set(suffix "cxx")
  elseif (component STREQUAL "JUST_CXX_MULTI")
    set(CXXModules_config "Debug")
    set(CXXModules_config_other "Release")
    set(suffix "cxx-multi")
  elseif (component STREQUAL "CXX_AND_DEBUG")
    set(CXXModules_config "Debug")
    set(suffix "cxx-config")
  elseif (component STREQUAL "CXX_AND_RELEASE")
    set(CXXModules_config "Release")
    set(suffix "cxx-config")
  elseif (component STREQUAL "JUST_DEBUG")
    set(CXXModules_config "Debug")
    set(suffix "config")
  elseif (component STREQUAL "JUST_RELEASE")
    set(CXXModules_config "Release")
    set(suffix "config")
  elseif (component STREQUAL "JUST_TARGET_DEBUG")
    set(CXXModules_config "Debug")
    set(suffix "target")
  elseif (component STREQUAL "JUST_TARGET_RELEASE")
    set(CXXModules_config "Release")
    set(suffix "target")
  elseif (component STREQUAL "JUST_TARGET")
    set(CXXModules_config "Debug")
    set(suffix "target")
  else ()
    list(APPEND RunCMake_TEST_FAILED
      "Unrecognized test component for ${fname}: ${component}")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    return ()
  endif ()

  set(expected_file "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/expect/${expect_basename}-${suffix}.json")
  if (NOT EXISTS "${expected_file}")
    list(APPEND RunCMake_TEST_FAILED
      "No expected output JSON file found: ${expected_file}")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    return ()
  endif ()

  file(READ "${RunCMake_TEST_BINARY_DIR}/${fname}" actual)
  file(READ "${expected_file}" expect)

  set(RunCMake_TEST_FAILED_before "${RunCMake_TEST_FAILED}")
  set(RunCMake_TEST_FAILED "")

  check_json("${actual}" "${expect}")

  if (RunCMake_TEST_FAILED)
    string(PREPEND RunCMake_TEST_FAILED
      "${RunCMake_TEST_FAILED_before}\n"
      "actual file: ${RunCMake_TEST_BINARY_DIR}/${fname}\n"
      "expect file: ${expected_file}\n")
  else ()
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED_before}")
  endif ()

  set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
endfunction ()