File: CheckAutogenJson.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 (27 lines) | stat: -rw-r--r-- 1,135 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


set(expected_values "SHARED_LIB_MACRO" "INTERFACE_LIB_MACRO" "STATIC_LIB_MACRO")
function(checkAutoMocMacroNames FILE_PATH)
  message(STATUS "Checking for auto moc macro names in ${FILE_PATH}")
  file(READ ${FILE_PATH} FILE_CONTENT)
  string(JSON MOC_MACRO_NAMES_ARR GET ${FILE_CONTENT} MOC_MACRO_NAMES)
  # get the length of MOC_MACRO_NAMES in JSON
  string(JSON MOC_MACRO_NAMES_LENGTH LENGTH ${MOC_MACRO_NAMES_ARR})
  if(${MOC_MACRO_NAMES_LENGTH} EQUAL 0)
      message(FATAL_ERROR "MOC_MACRO_NAMES is empty")
  endif()
  message(STATUS "MOC_MACRO_NAMES: ${MOC_MACRO_NAMES_ARR}")

  math(EXPR last_index "${MOC_MACRO_NAMES_LENGTH} - 1")
  set(reverse_index ${last_index})
  foreach(expected_value IN LISTS expected_values)
    string(JSON element GET ${MOC_MACRO_NAMES_ARR} ${reverse_index})
    # check if element equals to expected value
    if(NOT ${element} STREQUAL ${expected_value})
      message(FATAL_ERROR "MOC_MACRO_NAMES is expected to contain ${expected_value} but contains ${element}")
    endif()
    math(EXPR reverse_index "${reverse_index} - 1")
  endforeach()
endfunction()

checkAutoMocMacroNames(${FILE_PATH})