cmake_minimum_required(VERSION 3.20)

project(hdk-grid 
  VERSION 0.0.1
  LANGUAGES CXX
)

# Note: The src/ directory contains Doxygen documentation-only .cpp files.
# This is a header-only library; src/ files are not compiled into any targets.

option(HDK_GRID_TESTS "Build hdk-grid tests" ${HDK_TESTS})
# No examples for grid at the moment

add_library(hdk-grid INTERFACE)
target_compile_features(hdk-grid INTERFACE cxx_std_17)

target_include_directories(
  hdk-grid
  INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:include>
)

if(HDK_GRID_TESTS)
  add_subdirectory(test)
endif()

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS hdk-grid
  EXPORT hdk-gridTargets
)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(EXPORT hdk-gridTargets
  FILE hdk-gridTargets.cmake
  NAMESPACE hdk::
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hdk-grid
)

configure_package_config_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hdk-gridConfig.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/hdk-gridConfig.cmake
  INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hdk-grid
)

write_basic_package_version_file(
  ${CMAKE_CURRENT_BINARY_DIR}/hdk-gridConfigVersion.cmake
  VERSION ${PROJECT_VERSION}
  COMPATIBILITY SameMajorVersion
)

install(FILES
  ${CMAKE_CURRENT_BINARY_DIR}/hdk-gridConfig.cmake
  ${CMAKE_CURRENT_BINARY_DIR}/hdk-gridConfigVersion.cmake
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hdk-grid
)

# TODO: Link to dependencies if we need but keep them minimal and optional.

# DIRS important for coverage filtering
list(APPEND HDK_COVERAGE_DIRS
  ${CMAKE_CURRENT_SOURCE_DIR}/include
)
