-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
362 additions
and
1,351 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
cmake_minimum_required(VERSION 3.15...3.27) | ||
project(voyager LANGUAGES CXX) | ||
|
||
# Warn if the user invokes CMake directly | ||
if (NOT SKBUILD) | ||
message(WARNING "\ | ||
This CMake file is meant to be executed using 'scikit-build-core'. | ||
Running it directly will almost certainly not produce the desired | ||
result. If you are a user trying to install this package, use the | ||
command below, which will install all necessary build dependencies, | ||
compile the package in an isolated environment, and then install it. | ||
===================================================================== | ||
$ pip install . | ||
===================================================================== | ||
If you are a software developer, and this is your own package, then | ||
it is usually much more efficient to install the build dependencies | ||
in your environment once and use the following command that avoids | ||
a costly creation of a new virtual environment at every compilation: | ||
===================================================================== | ||
$ pip install nanobind scikit-build-core[pyproject] | ||
$ pip install --no-build-isolation -ve . | ||
===================================================================== | ||
You may optionally add -Ceditable.rebuild=true to auto-rebuild when | ||
the package is imported. Otherwise, you need to rerun the above | ||
after editing C++ files.") | ||
endif() | ||
|
||
if (CMAKE_VERSION VERSION_LESS 3.18) | ||
set(DEV_MODULE Development) | ||
else() | ||
set(DEV_MODULE Development.Module) | ||
endif() | ||
|
||
find_package(Python 3.10 COMPONENTS Interpreter ${DEV_MODULE}) | ||
|
||
# Import nanobind through CMake's find_package mechanism | ||
find_package(nanobind CONFIG REQUIRED) | ||
|
||
|
||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | ||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) | ||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") | ||
endif() | ||
|
||
# Detect the installed nanobind package and import it into CMake | ||
execute_process( | ||
COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir | ||
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT) | ||
find_package(nanobind CONFIG REQUIRED) | ||
|
||
nanobind_add_module( | ||
voyager_ext | ||
# Target the stable ABI for Python 3.12+, which reduces | ||
# the number of binary wheels that must be built. This | ||
# does nothing on older Python versions | ||
NB_STATIC STABLE_ABI LTO FREE_THREADED | ||
# Sources: | ||
src/bindings.cpp | ||
) | ||
|
||
# Install directive for scikit-build-core | ||
install(TARGETS voyager_ext LIBRARY DESTINATION voyager) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,44 @@ | ||
[build-system] | ||
requires = [ | ||
"setuptools>=42", | ||
"wheel", | ||
"numpy>=1.10.0", | ||
"pybind11>=2.0", | ||
requires = ["scikit-build-core >=0.4.3", "nanobind >=1.3.2"] | ||
build-backend = "scikit_build_core.build" | ||
|
||
[project] | ||
name = "voyager" | ||
version = "2.0.10" | ||
description = "Easy-to-use, fast, simple multi-platform approximate nearest-neighbor search library." | ||
readme = "../README.md" | ||
requires-python = ">=3.8" | ||
authors = [ | ||
{ name = "Peter Sobot", email = "[email protected]" }, | ||
] | ||
classifiers = [ | ||
"Development Status :: 5 - Production/Stable", | ||
"License :: OSI Approved :: Apache Software License", | ||
"Operating System :: MacOS", | ||
"Operating System :: Microsoft :: Windows", | ||
"Operating System :: POSIX :: Linux", | ||
"Programming Language :: C++", | ||
"Programming Language :: Python", | ||
"Topic :: Database :: Database Engines/Servers", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Programming Language :: Python :: 3.12", | ||
] | ||
# Optional: runtime dependency specification | ||
# dependencies = [ "cryptography >=41.0" ] | ||
|
||
[project.urls] | ||
Homepage = "https://github.com/spotify/voyager" | ||
|
||
[tool.scikit-build] | ||
# Protect the configuration against future changes in scikit-build-core | ||
minimum-version = "0.4" | ||
|
||
# Setuptools-style build caching in a local directory | ||
build-dir = "build/{wheel_tag}" | ||
|
||
build-backend = "setuptools.build_meta" | ||
# Build stable ABI wheels for CPython 3.12+ | ||
wheel.py-api = "cp312" |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.