cmake_minimum_required(VERSION 3.24)

add_library(signalsmith-linear INTERFACE)
set_target_properties(signalsmith-linear PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/include)

# MSVC needs an extra flag to handle this many templates
if (MSVC)
	add_compile_options(/bigobj)
	#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
endif()

option(SIGNALSMITH_USE_ACCELERATE "use the Accelerate framework for Apple targets (OSX/iOS)" ON)
option(SIGNALSMITH_USE_IPP "use IPP (Intel Performance Primitives)" OFF)
option(SIGNALSMITH_USE_PFFFT "use PFFFT (Pretty Fast FFT)" OFF)
option(SIGNALSMITH_USE_PFFFT_DOUBLE "use PFFFT with double" OFF)

if(APPLE AND SIGNALSMITH_USE_ACCELERATE)
	message(STATUS "Signalsmith Linear: using Accelerate")
	target_link_libraries(signalsmith-linear INTERFACE "-framework Accelerate" "cblas")
	target_compile_definitions(signalsmith-linear INTERFACE SIGNALSMITH_USE_ACCELERATE ACCELERATE_NEW_LAPACK)
endif()
if(SIGNALSMITH_USE_IPP)
	find_package(IPP REQUIRED)
	message(STATUS "Signalsmith Linear: using IPP")
	target_link_libraries(signalsmith-linear INTERFACE IPP::ippcore IPP::ipps IPP::ippi)
	target_compile_definitions(signalsmith-linear INTERFACE SIGNALSMITH_USE_IPP)
endif()
if(SIGNALSMITH_USE_PFFFT)
	message(STATUS "Signalsmith Linear: using PFFFT (you need to link this yourself)")
	target_compile_definitions(signalsmith-linear INTERFACE SIGNALSMITH_USE_PFFFT)
endif()
if(SIGNALSMITH_USE_PFFFT_DOUBLE)
	message(STATUS "Signalsmith Linear: using PFFFT with double support")
	target_compile_definitions(signalsmith-linear INTERFACE SIGNALSMITH_USE_PFFFT_DOUBLE)
endif()