diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/kissfft | |
Diffstat (limited to 'vcpkg/ports/kissfft')
| -rw-r--r-- | vcpkg/ports/kissfft/fix-install-dirs.patch | 15 | ||||
| -rw-r--r-- | vcpkg/ports/kissfft/fix-linkage.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/kissfft/portfile.cmake | 90 | ||||
| -rw-r--r-- | vcpkg/ports/kissfft/usage | 11 | ||||
| -rw-r--r-- | vcpkg/ports/kissfft/vcpkg.json | 30 |
5 files changed, 159 insertions, 0 deletions
diff --git a/vcpkg/ports/kissfft/fix-install-dirs.patch b/vcpkg/ports/kissfft/fix-install-dirs.patch new file mode 100644 index 0000000..f9c1bfd --- /dev/null +++ b/vcpkg/ports/kissfft/fix-install-dirs.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0213798..c4d7d3e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -105,9 +105,7 @@ endif() + # Add GNUInstallDirs for GNU infrastructure before target)include_directories + # + +-if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$" AND NOT CMAKE_CROSSCOMPILING) +- include(GNUInstallDirs) +-endif() ++include(GNUInstallDirs) + + # + # Declare PKGINCLUDEDIR for kissfft include path diff --git a/vcpkg/ports/kissfft/fix-linkage.patch b/vcpkg/ports/kissfft/fix-linkage.patch new file mode 100644 index 0000000..9e91f5f --- /dev/null +++ b/vcpkg/ports/kissfft/fix-linkage.patch @@ -0,0 +1,13 @@ +diff --git a/kissfft-config.cmake.in b/kissfft-config.cmake.in +index cd7139a..c387fe6 100644 +--- a/kissfft-config.cmake.in ++++ b/kissfft-config.cmake.in +@@ -28,7 +28,7 @@ cmake_minimum_required(VERSION 3.3) + + # Set include glob of config files using SHARED/static component, BUILD_SHARED_LIBS by default + set(_kissfft_shared_detected OFF) +-set(_kissfft_shared ${BUILD_SHARED_LIBS}) ++set(_kissfft_shared @BUILD_SHARED_LIBS@) + if("SHARED" IN_LIST kissfft_FIND_COMPONENTS) + set(_kissfft_shared_detected ON) + set(_kissfft_shared ON) diff --git a/vcpkg/ports/kissfft/portfile.cmake b/vcpkg/ports/kissfft/portfile.cmake new file mode 100644 index 0000000..9372b9e --- /dev/null +++ b/vcpkg/ports/kissfft/portfile.cmake @@ -0,0 +1,90 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO mborgerding/kissfft + REF "${VERSION}" + SHA512 bd715868ce0e93a291a0592fb1f8b960e832fc64efe863755e52b67d5addff9bcb444a1bf2570d1914c52b41dad1023d0d86400f5ea30c9fb84cd6b4f7210708 + HEAD_REF master + PATCHES + fix-install-dirs.patch + fix-linkage.patch +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" KISSFFT_STATIC) + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + openmp KISSFFT_OPENMP + tools KISSFFT_TOOLS +) + +if("tools" IN_LIST FEATURES) + vcpkg_find_acquire_program(PKGCONFIG) +endif() + +set(datatypes float double int16_t int32_t) + +foreach(datatype IN LISTS datatypes) + vcpkg_cmake_configure( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DKISSFFT_DATATYPE=${datatype} + -DKISSFFT_PKGCONFIG=ON + -DKISSFFT_TEST=OFF + -DKISSFFT_STATIC=${KISSFFT_STATIC} + ${FEATURE_OPTIONS} + LOGFILE_BASE "config-${TARGET_TRIPLET}-${datatype}" + ) + + vcpkg_cmake_build( + LOGFILE_BASE "install-${TARGET_TRIPLET}-${datatype}" + TARGET install + ) + + vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/kissfft") + + vcpkg_copy_pdbs() +endforeach() + +vcpkg_fixup_pkgconfig() + +if("tools" IN_LIST FEATURES) + set(tool_names) + + foreach(datatype IN LISTS datatypes) + if("openmp" IN_LIST FEATURES) + list(APPEND tool_names + "fastconv-${datatype}-openmp" + "fastconvr-${datatype}-openmp" + "fft-${datatype}-openmp" + "psdpng-${datatype}-openmp" + ) + else() + list(APPEND tool_names + "fastconv-${datatype}" + "fastconvr-${datatype}" + "fft-${datatype}" + "psdpng-${datatype}" + ) + endif() + endforeach() + + vcpkg_copy_tools( + TOOL_NAMES ${tool_names} + AUTO_CLEAN + ) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + vcpkg_replace_string( + "${CURRENT_PACKAGES_DIR}/include/kissfft/kiss_fft.h" + "#ifdef KISS_FFT_SHARED" + "#if 1 //#ifdef KISS_FFT_SHARED" + ) +endif() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/kissfft") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg/ports/kissfft/usage b/vcpkg/ports/kissfft/usage new file mode 100644 index 0000000..d803db8 --- /dev/null +++ b/vcpkg/ports/kissfft/usage @@ -0,0 +1,11 @@ +kissfft provides CMake targets:
+
+ # Using distinct targets
+ find_package(kissfft CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE kissfft::kissfft-float)
+ # Alternative targets: kissfft::kissfft-double, kissfft::int16_t, kissfft::int32_t
+
+ # Using a distinct package component
+ find_package(kissfft CONFIG REQUIRED COMPONENTS float)
+ target_link_libraries(main PRIVATE kissfft::kissfft)
+ # Alternative components: double, int16_t, int32_t
diff --git a/vcpkg/ports/kissfft/vcpkg.json b/vcpkg/ports/kissfft/vcpkg.json new file mode 100644 index 0000000..932d5e9 --- /dev/null +++ b/vcpkg/ports/kissfft/vcpkg.json @@ -0,0 +1,30 @@ +{ + "name": "kissfft", + "version": "131.1.0", + "description": "A Fast Fourier Transform (FFT) library that tries to Keep it Simple, Stupid", + "homepage": "https://github.com/mborgerding/kissfft", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "openmp": { + "description": "Build kissfft with OpenMP support", + "supports": "!windows" + }, + "tools": { + "description": "Build kissfft tools", + "supports": "linux | osx", + "dependencies": [ + "libpng" + ] + } + } +} |