mirror of
https://github.com/mborgerding/kissfft.git
synced 2025-05-27 13:10:26 -04:00
By default, CMake assumes that the project is using both C and C++. By explicitly passing 'C' as argument of the project() macro, we tell CMake that only C is used, which prevents CMake from checking if a C++ compiler exists. Enable CXX for tests only for testcpp.cc.
66 lines
2.0 KiB
CMake
66 lines
2.0 KiB
CMake
function(add_kissfft_test_executable NAME)
|
|
add_kissfft_executable(${NAME} ${ARGN})
|
|
target_include_directories(${NAME} PRIVATE ..)
|
|
|
|
add_test(NAME ${NAME} COMMAND ${NAME})
|
|
set_tests_properties(${NAME} PROPERTIES TIMEOUT 3600)
|
|
endfunction()
|
|
|
|
set(KISSFFT_TEST_NUMFFTS 10000)
|
|
|
|
enable_language(CXX)
|
|
|
|
#
|
|
# Add tools-independent fastfilt_* (../tools/fft_*) executable without adding a test
|
|
#
|
|
|
|
add_kissfft_executable(fastfilt ../tools/fftutil.c)
|
|
target_include_directories(fastfilt PRIVATE ..)
|
|
|
|
#
|
|
# Add test executables and define tests
|
|
#
|
|
|
|
add_kissfft_test_executable(bm_kiss benchkiss.c pstats.c)
|
|
# add_test(NAME benchmar COMMAND ${NAME})
|
|
# set_tests_properties(${NAME} PROPERTIES TIMEOUT 3600)
|
|
|
|
include(FindPkgConfig)
|
|
if(KISSFFT_FLOAT)
|
|
set(fftw3_pkg fftw3f)
|
|
else()
|
|
set(fftw3_pkg fftw3)
|
|
endif()
|
|
pkg_check_modules(fftw3 REQUIRED IMPORTED_TARGET ${fftw3_pkg})
|
|
add_kissfft_test_executable(bm_fftw benchfftw.c pstats.c)
|
|
target_link_libraries(bm_fftw PRIVATE PkgConfig::fftw3)
|
|
|
|
add_kissfft_test_executable(st twotonetest.c)
|
|
|
|
add_kissfft_test_executable(tkfc twotonetest.c)
|
|
target_compile_definitions(tkfc PRIVATE KFC_TEST)
|
|
|
|
add_kissfft_test_executable(ffr twotonetest.c)
|
|
add_kissfft_test_executable(tr test_real.c)
|
|
|
|
add_kissfft_test_executable(testcpp testcpp.cc)
|
|
|
|
if(KISSFFT_DATATYPE MATCHES "^simd$")
|
|
add_kissfft_test_executable(tsimd test_simd.c)
|
|
target_compile_definitions(tsimd PRIVATE USE_SIMD)
|
|
if (NOT MSVC)
|
|
target_compile_options(kissfft PRIVATE -msse)
|
|
else()
|
|
target_compile_options(kissfft PRIVATE "/arch:SSE")
|
|
endif()
|
|
endif()
|
|
|
|
find_package(PythonInterp REQUIRED)
|
|
add_test(NAME testkiss.py COMMAND "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/testkiss.py")
|
|
list(APPEND TESTKISS_PY_ENV "KISSFFT_DATATYPE=${KISSFFT_DATATYPE}")
|
|
list(APPEND TESTKISS_PY_ENV "KISSFFT_OPENMP=${KISSFFT_OPENMP}")
|
|
set_tests_properties(testkiss.py PROPERTIES
|
|
TIMEOUT 3600
|
|
ENVIRONMENT "${TESTKISS_PY_ENV}"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|