cmake_minimum_required(VERSION 3.22)
project(TubeForensics LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
foreach(variant baseline lab)
 set(src ${CMAKE_CURRENT_BINARY_DIR}/generated/${variant}/SAK-TUBE/SAK-TUBE/Source)
 add_library(tube_${variant} SHARED bridge.cpp ${src}/DSP/Amplifier.cpp)
 target_include_directories(tube_${variant} PRIVATE ${src} ${CMAKE_CURRENT_SOURCE_DIR})
 if(variant STREQUAL lab)
  target_compile_definitions(tube_${variant} PRIVATE LAB_BUILD=1)
 endif()
 if(MSVC)
  target_compile_options(tube_${variant} PRIVATE /O2 /fp:precise /W3)
 endif()
endforeach()
add_library(tube_filters SHARED filters.cpp)
target_include_directories(tube_filters PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated/baseline/Shared/DSP)
add_library(tube_refined SHARED bridge.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated/refined/SAK-TUBE/SAK-TUBE/Source/DSP/Amplifier.cpp)
target_include_directories(tube_refined PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated/refined/SAK-TUBE/SAK-TUBE/Source ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(tube_refined PRIVATE LAB_BUILD=1)
if(MSVC)
 target_compile_options(tube_refined PRIVATE /O2 /fp:precise)
endif()
add_library(tube_highrate SHARED bridge.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated/highrate/SAK-TUBE/SAK-TUBE/Source/DSP/Amplifier.cpp)
target_include_directories(tube_highrate PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated/highrate/SAK-TUBE/SAK-TUBE/Source ${CMAKE_CURRENT_SOURCE_DIR})
if(MSVC)
 target_compile_options(tube_highrate PRIVATE /O2 /fp:precise)
endif()
