104 cmake_parse_arguments(PARSE_ARGV 0 _vtk_json
109 if (_vtk_json_UNPARSED_ARGUMENTS)
111 "Unparsed arguments for vtk_module_json: "
112 "${_vtk_json_UNPARSED_ARGUMENTS}")
115 if (NOT DEFINED _vtk_json_OUTPUT)
117 "The `OUTPUT` argument is required.")
120 if (NOT _vtk_json_MODULES)
121 message(FATAL_ERROR "No modules given to output.")
124 if (NOT IS_ABSOLUTE "${_vtk_json_OUTPUT}
")
125 string(PREPEND _vtk_json_OUTPUT "${CMAKE_BINARY_DIR}/
")
130 set(_vtk_json_contents "{
")
131 string(APPEND _vtk_json_contents "\
"modules\": {")
132 foreach (_vtk_json_module IN LISTS _vtk_json_MODULES)
133 get_property(_vtk_json_description GLOBAL
134 PROPERTY
"_vtk_module_${_vtk_json_module}_description")
135 get_property(_vtk_json_implementable GLOBAL
136 PROPERTY
"_vtk_module_${_vtk_json_module}_implementable")
137 get_property(_vtk_json_third_party GLOBAL
138 PROPERTY
"_vtk_module_${_vtk_json_module}_third_party")
139 get_property(_vtk_json_wrap_exclude GLOBAL
140 PROPERTY
"_vtk_module_${_vtk_json_module}_wrap_exclude")
141 get_property(_vtk_json_kit GLOBAL
142 PROPERTY
"_vtk_module_${_vtk_json_module}_kit")
143 get_property(_vtk_json_depends GLOBAL
144 PROPERTY
"_vtk_module_${_vtk_json_module}_depends")
145 get_property(_vtk_json_private_depends GLOBAL
146 PROPERTY
"_vtk_module_${_vtk_json_module}_private_depends")
147 get_property(_vtk_json_optional_depends GLOBAL
148 PROPERTY
"_vtk_module_${_vtk_json_module}_optional_depends")
149 get_property(_vtk_json_implements GLOBAL
150 PROPERTY
"_vtk_module_${_vtk_json_module}_implements")
151 get_property(_vtk_json_library_name GLOBAL
152 PROPERTY
"_vtk_module_${_vtk_json_module}_library_name")
153 get_property(_vtk_json_module_file GLOBAL
154 PROPERTY
"_vtk_module_${_vtk_json_module}_file")
155 get_property(_vtk_json_licenses GLOBAL
156 PROPERTY
"_vtk_module_${_vtk_json_module}_licenses")
158 set(_vtk_json_kit_name
"null")
160 list(APPEND _vtk_json_kits
162 set(_vtk_json_kit_name
"\"${_vtk_json_kit}\"")
164 set(_vtk_json_headers
"")
165 if (TARGET
"${_vtk_json_module}")
168 VARIABLE _vtk_json_headers)
169 get_filename_component(_vtk_json_module_dir
"${_vtk_json_module_file}" DIRECTORY)
170 file(RELATIVE_PATH _vtk_json_module_subdir
"${CMAKE_SOURCE_DIR}" "${_vtk_json_module_dir}")
171 string(REPLACE
"${CMAKE_SOURCE_DIR}/${_vtk_json_module_subdir}/" "" _vtk_json_headers
"${_vtk_json_headers}")
172 string(REPLACE
"${CMAKE_BINARY_DIR}/${_vtk_json_module_subdir}/" "" _vtk_json_headers
"${_vtk_json_headers}")
175 string(APPEND _vtk_json_contents
"\"${_vtk_json_module}\": {")
176 string(APPEND _vtk_json_contents
"\"library_name\": \"${_vtk_json_library_name}\", ")
177 string(APPEND _vtk_json_contents
"\"description\": \"${_vtk_json_description}\", ")
178 _vtk_json_bool(_vtk_json_contents
"enabled" "TARGET;${_vtk_json_module}")
179 _vtk_json_bool(_vtk_json_contents
"implementable" _vtk_json_implementable)
180 _vtk_json_bool(_vtk_json_contents
"third_party" _vtk_json_third_party)
181 _vtk_json_bool(_vtk_json_contents
"wrap_exclude" _vtk_json_wrap_exclude)
182 string(APPEND _vtk_json_contents
"\"kit\": ${_vtk_json_kit_name}, ")
189 string(APPEND _vtk_json_contents
"}, ")
191 string(APPEND _vtk_json_contents
"}, ")
193 string(APPEND _vtk_json_contents
"\"kits\": {")
194 foreach (_vtk_json_kit IN LISTS _vtk_json_kits)
195 set(_vtk_json_library_name
"null")
196 if (TARGET
"${_vtk_json_kit}")
197 get_property(_vtk_json_library
198 TARGET
"${_vtk_json_kit}"
199 PROPERTY LIBRARY_OUTPUT_NAME)
200 set(_vtk_json_library_name
"\"${_vtk_json_library}\"")
203 string(APPEND _vtk_json_contents
"\"${_vtk_json_kit}\": {")
204 string(APPEND _vtk_json_contents
"\"library_name\": ${_vtk_json_library_name}, ")
205 _vtk_json_bool(_vtk_json_contents
"enabled" "TARGET;${_vtk_json_kit}")
206 string(APPEND _vtk_json_contents
"}, ")
208 string(APPEND _vtk_json_contents
"}, ")
210 string(APPEND _vtk_json_contents
"}")
211 string(REPLACE
", ]" "]" _vtk_json_contents
"${_vtk_json_contents}")
212 string(REPLACE
", }" "}" _vtk_json_contents
"${_vtk_json_contents}")
214 OUTPUT
"${_vtk_json_OUTPUT}"
215 CONTENT
"${_vtk_json_contents}")