VTK  9.7.1
vtkModuleThirdParty.cmake
Go to the documentation of this file.
1 cmake_policy(PUSH)
2 if (POLICY CMP0159)
3  cmake_policy(SET CMP0159 NEW)
4 endif ()
5 
6 function (vtk_third_party_extract)
7  cmake_parse_arguments(_vtk_third_party_extract
8  ""
9  "FILE"
10  "TAGS;VERSION_FROM_TAG"
11  ${ARGN})
12 
13  if (_vtk_third_party_extract_UNPARSED_ARGUMENTS)
14  message(FATAL_ERROR
15  "Unparsed arguments for `_vtk_third_party_extract`: "
16  "${_vtk_third_party_extract_UNPARSED_ARGUMENTS}")
17  endif ()
18 
19  if (NOT _vtk_third_party_extract_FILE)
20  message(FATAL_ERROR
21  "The `FILE` argument is required.")
22  endif ()
23 
24  file(STRINGS "${_vtk_third_party_extract_FILE}"
25  _vtk_third_party_extract_lines
26  REGEX "readonly ")
27  foreach (_vtk_third_party_extract_line IN LISTS _vtk_third_party_extract_lines)
28  if (_vtk_third_party_extract_line MATCHES "^readonly ([a-z]+)=\"([^\"]+)\"$")
29  set("_vtk_third_party_extract_key_${CMAKE_MATCH_1}"
30  "${CMAKE_MATCH_2}")
31  endif ()
32  endforeach ()
33 
34  set(_vtk_third_party_extract_var "")
35  set(_vtk_third_party_extract_key 1)
36  foreach (_vtk_third_party_extract_arg IN LISTS _vtk_third_party_extract_TAGS)
37  if (_vtk_third_party_extract_key)
38  set(_vtk_third_party_extract_var "${_vtk_third_party_extract_arg}")
39  set(_vtk_third_party_extract_key 0)
40  else ()
41  if (NOT DEFINED "_vtk_third_party_extract_key_${_vtk_third_party_extract_var}")
42  message(FATAL_ERROR
43  "The key `${_vtk_third_party_extract_var}` is not present in "
44  "`${_vtk_third_party_extract_FILE}")
45  endif ()
46  set("${_vtk_third_party_extract_arg}"
47  "${_vtk_third_party_extract_key_${_vtk_third_party_extract_var}}"
48  PARENT_SCOPE)
49  set(_vtk_third_party_extract_key 1)
50  endif ()
51  endforeach ()
52 
53  if (NOT _vtk_third_party_extract_key)
54  message(FATAL_ERROR
55  "`TAGS` must be given a set of tag/variable pairs.")
56  endif ()
57 
58  if (DEFINED _vtk_third_party_extract_VERSION_FROM_TAG)
59  list(LENGTH _vtk_third_party_extract_VERSION_FROM_TAG _vtk_third_party_extract_vft_length)
60  if (NOT _vtk_third_party_extract_vft_length EQUAL "3")
61  message(FATAL_ERROR
62  "`VERSION_FROM_TAG` requires three arguments")
63  endif ()
64 
65  list(GET _vtk_third_party_extract_VERSION_FROM_TAG 0 _vtk_third_party_extract_tag_key)
66  list(GET _vtk_third_party_extract_VERSION_FROM_TAG 1 _vtk_third_party_extract_tag_version)
67  list(GET _vtk_third_party_extract_VERSION_FROM_TAG 2 _vtk_third_party_extract_tag_regex)
68 
69  if (NOT DEFINED _vtk_third_party_extract_key_${_vtk_third_party_extract_var})
70  message(FATAL_ERROR
71  "`VERSION_FROM_TAG` tag was not found")
72  endif ()
73  if (_vtk_third_party_extract_key_${_vtk_third_party_extract_var} MATCHES "${_vtk_third_party_extract_tag_regex}")
74  set("${_vtk_third_party_extract_tag_version}"
75  "${CMAKE_MATCH_1}"
76  PARENT_SCOPE)
77  else ()
78  message(FATAL_ERROR
79  "`VERSION_FROM_TAG` regex (`${_vtk_third_party_extract_tag_regex}`) "
80  "did not match the tag "
81  "(`${_vtk_third_party_extract_key_${_vtk_third_party_extract_var}}`) "
82  "was not found")
83  endif ()
84  endif ()
85 endfunction ()
86 
87 cmake_policy(POP)
if(abs(tt-1.0)< eps)
Definition: PyrC1Basis.h:1