From e418553c613c1ebe669669d2e1ea774359f0145a Mon Sep 17 00:00:00 2001 From: chenxu Date: Mon, 26 Jun 2023 15:57:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?ADD:=E6=B7=BB=E5=8A=A0stbt=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thirdparty/stb/HPKBUILD | 85 +++++++++++++ thirdparty/stb/OAT.xml | 20 +++ thirdparty/stb/README.OpenSource | 11 ++ thirdparty/stb/README_zh.md | 12 ++ thirdparty/stb/SHA512SUM | 1 + thirdparty/stb/docs/hap_integrate.md | 91 ++++++++++++++ thirdparty/stb/docs/pic/stb_install_dir.png | Bin 0 -> 22598 bytes thirdparty/stb/docs/pic/stb_test.png | Bin 0 -> 22754 bytes thirdparty/stb/docs/pic/stb_usage.png | Bin 0 -> 10172 bytes thirdparty/stb/single/PlainReport_stb.txt | 19 +++ .../stb/single/PlainReport_stb_Detail.txt | 117 ++++++++++++++++++ 11 files changed, 356 insertions(+) create mode 100755 thirdparty/stb/HPKBUILD create mode 100755 thirdparty/stb/OAT.xml create mode 100755 thirdparty/stb/README.OpenSource create mode 100755 thirdparty/stb/README_zh.md create mode 100755 thirdparty/stb/SHA512SUM create mode 100755 thirdparty/stb/docs/hap_integrate.md create mode 100755 thirdparty/stb/docs/pic/stb_install_dir.png create mode 100755 thirdparty/stb/docs/pic/stb_test.png create mode 100755 thirdparty/stb/docs/pic/stb_usage.png create mode 100644 thirdparty/stb/single/PlainReport_stb.txt create mode 100644 thirdparty/stb/single/PlainReport_stb_Detail.txt diff --git a/thirdparty/stb/HPKBUILD b/thirdparty/stb/HPKBUILD new file mode 100755 index 00000000..320e4540 --- /dev/null +++ b/thirdparty/stb/HPKBUILD @@ -0,0 +1,85 @@ +# Contributor: 小肉头君 +# Maintainer: 小肉头君 + +pkgname=stb +pkgver=master +pkgrel=0 +pkgdesc="stb single-file public domain libraries for C/C++" +url="https://github.com/nothings/stb" +archs=("armeabi-v7a" "arm64-v8a") +license=("MIT license") +source="https://github.com/nothings/$pkgname.git" +commitid=5736b15f7ea0ffb08dd38af21067c314d6a3aae9 + +autounpack=false +downloadpackage=false +buildtools="make" + +builddir=$pkgname-${commitid} +packagename=$builddir.zip +source envset.sh +host= +cloneflag=true + +prepare() { + if [ $cloneflag == true ] + then + git clone -b $pkgver $source $builddir + cd $builddir + git reset --hard $commitid + cd .. + cloneflag=false + fi + cp -rf $builddir $pkgname-$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=arm-linux + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=aarch64-linux + fi +} + +build() { + # 头文件库不需要编译 + return 0 +} + +# 安装打包 +package() { + cd $pkgname-$ARCH-build + mkdir -p $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + cp *.h $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + cd $OLDPWD +} + +# 测试,需要在 ohos 设备上进行 +check() { + cd $pkgname-$ARCH-build + # 用sed的原因是Makefile中想要生成一个可执行文件,但是那个源文件是没有main函数的,编译会报错,所以注释掉这一行 + sed 's/$(CC) $(INCLUDES) $(CPPFLAGS)/#$(CC) $(INCLUDES) $(CPPFLAGS)/1' tests/Makefile > tests/tmp_Makefile + mv tests/tmp_Makefile tests/Makefile + make -C tests > `pwd`/build.log + mkdir -p output + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + unset host + echo "The test must be on an OpenHarmony device!" + # real test CMD,会在output目录生成图片文件 + # ./tests/image_write_test +} + +# 清理环境 +cleanbuild() { + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/stb/OAT.xml b/thirdparty/stb/OAT.xml new file mode 100755 index 00000000..96937ea0 --- /dev/null +++ b/thirdparty/stb/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/stb/README.OpenSource b/thirdparty/stb/README.OpenSource new file mode 100755 index 00000000..5d94f82b --- /dev/null +++ b/thirdparty/stb/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "stb", + "License": "MIT License", + "License File": "LICENSES", + "Version Number": "master", + "Owner": "xuchenci@isoftstone.com", + "Upstream URL": "https://github.com/nothings/stb/archive/refs/heads/master.zip", + "Description": "Used image data needs to be loaded into the village, or when scaling or saving images" + } +] \ No newline at end of file diff --git a/thirdparty/stb/README_zh.md b/thirdparty/stb/README_zh.md new file mode 100755 index 00000000..69268383 --- /dev/null +++ b/thirdparty/stb/README_zh.md @@ -0,0 +1,12 @@ +# stb三方库说明 +## 功能简介 +stb是一个图像读写库 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:master +- 当前适配的功能:图像加载、写出、缩放等功能 +- [MIT License](https://github.com/nothings/stb/blob/master/LICENSE) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) \ No newline at end of file diff --git a/thirdparty/stb/SHA512SUM b/thirdparty/stb/SHA512SUM new file mode 100755 index 00000000..a061408f --- /dev/null +++ b/thirdparty/stb/SHA512SUM @@ -0,0 +1 @@ +a983be551a79dd566debf265d730e8dcbeeae678e04981828448682dbde47a1c0d04decb213cebea57db57ab2c258c0081fe4c9bb875369a94842eccd12af793 stb-master.zip diff --git a/thirdparty/stb/docs/hap_integrate.md b/thirdparty/stb/docs/hap_integrate.md new file mode 100755 index 00000000..6fa6fdf8 --- /dev/null +++ b/thirdparty/stb/docs/hap_integrate.md @@ -0,0 +1,91 @@ +# stb集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/stb #三方库stb的目录结构如下 + ├── docs #三方库相关文档的文件夹 + + + + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将stb拷贝至tools/main目录下 + + ```shell + cd tpc_c_cplusplus + cp thirdparty/stb tools/main -rf + ``` + +- 在tools目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + + ```shell + cd tools + ./build.sh stb + ``` + +- 三方库头文件及生成的库 + + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + stb/arm64-v8a stb/armeabi-v7a + ``` +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 +   + + ![thirdparty_install_dir](pic/stb_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/stb/${OHOS_ARCH}/include) + ``` + + ![stb_usage](pic/stb_usage.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录,执行如下命令ctest(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + + ![stb_test](pic/stb_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/stb/docs/pic/stb_install_dir.png b/thirdparty/stb/docs/pic/stb_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..67fca1b5250138e70b732e596906df42ce49281f GIT binary patch literal 22598 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

