# Phase 0 spike — минимальный CMake для двух binaries.
# Цель: max простота, без зависимостей кроме CUDA toolkit.

cmake_minimum_required(VERSION 3.20)
project(cuframes_spike LANGUAGES CXX CUDA)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CUDA_STANDARD 17)

# Compute capability autodetect, fallback на 5.0+ (старые GPU) до 12.0
# (Blackwell). RTX 5090 = sm_120 — наш target.
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
    set(CMAKE_CUDA_ARCHITECTURES "75;86;89;90;120")
endif()

add_executable(pingpong_producer pingpong_producer.cu)
add_executable(pingpong_consumer pingpong_consumer.cu)

# Compile flags — debug-friendly для PoC stage
foreach(target pingpong_producer pingpong_consumer)
    target_compile_options(${target} PRIVATE
        $<$<COMPILE_LANGUAGE:CXX>:-Wall -Wextra -O2 -g>
        $<$<COMPILE_LANGUAGE:CUDA>:-O2 -g -lineinfo>
    )
    target_link_libraries(${target} PRIVATE cuda)
endforeach()
