添加第三方开源组件
在 open_source/ 下注册第三方库,完成构建集成与合规登记。
步骤
前置条件
- 已获取上游源码压缩包,并确保版本号明确、来源可追溯。
准备库文件
1.创建目录并放置文件
在 open_source/<lib>/ 下创建以下文件:
| 文件 | 必需 | 用途 |
|---|---|---|
<lib>-<ver>.tar.gz |
是 | 官方上游源码压缩包 |
CMakeLists.txt |
是 | 外部项目构建脚本 |
<lib>-<ver>.patch |
可选 | 嵌入式适配 patch |
README.OpenSource |
是 | 上游源、版本、许可证(格式参考其他第三方组件) |
2.编写外部项目构建脚本
参考 open_source/lvgl的编译脚本编写构建脚本,通常包含三个固定部分:
- 解压部分 — 执行解压源码压缩包,若目标目录存在则跳过。
- Patch — 给第三方开源软件打补丁,同时实现打补丁幂等性。
- 第三方组件声明块 — 声明第三方目标,传播头文件路径。
注册第三方组件到构建系统
1.在 open_source/Kconfig 追加配置项
在 open_source/Kconfig 的 menu "Open Source Libraries" 块内追加 config OS_<NAME> 块:
kconfig2cmake.py会识别OS_<NAME>符号并将其转换为ENABLE_OS_<NAME>CMake 变量。
2.在根 CMakeLists.txt 追加子目录
参考其它CMake变量ENABLE_OS_<NAME>添加编译子目录的条件判断和信息收集。
合规登记
1.创建 README.OpenSource
在 open_source/<lib>/README.OpenSource 中编写 JSON 格式的元信息:
[
{
"Name": "<软件名>",
"License": "<开源许可证标识符(如 `MIT`、`Apache-2.0`、`GPL-2.0-only`)>",
"License File": "LICENSE.OpenSource",
"Version Number": "<版本号>",
"Owner": "<维护者邮箱>",
"Upstream URL": "<该版本对应的上游下载地址>",
"Description": "<功能描述与引入原因>"
}
]
2.更新 opensource_softwares.json
编辑 vendor/opensource_softwares.json,在 pkg_name_versions 数组中追加一行:
三段以 == 分隔:
- 软件名(小写,与 README.OpenSource 中
Name一致)、 - 版本号
- 仓库内相对路径。
3.更新 COPYRIGHT.OpenSource
在根目录 COPYRIGHT.OpenSource 末尾追加新软件的版权声明段:
----------------------------------------------------------------------
Software: <软件名> v<版本号>
Copyright notice:
Copyright (c) <年份> <版权持有者>
License: <许可证标识符>
<许可证全文>
许可证文本必须完整引用,不可省略或改写。
4.更新开源软件许可证说明文档
在 ../third-party-open-source-software-and-licenses.md 的许可证说明表格中追加该软件条目。
验证
- 运行编译命令,检查日志中出现对应库的构建输出
- 确认
_build/third_party/lib/下生成了目标库文件 - 确认
_build/bin/下生成了链接该库的可执行文件
附录
相关文档
| 文档 | 说明 |
|---|---|
| 构建系统设计 | 构建系统使用手册 |
集成点检查清单
新库必须在以下位置全部注册,逐项核对:
-
open_source/<lib>/CMakeLists.txt— 外部项目构建脚本 -
open_source/Kconfig—menu "Open Source Libraries"块内追加config OS_<NAME> -
CMakeLists.txt(仓库根目录) — 追加目标收集和添加构建子目录。 -
open_source/<lib>/README.OpenSource— 许可证、版本、上游地址相关条目 -
vendor/opensource_softwares.json— 新增条目 -
COPYRIGHT.OpenSource(仓库根目录) — 版权声明与许可证文本条目 -
docs/**/third-party-open-source-software-and-licenses.md— 许可证说明表格中追加条目