202function (_vtk_module_wrap_java_library name)
203 set(_vtk_java_library_sources)
204 set(_vtk_java_library_java_sources)
205 set(_vtk_java_library_link_depends)
206 foreach (_vtk_java_module IN LISTS ARGN)
207 _vtk_module_get_module_property("${_vtk_java_module}"
208 PROPERTY "exclude_wrap"
209 VARIABLE _vtk_java_exclude_wrap)
210 if (_vtk_java_exclude_wrap)
213 _vtk_module_real_target(_vtk_java_target_name "${_vtk_java_module}")
214 _vtk_module_get_module_property("${_vtk_java_module}"
215 PROPERTY "library_name"
216 VARIABLE _vtk_java_library_name)
217 _vtk_module_wrap_java_sources("${_vtk_java_module}" _vtk_java_sources _vtk_java_java_sources)
218 list(APPEND _vtk_java_library_sources
219 ${_vtk_java_sources})
220 list(APPEND _vtk_java_library_java_sources
221 ${_vtk_java_java_sources})
223 _vtk_module_get_module_property("${_vtk_java_module}"
225 VARIABLE _vtk_java_module_depends)
226 foreach (_vtk_java_module_depend IN LISTS _vtk_java_module_depends)
227 _vtk_module_get_module_property("${_vtk_java_module_depend}"
228 PROPERTY "exclude_wrap"
229 VARIABLE _vtk_java_module_depend_exclude_wrap)
230 if (_vtk_java_module_depend_exclude_wrap)
234 _vtk_module_get_module_property("${_vtk_java_module_depend}"
235 PROPERTY "library_name"
236 VARIABLE _vtk_java_depend_library_name)
238 # XXX(kits): This doesn't work
for kits.
239 list(APPEND _vtk_java_library_link_depends
240 "${_vtk_java_depend_library_name}Java")
244 if (NOT _vtk_java_library_sources)
248 if (_vtk_java_library_link_depends)
249 list(REMOVE_DUPLICATES _vtk_java_library_link_depends)
252 set(_vtk_java_target "${name}Java
")
254 # XXX(java): Should this be a `MODULE`? If not, we should probably export
255 # these targets, but then we'll need logic akin to the `vtkModuleWrapPython`
256 # logic for loading wrapped modules from other packages.
257 add_library("${_vtk_java_target}
" SHARED
258 ${_vtk_java_library_sources})
260 if (_vtk_java_UTILITY_TARGET)
261 target_link_libraries("${_vtk_java_target}
"
263 "${_vtk_java_UTILITY_TARGET}
")
266 add_custom_target("${_vtk_java_target}-java-sources
"
268 ${_vtk_java_library_java_sources})
269 add_dependencies("${_vtk_java_target}
"
270 "${_vtk_java_target}-java-sources
")
272 set_property(TARGET "${_vtk_java_target}
"
277 set_property(TARGET "${_vtk_java_target}
"
281 set_property(TARGET "${_vtk_java_target}
"
283 "_vtk_module_java_files
" "${_vtk_java_library_java_sources}
")
285 if (_vtk_java_JNILIB_DESTINATION)
287 TARGETS "${_vtk_java_target}
"
290 DESTINATION "${_vtk_java_JNILIB_DESTINATION}
"
291 COMPONENT "${_vtk_java_JNILIB_COMPONENT}
"
294 DESTINATION "${_vtk_java_JNILIB_DESTINATION}
"
295 COMPONENT "${_vtk_java_JNILIB_COMPONENT}
")
300 TARGETS "${_vtk_java_target}
")
302 target_link_libraries("${_vtk_java_target}
"
305 # XXX(java): If we use modules, remove this.
306 ${_vtk_java_library_link_depends}
351function (vtk_module_wrap_java)
352 cmake_parse_arguments(PARSE_ARGV 0 _vtk_java
354 "JAVA_OUTPUT;WRAPPED_MODULES;LIBRARY_DESTINATION;JNILIB_DESTINATION;JNILIB_COMPONENT;UTILITY_TARGET
"
357 if (_vtk_java_UNPARSED_ARGUMENTS)
360 "${_vtk_java_UNPARSED_ARGUMENTS}
")
363 if (NOT _vtk_java_JAVA_OUTPUT)
364 set(_vtk_java_JAVA_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/vtkJava
")
367 if (NOT _vtk_java_JNILIB_COMPONENT)
368 set(_vtk_java_JNILIB_COMPONENT "jni
")
372 set(CMAKE_BUILD_RPATH_USE_ORIGIN 1)
375 set(_vtk_java_origin_rpath_prefix
378 set(_vtk_java_origin_rpath_prefix
382 list(APPEND CMAKE_INSTALL_RPATH
383 # For sibling wrapped modules.
384 "${_vtk_java_origin_rpath_prefix}
")
386 if (DEFINED _vtk_java_LIBRARY_DESTINATION AND DEFINED _vtk_java_JNILIB_DESTINATION)
387 file(RELATIVE_PATH _vtk_java_relpath
388 "/prefix/${_vtk_java_JNILIB_DESTINATION}
"
389 "/prefix/${_vtk_java_LIBRARY_DESTINATION}
")
391 list(APPEND CMAKE_INSTALL_RPATH
393 "${_vtk_java_origin_rpath_prefix}/${_vtk_java_relpath}
")
397 if (DEFINED _vtk_java_JNILIB_DESTINATION)
398 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_vtk_java_JNILIB_DESTINATION}
")
399 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_vtk_java_JNILIB_DESTINATION}
")
402 if (NOT _vtk_java_MODULES)
404 "No modules were requested
for java wrapping.
")
408 # Disable CMake's automoc support for these targets.
413 set(_vtk_java_all_wrapped_modules)
414 foreach (_vtk_java_module IN LISTS _vtk_java_MODULES)
415 _vtk_module_get_module_property("${_vtk_java_module}
"
416 PROPERTY "library_name
"
417 VARIABLE _vtk_java_exclude_wrap)
418 _vtk_module_get_module_property("${_vtk_java_module}
"
419 PROPERTY "library_name
"
420 VARIABLE _vtk_java_library_name)
421 _vtk_module_wrap_java_library("${_vtk_java_library_name}
" "${_vtk_java_module}
")
423 if (TARGET "${_vtk_java_library_name}Java
")
424 list(APPEND _vtk_java_all_wrapped_modules
425 "${_vtk_java_module}
")
429 if (NOT _vtk_java_all_wrapped_modules)
431 "No modules given could be wrapped.
")
434 if (DEFINED _vtk_java_WRAPPED_MODULES)
435 set("${_vtk_java_WRAPPED_MODULES}
"
436 "${_vtk_java_all_wrapped_modules}
"