this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Build tools + tests with cmake + add VERSION + parallel install

+148 -21
+1 -1
.travis.yml
··· 3 3 python: 4 4 - "3.7" 5 5 6 - dist: bionic 6 + dist: focal 7 7 8 8 before_install: 9 9 - sudo apt-get install -y libfftw3-dev
+70 -19
CMakeLists.txt
··· 5 5 endif() 6 6 set(MAKEFILE_EXTRACTED_VERSION "${CMAKE_MATCH_1}") 7 7 8 - cmake_minimum_required(VERSION 3.3) 8 + cmake_minimum_required(VERSION 3.13) 9 9 project(kissfft VERSION "${MAKEFILE_EXTRACTED_VERSION}") 10 10 11 - option(KISSFFT_SIMD "Build kissfft with SIMD") 11 + option(KISSFFT_SIMD "Build kissfft with SIMD" OFF) 12 12 option(KISSFFT_FLOAT "Build kissfft with float type" ON) 13 + option(KISSFFT_OPENMP "Build kissfft with openmp" OFF) 14 + 15 + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|AppleClang") 16 + add_compile_options(-ffast-math -fomit-frame-pointer 17 + -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return 18 + -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast 19 + -Wwrite-strings) 20 + endif() 13 21 14 22 set(KISSFFT_FIXED_WIDTH_VALID 16 32) 15 23 set(KISSFFT_FIXED_WIDTH "16" CACHE STRING "Width of kissfft fixed integer (16/32)") ··· 33 41 $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> 34 42 $<INSTALL_INTERFACE:.>) 35 43 36 - set(KISSFFT_SUFFIX) 44 + set(KISSFFT_COMPILE_DEFINITIONS) 37 45 if(KISSFFT_SIMD) 38 - target_compile_definitions(kissfft PUBLIC USE_SIMD) 39 - set(KISSFFT_SUFFIX "${KISSFFT_SUFFIX}_simd") 46 + list(APPEND KISSFFT_COMPILE_DEFINITIONS USE_SIMD) 47 + set(KISSFFT_DATATYPE "simd") 48 + else() 49 + if(KISSFFT_FLOAT) 50 + list(APPEND KISSFFT_COMPILE_DEFINITIONS kiss_fft_scalar=${KISSFFT_FLOAT_TYPE}) 51 + set(KISSFFT_DATATYPE "${KISSFFT_FLOAT_TYPE}") 52 + else() 53 + list(APPEND KISSFFT_COMPILE_DEFINITIONS KISSFFT_FIXED_POINT=${KISSFFT_FIXED_WIDTH}) 54 + set(KISSFFT_DATATYPE "int${KISSFFT_FIXED_WIDTH}_t") 55 + endif() 40 56 endif() 41 - if(KISSFFT_FLOAT) 42 - target_compile_definitions(kissfft PUBLIC kiss_fft_scalar=${KISSFFT_FLOAT_TYPE}) 43 - set(KISSFFT_SUFFIX "${KISSFFT_SUFFIX}_${KISSFFT_FLOAT_TYPE}") 44 - else() 45 - target_compile_definitions(kissfft PUBLIC KISSFFT_FIXED_POINT=${KISSFFT_FIXED_WIDTH}) 46 - set(KISSFFT_SUFFIX "${KISSFFT_SUFFIX}_int${KISSFFT_FIXED_WIDTH}") 57 + if(KISSFFT_OPENMP) 58 + if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|AppleClang") 59 + target_compile_options(kissfft PRIVATE -fopenmp) 60 + target_link_options(kissfft PUBLIC -fopenmp) 61 + else() 62 + message(FATAL_ERROR "Don't know how to enable openmp for this compiler") 63 + endif() 47 64 endif() 48 65 49 - set_target_properties(kissfft PROPERTIES 50 - OUTPUT_NAME "kissfft${KISSFFT_SUFFIX}" 51 - DEFINE_SYMBOL KISS_FFT_BUILD 52 - EXPORT_NAME "kissfit${KISSFFT_SUFFIX}" 53 - SOVERSION ${PROJECT_VERSION}) 66 + set(KISSFFT_EXPORT_SUFFIX "") 54 67 if(BUILD_SHARED_LIBS) 55 - target_compile_definitions(kissfft PUBLIC KISS_FFT_SHARED) 68 + list(APPEND KISSFFT_COMPILE_DEFINITIONS KISS_FFT_SHARED) 56 69 set_target_properties(kissfft PROPERTIES 57 70 C_VISIBILITY_PRESET hidden) 71 + set(KISSFFT_EXPORT_SUFFIX "-shared") 58 72 endif() 73 + target_compile_definitions(kissfft PUBLIC ${KISSFFT_COMPILE_DEFINITIONS}) 74 + set(KISSFFT_OUTPUT_NAME "kissfft_${KISSFFT_DATATYPE}") 75 + set_target_properties(kissfft PROPERTIES 76 + OUTPUT_NAME "${KISSFFT_OUTPUT_NAME}" 77 + DEFINE_SYMBOL KISS_FFT_BUILD 78 + EXPORT_NAME "kissfit_${KISSFFT_DATATYPE}${KISSFFT_EXPORT_SUFFIX}" 79 + VERSION ${PROJECT_VERSION}) 80 + 81 + function(add_kissfft_executable NAME) 82 + add_executable(${NAME} ${ARGN}) 83 + target_link_libraries(${NAME} PRIVATE kissfft::kissfft) 84 + set_target_properties(${NAME} PROPERTIES 85 + OUTPUT_NAME "${NAME}_${KISSFFT_DATATYPE}") 86 + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") 87 + target_link_libraries(${NAME} PRIVATE m) 88 + endif() 89 + endfunction() 90 + 91 + option(KISSFFT_TOOLS "Build kissfft tools" ON) 92 + if(KISSFFT_TOOLS) 93 + add_subdirectory(tools) 94 + endif() 95 + 96 + option(KISSFFT_TEST "Build and enable kissfft tests" ON) 97 + if(KISSFFT_TEST) 98 + enable_testing() 99 + add_subdirectory(test) 100 + endif() 101 + 59 102 60 103 option(KISSFFT_INSTALL "Enable kissfft install" ON) 61 104 if (KISSFFT_INSTALL) ··· 64 107 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 65 108 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" 66 109 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") 67 - install(FILES "kiss_fft.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") 110 + install(FILES "kiss_fft.h" "kissfft.hh" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") 68 111 69 112 set(KISSFFT_INSTALL_CMAKE "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" CACHE FILEPATH "Install destination of kissfft cmake modules") 70 113 mark_as_advanced(KISSFFT_INSTALL_CMAKE) 71 114 72 115 install(EXPORT kissfft DESTINATION "${KISSFFT_INSTALL_CMAKE}" 73 116 NAMESPACE "kissfft::" 74 - FILE "${PROJECT_NAME}${KISSFFT_SUFFIX}-targets.cmake") 117 + FILE "${PROJECT_NAME}-${KISSFFT_DATATYPE}${KISSFFT_EXPORT_SUFFIX}-targets.cmake") 75 118 include(CMakePackageConfigHelpers) 76 119 configure_package_config_file(kissfft-config.cmake.in kissfft-config.cmake 77 120 INSTALL_DESTINATION "${KISSFFT_INSTALL_CMAKE}") 78 121 write_basic_package_version_file(kissfft-config-version.cmake COMPATIBILITY AnyNewerVersion) 79 122 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kissfft-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/kissfft-config-version.cmake" 80 123 DESTINATION "${KISSFFT_INSTALL_CMAKE}") 124 + 125 + set(PKG_KISSFFT_DEFS) 126 + foreach(_def ${KISSFFT_COMPILE_DEFINITIONS}) 127 + set(PKG_KISSFFT_DEFS "${PKG_KISSFFT_DEFS} -D${_def}") 128 + endforeach() 129 + configure_file(kissfft.pc.in "kissfft-${KISSFFT_DATATYPE}.pc" @ONLY) 130 + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kissfft-${KISSFFT_DATATYPE}.pc" 131 + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 81 132 endif()
+1 -1
kissfft-config.cmake.in
··· 2 2 3 3 # Load information for all configured kissfft 4 4 get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 5 - file(GLOB CONFIG_FILES "${_DIR}/kissfft*-targets.cmake") 5 + file(GLOB CONFIG_FILES "${_DIR}/kissfft-*-targets.cmake") 6 6 foreach(f ${CONFIG_FILES}) 7 7 include(${f}) 8 8 endforeach()
+9
kissfft.pc.in
··· 1 + libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 2 + includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 3 + 4 + Name: kissfft 5 + Description: A Fast Fourier Transform (FFT) library that tries to Keep it Simple, Stupid 6 + Version: @kissfft_VERSION@ 7 + 8 + Libs: -L${libdir} -l@KISSFFT_OUTPUT_NAME@ 9 + Cflags: -I${includedir} @PKG_KISSFFT_DEFS@
+49
test/CMakeLists.txt
··· 1 + add_library(kissfft_help_library OBJECT 2 + pstats.c 3 + ../tools/kfc.c 4 + ../tools/kiss_fftnd.c 5 + ../tools/kiss_fftr.c 6 + ../tools/kiss_fftndr.c 7 + ) 8 + target_link_libraries(kissfft_help_library PRIVATE kissfft::kissfft) 9 + target_include_directories(kissfft_help_library PRIVATE ../tools) 10 + 11 + function(add_kissfft_test_executable NAME) 12 + add_kissfft_executable(${NAME} ${ARGN} $<TARGET_OBJECTS:kissfft_help_library>) 13 + target_include_directories(${NAME} PRIVATE ../tools) 14 + add_test(NAME ${NAME} COMMAND ${NAME}) 15 + set_tests_properties(${NAME} PROPERTIES TIMEOUT 10) 16 + endfunction() 17 + 18 + set(KISSFFT_TEST_NUMFFTS 10000) 19 + 20 + add_kissfft_test_executable(bm_kiss benchkiss.c) 21 + # add_test(NAME benchmar COMMAND ${NAME}) 22 + # set_tests_properties(${NAME} PROPERTIES TIMEOUT 10) 23 + 24 + include(FindPkgConfig) 25 + if(KISSFFT_FLOAT) 26 + set(fftw3_pkg fftw3f) 27 + else() 28 + set(fftw3_pkg fftw3) 29 + endif() 30 + pkg_check_modules(fftw3 REQUIRED IMPORTED_TARGET ${fftw3_pkg}) 31 + add_kissfft_test_executable(bm_fftw benchfftw.c) 32 + target_link_libraries(bm_fftw PRIVATE PkgConfig::fftw3) 33 + 34 + add_kissfft_test_executable(st twotonetest.c) 35 + 36 + add_kissfft_test_executable(tkfc twotonetest.c) 37 + target_compile_definitions(tkfc PRIVATE KFC_TEST) 38 + 39 + add_kissfft_test_executable(ffr twotonetest.c) 40 + add_kissfft_test_executable(tr test_real.c) 41 + 42 + add_kissfft_test_executable(testcpp testcpp.cc) 43 + 44 + find_package(PythonInterp REQUIRED) 45 + add_test(NAME testkiss.py COMMAND "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/testkiss.py") 46 + set_tests_properties(testkiss.py PROPERTIES 47 + TIMEOUT 20 48 + ENVIRONMENT "DATATYPE=${KISSFFT_DATATYPE}" 49 + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+18
tools/CMakeLists.txt
··· 1 + add_kissfft_executable(fastconvr kiss_fastfir.c kiss_fftr.c) 2 + target_compile_definitions(fastconvr PRIVATE REAL_FASTFIR FAST_FILT_UTIL) 3 + 4 + add_kissfft_executable(fastconv kiss_fastfir.c) 5 + target_compile_definitions(fastconv PRIVATE FAST_FILT_UTIL) 6 + 7 + add_kissfft_executable(fft fftutil.c kiss_fftnd.c kiss_fftr.c kiss_fftndr.c) 8 + 9 + # psdpng does not build with "simd" datatype 10 + if(NOT KISSFFT_DATATYPE MATCHES "simd") 11 + include(FindPkgConfig) 12 + pkg_check_modules(libpng REQUIRED IMPORTED_TARGET libpng) 13 + add_kissfft_executable(psdpng psdpng.c kiss_fftr.c) 14 + target_link_libraries(psdpng PRIVATE PkgConfig::libpng) 15 + endif() 16 + 17 + #dumphdr.c is not available 18 + #add_kissfft_executable(dumphdr dumphdr.c)