cmake_minimum_required(VERSION 3.10)
project(NBCore VERSION 0.1)

toAbsolutePath(NB_CORE_SOURCE 
    ./src/ErrorsImpl.cpp
    ./src/Logger.cpp
    ./src/Processes.cpp
    ./src/StringUtils.cpp
    ./src/Utils.cpp
)
toAbsolutePath(NB_CORE_INCLUDE
    ./include/NBCore/ANSITerm.hpp
    ./include/NBCore/DataSink.hpp
    ./include/NBCore/Errors.hpp
    ./include/NBCore/ErrorsImpl.hpp
    ./include/NBCore/Logger.hpp
    ./include/NBCore/Processes.hpp
    ./include/NBCore/StringUtils.hpp
    ./include/NBCore/ThreadsafeQueue.hpp
    ./include/NBCore/Types.hpp
    ./include/NBCore/TypeTraits.hpp
    ./include/NBCore/Utils.hpp
)

set(NB_CORE_SOURCE ${NB_CORE_SOURCE} PARENT_SCOPE)
set(NB_CORE_INCLUDE ${NB_CORE_INCLUDE} PARENT_SCOPE)

add_library(NBCore ${NB_CORE_SOURCE})
add_library(NBEngine::Core ALIAS NBCore)
target_include_directories(NBCore
    PUBLIC "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
    PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)

if (NBENGINE_INSTALL)
    message("Installing NBCore to ${CMAKE_INSTALL_PREFIX}")
    include(GNUInstallDirs)
    include(CMakePackageConfigHelpers)
    install(
        TARGETS NBCore
        EXPORT NBCoreTargets
    )
    install(
        DIRECTORY "${PROJECT_SOURCE_DIR}/include/NBCore"
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
        FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
    )
    install(
        EXPORT NBCoreTargets
        DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake
        NAMESPACE NBEngine::
    )
    configure_package_config_file(
        "NBCoreConfig.cmake.in"
        "NBCoreConfig.cmake"
        INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake
        PATH_VARS CMAKE_INSTALL_LIBDIR
    )
    write_basic_package_version_file(
        "${CMAKE_CURRENT_BINARY_DIR}/NBCoreConfigVersion.cmake"
        COMPATIBILITY AnyNewerVersion 
    )
    install(FILES
        "${CMAKE_CURRENT_BINARY_DIR}/NBCoreConfig.cmake"
        "${CMAKE_CURRENT_BINARY_DIR}/NBCoreConfigVersion.cmake"
        DESTINATION "${CMAKE_INSTALL_PREFIX}/cmake"
    )
endif()

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