this repo has no description
0
fork

Configure Feed

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

Use find_package COMPONENTS to select shared/static + datatype

+87 -14
+14 -11
CMakeLists.txt
··· 14 14 15 15 if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|AppleClang") 16 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) 17 + -W -Wall -Waggregate-return -Wcast-align -Wcast-qual -Wshadow -Wwrite-strings 18 + "$<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes;-Wmissing-prototypes;-Wnested-externs;-Wbad-function-cast>") 20 19 endif() 21 20 22 21 set(KISSFFT_FIXED_WIDTH_VALID 16 32) ··· 35 34 36 35 add_library(kissfft 37 36 kiss_fft.c) 38 - add_library(kissfft::kissfft ALIAS kissfft) 39 37 40 38 target_include_directories(kissfft PUBLIC 41 39 $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> 42 - $<INSTALL_INTERFACE:.>) 40 + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) 43 41 44 42 set(KISSFFT_COMPILE_DEFINITIONS) 45 43 if(KISSFFT_SIMD) ··· 51 49 set(KISSFFT_DATATYPE "${KISSFFT_FLOAT_TYPE}") 52 50 else() 53 51 list(APPEND KISSFFT_COMPILE_DEFINITIONS KISSFFT_FIXED_POINT=${KISSFFT_FIXED_WIDTH}) 54 - set(KISSFFT_DATATYPE "int${KISSFFT_FIXED_WIDTH}_t") 52 + set(KISSFFT_DATATYPE "int${KISSFFT_FIXED_WIDTH}") 55 53 endif() 56 54 endif() 57 55 if(KISSFFT_OPENMP) ··· 64 62 endif() 65 63 message(STATUS "Building KissFFT with datatype=${KISSFFT_DATATYPE}") 66 64 67 - set(KISSFFT_EXPORT_SUFFIX "") 68 65 if(BUILD_SHARED_LIBS) 69 66 list(APPEND KISSFFT_COMPILE_DEFINITIONS KISS_FFT_SHARED) 70 67 set_target_properties(kissfft PROPERTIES 71 68 C_VISIBILITY_PRESET hidden) 72 69 set(KISSFFT_EXPORT_SUFFIX "-shared") 70 + else() 71 + set(KISSFFT_EXPORT_SUFFIX "-static") 73 72 endif() 74 73 target_compile_definitions(kissfft PUBLIC ${KISSFFT_COMPILE_DEFINITIONS}) 75 74 set(KISSFFT_OUTPUT_NAME "kissfft_${KISSFFT_DATATYPE}") 76 75 set_target_properties(kissfft PROPERTIES 77 76 OUTPUT_NAME "${KISSFFT_OUTPUT_NAME}" 78 77 DEFINE_SYMBOL KISS_FFT_BUILD 79 - EXPORT_NAME "kissfit_${KISSFFT_DATATYPE}${KISSFFT_EXPORT_SUFFIX}" 78 + EXPORT_NAME "kissfft-${KISSFFT_DATATYPE}" 80 79 VERSION ${PROJECT_VERSION}) 80 + add_library(kissfft::kissfft ALIAS kissfft) 81 + add_library(kissfft::kissff-${KISSFFT_DATATYPE} ALIAS kissfft) 82 + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") 83 + target_link_libraries(kissfft PRIVATE m) 84 + endif() 81 85 82 86 function(add_kissfft_executable NAME) 83 87 add_executable(${NAME} ${ARGN}) 84 88 target_link_libraries(${NAME} PRIVATE kissfft::kissfft) 85 - set_target_properties(${NAME} PROPERTIES 86 - OUTPUT_NAME "${NAME}_${KISSFFT_DATATYPE}") 87 89 if(CMAKE_SYSTEM_NAME STREQUAL "Linux") 88 90 target_link_libraries(${NAME} PRIVATE m) 89 91 endif() 92 + set_target_properties(${NAME} PROPERTIES 93 + OUTPUT_NAME "${NAME}_${KISSFFT_DATATYPE}") 90 94 endfunction() 91 95 92 96 option(KISSFFT_TOOLS "Build kissfft tools" ON) ··· 99 103 enable_testing() 100 104 add_subdirectory(test) 101 105 endif() 102 - 103 106 104 107 option(KISSFFT_INSTALL "Enable kissfft install" ON) 105 108 if (KISSFFT_INSTALL)
+72 -2
kissfft-config.cmake.in
··· 1 + # kissfft-config.ccmake accept the following components: 2 + # 3 + # SHARED/STATIC: 4 + # This components allows one to choose a shared/static kissfft library. 5 + # The default is selected by BUILD_SHARED_LIBS. 6 + # They are to be used exclusively. Using them together is an error. 7 + # 8 + # example: 9 + # find_package(kissfft CONFIG REQUIRED COMPONENTS STATIC) 10 + # 11 + # simd/int16/int32/float/double: 12 + # This components allows one to choose the datatype. 13 + # When using this component, the target kissfft::kissfft becomes available. 14 + # When not using this component, you will have to choose the correct kissfft target. 15 + # 16 + # example: 17 + # find_package(kissfft CONFIG REQUIRED) 18 + # # - kissfft::kissfft-float, kissfft::kissfft-int32_t/ ... are available (if they are installed) 19 + # # - kissfft::kissfft is not available, 20 + # 21 + # find_package(kissfft CONFIG REQUIRED COMPONENTS int32_t) 22 + # # - kissfft::kissfft-float, kissfft::kissfft-int32_t/ ... are available (if they are installed) 23 + # # - kissfft::kissfft is available (as an alias for kissfft::kissfft-int32_t), 24 + 1 25 @PACKAGE_INIT@ 2 26 27 + cmake_minimum_required(VERSION 3.3) 28 + 29 + # Set include glob of config files using SHARED/static component, BUILD_SHARED_LIBS by default 30 + set(_kissfft_shared_detected OFF) 31 + set(_kissfft_shared ${BUILD_SHARED_LIBS}) 32 + if("SHARED" IN_LIST kissfft_FIND_COMPONENTS) 33 + set(_kissfft_shared_detected ON) 34 + set(_kissfft_shared ON) 35 + endif() 36 + if("STATIC" IN_LIST kissfft_FIND_COMPONENTS) 37 + if(_kissfft_shared_detected) 38 + message(FATAL_ERROR "SHARED and STATIC components cannot be used together") 39 + endif() 40 + set(_kissfft_shared_detected ON) 41 + set(_kissfft_shared OFF) 42 + endif() 43 + 44 + if(_kissfft_shared) 45 + set(_kissfft_config_glob "kissfft-*-shared-targets.cmake") 46 + else() 47 + set(_kissfft_config_glob "kissfft-*-static-targets.cmake") 48 + endif() 49 + 3 50 # Load information for all configured kissfft 4 51 get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 5 - file(GLOB CONFIG_FILES "${_DIR}/kissfft-*-targets.cmake") 52 + file(GLOB CONFIG_FILES "${_DIR}/${_kissfft_config_glob}") 6 53 foreach(f ${CONFIG_FILES}) 7 54 include(${f}) 8 55 endforeach() 9 56 57 + # If a datatype component is passed, create kissfft::kissfft 58 + set(_kissfft_datatype_detected) 59 + foreach(_kissfft_datatype simd int16 int32 float double) 60 + if(_kissfft_datatype IN_LIST kissfft_FIND_COMPONENTS) 61 + if(_kissfft_datatype_detected) 62 + message(FATAL_ERROR "Cannot define datatype COMPONENT twice: ${_kissfft_datatype_detected} and ${_kissfft_datatype}") 63 + endif() 64 + set(_kissfft_datatype_detected ${_kissfft_datatype}) 65 + endif() 66 + endforeach() 67 + 68 + if(_kissfft_datatype_detected) 69 + if(NOT TARGET kissfft::kissfft-${_kissfft_datatype_detected}) 70 + message(FATAL_ERROR "kissfft with datatype=${_kissfft_datatype_detected} is not installed") 71 + endif() 72 + if(TARGET kissfft::kissfft) 73 + message(SEND_ERROR "kissfft::kissfft already exists. You cannot use 2 find_package's with datatype that are visible to eachother.") 74 + else() 75 + add_library(kissfft::kissfft INTERFACE IMPORTED) 76 + set_property(TARGET kissfft::kissfft PROPERTY INTERFACE_LINK_LIBRARIES kissfft::kissfft-${_kissfft_datatype_detected}) 77 + endif() 78 + endif() 79 + 80 + set(kissfft_FOUND ON) 10 81 set(KISSFFT_VERSION @kissfft_VERSION@) 11 82 12 - check_required_components(kissfft)
+1 -1
tools/CMakeLists.txt
··· 14 14 target_link_libraries(psdpng PRIVATE PkgConfig::libpng) 15 15 endif() 16 16 17 - #dumphdr.c is not available 17 + #FIXME: dumphdr.c is not available 18 18 #add_kissfft_executable(dumphdr dumphdr.c)