cmake_minimum_required(VERSION 3.16)
project(xlidar_driver VERSION 2.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release)
endif()

find_package(Threads REQUIRED)

option(XLIDAR_BUILD_EXAMPLES "Build example/demo binaries" ON)

add_subdirectory(src)
add_subdirectory(plugins)

if(XLIDAR_BUILD_EXAMPLES)
  add_subdirectory(examples)
endif()

# ── install + find_package() support ─────────────────────────────────────────
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(TARGETS lidar_manager
    EXPORT xlidar_driverTargets
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xlidar)

install(EXPORT xlidar_driverTargets
    FILE xlidar_driverTargets.cmake
    NAMESPACE xlidar::
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
)

configure_package_config_file(
    cmake/xlidar_driverConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfig.cmake
    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
)
write_basic_package_version_file(
    ${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfigVersion.cmake
    VERSION ${PROJECT_VERSION}
    COMPATIBILITY SameMajorVersion
)
install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfig.cmake
    ${CMAKE_CURRENT_BINARY_DIR}/xlidar_driverConfigVersion.cmake
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/xlidar_driver
)
