cmake_minimum_required(VERSION 3.22)
project(SAKPrecision LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
function(add_variant product variant instrument)
  set(target ${product}_${variant}_${instrument})
  set(root ${CMAKE_CURRENT_BINARY_DIR}/generated/${variant})
  add_library(${target} SHARED bridge.cpp)
  target_include_directories(${target} PRIVATE ${root}/${product} ${root}/shared ${CMAKE_CURRENT_SOURCE_DIR})
  if(product STREQUAL "tube")
    target_sources(${target} PRIVATE ${root}/tube/DSP/Amplifier.cpp)
    target_compile_definitions(${target} PRIVATE SAK_TUBE=1)
  endif()
  if(instrument STREQUAL "profile")
    target_compile_definitions(${target} PRIVATE SAK_PROFILE=1)
  endif()
  if(MSVC)
    target_compile_options(${target} PRIVATE /O2 /fp:precise /FIProfile.h)
  else()
    target_compile_options(${target} PRIVATE -O3 -fno-fast-math -include Profile.h)
  endif()
endfunction()
include(variants.cmake)
