From 5caba36ebe878ea9b56f04db1da02faf096d097d Mon Sep 17 00:00:00 2001 From: toge Date: Wed, 26 Feb 2025 23:45:41 +0900 Subject: [PATCH] [usearch] add features (#43950) --- ports/usearch/portfile.cmake | 10 +++++++++ ports/usearch/use-vcpkg-ports.patch | 33 +++++++++++++++++++++++++++++ ports/usearch/vcpkg.json | 23 +++++++++++++++++++- versions/baseline.json | 2 +- versions/u-/usearch.json | 5 +++++ 5 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 ports/usearch/use-vcpkg-ports.patch diff --git a/ports/usearch/portfile.cmake b/ports/usearch/portfile.cmake index 6ea55582f3..b8cd4cbb6f 100644 --- a/ports/usearch/portfile.cmake +++ b/ports/usearch/portfile.cmake @@ -4,11 +4,21 @@ vcpkg_from_github( REF "v${VERSION}" SHA512 6aa32a96f5f672aa57287257133aa8931b13b8738aaa156bee24c77d9b5340d1d9720aaaad099946b3e7b6b35522f10241a30cd4084a641d658158c9d4b53453 HEAD_REF main + PATCHES + use-vcpkg-ports.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + fp16 USEARCH_USE_FP16LIB + jemalloc USEARCH_USE_JEMALLOC + simsimd USEARCH_USE_SIMSIMD ) vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS + ${FEATURE_OPTIONS} -DUSEARCH_INSTALL=ON -DUSEARCH_BUILD_TEST_CPP=OFF -DUSEARCH_BUILD_BENCH_CPP=OFF diff --git a/ports/usearch/use-vcpkg-ports.patch b/ports/usearch/use-vcpkg-ports.patch new file mode 100644 index 0000000000..d3e0eb1a7a --- /dev/null +++ b/ports/usearch/use-vcpkg-ports.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c94fe5c..be088c9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -149,18 +149,6 @@ target_include_directories( + ${USEARCH_TARGET_NAME} ${USEARCH_SYSTEM_INCLUDE} INTERFACE $ + $ + ) +-if (USEARCH_USE_FP16LIB) +- target_include_directories( +- ${USEARCH_TARGET_NAME} ${USEARCH_SYSTEM_INCLUDE} INTERFACE $ +- $ +- ) +-endif() +-if (USEARCH_USE_SIMSIMD) +- target_include_directories( +- ${USEARCH_TARGET_NAME} ${USEARCH_SYSTEM_INCLUDE} INTERFACE $ +- $ +- ) +-endif() + + # Install a pkg-config file, so other tools can find this + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkg-config.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc") +@@ -220,8 +208,7 @@ if (NOT CMAKE_BUILD_TYPE) + endif () + + # Include directories +-set(USEARCH_HEADER_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/fp16/include" +- "${CMAKE_CURRENT_SOURCE_DIR}/simsimd/include" ++set(USEARCH_HEADER_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/include" + ) + + # Function to setup target diff --git a/ports/usearch/vcpkg.json b/ports/usearch/vcpkg.json index 2d7f48acc6..c48a314f58 100644 --- a/ports/usearch/vcpkg.json +++ b/ports/usearch/vcpkg.json @@ -1,6 +1,7 @@ { "name": "usearch", "version": "2.17.2", + "port-version": 1, "description": "Fastest Search & Clustering engine × for Vectors & Strings", "homepage": "https://github.com/unum-cloud/usearch", "license": "Apache-2.0", @@ -13,5 +14,25 @@ "name": "vcpkg-cmake-config", "host": true } - ] + ], + "features": { + "fp16": { + "description": "Use software emulation for half-precision types", + "dependencies": [ + "fp16" + ] + }, + "jemalloc": { + "description": "Use JeMalloc for faster memory allocations", + "dependencies": [ + "jemalloc" + ] + }, + "simsimd": { + "description": "Use SimSIMD hardware-accelerated metrics", + "dependencies": [ + "simsimd" + ] + } + } } diff --git a/versions/baseline.json b/versions/baseline.json index 4aa87c8fb4..3a0c98701a 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9370,7 +9370,7 @@ }, "usearch": { "baseline": "2.17.2", - "port-version": 0 + "port-version": 1 }, "usockets": { "baseline": "0.8.8", diff --git a/versions/u-/usearch.json b/versions/u-/usearch.json index 2d3553e399..0a09eacd62 100644 --- a/versions/u-/usearch.json +++ b/versions/u-/usearch.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "50da7c77dca04b357388a72af5e3a91c5176dfb0", + "version": "2.17.2", + "port-version": 1 + }, { "git-tree": "bf3a48e25fa6298bb0a325872d813c11421b7e8f", "version": "2.17.2",