cmake_minimum_required(VERSION 3.10)
project(zed_x_diag LANGUAGES CXX)

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

# The ZED SDK ships zed-config.cmake, but it pulls in a lot of optional machinery.
# This utility only needs libsl_zed plus the CUDA runtime, so link them directly.
set(ZED_DIR "/usr/local/zed" CACHE PATH "ZED SDK installation prefix")
set(CUDA_DIR "/usr/local/cuda" CACHE PATH "CUDA installation prefix")

find_library(SL_ZED_LIB  NAMES sl_zed  PATHS ${ZED_DIR}/lib  REQUIRED)
find_library(CUDART_LIB  NAMES cudart  PATHS ${CUDA_DIR}/lib64 ${CUDA_DIR}/targets/aarch64-linux/lib REQUIRED)

find_package(Threads REQUIRED)

add_executable(zed_x_diag
    src/main.cpp
    src/backend_common.cpp
    src/backend_one.cpp
    src/backend_stereo.cpp
    src/camera_worker.cpp
    src/qualification.cpp
    src/stats.cpp
)

target_include_directories(zed_x_diag PRIVATE
    ${ZED_DIR}/include
    ${CUDA_DIR}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/src
)

target_link_libraries(zed_x_diag PRIVATE
    ${SL_ZED_LIB}
    ${CUDART_LIB}
    Threads::Threads
)

set_target_properties(zed_x_diag PROPERTIES
    BUILD_RPATH "${ZED_DIR}/lib"
    INSTALL_RPATH "${ZED_DIR}/lib"
)

target_compile_options(zed_x_diag PRIVATE -O2 -Wall -Wextra -Wno-unused-parameter)
