cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)

project(gazebo_maritime)

find_package(gz-sim REQUIRED)
find_package(gz-common REQUIRED COMPONENTS graphics)
find_package(gz-math REQUIRED)
find_package(gz-msgs REQUIRED)
find_package(gz-transport REQUIRED)
find_package(gz-plugin REQUIRED COMPONENTS loader register)
find_package(gz-rendering REQUIRED)
find_package(gz-sensors REQUIRED)
find_package(gz-utils REQUIRED)
find_package(sdformat REQUIRED)
find_package(Eigen3 REQUIRED)

# Waves
add_library(Waves SHARED
  src/Wavefield.cc
)
target_link_libraries(Waves PUBLIC
  Eigen3::Eigen
  gz-common::gz-common
  gz-math::core
  gz-msgs::gz-msgs
  gz-sim::core
)
install(
  TARGETS Waves
  DESTINATION lib)

# Other plugins
list(APPEND MARITIME_GZ_PLUGINS
  PublisherPlugin
  Surface
  WaveVisual
)

foreach(PLUGIN ${MARITIME_GZ_PLUGINS})
  add_library(${PLUGIN} SHARED src/${PLUGIN}.cc)
  target_link_libraries(${PLUGIN} PUBLIC
    Eigen3::Eigen
    gz-plugin::core
    gz-rendering::core
    gz-sensors::core
    gz-sim::core
    gz-transport::core
    gz-utils::core
    Waves
  )
endforeach()

install(
  TARGETS ${MARITIME_GZ_PLUGINS}
  DESTINATION lib)

#============================================================================
# Resources
install(DIRECTORY
  models
  worlds
  DESTINATION share/${PROJECT_NAME})
