From fdb7f7e8346416cfbe5137357e6d794ecb5f18cf Mon Sep 17 00:00:00 2001 From: wangguokun Date: Tue, 2 Apr 2024 07:25:07 +0000 Subject: [PATCH] lib/pybind11: port lib-pybind11 to tenonos Signed-off-by: wangguokun --- Config.uk | 3 +++ Makefile.uk | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 20 ++++++++++++++++++++ patches/.keep | 0 4 files changed, 75 insertions(+) create mode 100644 Config.uk create mode 100644 Makefile.uk create mode 100644 README.md create mode 100644 patches/.keep diff --git a/Config.uk b/Config.uk new file mode 100644 index 0000000..5ad29fa --- /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 0000000..9f5b33b --- /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 0000000..42a62af --- /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 0000000..e69de29 -- Gitee