cmake_minimum_required(VERSION 3.10)
project(NBData VERSION 0.1)

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

toAbsolutePath(NB_DATA_SOURCE 
    ./src/FFT.cpp
)
toAbsolutePath(NB_DATA_INCLUDE
    ./include/NBData/FFT.hpp
)

set(NB_DATA_SOURCE ${NB_DATA_SOURCE} PARENT_SCOPE)
set(NB_DATA_INCLUDE ${NB_DATA_INCLUDE} PARENT_SCOPE)

add_library(NBData ${NB_DATA_SOURCE})
add_library(NBEngine::Data ALIAS NBData)
target_link_libraries(NBData
    NBCore
)
target_include_directories(NBData
    PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
    PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
export(
    TARGETS NBData
    FILE "${CMAKE_BINARY_DIR}/cmake/NBDataTargets.cmake"
    NAMESPACE NBEngine::
)
configure_package_config_file(
    "NBDataConfig.cmake.in"
    "${CMAKE_BINARY_DIR}/cmake/NBDataConfig.cmake"
    INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/cmake"
    PATH_VARS CMAKE_INSTALL_LIBDIR
)
write_basic_package_version_file(
    "${CMAKE_BINARY_DIR}/cmake/NBDataConfigVersion.cmake"
    COMPATIBILITY AnyNewerVersion 
)

if (NBENGINE_INSTALL)
    message("Installing NBData to ${CMAKE_INSTALL_PREFIX}")
    install(
        TARGETS NBData
        EXPORT NBDataTargets
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        INCLUDES DESTINATION include
    )
    install(
        DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/NBData"
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
        FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
    )
    install(
        EXPORT NBDataTargets
        DESTINATION "${CMAKE_INSTALL_PREFIX}/cmake"
        NAMESPACE NBEngine::
    )
    install(FILES
        "${CMAKE_BINARY_DIR}/cmake/NBDataConfig.cmake"
        "${CMAKE_BINARY_DIR}/cmake/NBDataConfigVersion.cmake"
        DESTINATION "${CMAKE_INSTALL_PREFIX}/CMake"
    )
endif()

if (NB_BUILD_TESTS)
    add_subdirectory(./tests )
endif()