From 80be2bdd62cb5e37ae3aad2e167e0d0771b4f838 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Tue, 29 Oct 2024 14:24:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=BA=93lizard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/lizard-1.0/HPKBUILD | 71 +++++++++++++++ thirdparty/lizard-1.0/HPKCHECK | 36 ++++++++ thirdparty/lizard-1.0/README.OpenSource | 11 +++ thirdparty/lizard-1.0/README_zh.md | 9 ++ thirdparty/lizard-1.0/SHA512SUM | 1 + thirdparty/lizard-1.0/docs/hap_integrate.md | 83 ++++++++++++++++++ .../docs/pic/lizard_install_dir.png | Bin 0 -> 27232 bytes .../lizard-1.0/docs/pic/lizard_test.png | Bin 0 -> 14113 bytes 8 files changed, 211 insertions(+) create mode 100644 thirdparty/lizard-1.0/HPKBUILD create mode 100644 thirdparty/lizard-1.0/HPKCHECK create mode 100644 thirdparty/lizard-1.0/README.OpenSource create mode 100644 thirdparty/lizard-1.0/README_zh.md create mode 100644 thirdparty/lizard-1.0/SHA512SUM create mode 100644 thirdparty/lizard-1.0/docs/hap_integrate.md create mode 100644 thirdparty/lizard-1.0/docs/pic/lizard_install_dir.png create mode 100644 thirdparty/lizard-1.0/docs/pic/lizard_test.png diff --git a/thirdparty/lizard-1.0/HPKBUILD b/thirdparty/lizard-1.0/HPKBUILD new file mode 100644 index 00000000..38ce2185 --- /dev/null +++ b/thirdparty/lizard-1.0/HPKBUILD @@ -0,0 +1,71 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# 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. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2471389@stu.neu.edu.cn>, wangying +# Maintainer: wangyihao<2471389@stu.neu.edu.cn>, wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangying + +pkgname=lizard-1.0 +pkgver=v1.0 +pkgrel=0 +pkgdesc="lizard is an efficient compressor with very fast decompression." +url="https://github.com/inikep/lizard/tree/v1.0" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD 2-Clause license && GPLv2 license") +depends=() +makedepends=() +source="https://github.com/inikep/lizard/archive/refs/tags/v1.0.zip" + +downloadpackage=true +autounpack=true +buildtools=make + +builddir=enchive-3.5 +packagename=enchive-3.5.zip + +source envset.sh + +prepare() { + cp -rf $builddir $builddir-$ARCH-build + if [ $ARCH == "armeabi-v7a" ];then + setarm32ENV + elif [ $ARCH == "arm64-v8a" ];then + setarm64ENV + else + echo "Not support ${ARCH} yet" + return -1 + fi +} + +build() { + make -j4 -C $builddir-$ARCH-build VERBOSE=1 >> $builddir-$ARCH-build/build.log 2>&1 + ret=$? + return $ret +} + +package() { + cd $builddir-$ARCH-build + make install PREFIX=$LYCIUM_ROOT/usr/$pkgname/$ARCH >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + + +check() { + echo "The test must be on an OpenHarmony device!" +} + + +cleanbuild() { + rm -rf ${PWD}/$builddir $builddir-armeabi-v7a-build $builddir-arm64-v8a-build #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/lizard-1.0/HPKCHECK b/thirdparty/lizard-1.0/HPKCHECK new file mode 100644 index 00000000..bb2e1b2f --- /dev/null +++ b/thirdparty/lizard-1.0/HPKCHECK @@ -0,0 +1,36 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# 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. + +# Contributor: wangjialun <2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2471389@stu.neu.edu.cn> , wangying +# Maintainer: wangyihao<2471389@stu.neu.edu.cn>, wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangying + +source HPKBUILD > /dev/null 2>&1 # 导入HPKBUILD文件 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +# 在OH环境执行测试的接口 +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build # 进入到测试目录 + #1.自行推送图片或文件到测试目录,以供测试。这里使用名为cat.jpg的图片 + #2.执行 ./lizard -z cat.jpg cat_output.liz 将cat.jpg 压缩成 cat_output.liz + #3.执行 ./lizard -d cat_output.liz cat2.jpg 将cat_output.liz 解压为 cat2.jpg + ./lizard -z cat.jpg cat_output.liz >> $logfile 2>&1 + ./lizard -d cat_output.liz cat2.jpg >> $logfile 2>&1 + res=$? + if [ $res -ne 0 ];then + mkdir ${LYCIUM_FAULT_PATH}/${pkgname} + cp Testing/Temporary/LastTest.log ${LYCIUM_FAULT_PATH}/${pkgname}/ + fi + cd $OLDPWD + return $res +} \ No newline at end of file diff --git a/thirdparty/lizard-1.0/README.OpenSource b/thirdparty/lizard-1.0/README.OpenSource new file mode 100644 index 00000000..e4efb94e --- /dev/null +++ b/thirdparty/lizard-1.0/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "lizard-1.0", + "License": "BSD 2-Clause license && GPLv2 license", + "License File": "https://github.com/inikep/lizard/blob/lizard/LICENSE", + "Version Number": "v1.0", + "Owner": "2942375747@qq.com", + "Upstream URL": "https://github.com/inikep/lizard", + "Description": "lizard is an efficient compressor with very fast decompression." + } +] \ No newline at end of file diff --git a/thirdparty/lizard-1.0/README_zh.md b/thirdparty/lizard-1.0/README_zh.md new file mode 100644 index 00000000..a8ad9c2f --- /dev/null +++ b/thirdparty/lizard-1.0/README_zh.md @@ -0,0 +1,9 @@ +# lizard-1.0三方库说明 +## 功能简介 +Lizard是一个高效的压缩器,具有非常快的解压速度。 +## 三方库版本: +- v1.0 +## 使用约束: +- [IDE和SDK版本](../../docs/constraint.md) +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) \ No newline at end of file diff --git a/thirdparty/lizard-1.0/SHA512SUM b/thirdparty/lizard-1.0/SHA512SUM new file mode 100644 index 00000000..1209a89a --- /dev/null +++ b/thirdparty/lizard-1.0/SHA512SUM @@ -0,0 +1 @@ +48682a1a7c7f8aa16c7a9b89445f3cfb54d238421d9a66a5b9a781a6b6a224391a2f10503d5075132a4cbe81615587a539680b2e57b9174060bee2458a727826 lizard-1.0.zip \ No newline at end of file diff --git a/thirdparty/lizard-1.0/docs/hap_integrate.md b/thirdparty/lizard-1.0/docs/hap_integrate.md new file mode 100644 index 00000000..f5b6f34a --- /dev/null +++ b/thirdparty/lizard-1.0/docs/hap_integrate.md @@ -0,0 +1,83 @@ +# lizard 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- [开发环境准备](../../../docs/hap_integrate_environment.md) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/lizard-1.0 #三方库lizard-1.0的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md #三方库简介 + ``` + +- 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ```shell + cd lycium + ./build.sh lizard-1.0 + ``` + +- 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + lizard-1.0/arm64-v8a lizard-1.0/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下。如下图所示: +   + +  ![thirdparty_install_dir](pic/lizard_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/lizard/${OHOS_ARCH}/lib/liblizard.so) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/lizard/${OHOS_ARCH}/include) + ``` + +## 测试三方库 +- 编译出可执行的文件,使用原库自带的测试用例来做测试。本库执行demo验证其功能 [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) +- 进入到构建目录下的example目录,运行demo(注意arm64-v8a为构建64位的目录,armeabi-v7a为构建32位的目录)。 + 1.自行推送图片或文件到测试目录,以供测试。这里使用名为cat.jpg的图片 + 2.执行:./lizard -z cat.jpg cat_output.liz 将cat.jpg 压缩成 cat_output.liz + 3.执行:./lizard -d cat_output.liz cat2.jpg 将cat_output.liz 解压为 cat2.jpg + 执行结果如图所示: + +```shell + cd /data/tpc_c_cplusplus/thirdparty/lizard-1.0/lizard-1.0/arm64-v8a-build + ./lizard -z cat.jpg cat_output.liz + ./lizard -d cat_output.liz cat2.jpg +``` + ![lizard_test](pic/lizard_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) \ No newline at end of file diff --git a/thirdparty/lizard-1.0/docs/pic/lizard_install_dir.png b/thirdparty/lizard-1.0/docs/pic/lizard_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..25f836752ce5fd802a2b9250a3383d617f12c949 GIT binary patch literal 27232 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 literal 0 HcmV?d00001 diff --git a/thirdparty/lizard-1.0/docs/pic/lizard_test.png b/thirdparty/lizard-1.0/docs/pic/lizard_test.png new file mode 100644 index 0000000000000000000000000000000000000000..1c36b88ea4d65d275650d96b846442a67a8221ee GIT binary patch literal 14113 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 literal 0 HcmV?d00001 -- Gitee From 44796894282f88b3cb657b5336f826e4bee7806f Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Thu, 31 Oct 2024 00:18:51 +0800 Subject: [PATCH 2/3] change .md Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/lizard-1.0/docs/hap_integrate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/lizard-1.0/docs/hap_integrate.md b/thirdparty/lizard-1.0/docs/hap_integrate.md index f5b6f34a..9b12a547 100644 --- a/thirdparty/lizard-1.0/docs/hap_integrate.md +++ b/thirdparty/lizard-1.0/docs/hap_integrate.md @@ -47,7 +47,7 @@ ## 应用中使用三方库 -- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下。如下图所示: +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件和库文件拷贝到该目录下,将编译生成的动态库(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下。如下图所示:    ![thirdparty_install_dir](pic/lizard_install_dir.png) -- Gitee From 1b53988e71bcc8ee1026f55f862e447c07135c74 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Thu, 31 Oct 2024 15:02:21 +0800 Subject: [PATCH 3/3] HPKBUILD Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/lizard-1.0/HPKBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thirdparty/lizard-1.0/HPKBUILD b/thirdparty/lizard-1.0/HPKBUILD index 38ce2185..e58c6ee4 100644 --- a/thirdparty/lizard-1.0/HPKBUILD +++ b/thirdparty/lizard-1.0/HPKBUILD @@ -29,8 +29,8 @@ downloadpackage=true autounpack=true buildtools=make -builddir=enchive-3.5 -packagename=enchive-3.5.zip +builddir=lizard-1.0 +packagename=lizard-1.0.zip source envset.sh -- Gitee