cmake_minimum_required(VERSION 3.22)
project(TubeExecution LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(VARIANTS reference native active output combined warp10 warp14 warp18 CACHE STRING "Isolated candidates")
foreach(v ${VARIANTS})
 set(src ${CMAKE_CURRENT_BINARY_DIR}/generated/${v}/SAK-TUBE/SAK-TUBE/Source)
 if(v STREQUAL "product")
  set(src ${CMAKE_CURRENT_SOURCE_DIR}/../../SAK-TUBE/SAK-TUBE/Source)
 endif()
 if(EXISTS ${src}/DSP/Amplifier.cpp)
  add_library(tube_${v} SHARED ../tube-numerics/audio_bridge.cpp ${src}/DSP/Amplifier.cpp)
  target_include_directories(tube_${v} PRIVATE ${src} ../tube-forensics)
  if(MSVC)
   target_compile_options(tube_${v} PRIVATE /O2 /fp:precise /W4)
  endif()
 endif()
endforeach()
set(selected_src ${CMAKE_CURRENT_BINARY_DIR}/generated/selected/SAK-TUBE/SAK-TUBE/Source)
if(EXISTS ${selected_src}/DSP/Amplifier.cpp)
 add_executable(execution_candidate_tests ../../SAK-TUBE/SAK-TUBE/Tests/execution_fidelity_validation.cpp ${selected_src}/DSP/Amplifier.cpp)
 target_include_directories(execution_candidate_tests PRIVATE ${selected_src})
 if(MSVC)
  target_compile_options(execution_candidate_tests PRIVATE /O2 /fp:precise /W4)
 endif()
endif()
