cmake_minimum_required(VERSION 3.10)

file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" ROBOT_MSG_VERSION LIMIT_COUNT 1)
project(robot_msg VERSION "${ROBOT_MSG_VERSION}" LANGUAGES CXX)

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

add_subdirectory(internal/cpp)

configure_package_config_file(
  "${CMAKE_CURRENT_SOURCE_DIR}/internal/cpp/cmake/robot_msgConfig.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/robot_msgConfig.cmake"
  INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/robot_msg"
)

write_basic_package_version_file(
  "${CMAKE_CURRENT_BINARY_DIR}/robot_msgConfigVersion.cmake"
  VERSION "${PROJECT_VERSION}"
  COMPATIBILITY ExactVersion
)

install(
  DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/internal/cpp/include/"
  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
  FILES_MATCHING PATTERN "*.hpp"
)
install(
  EXPORT robot_msgTargets
  FILE robot_msgTargets.cmake
  NAMESPACE robot_msg::
  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/robot_msg"
)
install(
  FILES
    "${CMAKE_CURRENT_BINARY_DIR}/robot_msgConfig.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/robot_msgConfigVersion.cmake"
  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/robot_msg"
)

if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
  set(_robot_msg_build_testing_default ON)
else()
  set(_robot_msg_build_testing_default OFF)
endif()
option(ROBOT_MSG_BUILD_TESTING "Build robot_msg tests" "${_robot_msg_build_testing_default}")
unset(_robot_msg_build_testing_default)
if(ROBOT_MSG_BUILD_TESTING)
  enable_testing()
  add_subdirectory(internal/tests)
endif()
