38 cmake_parse_arguments(PARSE_ARGV 0 _vtk_object_factory_declare
43 if (_vtk_object_factory_declare_UNPARSED_ARGUMENTS)
45 "Unparsed arguments for vtk_object_factory_declare: "
46 "${_vtk_object_factory_declare_UNPARSED_ARGUMENTS}")
49 if (NOT DEFINED _vtk_object_factory_declare_BASE)
51 "The `BASE` argument is required.")
54 if (NOT DEFINED _vtk_object_factory_declare_OVERRIDE)
56 "The `OVERRIDE` argument is required.")
59 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}
" APPEND
61 _vtk_object_factory_overrides "${_vtk_object_factory_declare_OVERRIDE}
")
62 set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}
" APPEND
64 "_vtk_object_factory_override_${_vtk_object_factory_declare_OVERRIDE}
" "${_vtk_object_factory_declare_BASE}
")
95function (vtk_object_factory_configure)
96 if (NOT DEFINED _vtk_build_module)
101 cmake_parse_arguments(PARSE_ARGV 0 _vtk_object_factory_configure
103 "SOURCE_FILE;HEADER_FILE;INITIAL_CODE;EXPORT_MACRO;INITIAL_CODE_FILE
"
106 if (_vtk_object_factory_configure_UNPARSED_ARGUMENTS)
109 "${_vtk_object_factory_configure_UNPARSED_ARGUMENTS}
")
112 if (DEFINED _vtk_object_factory_configure_INITIAL_CODE AND
113 DEFINED _vtk_object_factory_configure_INITIAL_CODE_FILE)
115 "At most one of `INITIAL_CODE` and `INITIAL_CODE_FILE` may be specified
"
119 if (_vtk_object_factory_configure_INITIAL_CODE_FILE)
120 file(READ "${_vtk_object_factory_configure_INITIAL_CODE_FILE}
"
121 _vtk_object_factory_configure_INITIAL_CODE)
124 get_property(_vtk_object_factory_done
126 PROPERTY "_vtk_object_factory_${_vtk_build_module}
"
128 if (_vtk_object_factory_done)
130 "An
object factory has already been created
for ${_vtk_build_module}.
")
134 "_vtk_object_factory_${_vtk_build_module}
" 1)
137 get_property(_vtk_object_factory_overrides
139 PROPERTY _vtk_object_factory_overrides)
141 if (NOT _vtk_object_factory_overrides)
143 "The ${_vtk_build_module} is generating an
object factory, but does not have any declared overrides.
")
146 set(_vtk_object_factory_doc
147 "Override
for ${_vtk_build_module}
module")
149 set(_vtk_object_factory_includes "")
150 set(_vtk_object_factory_functions "")
151 set(_vtk_object_factory_calls "")
153 foreach (_vtk_object_factory_extra_include IN LISTS _vtk_object_factory_configure_EXTRA_INCLUDES)
154 string(APPEND _vtk_object_factory_includes
155 "#include ${_vtk_object_factory_extra_include}\n")
158 foreach (_vtk_object_factory_override IN LISTS _vtk_object_factory_overrides)
159 get_property(_vtk_object_factory_base
161 PROPERTY "_vtk_object_factory_override_${_vtk_object_factory_override}")
162 string(APPEND _vtk_object_factory_includes
163 "#include \"${_vtk_object_factory_override}.h\"\n")
164 string(APPEND _vtk_object_factory_functions
165 "VTK_CREATE_CREATE_FUNCTION(${_vtk_object_factory_override})\n")
166 string(APPEND _vtk_object_factory_calls
167 "this->RegisterOverride(\"${_vtk_object_factory_base}\", \"${_vtk_object_factory_override}\", \"${_vtk_object_factory_doc}\", 1, vtkObjectFactoryCreate${_vtk_object_factory_override});\n
")
170 get_property(_vtk_object_factory_library_name GLOBAL
171 PROPERTY "_vtk_module_${_vtk_build_module}_library_name
")
173 set(_vtk_object_factory_overrides_header
174 "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_object_factory_library_name}ObjectFactory.h
")
175 set(_vtk_object_factory_overrides_source
176 "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_object_factory_library_name}ObjectFactory.cxx
")
180 "${_vtk_object_factory_overrides_header}
"
184 "${_vtk_object_factory_overrides_source}
"
187 if (_vtk_object_factory_configure_HEADER_FILE)
188 set("${_vtk_object_factory_configure_HEADER_FILE}
"
189 "${_vtk_object_factory_overrides_header}
"
193 set("${_vtk_object_factory_configure_SOURCE_FILE}
"
194 "${_vtk_object_factory_overrides_source}
"