mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-26 17:41:09 +08:00
[nanobind] New port (#35488)
This commit is contained in:
parent
d798cd7ff1
commit
9b11c9db80
62
ports/nanobind/find_dependency_python.patch
Normal file
62
ports/nanobind/find_dependency_python.patch
Normal file
@ -0,0 +1,62 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 919ce1d..25956c7 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -107,29 +107,11 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
||||
add_compile_options(-Wall -Wextra -Wno-unused-local-typedefs)
|
||||
endif()
|
||||
|
||||
-# ---------------------------------------------------------------------------
|
||||
-# Find the Python interpreter and development libraries
|
||||
-# ---------------------------------------------------------------------------
|
||||
-
|
||||
-if (NOT TARGET Python::Module OR NOT TARGET Python::Interpreter)
|
||||
- set(Python_FIND_FRAMEWORK LAST) # Prefer Brew/Conda to Apple framework python
|
||||
-
|
||||
- if (CMAKE_VERSION VERSION_LESS 3.18)
|
||||
- set(NB_PYTHON_DEV_MODULE Development)
|
||||
- else()
|
||||
- set(NB_PYTHON_DEV_MODULE Development.Module)
|
||||
- endif()
|
||||
-
|
||||
- find_package(Python 3.8
|
||||
- REQUIRED COMPONENTS Interpreter ${NB_PYTHON_DEV_MODULE}
|
||||
- OPTIONAL_COMPONENTS Development.SABIModule)
|
||||
-endif()
|
||||
-
|
||||
# ---------------------------------------------------------------------------
|
||||
# Include nanobind cmake functionality
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
-find_package(nanobind
|
||||
+find_package(nanobind REQUIRED
|
||||
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
diff --git a/cmake/nanobind-config.cmake b/cmake/nanobind-config.cmake
|
||||
index cb6cfb0..a456f3f 100644
|
||||
--- a/cmake/nanobind-config.cmake
|
||||
+++ b/cmake/nanobind-config.cmake
|
||||
@@ -1,9 +1,20 @@
|
||||
include_guard(GLOBAL)
|
||||
|
||||
-if (NOT TARGET Python::Module)
|
||||
- message(FATAL_ERROR "You must invoke 'find_package(Python COMPONENTS Interpreter Development REQUIRED)' prior to including nanobind.")
|
||||
+# ---------------------------------------------------------------------------
|
||||
+# Find the Python interpreter and development libraries
|
||||
+# ---------------------------------------------------------------------------
|
||||
+if (CMAKE_VERSION VERSION_LESS 3.18)
|
||||
+ set(NB_PYTHON_DEV_MODULE Development)
|
||||
+else()
|
||||
+ set(NB_PYTHON_DEV_MODULE Development.Module)
|
||||
endif()
|
||||
|
||||
+include(CMakeFindDependencyMacro)
|
||||
+find_dependency(Python 3.8
|
||||
+ COMPONENTS Interpreter ${NB_PYTHON_DEV_MODULE}
|
||||
+ OPTIONAL_COMPONENTS Development.SABIModule
|
||||
+)
|
||||
+
|
||||
# Determine the right suffix for ordinary and stable ABI extensions.
|
||||
|
||||
# We always need to know the extension
|
129
ports/nanobind/move_include_dir.patch
Normal file
129
ports/nanobind/move_include_dir.patch
Normal file
@ -0,0 +1,129 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index e8fda9f..b27dc07 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -52,7 +52,7 @@ if(NB_CREATE_INSTALL_RULES AND NOT CMAKE_SKIP_INSTALL_RULES)
|
||||
|
||||
# Normally these would be configurable by the user, but we can't allow that
|
||||
# because the lookup paths are hard-coded in 'cmake/nanobind-config.cmake'
|
||||
- set(NB_INSTALL_INC_DIR "${NB_INSTALL_DATADIR}/include")
|
||||
+ set(NB_INSTALL_INC_DIR "${NB_INSTALL_DATADIR}/../../include")
|
||||
set(NB_INSTALL_SRC_DIR "${NB_INSTALL_DATADIR}/src")
|
||||
set(NB_INSTALL_EXT_DIR "${NB_INSTALL_DATADIR}/ext")
|
||||
set(NB_INSTALL_MODULE_DIR "${NB_INSTALL_DATADIR}")
|
||||
diff --git a/cmake/nanobind-config.cmake b/cmake/nanobind-config.cmake
|
||||
index a456f3f..92406dc 100644
|
||||
--- a/cmake/nanobind-config.cmake
|
||||
+++ b/cmake/nanobind-config.cmake
|
||||
@@ -113,54 +113,54 @@ function (nanobind_build_library TARGET_NAME)
|
||||
|
||||
add_library(${TARGET_NAME} ${TARGET_TYPE}
|
||||
EXCLUDE_FROM_ALL
|
||||
- ${NB_DIR}/include/nanobind/make_iterator.h
|
||||
- ${NB_DIR}/include/nanobind/nanobind.h
|
||||
- ${NB_DIR}/include/nanobind/nb_accessor.h
|
||||
- ${NB_DIR}/include/nanobind/nb_attr.h
|
||||
- ${NB_DIR}/include/nanobind/nb_call.h
|
||||
- ${NB_DIR}/include/nanobind/nb_cast.h
|
||||
- ${NB_DIR}/include/nanobind/nb_class.h
|
||||
- ${NB_DIR}/include/nanobind/nb_defs.h
|
||||
- ${NB_DIR}/include/nanobind/nb_descr.h
|
||||
- ${NB_DIR}/include/nanobind/nb_enums.h
|
||||
- ${NB_DIR}/include/nanobind/nb_error.h
|
||||
- ${NB_DIR}/include/nanobind/nb_func.h
|
||||
- ${NB_DIR}/include/nanobind/nb_lib.h
|
||||
- ${NB_DIR}/include/nanobind/nb_misc.h
|
||||
- ${NB_DIR}/include/nanobind/nb_python.h
|
||||
- ${NB_DIR}/include/nanobind/nb_traits.h
|
||||
- ${NB_DIR}/include/nanobind/nb_tuple.h
|
||||
- ${NB_DIR}/include/nanobind/nb_types.h
|
||||
- ${NB_DIR}/include/nanobind/ndarray.h
|
||||
- ${NB_DIR}/include/nanobind/trampoline.h
|
||||
- ${NB_DIR}/include/nanobind/operators.h
|
||||
- ${NB_DIR}/include/nanobind/stl/array.h
|
||||
- ${NB_DIR}/include/nanobind/stl/bind_map.h
|
||||
- ${NB_DIR}/include/nanobind/stl/bind_vector.h
|
||||
- ${NB_DIR}/include/nanobind/stl/detail
|
||||
- ${NB_DIR}/include/nanobind/stl/detail/nb_array.h
|
||||
- ${NB_DIR}/include/nanobind/stl/detail/nb_dict.h
|
||||
- ${NB_DIR}/include/nanobind/stl/detail/nb_list.h
|
||||
- ${NB_DIR}/include/nanobind/stl/detail/nb_set.h
|
||||
- ${NB_DIR}/include/nanobind/stl/detail/traits.h
|
||||
- ${NB_DIR}/include/nanobind/stl/filesystem.h
|
||||
- ${NB_DIR}/include/nanobind/stl/function.h
|
||||
- ${NB_DIR}/include/nanobind/stl/list.h
|
||||
- ${NB_DIR}/include/nanobind/stl/map.h
|
||||
- ${NB_DIR}/include/nanobind/stl/optional.h
|
||||
- ${NB_DIR}/include/nanobind/stl/pair.h
|
||||
- ${NB_DIR}/include/nanobind/stl/set.h
|
||||
- ${NB_DIR}/include/nanobind/stl/shared_ptr.h
|
||||
- ${NB_DIR}/include/nanobind/stl/string.h
|
||||
- ${NB_DIR}/include/nanobind/stl/string_view.h
|
||||
- ${NB_DIR}/include/nanobind/stl/tuple.h
|
||||
- ${NB_DIR}/include/nanobind/stl/unique_ptr.h
|
||||
- ${NB_DIR}/include/nanobind/stl/unordered_map.h
|
||||
- ${NB_DIR}/include/nanobind/stl/unordered_set.h
|
||||
- ${NB_DIR}/include/nanobind/stl/variant.h
|
||||
- ${NB_DIR}/include/nanobind/stl/vector.h
|
||||
- ${NB_DIR}/include/nanobind/eigen/dense.h
|
||||
- ${NB_DIR}/include/nanobind/eigen/sparse.h
|
||||
+ ${NB_DIR}/../../include/nanobind/make_iterator.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nanobind.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_accessor.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_attr.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_call.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_cast.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_class.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_defs.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_descr.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_enums.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_error.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_func.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_lib.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_misc.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_python.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_traits.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_tuple.h
|
||||
+ ${NB_DIR}/../../include/nanobind/nb_types.h
|
||||
+ ${NB_DIR}/../../include/nanobind/ndarray.h
|
||||
+ ${NB_DIR}/../../include/nanobind/trampoline.h
|
||||
+ ${NB_DIR}/../../include/nanobind/operators.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/array.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/bind_map.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/bind_vector.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail/nb_array.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail/nb_dict.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail/nb_list.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail/nb_set.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/detail/traits.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/filesystem.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/function.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/list.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/map.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/optional.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/pair.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/set.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/shared_ptr.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/string.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/string_view.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/tuple.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/unique_ptr.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/unordered_map.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/unordered_set.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/variant.h
|
||||
+ ${NB_DIR}/../../include/nanobind/stl/vector.h
|
||||
+ ${NB_DIR}/../../include/nanobind/eigen/dense.h
|
||||
+ ${NB_DIR}/../../include/nanobind/eigen/sparse.h
|
||||
|
||||
${NB_DIR}/src/buffer.h
|
||||
${NB_DIR}/src/hash.h
|
||||
@@ -230,7 +230,7 @@ function (nanobind_build_library TARGET_NAME)
|
||||
|
||||
target_include_directories(${TARGET_NAME} PUBLIC
|
||||
${Python_INCLUDE_DIRS}
|
||||
- ${NB_DIR}/include)
|
||||
+ ${NB_DIR}/../../include)
|
||||
|
||||
target_compile_features(${TARGET_NAME} PUBLIC cxx_std_17)
|
||||
nanobind_set_visibility(${TARGET_NAME})
|
28
ports/nanobind/portfile.cmake
Normal file
28
ports/nanobind/portfile.cmake
Normal file
@ -0,0 +1,28 @@
|
||||
# nanobind distributes source code to build on-demand.
|
||||
# The source code is installed into the 'share/${PORT}' directory with
|
||||
# subdirectories for source `src` and header `include` files
|
||||
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
||||
set(VCPKG_BUILD_TYPE release)
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO wjakob/nanobind
|
||||
REF "v${VERSION}"
|
||||
SHA512 40311f6416b9fdce764bf80baf156b42e1f00e03f3427b9f9db401fa4eeeb9db83b79c04ebefec2f6ed185419d1b22065f8f12eba3ad57056d2e0f825444b785
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
find_dependency_python.patch
|
||||
move_include_dir.patch
|
||||
)
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
OPTIONS
|
||||
-DNB_USE_SUBMODULE_DEPS:BOOL=OFF
|
||||
-DNB_TEST:BOOL=OFF
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
|
||||
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
|
||||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
|
8
ports/nanobind/usage
Normal file
8
ports/nanobind/usage
Normal file
@ -0,0 +1,8 @@
|
||||
The package nanobind provides CMake functions and source code rather than
|
||||
libraries:
|
||||
|
||||
find_package(nanobind REQUIRED)
|
||||
nanobind_add_module(my_ext source.cpp)
|
||||
|
||||
# See docs for more configuration options
|
||||
# https://nanobind.readthedocs.io/en/latest/api_cmake.html
|
15
ports/nanobind/vcpkg.json
Normal file
15
ports/nanobind/vcpkg.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "nanobind",
|
||||
"version-semver": "1.9.2",
|
||||
"description": "Tiny and efficient C++/Python bindings",
|
||||
"homepage": "https://nanobind.readthedocs.io/en/latest/",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": [
|
||||
"python3",
|
||||
"robin-map",
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
}
|
||||
]
|
||||
}
|
25
scripts/test_ports/vcpkg-ci-nanobind/portfile.cmake
Normal file
25
scripts/test_ports/vcpkg-ci-nanobind/portfile.cmake
Normal file
@ -0,0 +1,25 @@
|
||||
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
|
||||
|
||||
# This test does not support cross-compilation due to nanobind's usage of the
|
||||
# Python interpreter to figure out Python module suffix.
|
||||
if(VCPKG_CROSSCOMPILING)
|
||||
message(WARNING "Skipping vcpkg-ci-nanobind because it is not expected to work when cross-compiling")
|
||||
return()
|
||||
endif()
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO wjakob/nanobind_example
|
||||
REF 4b5c9bd484dec77e085a188dcefc536aed69aae9
|
||||
SHA512 ec7eeb25b5c5ee2e8bbcc48e78719dc6e5211cf54794dd3c370ad3e8d685fbc8b79435890da3b9481656169efaa87b77e3ea55ce864efd670dd9ea0600dee77d
|
||||
HEAD_REF master
|
||||
)
|
||||
|
||||
# This is needed to correctly build/link against a debug build of Python on
|
||||
# Windows
|
||||
string(APPEND VCPKG_CXX_FLAGS_DEBUG " -DPy_DEBUG")
|
||||
string(APPEND VCPKG_C_FLAGS_DEBUG " -DPy_DEBUG")
|
||||
|
||||
vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
|
||||
|
||||
vcpkg_cmake_build()
|
15
scripts/test_ports/vcpkg-ci-nanobind/vcpkg.json
Normal file
15
scripts/test_ports/vcpkg-ci-nanobind/vcpkg.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "vcpkg-ci-nanobind",
|
||||
"version": "0.0.1",
|
||||
"description": "A nanobind example project",
|
||||
"homepage": "https://nanobind.readthedocs.io/en/latest/",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": [
|
||||
"nanobind",
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -5972,6 +5972,10 @@
|
||||
"baseline": "4.3.11",
|
||||
"port-version": 0
|
||||
},
|
||||
"nanobind": {
|
||||
"baseline": "1.9.2",
|
||||
"port-version": 0
|
||||
},
|
||||
"nanodbc": {
|
||||
"baseline": "2.13.0",
|
||||
"port-version": 8
|
||||
|
9
versions/n-/nanobind.json
Normal file
9
versions/n-/nanobind.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "14a09776a3248629b8efbf096dcb787c01abcfe9",
|
||||
"version-semver": "1.9.2",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user