commit f65a229ee91b37a5fcc56b5a929b647afd862fb6
parent 86b91e316bf09206326c304f1701255a68cfaa02
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Thu, 14 Jul 2022 19:33:10 +0100
Prefix CMake variables with KFR_
Diffstat:
3 files changed, 61 insertions(+), 68 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -46,36 +46,38 @@ endif ()
# Include autogenerated list of source files
include(sources.cmake)
-option(ENABLE_TESTS "Enable tests and examples" OFF)
+option(KFR_ENABLE_TESTS "Enable KFR tests" OFF)
+option(KFR_ENABLE_EXAMPLES "Enable KFR examples" OFF)
+option(KFR_ENABLE_TOOLS "Enable KFR tools" OFF)
if (CLANG)
- option(ENABLE_DFT "Enable DFT and related algorithms." ON)
- option(ENABLE_DFT_NP "Enable Non-power of 2 DFT" ON)
+ option(KFR_ENABLE_DFT "Enable DFT and related algorithms." ON)
+ option(KFR_ENABLE_DFT_NP "Enable Non-power of 2 DFT" ON)
if (X86)
option(
- ENABLE_DFT_MULTIARCH
+ KFR_ENABLE_DFT_MULTIARCH
"Build DFT static libraries for various architectures. Requires Clang"
OFF)
endif ()
else ()
- option(ENABLE_DFT "Enable DFT and related algorithms." OFF)
- option(ENABLE_DFT_NP "Enable Non-power of 2 DFT" OFF)
+ option(KFR_ENABLE_DFT "Enable DFT and related algorithms." OFF)
+ option(KFR_ENABLE_DFT_NP "Enable Non-power of 2 DFT" OFF)
endif ()
-option(ENABLE_ASMTEST "Enable writing disassembly" OFF)
-option(REGENERATE_TESTS "Regenerate auto tests" OFF)
-option(DISABLE_CLANG_EXTENSIONS "Disable Clang vector extensions" OFF)
+option(KFR_ENABLE_ASMTEST "Enable writing disassembly" OFF)
+option(KFR_REGENERATE_TESTS "Regenerate auto tests" OFF)
+option(KFR_DISABLE_CLANG_EXTENSIONS "Disable Clang vector extensions" OFF)
option(KFR_EXTENDED_TESTS "Extended tests (up to hour)" OFF)
-option(SKIP_TESTS "Skip tests (only build)" OFF)
+option(KFR_SKIP_TESTS "Skip tests (only build)" OFF)
option(KFR_STD_COMPLEX "Use std::complex instead of custom complex type" OFF)
-mark_as_advanced(ENABLE_ASMTEST)
-mark_as_advanced(REGENERATE_TESTS)
-mark_as_advanced(DISABLE_CLANG_EXTENSIONS)
+option(KFR_ENABLE_CAPI_BUILD "Enable KFR C API building" OFF)
+mark_as_advanced(KFR_ENABLE_ASMTEST)
+mark_as_advanced(KFR_REGENERATE_TESTS)
+mark_as_advanced(KFR_DISABLE_CLANG_EXTENSIONS)
-if (NOT CPU_ARCH)
- set(CPU_ARCH detect)
+if (NOT KFR_ARCH)
+ set(KFR_ARCH detect)
endif ()
-if (CPU_ARCH STREQUAL "detect" AND X86)
- message(STATUS "Detecting native cpu...")
+if (KFR_ARCH STREQUAL "detect" AND X86)
try_run(
RUN_RESULT COMPILE_RESULT "${CMAKE_CURRENT_BINARY_DIR}/tmpdir"
${CMAKE_CURRENT_SOURCE_DIR}/cmake/detect_cpu.cpp
@@ -86,8 +88,8 @@ if (CPU_ARCH STREQUAL "detect" AND X86)
COMPILE_OUTPUT_VARIABLE COMPILE_OUT
RUN_OUTPUT_VARIABLE RUN_OUT)
if (COMPILE_RESULT AND RUN_RESULT EQUAL 0)
- message(STATUS DETECTED_CPU = ${RUN_OUT})
- set(CPU_ARCH
+ message(STATUS "Default CPU architecture for KFR is ${RUN_OUT} (set KFR_ARCH to override)")
+ set(KFR_ARCH
${RUN_OUT}
CACHE STRING "Detected CPU" FORCE)
else ()
@@ -96,12 +98,14 @@ if (CPU_ARCH STREQUAL "detect" AND X86)
message(STATUS COMPILE_OUT = ${COMPILE_OUT})
message(STATUS RUN_OUT = ${RUN_OUT})
endif ()
+else ()
+ message(STATUS "Default CPU architecture for KFR is ${KFR_ARCH} (set by cmake variable)")
endif ()
include(cmake/target_set_arch.cmake)
add_library(use_arch INTERFACE)
-target_set_arch(use_arch INTERFACE ${CPU_ARCH})
+target_set_arch(use_arch INTERFACE ${KFR_ARCH})
if (WIN32)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
@@ -145,7 +149,7 @@ if (MSVC)
else ()
target_link_libraries(kfr INTERFACE ${STD_LIB} ${PTHREAD_LIB} m)
endif ()
-if (DISABLE_CLANG_EXTENSIONS)
+if (KFR_DISABLE_CLANG_EXTENSIONS)
target_compile_definitions(kfr INTERFACE -DCMT_DISABLE_CLANG_EXT)
endif ()
if (KFR_STD_COMPLEX)
@@ -158,15 +162,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(kfr INTERFACE -Wno-c++1z-extensions -Wno-psabi)
endif ()
-if (NOT ENABLE_DFT)
+if (NOT KFR_ENABLE_DFT)
target_compile_definitions(kfr INTERFACE -DKFR_NO_DFT)
endif ()
if (KFR_EXTENDED_TESTS)
target_compile_definitions(kfr INTERFACE -DKFR_EXTENDED_TESTS)
endif ()
-message(STATUS CPU_ARCH=${CPU_ARCH})
-
if (X86)
add_executable(detect_cpu ${CMAKE_CURRENT_SOURCE_DIR}/cmake/detect_cpu.cpp)
target_link_libraries(detect_cpu PRIVATE kfr)
@@ -182,11 +184,11 @@ function (add_arch_library NAME ARCH SRCS DEFS)
target_compile_options(${NAME}_${ARCH} PRIVATE -flto)
endfunction ()
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
set(KFR_DFT_DEFS "${CLANG_ARG_PREFIX}-ffp-contract=fast")
- if (ENABLE_DFT_MULTIARCH)
+ if (KFR_ENABLE_DFT_MULTIARCH)
add_library(kfr_dft INTERFACE)
add_library(kfr_dft_all INTERFACE)
target_link_libraries(kfr_dft INTERFACE kfr kfr_dft_all)
@@ -210,7 +212,7 @@ if (ENABLE_DFT)
add_library(kfr_dft ${KFR_DFT_SRC})
target_link_libraries(kfr_dft kfr use_arch)
target_compile_options(kfr_dft PRIVATE "${KFR_DFT_DEFS}")
- if (ENABLE_DFT_NP)
+ if (KFR_ENABLE_DFT_NP)
target_compile_definitions(kfr_dft PUBLIC -DKFR_DFT_NPo2)
else ()
target_compile_definitions(kfr_dft PUBLIC -DKFR_DFT_NO_NPo2)
@@ -218,14 +220,18 @@ if (ENABLE_DFT)
endif ()
- if (ENABLE_CAPI_BUILD)
+ if (KFR_ENABLE_CAPI_BUILD)
add_subdirectory(capi)
endif ()
endif ()
-if (ENABLE_TESTS)
+if (KFR_ENABLE_EXAMPLES)
add_subdirectory(examples)
+endif ()
+if (KFR_ENABLE_TESTS)
add_subdirectory(tests)
+endif ()
+if (KFR_ENABLE_TOOLS)
add_subdirectory(tools)
endif ()
@@ -239,7 +245,7 @@ install(
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)
-if (ENABLE_CAPI_BUILD)
+if (KFR_ENABLE_DFT AND KFR_ENABLE_CAPI_BUILD)
install(
TARGETS kfr_capi
ARCHIVE DESTINATION lib
@@ -258,7 +264,7 @@ function(append_defines_from target)
endfunction()
append_defines_from(kfr)
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
append_defines_from(kfr_dft)
endif ()
append_defines_from(kfr_io)
@@ -269,8 +275,8 @@ set(kfr_defines "#define ${kfr_defines}\n")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/kfr_config.h "${kfr_defines}")
-if (ENABLE_DFT)
- if (ENABLE_DFT_MULTIARCH)
+if (KFR_ENABLE_DFT)
+ if (KFR_ENABLE_DFT_MULTIARCH)
install(
TARGETS kfr_dft_sse2 kfr_dft_sse41 kfr_dft_avx kfr_dft_avx2
kfr_dft_avx512
@@ -306,11 +312,3 @@ if (NOT TARGET uninstall)
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)
endif ()
-
-if (DEBUG_CMAKE)
- get_cmake_property(_variableNames VARIABLES)
- list(SORT _variableNames)
- foreach (_variableName ${_variableNames})
- message(STATUS "${_variableName}=${${_variableName}}")
- endforeach ()
-endif ()
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
@@ -34,7 +34,7 @@ target_link_libraries(window kfr use_arch)
add_executable(fir fir.cpp)
target_link_libraries(fir kfr use_arch)
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
target_link_libraries(fir kfr_dft use_arch)
target_compile_definitions(fir PRIVATE -DHAVE_DFT)
endif ()
@@ -42,7 +42,7 @@ endif ()
add_executable(sample_rate_conversion sample_rate_conversion.cpp)
target_link_libraries(sample_rate_conversion kfr kfr_io use_arch)
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
add_executable(dft dft.cpp)
target_link_libraries(dft kfr kfr_dft use_arch)
add_executable(ccv ccv.cpp)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
@@ -24,15 +24,15 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-fdiagnostics-absolute-paths)
endif ()
-option(ENABLE_COVERAGE "Enable coverage reporting" OFF)
+option(KFR_ENABLE_COVERAGE "Enable coverage reporting" OFF)
-if (ENABLE_COVERAGE)
+if (KFR_ENABLE_COVERAGE)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
endif ()
endif ()
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
add_definitions(-DHAVE_DFT)
endif ()
@@ -52,14 +52,14 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/tests/cmake/")
-if (ENABLE_CAPI_BUILD)
+if (KFR_ENABLE_CAPI_BUILD)
add_executable(capi_test capi_test.cpp)
target_include_directories(capi_test
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include)
target_link_libraries(capi_test PUBLIC kfr_capi)
endif ()
-if (ENABLE_ASMTEST)
+if (KFR_ENABLE_ASMTEST)
add_executable(asm_test asm_test.cpp)
target_link_libraries(asm_test kfr)
target_set_arch(asm_test PRIVATE avx2)
@@ -108,7 +108,7 @@ set(ALL_TESTS_CPP
io_test.cpp
${KFR_UNITTEST_SRC})
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
list(APPEND ALL_TESTS_CPP dft_test.cpp)
add_executable(dft_test dft_test.cpp)
@@ -118,13 +118,12 @@ find_package(MPFR)
find_package(GMP)
if (MPFR_FOUND AND GMP_FOUND)
- message(STATUS "MPFR is found")
add_executable(generate_data generate_data.cpp)
target_link_libraries(generate_data kfr)
target_include_directories(generate_data PRIVATE ${MPFR_INCLUDE_DIR}
${GMP_INCLUDE_DIR})
target_link_libraries(generate_data ${MPFR_LIBRARIES} ${GMP_LIBRARIES})
- if (REGENERATE_TESTS)
+ if (KFR_REGENERATE_TESTS)
add_custom_command(
TARGET generate_data
POST_BUILD
@@ -137,7 +136,7 @@ endif ()
add_executable(all_tests all_tests.cpp ${ALL_TESTS_CPP})
target_compile_definitions(all_tests PRIVATE KFR_NO_MAIN)
target_link_libraries(all_tests kfr use_arch)
-if (ENABLE_DFT)
+if (KFR_ENABLE_DFT)
target_link_libraries(all_tests kfr_dft)
target_link_libraries(dft_test kfr_dft)
endif ()
@@ -152,7 +151,7 @@ function (add_x86_test ARCH)
add_executable(all_tests_${NAME} all_tests.cpp ${ALL_TESTS_CPP}
${KFR_IO_SRC})
- if (ENABLE_DFT)
+ if (KFR_ENABLE_DFT)
target_sources(all_tests_${NAME} PRIVATE ${KFR_DFT_SRC})
endif ()
target_link_libraries(all_tests_${NAME} kfr)
@@ -160,10 +159,10 @@ function (add_x86_test ARCH)
target_compile_definitions(all_tests_${NAME} PRIVATE KFR_NO_MAIN)
target_compile_definitions(all_tests_${NAME} PUBLIC KFR_ENABLE_FLAC=1)
- if (ARCH_TESTS_MULTI)
+ if (KFR_ARCH_TESTS_MULTI)
add_library(all_tests_multiarch_${NAME} STATIC ${ALL_TESTS_MERGED_CPP}
${KFR_IO_SRC})
- if (ENABLE_DFT)
+ if (KFR_ENABLE_DFT)
target_sources(all_tests_multiarch_${NAME} PRIVATE ${KFR_DFT_SRC})
endif ()
target_link_libraries(all_tests_multiarch_${NAME} kfr)
@@ -176,9 +175,7 @@ function (add_x86_test ARCH)
endfunction ()
-message(STATUS "ARCH_TESTS = ${ARCH_TESTS}")
-
-if (ARCH_TESTS AND ARCH_TESTS STREQUAL "ON")
+if (KFR_ARCH_TESTS AND KFR_ARCH_TESTS STREQUAL "ON")
set(ARCH_LIST
generic
sse2
@@ -188,22 +185,20 @@ if (ARCH_TESTS AND ARCH_TESTS STREQUAL "ON")
avx2
avx512)
else ()
- string(REPLACE "," ";" ARCH_LIST "${ARCH_TESTS}")
+ string(REPLACE "," ";" ARCH_LIST "${KFR_ARCH_TESTS}")
endif ()
if (MSVC AND NOT CLANG)
list(REMOVE_ITEM ARCH_LIST generic)
endif ()
-message(STATUS "Testing for ${ARCH_LIST}")
-
-if (ARCH_TESTS)
+if (KFR_ARCH_TESTS)
- foreach (A IN LISTS ARCH_LIST)
+ foreach (A IN LISTS KFR_ARCH_LIST)
add_x86_test(${A})
endforeach ()
- if (ARCH_TESTS_MULTI)
+ if (KFR_ARCH_TESTS_MULTI)
add_executable(all_tests_multiarch all_tests.cpp)
target_compile_definitions(all_tests_multiarch PRIVATE KFR_MULTI_ARCH)
foreach (A IN LISTS ARCH_LIST)
@@ -236,20 +231,20 @@ set(SDE_ARCH_avx -snb)
set(SDE_ARCH_avx2 -hsw)
set(SDE_ARCH_avx512 -skx)
-if (NOT SKIP_TESTS)
+if (NOT KFR_SKIP_TESTS)
enable_testing()
if (X86)
add_test(NAME multiarch COMMAND ${EMULATOR}
${PROJECT_BINARY_DIR}/bin/multiarch)
- if (ENABLE_CAPI_BUILD)
+ if (KFR_ENABLE_CAPI_BUILD)
add_test(NAME capi_test COMMAND ${EMULATOR}
${PROJECT_BINARY_DIR}/bin/capi_test)
endif ()
endif ()
- if (ARCH_TESTS)
+ if (KFR_ARCH_TESTS)
foreach (A IN LISTS ARCH_LIST)
if (USE_SDE)
add_test(NAME all_tests_${A}
@@ -263,7 +258,7 @@ if (NOT SKIP_TESTS)
endforeach ()
endif ()
if (USE_SDE)
- add_test(NAME all_tests COMMAND ${SDE} ${SDE_ARCH_${CPU_ARCH}} -chip_check_exe_only
+ add_test(NAME all_tests COMMAND ${SDE} ${SDE_ARCH_${KFR_ARCH}} -chip_check_exe_only
-- ${PROJECT_BINARY_DIR}/bin/all_tests)
add_test(NAME all_tests_on_avx512 COMMAND ${SDE} ${SDE_ARCH_avx512} -chip_check_exe_only
-- ${PROJECT_BINARY_DIR}/bin/all_tests)