cmake_minimum_required(VERSION 3.10) project(soothe2_dsp) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Threads REQUIRED) find_library(SAMPLERATE samplerate) add_library(soothe2_dsp SHARED fft_plan.cpp fft_stage.cpp twiddle_builder.cpp fft.cpp spectral.cpp filter.cpp detect.cpp twin.cpp freqpath.cpp levelpath.cpp phase_table.cpp fftconv.cpp vlog.cpp exp2_tables.cpp exp2.cpp leveltrack.cpp framed_model.cpp fnfaith.cpp fn529fe0.cpp rt_weights.cpp rt_mask_tables.cpp ) add_executable(soothe2_harness harness.cpp) add_executable(framed_test framed_test.cpp) add_executable(render48k render48k.cpp) add_executable(twin_check twin_check.cpp) add_executable(tables_check tables_check.cpp) add_executable(fftconv_check fftconv_check.cpp) add_executable(vlog_check vlog_check.cpp) add_executable(leveltrack_check leveltrack_check.cpp) add_executable(levelpath_check levelpath_check.cpp) add_executable(exp2_check exp2_check.cpp) add_executable(fn529fe0_check fn529fe0_check.cpp) target_link_libraries(twin_check soothe2_dsp) target_link_libraries(framed_test soothe2_dsp) target_link_libraries(render48k soothe2_dsp ${SAMPLERATE}) target_link_libraries(exp2_check soothe2_dsp) target_link_libraries(fn529fe0_check soothe2_dsp) target_link_libraries(tables_check soothe2_dsp) target_link_libraries(fftconv_check soothe2_dsp) target_link_libraries(vlog_check soothe2_dsp) target_link_libraries(leveltrack_check soothe2_dsp) target_link_libraries(levelpath_check soothe2_dsp) target_link_libraries(soothe2_harness soothe2_dsp) target_include_directories(soothe2_dsp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(soothe2_dsp Threads::Threads) set_target_properties(soothe2_dsp PROPERTIES POSITION_INDEPENDENT_CODE ON ) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") target_compile_options(soothe2_dsp PRIVATE -O3 -march=native) endif()