diff --git a/Config.uk b/Config.uk new file mode 100644 index 0000000000000000000000000000000000000000..5ad29facefa6172d1c924a103568cb6a839abfb3 --- /dev/null +++ b/Config.uk @@ -0,0 +1,3 @@ +menuconfig LIBPYBIND11 + bool "pybind11: pybind11 is a lightweight header-only library" + default n diff --git a/Makefile.uk b/Makefile.uk new file mode 100644 index 0000000000000000000000000000000000000000..9f5b33b1b0e99a0720c1065f35b92134dbf3844e --- /dev/null +++ b/Makefile.uk @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2024 The TenonOS Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################################ +# Library registration +################################################################################ +$(eval $(call addlib_s,libpybind11,$(CONFIG_LIBPYBIND11))) + +################################################################################ +# Sources +################################################################################ +LIBPYBIND11_VERSION=2.11.1 +LIBPYBIND11_URL=https://github.com/pybind/pybind11/archive/refs/tags/v$(LIBPYBIND11_VERSION).tar.gz + +ifeq ($(CONFIG_LIBPYBIND11), y) +$(eval $(call fetch,libpybind11,$(LIBPYBIND11_URL))) +endif + +LIBPYBIND11_DIRNAME=pybind11-$(LIBPYBIND11_VERSION) + +################################################################################ +# Helpers +################################################################################ +LIBPYBIND11_SRC = $(LIBPYBIND11_ORIGIN)/$(LIBPYBIND11_DIRNAME) + +################################################################################ +# Library includes +################################################################################ +CINCLUDES-$(CONFIG_LIBPYBIND11) += -I$(LIBPYBIND11_SRC)/include +CXXINCLUDES-$(CONFIG_LIBPYBIND11) += -I$(LIBPYBIND11_SRC)/include + +################################################################################ +# Global flags +################################################################################ +LIBPYBIND_FLAGS += -O3 \ + -Wno-undef \ + -fPIC + +LIBPYBIND_CFLAGS += $(LIBPYBIND_FLAGS) +LIBPYBIND_CXXFLAGS += -std=c++14 $(LIBPYBIND_FLAGS) diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..42a62af47f2c101699e2fb56543844ae1aa1e399 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# lib-pybind11 + +## 微库提供的功能与说明 + +pybind11是一个轻量级的库,它允许用户非常方便地将C++代码与Python代码进行绑定。这个库的设计目标是简单、易用和性能高效。通过使用pybind11,开发者可以创建Python模块,这些模块可以直接访问C++类和函数,就像访问Python原生的模块一样。 + +pybind11支持的详细特性可见其官方文档: https://github.com/pybind/pybind11 + +本仓库将pybind11作为微库移植到TenonOS,目录结构如下: + +```powershell +. +├── Config.uk ------ 维护微库配置 +├── Makefile.uk ------ 用于微库构建 +└── patches ------ 维护对pybind11源码的修改 +``` + +## 编译构建与配置说明 + +pybind11微库不依赖其他微库,默认不启用 diff --git a/patches/.keep b/patches/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391