161 lines
6 KiB
CMake
161 lines
6 KiB
CMake
project(sfizz)
|
|
|
|
# Check SIMD
|
|
include (SfizzSIMDSourceFiles)
|
|
set(BENCHMARK_SIMD_SOURCES)
|
|
sfizz_add_simd_sources(BENCHMARK_SIMD_SOURCES "../src")
|
|
find_package(benchmark CONFIG REQUIRED)
|
|
|
|
# Check libsamplerate
|
|
find_library(SAMPLERATE_LIBRARY "samplerate")
|
|
find_path(SAMPLERATE_INCLUDE_DIR "samplerate.h")
|
|
message(STATUS "Checking samplerate library: ${SAMPLERATE_LIBRARY}")
|
|
message(STATUS "Checking samplerate includes: ${SAMPLERATE_INCLUDE_DIR}")
|
|
if(SAMPLERATE_LIBRARY AND SAMPLERATE_INCLUDE_DIR)
|
|
add_library(sfizz-samplerate INTERFACE)
|
|
target_include_directories(sfizz-samplerate INTERFACE "${SAMPLERATE_INCLUDE_DIR}")
|
|
target_link_libraries(sfizz-samplerate INTERFACE "${SAMPLERATE_LIBRARY}")
|
|
endif()
|
|
|
|
add_library(bm_simd STATIC ${BENCHMARK_SIMD_SOURCES})
|
|
target_link_libraries(bm_simd PRIVATE absl::span sfizz-cpuid)
|
|
target_include_directories(bm_simd PRIVATE ../src/external)
|
|
add_library(bm_ftz STATIC ../src/sfizz/ScopedFTZ.cpp)
|
|
|
|
macro(sfizz_add_benchmark TARGET)
|
|
add_executable("${TARGET}" ${ARGN})
|
|
target_link_libraries("${TARGET}"
|
|
PRIVATE absl::span absl::algorithm
|
|
PRIVATE benchmark::benchmark benchmark::benchmark_main
|
|
PRIVATE bm_simd bm_ftz)
|
|
if (LIBATOMIC_FOUND)
|
|
target_link_libraries ("${TARGET}" PRIVATE atomic)
|
|
endif()
|
|
target_include_directories("${TARGET}" PRIVATE ../src/sfizz ../src/external)
|
|
sfizz_enable_fast_math("${TARGET}")
|
|
endmacro()
|
|
|
|
sfizz_add_benchmark(bm_opf_high_vs_low BM_OPF_high_vs_low.cpp)
|
|
sfizz_add_benchmark(bm_clock BM_clock.cpp)
|
|
sfizz_add_benchmark(bm_write BM_writeInterleaved.cpp)
|
|
sfizz_add_benchmark(bm_read BM_readInterleaved.cpp)
|
|
sfizz_add_benchmark(bm_mathfuns BM_mathfuns.cpp)
|
|
sfizz_add_benchmark(bm_gain BM_gain.cpp)
|
|
sfizz_add_benchmark(bm_divide BM_divide.cpp)
|
|
sfizz_add_benchmark(bm_ramp BM_ramp.cpp)
|
|
sfizz_add_benchmark(bm_ADSR BM_ADSR.cpp)
|
|
target_link_libraries(bm_ADSR PRIVATE sfizz::sfizz)
|
|
|
|
sfizz_add_benchmark(bm_add BM_add.cpp)
|
|
sfizz_add_benchmark(bm_multiplyAdd BM_multiplyAdd.cpp)
|
|
sfizz_add_benchmark(bm_multiplyAddFixedGain BM_multiplyAddFixedGain.cpp)
|
|
sfizz_add_benchmark(bm_multiplyMul BM_multiplyMul.cpp)
|
|
sfizz_add_benchmark(bm_multiplyMulFixedGain BM_multiplyMulFixedGain.cpp)
|
|
sfizz_add_benchmark(bm_subtract BM_subtract.cpp)
|
|
sfizz_add_benchmark(bm_copy BM_copy.cpp)
|
|
sfizz_add_benchmark(bm_mean BM_mean.cpp)
|
|
sfizz_add_benchmark(bm_meanSquared BM_meanSquared.cpp)
|
|
sfizz_add_benchmark(bm_cumsum BM_cumsum.cpp)
|
|
sfizz_add_benchmark(bm_diff BM_diff.cpp)
|
|
sfizz_add_benchmark(bm_pointerIterationOrOffsets BM_pointerIterationOrOffsets.cpp)
|
|
sfizz_add_benchmark(bm_maps BM_maps.cpp)
|
|
target_link_libraries(bm_maps PRIVATE absl::flat_hash_map)
|
|
sfizz_add_benchmark(bm_mapVsArray BM_mapVsArray.cpp)
|
|
sfizz_add_benchmark(bm_random BM_random.cpp)
|
|
sfizz_add_benchmark(bm_clamp BM_clamp.cpp)
|
|
sfizz_add_benchmark(bm_allWithin BM_allWithin.cpp)
|
|
|
|
sfizz_add_benchmark(bm_logger BM_logger.cpp)
|
|
target_link_libraries(bm_logger PRIVATE sfizz::sfizz)
|
|
sfizz_add_benchmark(bm_smoothers BM_smoothers.cpp)
|
|
target_link_libraries(bm_smoothers PRIVATE sfizz::sfizz)
|
|
sfizz_add_benchmark(bm_powerFollower BM_powerFollower.cpp)
|
|
target_link_libraries(bm_powerFollower PRIVATE sfizz::sfizz)
|
|
|
|
if (TARGET sfizz-samplerate)
|
|
sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES})
|
|
target_link_libraries(bm_resample PRIVATE sfizz-samplerate sfizz-sndfile sfizz-cpuid)
|
|
endif()
|
|
|
|
sfizz_add_benchmark(bm_envelopes BM_envelopes.cpp)
|
|
|
|
sfizz_add_benchmark(bm_wavfile BM_wavfile.cpp)
|
|
target_link_libraries(bm_wavfile PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_flacfile BM_flacfile.cpp)
|
|
target_link_libraries(bm_flacfile PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_audioReaders BM_audioReaders.cpp ../src/sfizz/AudioReader.cpp)
|
|
target_link_libraries(bm_audioReaders PRIVATE st_audiofile sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_readChunk BM_readChunk.cpp)
|
|
target_link_libraries(bm_readChunk PRIVATE sfizz-sndfile)
|
|
sfizz_add_benchmark(bm_readChunkFlac BM_readChunkFlac.cpp)
|
|
target_link_libraries(bm_readChunkFlac PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_resampleChunk BM_resampleChunk.cpp)
|
|
target_link_libraries(bm_resampleChunk PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_interpolators BM_interpolators.cpp)
|
|
|
|
sfizz_add_benchmark(bm_filterModulation BM_filterModulation.cpp ../src/sfizz/SfzFilter.cpp)
|
|
target_link_libraries(bm_filterModulation PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_filterStereoMono BM_filterStereoMono.cpp ../src/sfizz/SfzFilter.cpp)
|
|
target_link_libraries(bm_filterStereoMono PRIVATE sfizz-sndfile)
|
|
|
|
sfizz_add_benchmark(bm_stringResonator BM_stringResonator.cpp
|
|
../src/sfizz/effects/impl/ResonantArray.cpp
|
|
../src/sfizz/effects/impl/ResonantArraySSE.cpp
|
|
../src/sfizz/effects/impl/ResonantArrayAVX.cpp
|
|
../src/sfizz/effects/impl/ResonantString.cpp
|
|
../src/sfizz/effects/impl/ResonantStringSSE.cpp
|
|
../src/sfizz/effects/impl/ResonantStringAVX.cpp)
|
|
target_link_libraries(bm_stringResonator PRIVATE sfizz-sndfile)
|
|
|
|
add_custom_target(sfizz_benchmarks)
|
|
add_dependencies(sfizz_benchmarks
|
|
bm_opf_high_vs_low
|
|
bm_write
|
|
bm_clock
|
|
bm_pointerIterationOrOffsets
|
|
bm_read
|
|
bm_mean
|
|
bm_meanSquared
|
|
bm_cumsum
|
|
bm_diff
|
|
bm_mathfuns
|
|
bm_gain
|
|
bm_divide
|
|
bm_ramp
|
|
bm_ADSR
|
|
bm_add
|
|
bm_logger
|
|
bm_subtract
|
|
bm_multiplyAdd
|
|
bm_readChunk
|
|
bm_resampleChunk
|
|
bm_envelopes
|
|
bm_wavfile
|
|
bm_flacfile
|
|
bm_filterModulation
|
|
bm_filterStereoMono
|
|
bm_stringResonator
|
|
)
|
|
|
|
if (TARGET bm_resample)
|
|
add_dependencies(sfizz_benchmarks bm_resample)
|
|
endif()
|
|
|
|
if (SFIZZ_SYSTEM_PROCESSOR MATCHES "armv7l")
|
|
sfizz_add_benchmark(bm_pan_arm BM_pan_arm.cpp ../src/sfizz/Panning.cpp)
|
|
target_link_libraries(bm_pan_arm PRIVATE sfizz-jsl)
|
|
add_dependencies(sfizz_benchmarks bm_pan_arm)
|
|
endif()
|
|
|
|
configure_file("sample.wav" "${CMAKE_BINARY_DIR}/benchmarks/sample1.wav" COPYONLY)
|
|
configure_file("sample.wav" "${CMAKE_BINARY_DIR}/benchmarks/sample2.wav" COPYONLY)
|
|
configure_file("sample.wav" "${CMAKE_BINARY_DIR}/benchmarks/sample3.wav" COPYONLY)
|
|
configure_file("sample.flac" "${CMAKE_BINARY_DIR}/benchmarks/sample1.flac" COPYONLY)
|
|
configure_file("sample.flac" "${CMAKE_BINARY_DIR}/benchmarks/sample2.flac" COPYONLY)
|
|
configure_file("sample.flac" "${CMAKE_BINARY_DIR}/benchmarks/sample3.flac" COPYONLY)
|