Be4$<&aemRDB7j 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 E1i0uWxBvhE literal 0 HcmV?d00001 diff --git a/thirdparty/stb/docs/pic/stb_usage.png b/thirdparty/stb/docs/pic/stb_usage.png new file mode 100755 index 0000000000000000000000000000000000000000..4c1352b68b9b579d725883494a07a5b46f4c85af GIT binary patch literal 10172 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 OrKY5%SRw!B{r>>uz9+N* literal 0 HcmV?d00001 diff --git a/thirdparty/stb/single/PlainReport_stb.txt b/thirdparty/stb/single/PlainReport_stb.txt new file mode 100644 index 00000000..b212024c --- /dev/null +++ b/thirdparty/stb/single/PlainReport_stb.txt @@ -0,0 +1,19 @@ + +Invalid File Type Total Count: 0 + +License Not Compatible Total Count: 0 + +License Header Invalid Total Count: 0 + +Copyright Header Invalid Total Count: 0 + +No License File Total Count: 1 +Name: No License File Content: Line: 0 Project: stb File: /home/chenxu/env/stb + +No Readme.OpenSource Total Count: 0 + +No Readme Total Count: 0 + +Import Invalid Total Count: 0 + +Redundant License File Total Count: 0 diff --git a/thirdparty/stb/single/PlainReport_stb_Detail.txt b/thirdparty/stb/single/PlainReport_stb_Detail.txt new file mode 100644 index 00000000..be506823 --- /dev/null +++ b/thirdparty/stb/single/PlainReport_stb_Detail.txt @@ -0,0 +1,117 @@ +========Report Basic Information======== + +Report User: null +Report Time: 2023-06-20T10:43:07Z +Report Tool: OAT +Report Tool Version: 2.0.0-beta.2 +Report Notes: Generated by OAT,If you have any questions or concerns, please create issue at https://gitee.com/openharmony-sig/tools_oat/issues +Report Command: java -jar ohos_ossaudittool-2.0.0-beta.2.jar -mode s -s /home/chenxu/env/stb -r /home/chenxu/env/stb -n stb + +========Report Project List======== + +Report Project Count: 1 +Project Begin 1/1: + +========Project Basic Information======== + +Project Name: stb +Project Home Page: stb +Project Branch: +Project Commit Id: +Project Version: +Project Main License: + +========Project Summary Information======== + +Project File Count: 15 +Project Normal File Count: 10 +Project Filtered File Count: 5 +Project Filtered By Header File Count: 0 + +Policy Filtered-FileName Count: 0 +Policy Filtered-FileType Count: 3 +Policy Filtered-LicenseHeader Count: 3 +Policy Filtered-Compatibility Count: 0 +Policy Filtered-Copyright Count: 3 + +Project License Count: 2 +Project Normal License Count: 2 +Project Abnormal License Count: 0 +Project Compatible License Count: 1 +Project Not Compatible License Count: 0 +Project Copyright Count: 1 +Project Normal Copyright Count: 1 +Project Abnormal Copyright Count: 0 + +Policy Not Passed-FileType Count: 0 +Policy Not Passed-Compatibility Count: 0 +Policy Not Passed-WrongLicenseHeader Count: 0 +Policy Not Passed-NoLicenseHeader Count: 0 +Policy Not Passed-WrongCopyright Count: 0 +Policy Not Passed-NoCopyright Count: 0 +Project License File: FALSE +Project README: TRUE +Project README.OpenSource: TRUE + +========Project Filtered File Information======== + +Project Filtered File txt /home/chenxu/env/stb/single/PlainReport_stb_Detail.txt FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File md /home/chenxu/env/stb/README_zh.md FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File xml /home/chenxu/env/stb/OAT.xml FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File txt /home/chenxu/env/stb/single/PlainReport_stb.txt FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File md /home/chenxu/env/stb/docs/hap_integrate.md FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] + +========Project Filtered Policy Information======== + +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_install_dir.png stb/*.png +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_test.png stb/*.png +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_usage.png stb/*.png + +Policy Filtered-LicenseHeader MIT /home/chenxu/env/stb/HPKBUILD stb/HPKBUILD +Policy Filtered-LicenseHeader MIT /home/chenxu/env/stb/README.OpenSource README.OpenSource +Policy Filtered-LicenseHeader NoLicenseHeader /home/chenxu/env/stb/SHA512SUM stb/SHA512SUM + +Policy Filtered-Copyright NULL /home/chenxu/env/stb/HPKBUILD stb/HPKBUILD +Policy Filtered-Copyright NULL /home/chenxu/env/stb/README.OpenSource README.OpenSource +Policy Filtered-Copyright NULL /home/chenxu/env/stb/SHA512SUM stb/SHA512SUM + +========Project License Information======== + +Project Normal License MIT +Project Normal License NoLicenseHeader + +Project Compatible License MIT + +========Project Copyright Information======== + +Project Normal Copyright NULL + + +XXXXXXXXX Policy Not Passed Begin XXXXXXXXX + +XXXXXXXXX Policy Not Passed End XXXXXXXXX + +========Project OAT.xml======== +Project Config: + + + + + + + + + + + + + + + + + + + + + +Project End 1/1: -- Gitee From b771b8e508d4ebeec3d3417cbd8556b2be233080 Mon Sep 17 00:00:00 2001 From: chenxu Date: Mon, 26 Jun 2023 15:57:59 +0800 Subject: [PATCH 2/2] =?UTF-8?q?ADD:=E6=B7=BB=E5=8A=A0stbt=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chenxu --- thirdparty/stb/HPKBUILD | 85 +++++++++++++ thirdparty/stb/OAT.xml | 20 +++ thirdparty/stb/README.OpenSource | 11 ++ thirdparty/stb/README_zh.md | 12 ++ thirdparty/stb/SHA512SUM | 1 + thirdparty/stb/docs/hap_integrate.md | 91 ++++++++++++++ thirdparty/stb/docs/pic/stb_install_dir.png | Bin 0 -> 22598 bytes thirdparty/stb/docs/pic/stb_test.png | Bin 0 -> 22754 bytes thirdparty/stb/docs/pic/stb_usage.png | Bin 0 -> 10172 bytes thirdparty/stb/single/PlainReport_stb.txt | 19 +++ .../stb/single/PlainReport_stb_Detail.txt | 117 ++++++++++++++++++ 11 files changed, 356 insertions(+) create mode 100755 thirdparty/stb/HPKBUILD create mode 100755 thirdparty/stb/OAT.xml create mode 100755 thirdparty/stb/README.OpenSource create mode 100755 thirdparty/stb/README_zh.md create mode 100755 thirdparty/stb/SHA512SUM create mode 100755 thirdparty/stb/docs/hap_integrate.md create mode 100755 thirdparty/stb/docs/pic/stb_install_dir.png create mode 100755 thirdparty/stb/docs/pic/stb_test.png create mode 100755 thirdparty/stb/docs/pic/stb_usage.png create mode 100644 thirdparty/stb/single/PlainReport_stb.txt create mode 100644 thirdparty/stb/single/PlainReport_stb_Detail.txt diff --git a/thirdparty/stb/HPKBUILD b/thirdparty/stb/HPKBUILD new file mode 100755 index 00000000..320e4540 --- /dev/null +++ b/thirdparty/stb/HPKBUILD @@ -0,0 +1,85 @@ +# Contributor: 小肉头君 +# Maintainer: 小肉头君 + +pkgname=stb +pkgver=master +pkgrel=0 +pkgdesc="stb single-file public domain libraries for C/C++" +url="https://github.com/nothings/stb" +archs=("armeabi-v7a" "arm64-v8a") +license=("MIT license") +source="https://github.com/nothings/$pkgname.git" +commitid=5736b15f7ea0ffb08dd38af21067c314d6a3aae9 + +autounpack=false +downloadpackage=false +buildtools="make" + +builddir=$pkgname-${commitid} +packagename=$builddir.zip +source envset.sh +host= +cloneflag=true + +prepare() { + if [ $cloneflag == true ] + then + git clone -b $pkgver $source $builddir + cd $builddir + git reset --hard $commitid + cd .. + cloneflag=false + fi + cp -rf $builddir $pkgname-$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=arm-linux + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=aarch64-linux + fi +} + +build() { + # 头文件库不需要编译 + return 0 +} + +# 安装打包 +package() { + cd $pkgname-$ARCH-build + mkdir -p $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + cp *.h $LYCIUM_ROOT/usr/$pkgname/$ARCH/include/ + cd $OLDPWD +} + +# 测试,需要在 ohos 设备上进行 +check() { + cd $pkgname-$ARCH-build + # 用sed的原因是Makefile中想要生成一个可执行文件,但是那个源文件是没有main函数的,编译会报错,所以注释掉这一行 + sed 's/$(CC) $(INCLUDES) $(CPPFLAGS)/#$(CC) $(INCLUDES) $(CPPFLAGS)/1' tests/Makefile > tests/tmp_Makefile + mv tests/tmp_Makefile tests/Makefile + make -C tests > `pwd`/build.log + mkdir -p output + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + unset host + echo "The test must be on an OpenHarmony device!" + # real test CMD,会在output目录生成图片文件 + # ./tests/image_write_test +} + +# 清理环境 +cleanbuild() { + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/stb/OAT.xml b/thirdparty/stb/OAT.xml new file mode 100755 index 00000000..96937ea0 --- /dev/null +++ b/thirdparty/stb/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/stb/README.OpenSource b/thirdparty/stb/README.OpenSource new file mode 100755 index 00000000..5d94f82b --- /dev/null +++ b/thirdparty/stb/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "stb", + "License": "MIT License", + "License File": "LICENSES", + "Version Number": "master", + "Owner": "xuchenci@isoftstone.com", + "Upstream URL": "https://github.com/nothings/stb/archive/refs/heads/master.zip", + "Description": "Used image data needs to be loaded into the village, or when scaling or saving images" + } +] \ No newline at end of file diff --git a/thirdparty/stb/README_zh.md b/thirdparty/stb/README_zh.md new file mode 100755 index 00000000..69268383 --- /dev/null +++ b/thirdparty/stb/README_zh.md @@ -0,0 +1,12 @@ +# stb三方库说明 +## 功能简介 +stb是一个图像读写库 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:master +- 当前适配的功能:图像加载、写出、缩放等功能 +- [MIT License](https://github.com/nothings/stb/blob/master/LICENSE) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) \ No newline at end of file diff --git a/thirdparty/stb/SHA512SUM b/thirdparty/stb/SHA512SUM new file mode 100755 index 00000000..a061408f --- /dev/null +++ b/thirdparty/stb/SHA512SUM @@ -0,0 +1 @@ +a983be551a79dd566debf265d730e8dcbeeae678e04981828448682dbde47a1c0d04decb213cebea57db57ab2c258c0081fe4c9bb875369a94842eccd12af793 stb-master.zip diff --git a/thirdparty/stb/docs/hap_integrate.md b/thirdparty/stb/docs/hap_integrate.md new file mode 100755 index 00000000..6fa6fdf8 --- /dev/null +++ b/thirdparty/stb/docs/hap_integrate.md @@ -0,0 +1,91 @@ +# stb集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/stb #三方库stb的目录结构如下 + ├── docs #三方库相关文档的文件夹 + + + + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将stb拷贝至tools/main目录下 + + ```shell + cd tpc_c_cplusplus + cp thirdparty/stb tools/main -rf + ``` + +- 在tools目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + + ```shell + cd tools + ./build.sh stb + ``` + +- 三方库头文件及生成的库 + + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + stb/arm64-v8a stb/armeabi-v7a + ``` +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 +   + + ![thirdparty_install_dir](pic/stb_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/stb/${OHOS_ARCH}/include) + ``` + + ![stb_usage](pic/stb_usage.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录,执行如下命令ctest(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + + ![stb_test](pic/stb_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/stb/docs/pic/stb_install_dir.png b/thirdparty/stb/docs/pic/stb_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..67fca1b5250138e70b732e596906df42ce49281f GIT binary patch literal 22598 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

Be4$<&aemRDB7j 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 E1i0uWxBvhE literal 0 HcmV?d00001 diff --git a/thirdparty/stb/docs/pic/stb_usage.png b/thirdparty/stb/docs/pic/stb_usage.png new file mode 100755 index 0000000000000000000000000000000000000000..4c1352b68b9b579d725883494a07a5b46f4c85af GIT binary patch literal 10172 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 OrKY5%SRw!B{r>>uz9+N* literal 0 HcmV?d00001 diff --git a/thirdparty/stb/single/PlainReport_stb.txt b/thirdparty/stb/single/PlainReport_stb.txt new file mode 100644 index 00000000..b212024c --- /dev/null +++ b/thirdparty/stb/single/PlainReport_stb.txt @@ -0,0 +1,19 @@ + +Invalid File Type Total Count: 0 + +License Not Compatible Total Count: 0 + +License Header Invalid Total Count: 0 + +Copyright Header Invalid Total Count: 0 + +No License File Total Count: 1 +Name: No License File Content: Line: 0 Project: stb File: /home/chenxu/env/stb + +No Readme.OpenSource Total Count: 0 + +No Readme Total Count: 0 + +Import Invalid Total Count: 0 + +Redundant License File Total Count: 0 diff --git a/thirdparty/stb/single/PlainReport_stb_Detail.txt b/thirdparty/stb/single/PlainReport_stb_Detail.txt new file mode 100644 index 00000000..be506823 --- /dev/null +++ b/thirdparty/stb/single/PlainReport_stb_Detail.txt @@ -0,0 +1,117 @@ +========Report Basic Information======== + +Report User: null +Report Time: 2023-06-20T10:43:07Z +Report Tool: OAT +Report Tool Version: 2.0.0-beta.2 +Report Notes: Generated by OAT,If you have any questions or concerns, please create issue at https://gitee.com/openharmony-sig/tools_oat/issues +Report Command: java -jar ohos_ossaudittool-2.0.0-beta.2.jar -mode s -s /home/chenxu/env/stb -r /home/chenxu/env/stb -n stb + +========Report Project List======== + +Report Project Count: 1 +Project Begin 1/1: + +========Project Basic Information======== + +Project Name: stb +Project Home Page: stb +Project Branch: +Project Commit Id: +Project Version: +Project Main License: + +========Project Summary Information======== + +Project File Count: 15 +Project Normal File Count: 10 +Project Filtered File Count: 5 +Project Filtered By Header File Count: 0 + +Policy Filtered-FileName Count: 0 +Policy Filtered-FileType Count: 3 +Policy Filtered-LicenseHeader Count: 3 +Policy Filtered-Compatibility Count: 0 +Policy Filtered-Copyright Count: 3 + +Project License Count: 2 +Project Normal License Count: 2 +Project Abnormal License Count: 0 +Project Compatible License Count: 1 +Project Not Compatible License Count: 0 +Project Copyright Count: 1 +Project Normal Copyright Count: 1 +Project Abnormal Copyright Count: 0 + +Policy Not Passed-FileType Count: 0 +Policy Not Passed-Compatibility Count: 0 +Policy Not Passed-WrongLicenseHeader Count: 0 +Policy Not Passed-NoLicenseHeader Count: 0 +Policy Not Passed-WrongCopyright Count: 0 +Policy Not Passed-NoCopyright Count: 0 +Project License File: FALSE +Project README: TRUE +Project README.OpenSource: TRUE + +========Project Filtered File Information======== + +Project Filtered File txt /home/chenxu/env/stb/single/PlainReport_stb_Detail.txt FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File md /home/chenxu/env/stb/README_zh.md FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File xml /home/chenxu/env/stb/OAT.xml FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File txt /home/chenxu/env/stb/single/PlainReport_stb.txt FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] +Project Filtered File md /home/chenxu/env/stb/docs/hap_integrate.md FileNameFilter:[OAT*.xml, zunit, signature, Makefile, MANIFEST.MF, Kconfig, *.crt, *.markdown, *.git, .mk, .ld, .gitkeep, .gitignore, .gitattributes, .config, *.txt, *.te, *.json, *.svg, *.swp, *.sandbox, *.rslp, *.rc, *.pydeps, *.properties, *.pluginmeta, *.php, *.sgml, .adoc, NEWS, *.patch, *.p7b, *.md, *.log, *.ini, *.html, *.htm, *.hml, *.hcs, __init__.py, MANIFEST.in, *.hcb, *.gradle, *.gen, *.dic, *.d, *.css, *.cmake, *.cer, *.build, *.aff, *.err, *.pro, *.clang-format, *.ld, *.babelrc, *.editorconfig, *.eslintignore, *.prettierrc, *.eslintrc.js, *.template, *.tmpl, *.vcproj, *.def, *.sln, *_contexts, *.vcxproj, *.vcxproj.filters, *.vcxproj.user, *visual_studio.sln, *.bundle, CERTIFICATE, SIGNATURE, *.lds, SConscript, *.pod, *.arb, *.repo, *.map, *.yml, *.config, *.cfg, *.conf, *.in] + +========Project Filtered Policy Information======== + +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_install_dir.png stb/*.png +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_test.png stb/*.png +Policy Filtered-FileType-!archive binary /home/chenxu/env/stb/docs/pic/stb_usage.png stb/*.png + +Policy Filtered-LicenseHeader MIT /home/chenxu/env/stb/HPKBUILD stb/HPKBUILD +Policy Filtered-LicenseHeader MIT /home/chenxu/env/stb/README.OpenSource README.OpenSource +Policy Filtered-LicenseHeader NoLicenseHeader /home/chenxu/env/stb/SHA512SUM stb/SHA512SUM + +Policy Filtered-Copyright NULL /home/chenxu/env/stb/HPKBUILD stb/HPKBUILD +Policy Filtered-Copyright NULL /home/chenxu/env/stb/README.OpenSource README.OpenSource +Policy Filtered-Copyright NULL /home/chenxu/env/stb/SHA512SUM stb/SHA512SUM + +========Project License Information======== + +Project Normal License MIT +Project Normal License NoLicenseHeader + +Project Compatible License MIT + +========Project Copyright Information======== + +Project Normal Copyright NULL + + +XXXXXXXXX Policy Not Passed Begin XXXXXXXXX + +XXXXXXXXX Policy Not Passed End XXXXXXXXX + +========Project OAT.xml======== +Project Config: + + + + + + + + + + + + + + + + + + + + + +Project End 1/1: -- Gitee