if (NOT VTK_FOUND)
  return()
endif()

if (VTK_VERSION VERSION_LESS "9.0.0")
  message(WARNING "vtkJUPITER module does not support versions before VTK 9.0")
  return()
endif()

set(VTKJUPITER_DEFS)
set(VTKJUPITER_INTERNAL_DEFS)
set(VTKJUPITER_INTERFACE_DEFS)

set(VTKJUPITER_LIBS VTK::FiltersGeneral)

add_library(vtkJUPITER vtkJUPITERPolyDataLevelSet.cxx
  vtkJUPITERPolyDataVOF.cxx)
add_library(JUPITER::vtkJUPITER ALIAS vtkJUPITER)

get_target_property(VTKJUPITER_TYPE vtkJUPITER TYPE)

if(VTKJUPITER_TYPE STREQUAL "SHARED_LIBRARY")
  list(APPEND VTKJUPITER_INTERNAL_DEFS "VTKJUPITER_EXPORT")
  list(APPEND VTKJUPITER_INTERFACE_DEFS "VTKJUPITER_IMPORT")
endif()

target_compile_definitions(vtkJUPITER
  PRIVATE ${VTKJUPITER_INTERNAL_DEFS}
  INTERFACE ${VTKJUPITER_INTERFACE_DEFS})

target_link_libraries(vtkJUPITER
  PUBLIC ${VTKJUPITER_LIBS})

target_include_directories(vtkJUPITER
  PRIVATE ${JUPITER_UTILS_SOURCE_DIR}
  INTERFACE $<BUILD_INTERFACE:${JUPITER_UTILS_SOURCE_DIR}>
  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)

set(VTKJUPITER_HEADERS vtkJUPITER.h
  vtkJUPITERPolyDataVOF.h vtkJUPITERPolyDataLevelSet.h)

set_target_properties(vtkJUPITER PROPERTIES
  PUBLIC_HEADER "${VTKJUPITER_HEADERS}")

install(TARGETS vtkJUPITER EXPORT vtkJUPITER
  PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/jupiter/vtkJUPITER)

install(EXPORT vtkJUPITER
  NAMESPACE JUPITER::
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jupiter)
