# Label our AutoStart class as an AutoStart class for ParaView, with the startup
# method "startup()" and the shutdown method "shutdown()"
set(PLUGIN_AUTOSTART_IFACES)
set(PLUGIN_AUTOSTART_IFACE_SRCS)

set(PQPluginHdrs
  pqSMTKResourceManagerStateAutoStart.h
  pqSMTKReadResourceManagerStateBehavior.h
  pqSMTKWriteResourceManagerStateBehavior.h
  )

set(PQPluginSrcs
  pqSMTKResourceManagerStateAutoStart.cxx
  pqSMTKReadResourceManagerStateBehavior.cxx
  pqSMTKWriteResourceManagerStateBehavior.cxx
  )

add_paraview_auto_start(PLUGIN_AUTOSTART_IFACES PLUGIN_AUTOSTART_IFACE_SRCS
  CLASS_NAME pqSMTKResourceManagerStateAutoStart
  STARTUP startup
  SHUTDOWN shutdown
  )

# Construct the MOC files associated with our AutoStart class
pv_qt_wrap_cpp(PLUGIN_MOC_SRCS ${PQPluginHdrs})

include(SMTKPluginMacros)

add_smtk_plugin(
  smtkReadWriteResourceManagerStatePlugin "1.0"
  GUI_INTERFACES
  ${PLUGIN_AUTOSTART_IFACES}
  GUI_SOURCES
  ${PQPluginHdrs}
  ${PQPluginSrcs}
  ${PLUGIN_MOC_SRCS}
  ${PLUGIN_AUTOSTART_IFACE_SRCS}
  REQUIRED_PLUGINS
  smtkPQComponentsPlugin
  REGISTRAR smtk::resource_manager_state::Registrar
  REGISTRAR_HEADER operators/Registrar.h
  MANAGERS smtk::operation::Manager
  )

generate_export_header(smtkReadWriteResourceManagerStatePlugin EXPORT_FILE_NAME Exports.h)

target_link_libraries(smtkReadWriteResourceManagerStatePlugin
  LINK_PUBLIC
  smtkCore
  smtkPQComponentsExt
  smtkReadWriteResourceManagerState
  pqApplicationComponents
  pqComponents
  ${Boost_LIBRARIES}
  Qt5::Core
  )

target_include_directories(smtkReadWriteResourceManagerStatePlugin PUBLIC
  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
  $<INSTALL_INTERFACE:include>
)

smtk_get_kit_name(name dir_prefix)

# Install the header files
install(
  FILES
    ${PQPluginHdrs}
    ${CMAKE_CURRENT_BINARY_DIR}/Exports.h
  DESTINATION
    include/${PROJECT_NAME}/${PROJECT_VERSION}/${dir_prefix})

# Install the library and exports
install(
  TARGETS smtkReadWriteResourceManagerStatePlugin
  EXPORT  ReadWriteSMTKResourceManagerState
  ARCHIVE DESTINATION lib
  LIBRARY DESTINATION lib
  RUNTIME DESTINATION bin
  PUBLIC_HEADER DESTINATION include/${PROJECT_NAME}/${PROJECT_VERSION}/${dir_prefix})
