hayati ayguen | da5ff3e | 2019-12-27 23:01:51 +0100 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 2.8) |
hayati ayguen | da5ff3e | 2019-12-27 23:01:51 +0100 | [diff] [blame] | 2 | project(PRETTY_FAST_FFT) |
hayati ayguen | 2900c18 | 2019-12-22 05:59:42 +0100 | [diff] [blame] | 3 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 4 | # smaller library size? |
| 5 | option(USE_TYPE_FLOAT "activate single precision 'float'?" ON) |
| 6 | option(USE_TYPE_DOUBLE "activate 'double' precision float?" ON) |
| 7 | |
| 8 | # architecture/optimization options |
| 9 | option(USE_SIMD "use SIMD (SSE/AVX/NEON/ALTIVEC) CPU features? - " ON) |
dario mambro | 6d78ad8 | 2020-12-19 22:23:29 +0100 | [diff] [blame] | 10 | option(DISABLE_SIMD_AVX "disable AVX CPU features? - " OFF) |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 11 | option(USE_SIMD_NEON "force using NEON on ARM? (requires USE_SIMD)" OFF) |
| 12 | option(USE_SCALAR_VECT "use 4-element vector scalar operations (if no other SIMD)" ON) |
| 13 | |
| 14 | # test options |
hayati ayguen | 1c17fd4 | 2020-06-12 18:21:26 +0000 | [diff] [blame] | 15 | option(USE_BENCH_FFTW "use (system-installed) FFTW3 in fft benchmark?" OFF) |
| 16 | option(USE_BENCH_GREEN "use Green FFT in fft benchmark? - if exists in subdir" ON) |
| 17 | option(USE_BENCH_KISS "use KissFFT in fft benchmark? - if exists in subdir" ON) |
| 18 | option(USE_BENCH_POCKET "use PocketFFT in fft benchmark? - if exists in subdir" ON) |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 19 | |
| 20 | option(USE_DEBUG_ASAN "use GCC's address sanitizer?" OFF) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 21 | |
dario mambro | 00ba746 | 2020-12-24 17:06:03 +0100 | [diff] [blame] | 22 | option(DISABLE_LINK_WITH_M "Disables linking with m library to build with clangCL from MSVC" OFF) |
hayati ayguen | 63794b2 | 2020-03-29 03:14:43 +0200 | [diff] [blame] | 23 | |
hayati ayguen | 6e61209 | 2020-03-29 08:40:47 +0200 | [diff] [blame] | 24 | # C90 requires the gcc extensions for function attributes like always_inline |
| 25 | # C99 provides the function attributes: no gcc extensions required |
| 26 | set(CMAKE_C_STANDARD 99) |
| 27 | set(CMAKE_C_EXTENSIONS OFF) |
hayati ayguen | 63794b2 | 2020-03-29 03:14:43 +0200 | [diff] [blame] | 28 | |
hayati ayguen | 7b3ca7d | 2020-03-29 03:18:35 +0200 | [diff] [blame] | 29 | set(CMAKE_CXX_STANDARD 98) |
hayati ayguen | 63794b2 | 2020-03-29 03:14:43 +0200 | [diff] [blame] | 30 | set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 31 | set(CMAKE_CXX_EXTENSIONS OFF) |
| 32 | |
| 33 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 34 | if ( (NOT USE_TYPE_FLOAT) AND (NOT USE_TYPE_DOUBLE) ) |
| 35 | message(FATAL_ERROR "activate at least one of USE_TYPE_FLOAT or USE_TYPE_DOUBLE") |
| 36 | endif() |
| 37 | |
| 38 | |
| 39 | if (USE_DEBUG_ASAN) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 40 | set(ASANLIB "asan") |
| 41 | else() |
| 42 | set(ASANLIB "") |
| 43 | endif() |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 44 | |
| 45 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 46 | if (USE_BENCH_GREEN) |
hayati ayguen | 42db3f1 | 2020-01-09 23:59:21 +0100 | [diff] [blame] | 47 | if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/greenffts/CMakeLists.txt") |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 48 | message(STATUS "found subdir greenffts") |
| 49 | set(PATH_GREEN "${CMAKE_CURRENT_LIST_DIR}/greenffts") |
| 50 | add_subdirectory( "${PATH_GREEN}" ) |
| 51 | else() |
| 52 | message(WARNING "GreenFFT not found in subdir greenffts") |
| 53 | endif() |
| 54 | endif() |
| 55 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 56 | if (USE_BENCH_KISS) |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 57 | # git submodule add https://github.com/hayguen/kissfft.git |
hayati ayguen | 42db3f1 | 2020-01-09 23:59:21 +0100 | [diff] [blame] | 58 | if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/kissfft/CMakeLists.txt") |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 59 | message(STATUS "found subdir kissfft") |
| 60 | set(PATH_KISS "${CMAKE_CURRENT_LIST_DIR}/kissfft") |
| 61 | add_subdirectory( "${PATH_KISS}" ) |
| 62 | else() |
| 63 | message(WARNING "KissFFT not found in subdir kissfft") |
| 64 | endif() |
| 65 | endif() |
| 66 | |
hayati ayguen | 1c17fd4 | 2020-06-12 18:21:26 +0000 | [diff] [blame] | 67 | if (USE_BENCH_POCKET) |
| 68 | # git submodule add https://github.com/hayguen/pocketfft.git |
hayati ayguen | 223c62a | 2020-06-13 01:59:49 +0200 | [diff] [blame] | 69 | if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/pocketfft/pocketfft_double.c") |
hayati ayguen | 1c17fd4 | 2020-06-12 18:21:26 +0000 | [diff] [blame] | 70 | message(STATUS "found subdir pocketfft") |
| 71 | set(PATH_POCKET "${CMAKE_CURRENT_LIST_DIR}/pocketfft") |
| 72 | add_subdirectory( "${PATH_POCKET}" ) |
| 73 | else() |
| 74 | message(WARNING "PocketFFT not found in subdir pocketfft") |
| 75 | endif() |
| 76 | endif() |
| 77 | |
hayati ayguen | a767b6e | 2019-12-22 07:09:15 +0100 | [diff] [blame] | 78 | |
hayati ayguen | 2900c18 | 2019-12-22 05:59:42 +0100 | [diff] [blame] | 79 | ######################################################################## |
| 80 | # select the release build type by default to get optimization flags |
| 81 | ######################################################################## |
| 82 | if(NOT CMAKE_BUILD_TYPE) |
| 83 | set(CMAKE_BUILD_TYPE "Release") |
| 84 | message(STATUS "Build type not specified: defaulting to release.") |
| 85 | endif(NOT CMAKE_BUILD_TYPE) |
| 86 | |
hayati ayguen | ee17cb0 | 2020-08-28 04:47:22 +0200 | [diff] [blame] | 87 | if ( CMAKE_C_COMPILER_ID MATCHES "MSVC" ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 88 | # using Visual Studio C++ |
| 89 | message(STATUS "INFO: detected MSVC: will not link math lib m") |
| 90 | set(MATHLIB "") |
hayati ayguen | ee17cb0 | 2020-08-28 04:47:22 +0200 | [diff] [blame] | 91 | |
| 92 | add_definitions("/D_CRT_SECURE_NO_WARNINGS") |
| 93 | |
| 94 | set(MSVC_DISABLED_WARNINGS_LIST |
| 95 | "C4996" |
| 96 | ) |
| 97 | |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 98 | else() |
dario mambro | 00ba746 | 2020-12-24 17:06:03 +0100 | [diff] [blame] | 99 | if(DISABLE_LINK_WITH_M) |
| 100 | else() |
| 101 | message(STATUS "INFO: detected NO MSVC: ${CMAKE_C_COMPILER_ID}: will link math lib m") |
| 102 | set(MATHLIB "m") |
| 103 | endif() |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 104 | endif() |
| 105 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 106 | set( SIMD_FLOAT_HDRS simd/pf_float.h simd/pf_sse1_float.h simd/pf_altivec_float.h simd/pf_neon_float.h simd/pf_scalar_float.h ) |
| 107 | set( SIMD_DOUBLE_HDRS simd/pf_double.h simd/pf_avx_double.h simd/pf_scalar_double.h ) |
| 108 | |
| 109 | if (USE_TYPE_FLOAT) |
| 110 | set( FLOAT_SOURCES pffft.c pffft.h ${SIMD_FLOAT_HDRS} ) |
| 111 | else() |
| 112 | set( FLOAT_SOURCES ) |
| 113 | endif() |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 114 | |
hayati ayguen | 17c5f98 | 2020-03-25 22:27:57 +0100 | [diff] [blame] | 115 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 116 | if (USE_TYPE_DOUBLE) |
| 117 | set( DOUBLE_SOURCES pffft_double.c pffft_double.h ${SIMD_DOUBLE_HDRS} ) |
| 118 | else() |
| 119 | set( DOUBLE_SOURCES ) |
| 120 | endif() |
| 121 | |
| 122 | ###################################################### |
| 123 | |
hayati ayguen | eeb17fc | 2020-04-13 04:02:07 +0200 | [diff] [blame] | 124 | add_library(PFFFT STATIC ${FLOAT_SOURCES} ${DOUBLE_SOURCES} pffft_common.c pffft_priv_impl.h pffft.hpp ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 125 | target_compile_definitions(PFFFT PRIVATE _USE_MATH_DEFINES) |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 126 | if (USE_SCALAR_VECT) |
| 127 | target_compile_definitions(PFFFT PRIVATE PFFFT_SCALVEC_ENABLED=1) |
| 128 | endif() |
| 129 | if (USE_DEBUG_ASAN) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 130 | target_compile_options(PFFFT PRIVATE "-fsanitize=address") |
| 131 | endif() |
hayati ayguen | a767b6e | 2019-12-22 07:09:15 +0100 | [diff] [blame] | 132 | if (NOT USE_SIMD) |
| 133 | target_compile_definitions(PFFFT PRIVATE PFFFT_SIMD_DISABLE=1) |
| 134 | endif() |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 135 | if (USE_SIMD AND USE_SIMD_NEON) |
hayati ayguen | 01d26a7 | 2020-03-26 09:02:09 +0100 | [diff] [blame] | 136 | target_compile_definitions(PFFFT PRIVATE PFFFT_ENABLE_NEON=1) |
hayati ayguen | ccff6d9 | 2019-12-26 12:41:19 +0000 | [diff] [blame] | 137 | target_compile_options(PFFFT PRIVATE "-mfpu=neon") |
| 138 | endif() |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 139 | if (USE_SIMD AND USE_TYPE_DOUBLE) |
hayati ayguen | 88918bb | 2020-03-26 22:34:46 +0100 | [diff] [blame] | 140 | if(WIN32) |
dario mambro | 6d78ad8 | 2020-12-19 22:23:29 +0100 | [diff] [blame] | 141 | if(DISABLE_SIMD_AVX) |
| 142 | set_property(SOURCE pffft_double.c PROPERTY COMPILE_FLAGS "/arch:SSE2") |
| 143 | else() |
| 144 | set_property(SOURCE pffft_double.c PROPERTY COMPILE_FLAGS "/arch:AVX") |
| 145 | endif() |
hayati ayguen | 88918bb | 2020-03-26 22:34:46 +0100 | [diff] [blame] | 146 | else() |
hayati ayguen | 88918bb | 2020-03-26 22:34:46 +0100 | [diff] [blame] | 147 | set_property(SOURCE pffft_double.c PROPERTY COMPILE_FLAGS "-march=native") |
| 148 | endif() |
dario mambro | 6d78ad8 | 2020-12-19 22:23:29 +0100 | [diff] [blame] | 149 | if(DISABLE_SIMD_AVX) |
| 150 | target_compile_definitions(PFFFT PRIVATE PFFFT_AVX_DISABLE=1) |
| 151 | endif() |
hayati ayguen | 88918bb | 2020-03-26 22:34:46 +0100 | [diff] [blame] | 152 | endif() |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 153 | target_link_libraries( PFFFT ${MATHLIB} ) |
hayati ayguen | 2900c18 | 2019-12-22 05:59:42 +0100 | [diff] [blame] | 154 | set_property(TARGET PFFFT APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| 155 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| 156 | ) |
| 157 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 158 | ###################################################### |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 159 | |
hayati ayguen | 29eb847 | 2020-11-11 23:09:58 +0100 | [diff] [blame] | 160 | if (USE_TYPE_FLOAT) |
| 161 | |
| 162 | add_library(PFDSP STATIC pf_mixer.cpp pf_mixer.h pf_carrier.cpp pf_carrier.h pf_cic.cpp pf_cic.h fmv.h ) |
| 163 | target_compile_definitions(PFDSP PRIVATE _USE_MATH_DEFINES) |
| 164 | if (USE_DEBUG_ASAN) |
| 165 | target_compile_options(PFDSP PRIVATE "-fsanitize=address") |
| 166 | endif() |
| 167 | if (USE_SIMD AND USE_SIMD_NEON) |
| 168 | target_compile_definitions(PFDSP PRIVATE PFFFT_ENABLE_NEON=1) |
hayati ayguen | 2587d83 | 2020-11-12 07:15:43 +0000 | [diff] [blame] | 169 | target_compile_options(PFDSP PRIVATE "-march=armv7-a" "-mfpu=neon") |
hayati ayguen | 29eb847 | 2020-11-11 23:09:58 +0100 | [diff] [blame] | 170 | endif() |
| 171 | target_link_libraries( PFDSP ${MATHLIB} ) |
| 172 | set_property(TARGET PFDSP APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| 173 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| 174 | ) |
| 175 | endif() |
| 176 | |
| 177 | ###################################################### |
| 178 | |
hayati ayguen | 17c5f98 | 2020-03-25 22:27:57 +0100 | [diff] [blame] | 179 | add_library(FFTPACK STATIC fftpack.c fftpack.h) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 180 | target_compile_definitions(FFTPACK PRIVATE _USE_MATH_DEFINES) |
| 181 | target_link_libraries( FFTPACK ${MATHLIB} ) |
hayati ayguen | 2900c18 | 2019-12-22 05:59:42 +0100 | [diff] [blame] | 182 | set_property(TARGET FFTPACK APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| 183 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| 184 | ) |
| 185 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 186 | ###################################################### |
hayati ayguen | 2900c18 | 2019-12-22 05:59:42 +0100 | [diff] [blame] | 187 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 188 | if (USE_TYPE_FLOAT) |
| 189 | # only 'float' supported in PFFASTCONV |
| 190 | add_library(PFFASTCONV STATIC pffastconv.c pffastconv.h pffft.h ) |
| 191 | target_compile_definitions(PFFASTCONV PRIVATE _USE_MATH_DEFINES) |
| 192 | if (USE_DEBUG_ASAN) |
| 193 | target_compile_options(PFFASTCONV PRIVATE "-fsanitize=address") |
| 194 | endif() |
| 195 | target_link_libraries( PFFASTCONV PFFFT ${ASANLIB} ${MATHLIB} ) |
| 196 | set_property(TARGET PFFASTCONV APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| 197 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| 198 | ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 199 | endif() |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 200 | |
| 201 | ####################################################### |
| 202 | |
| 203 | if (USE_TYPE_FLOAT) |
| 204 | add_executable( test_pffft_float test_pffft.c ) |
| 205 | target_compile_definitions(test_pffft_float PRIVATE _USE_MATH_DEFINES) |
| 206 | target_compile_definitions(test_pffft_float PRIVATE PFFFT_ENABLE_FLOAT) |
| 207 | target_link_libraries( test_pffft_float PFFFT ${ASANLIB} ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 208 | endif() |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 209 | |
| 210 | ###################################################### |
| 211 | |
| 212 | if (USE_TYPE_DOUBLE) |
| 213 | add_executable( test_pffft_double test_pffft.c ) |
| 214 | target_compile_definitions(test_pffft_double PRIVATE _USE_MATH_DEFINES) |
| 215 | target_compile_definitions(test_pffft_double PRIVATE PFFFT_ENABLE_DOUBLE) |
| 216 | target_link_libraries( test_pffft_double PFFFT ${ASANLIB} ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 217 | endif() |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 218 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 219 | ###################################################### |
dario mambro | 5850463 | 2020-03-24 14:49:50 +0100 | [diff] [blame] | 220 | |
dario mambro | cb97184 | 2020-03-28 00:22:33 +0100 | [diff] [blame] | 221 | add_executable( test_pffft_cpp test_pffft.cpp ) |
| 222 | target_compile_definitions(test_pffft_cpp PRIVATE _USE_MATH_DEFINES) |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 223 | if (USE_TYPE_FLOAT) |
| 224 | target_compile_definitions(test_pffft_cpp PRIVATE PFFFT_ENABLE_FLOAT) |
| 225 | endif() |
| 226 | if (USE_TYPE_DOUBLE) |
| 227 | target_compile_definitions(test_pffft_cpp PRIVATE PFFFT_ENABLE_DOUBLE) |
| 228 | endif() |
dario mambro | cb97184 | 2020-03-28 00:22:33 +0100 | [diff] [blame] | 229 | target_link_libraries( test_pffft_cpp PFFFT ${ASANLIB} ) |
| 230 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 231 | ###################################################### |
| 232 | |
dario mambro | a1cfad4 | 2020-03-30 05:50:26 +0200 | [diff] [blame] | 233 | add_executable( test_pffft_cpp_11 test_pffft.cpp ) |
| 234 | target_compile_definitions(test_pffft_cpp_11 PRIVATE _USE_MATH_DEFINES) |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 235 | if (USE_TYPE_FLOAT) |
| 236 | target_compile_definitions(test_pffft_cpp_11 PRIVATE PFFFT_ENABLE_FLOAT) |
| 237 | endif() |
| 238 | if (USE_TYPE_DOUBLE) |
| 239 | target_compile_definitions(test_pffft_cpp_11 PRIVATE PFFFT_ENABLE_DOUBLE) |
| 240 | endif() |
dario mambro | a1cfad4 | 2020-03-30 05:50:26 +0200 | [diff] [blame] | 241 | target_link_libraries( test_pffft_cpp_11 PFFFT ${ASANLIB} ) |
| 242 | |
| 243 | set_property(TARGET test_pffft_cpp_11 PROPERTY CXX_STANDARD 11) |
| 244 | set_property(TARGET test_pffft_cpp_11 PROPERTY CXX_STANDARD_REQUIRED ON) |
dario mambro | 5850463 | 2020-03-24 14:49:50 +0100 | [diff] [blame] | 245 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 246 | ###################################################### |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 247 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 248 | if (USE_TYPE_FLOAT) |
| 249 | add_executable(test_pffastconv test_pffastconv.c |
| 250 | ${SIMD_FLOAT_HDRS} ${SIMD_DOUBLE_HDRS} |
| 251 | ) |
| 252 | target_compile_definitions(test_pffastconv PRIVATE _USE_MATH_DEFINES) |
| 253 | if (USE_DEBUG_ASAN) |
| 254 | target_compile_options(test_pffastconv PRIVATE "-fsanitize=address") |
| 255 | endif() |
| 256 | if (NOT USE_SIMD) |
| 257 | target_compile_definitions(test_pffastconv PRIVATE PFFFT_SIMD_DISABLE=1) |
| 258 | endif() |
| 259 | if (USE_SIMD AND USE_SIMD_NEON) |
| 260 | target_compile_definitions(test_pffastconv PRIVATE PFFFT_ENABLE_NEON=1) |
| 261 | target_compile_options(test_pffastconv PRIVATE "-mfpu=neon") |
| 262 | endif() |
| 263 | target_link_libraries( test_pffastconv PFFASTCONV ${ASANLIB} ${MATHLIB} ) |
hayati ayguen | a767b6e | 2019-12-22 07:09:15 +0100 | [diff] [blame] | 264 | endif() |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 265 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 266 | ###################################################### |
hayati ayguen | a767b6e | 2019-12-22 07:09:15 +0100 | [diff] [blame] | 267 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 268 | if (USE_TYPE_FLOAT) |
| 269 | add_executable(bench_pffft_float bench_pffft.c pffft.h fftpack.h) |
| 270 | target_compile_definitions(bench_pffft_float PRIVATE _USE_MATH_DEFINES) |
| 271 | target_compile_definitions(bench_pffft_float PRIVATE PFFFT_ENABLE_FLOAT) |
| 272 | |
| 273 | target_link_libraries( bench_pffft_float PFFFT FFTPACK ${ASANLIB} ) |
| 274 | |
| 275 | if (USE_BENCH_FFTW) |
| 276 | target_compile_definitions(bench_pffft_float PRIVATE HAVE_FFTW=1) |
| 277 | target_link_libraries(bench_pffft_float fftw3f) |
| 278 | endif() |
| 279 | |
| 280 | if (PATH_GREEN AND USE_BENCH_GREEN) |
| 281 | target_compile_definitions(bench_pffft_float PRIVATE HAVE_GREEN_FFTS=1) |
| 282 | target_link_libraries(bench_pffft_float GreenFFT) |
| 283 | endif() |
| 284 | |
| 285 | if (PATH_KISS AND USE_BENCH_KISS) |
| 286 | target_compile_definitions(bench_pffft_float PRIVATE HAVE_KISS_FFT=1) |
| 287 | target_link_libraries(bench_pffft_float KissFFT) |
| 288 | endif() |
hayati ayguen | 223c62a | 2020-06-13 01:59:49 +0200 | [diff] [blame] | 289 | |
| 290 | if (PATH_POCKET AND USE_BENCH_POCKET) |
| 291 | target_compile_definitions(bench_pffft_float PRIVATE HAVE_POCKET_FFT=1) |
| 292 | target_link_libraries(bench_pffft_float PocketFFT) |
| 293 | endif() |
| 294 | |
hayati ayguen | a767b6e | 2019-12-22 07:09:15 +0100 | [diff] [blame] | 295 | endif() |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 296 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 297 | if (USE_TYPE_DOUBLE) |
| 298 | add_executable(bench_pffft_double bench_pffft.c pffft.h fftpack.h) |
| 299 | target_compile_definitions(bench_pffft_double PRIVATE _USE_MATH_DEFINES) |
| 300 | target_compile_definitions(bench_pffft_double PRIVATE PFFFT_ENABLE_DOUBLE) |
| 301 | target_link_libraries( bench_pffft_double PFFFT ${ASANLIB} ) |
| 302 | |
| 303 | if (USE_BENCH_FFTW) |
| 304 | target_compile_definitions(bench_pffft_double PRIVATE HAVE_FFTW=1) |
| 305 | target_link_libraries(bench_pffft_double fftw3) |
| 306 | endif() |
hayati ayguen | 1c17fd4 | 2020-06-12 18:21:26 +0000 | [diff] [blame] | 307 | |
| 308 | if (PATH_POCKET AND USE_BENCH_POCKET) |
| 309 | target_compile_definitions(bench_pffft_double PRIVATE HAVE_POCKET_FFT=1) |
| 310 | target_link_libraries(bench_pffft_double PocketFFT) |
| 311 | endif() |
hayati ayguen | 4c3a87a | 2019-12-23 08:48:00 +0100 | [diff] [blame] | 312 | endif() |
| 313 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 314 | ###################################################### |
hayati ayguen | cd60b96 | 2019-12-23 11:42:31 +0100 | [diff] [blame] | 315 | |
hayati ayguen | 29eb847 | 2020-11-11 23:09:58 +0100 | [diff] [blame] | 316 | if (USE_TYPE_FLOAT) |
| 317 | add_executable(bench_pf_mixer_float bench_mixers.c) |
| 318 | target_compile_definitions(bench_pf_mixer_float PRIVATE _USE_MATH_DEFINES) |
| 319 | target_compile_definitions(bench_pf_mixer_float PRIVATE PFFFT_ENABLE_FLOAT) |
| 320 | |
| 321 | target_link_libraries( bench_pf_mixer_float PFDSP ${ASANLIB} ) |
| 322 | |
| 323 | endif() |
| 324 | |
| 325 | ###################################################### |
| 326 | |
hayati ayguen | cd60b96 | 2019-12-23 11:42:31 +0100 | [diff] [blame] | 327 | enable_testing() |
| 328 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 329 | if (USE_TYPE_FLOAT) |
hayati ayguen | cd60b96 | 2019-12-23 11:42:31 +0100 | [diff] [blame] | 330 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 331 | add_test(NAME bench_pffft_pow2 |
| 332 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/bench_pffft_float" |
| 333 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 334 | ) |
hayati ayguen | bc8d4a8 | 2019-12-25 01:27:33 +0100 | [diff] [blame] | 335 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 336 | add_test(NAME bench_pffft_non2 |
| 337 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/bench_pffft_float" "--non-pow2" |
| 338 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 339 | ) |
hayati ayguen | bc8d4a8 | 2019-12-25 01:27:33 +0100 | [diff] [blame] | 340 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 341 | add_test(NAME bench_plots |
| 342 | COMMAND bash "-c" "${CMAKE_CURRENT_SOURCE_DIR}/plots.sh" |
| 343 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 344 | ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 345 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 346 | add_test(NAME test_pfconv_lens_symetric |
| 347 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/test_pffastconv" "--no-bench" "--quick" "--sym" |
| 348 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 349 | ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 350 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 351 | add_test(NAME test_pfconv_lens_non_sym |
| 352 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/test_pffastconv" "--no-bench" "--quick" |
| 353 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 354 | ) |
hayati ayguen | b2d2936 | 2020-01-02 00:06:09 +0100 | [diff] [blame] | 355 | |
hayati ayguen | ca11241 | 2020-04-13 00:19:40 +0200 | [diff] [blame] | 356 | add_test(NAME bench_pfconv_symetric |
| 357 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/test_pffastconv" "--no-len" "--sym" |
| 358 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 359 | ) |
| 360 | |
| 361 | add_test(NAME bench_pfconv_non_sym |
| 362 | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/test_pffastconv" "--no-len" |
| 363 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 364 | ) |
| 365 | |
| 366 | endif() |
hayati ayguen | bc8d4a8 | 2019-12-25 01:27:33 +0100 | [diff] [blame] | 367 | |