cmake_minimum_required(VERSION 3.16)

project(adclib LANGUAGES CXX DESCRIPTION "Abstract Device Components Library")

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

option(BUILD_EXAM "Build examples" ON)

# ------- dependencies -------

include(FetchContent)

FetchContent_Declare(
    snplib
    GIT_REPOSITORY https://timur@git.sao.ru/timur/snipplib.git
    GIT_TAG main
    GIT_SHALLOW 1
    GIT_PROGRESS 1
    SOURCE_DIR ${CMAKE_BINARY_DIR}/snipplib
)

FetchContent_MakeAvailable(snplib)


set(ADCLIB_HEADERS include/adclib/adclib_device.h 
                   include/adclib/adclib_common.h)

add_library(${PROJECT_NAME} INTERFACE ${ADCLIB_HEADERS})
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_23)
target_include_directories(
    ${PROJECT_NAME}
    INTERFACE
        "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
        "$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
)

target_link_libraries(${PROJECT_NAME} INTERFACE snipplib)

if(BUILD_EXAM)
    add_executable(device_exam examples/device_exam.cpp)
    target_link_libraries(device_exam PRIVATE ${PROJECT_NAME})
endif()

include(GNUInstallDirs) 
install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
