diff --git a/thirdparty/snappy/HPKBUILD b/thirdparty/snappy/HPKBUILD index 78adcde5e4574951cb4acfa24fef453a826fb2e8..e67538495db32c69d851a3c75ff8fddf5c9dfc6b 100644 --- a/thirdparty/snappy/HPKBUILD +++ b/thirdparty/snappy/HPKBUILD @@ -11,20 +11,24 @@ depends=() makedepends=() source="https://github.com/google/$pkgname/archive/refs/tags/$pkgver.tar.gz" -downloadpackage=true -autounpack=true +downloadpackage=false +autounpack=false builddir=$pkgname-$pkgver packagename=$builddir.tar.gz prepare() { - mkdir -p $builddir/$ARCH-build + git clone https://github.com/google/snappy.git $builddir + cd $builddir + git checkout $pkgver + git submodule update --init } build() { - cd $builddir - ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF -S./ -L > `pwd`/$ARCH-build/build.log 2>&1 - make -j4 -C $ARCH-build >> `pwd`/$ARCH-build/build.log 2>&1 + cd $builddir + mkdir -p $ARCH-build + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake -DCMAKE_CXX_FLAGS="-w" "$@" ./ -B$ARCH-build -DOHOS_ARCH=$ARCH > $ARCH-build/build.log 2>&1 + make -j4 -C $ARCH-build >> $ARCH-build/build.log 2>&1 ret=$? cd $OLDPWD return $ret @@ -38,8 +42,10 @@ package() { check() { echo "The test must be on an OpenHarmony device!" + #cd $ARCH-build + #ctest } -cleanbuild(){ +cleanbuild() { rm -rf ${PWD}/$builddir # ${PWD}/$packagename } diff --git a/thirdparty/snappy/OAT.xml b/thirdparty/snappy/OAT.xml new file mode 100644 index 0000000000000000000000000000000000000000..59bfaa37935f10e40e862ab0f657aa7f0bbc2823 --- /dev/null +++ b/thirdparty/snappy/OAT.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/snappy/README.OpenSource b/thirdparty/snappy/README.OpenSource new file mode 100644 index 0000000000000000000000000000000000000000..4f7da09d8e9247f0d6b381a2a3ac56a946944062 --- /dev/null +++ b/thirdparty/snappy/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "snappy", + "License": "MIT License", + "License File": "https://github.com/google/snappy/blob/main/COPYING", + "Version Number": "1.1.10", + "Owner": "1596268623@qq.com", + "Upstream URL": "https://github.com/google/snappy/archive/refs/tags/1.1.10.tar.gz", + "Description": "Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger" + } +] diff --git a/thirdparty/snappy/README_zh.md b/thirdparty/snappy/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..4ac59c3d796279b69acc5a808319861cca851433 --- /dev/null +++ b/thirdparty/snappy/README_zh.md @@ -0,0 +1,12 @@ +# snappy 三方库说明 +## 功能简介 +Snappy是一个压缩/解压缩库。它的目标不是最大化 压缩,或与任何其他压缩库兼容;相反 它的目标是非常高的速度和合理的压缩。例如 与 zlib 的最快模式相比,Snappy 快了一个数量级 对于大多数输入,但生成的压缩文件从 20% 到 100%更大 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 4.0.8.1 (API Version 9 Release) +- 三方库版本:1.1.10 +- Snappy是一个压缩/解压缩库。它的目标不是最大化 压缩,或与任何其他压缩库兼容;相反 它的目标是非常高的速度和合理的压缩。例如 与 zlib 的最快模式相比,Snappy 快了一个数量级 对于大多数输入,但生成的压缩文件从 20% 到 100%更大 +- [GNU Library General Public License](https://github.com/google/snappy/blob/main/COPYING) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/snappy/SHA512SUM b/thirdparty/snappy/SHA512SUM deleted file mode 100644 index 92c2a177e802dfc0d6a3eaa253974c4b73f6b79c..0000000000000000000000000000000000000000 --- a/thirdparty/snappy/SHA512SUM +++ /dev/null @@ -1 +0,0 @@ -3578597f1d4ec09104ce0296b825b013590351230dfe56c635081fd282ce7a13a34caf2c283ac77bd24065e2d27af6db068d1f84b98cec2fd39a0e37a0d77070 snappy-1.1.10.tar.gz \ No newline at end of file diff --git a/thirdparty/snappy/docs/hap_integrate.md b/thirdparty/snappy/docs/hap_integrate.md new file mode 100644 index 0000000000000000000000000000000000000000..1b7fc212a356c1d62728d3cec9171241b2b4927c --- /dev/null +++ b/thirdparty/snappy/docs/hap_integrate.md @@ -0,0 +1,79 @@ +# snappy集成到应用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 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/snappy #三方库的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将三方库拷贝至tools/main目录下 + ```shell + cd tpc_c_cplusplus + mkdir tools/main + cp thirdparty/snappy tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + bash ./build.sh snappy + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库和头文件 + ``` + snappy/arm64-v8a + snappy/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示 + ![thirdparty_install_dir](pic/install_dir.png) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + +``` +#将三方库加入工程中 +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libbenchmark.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libbenchmark_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libsnappy.a) + +#将三方库的头文件加入工程中 +target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy/${OHOS_ARCH}/include) +``` + ![thirdparty_usage](pic/usage.png) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试 + +进入到构建目录获取,执行ctest,运行测试用例(snappy-arm64-v8a-build为构建64位的目录,snappy-armeabi-v7a-build为构建32位的目录) + ![thirdparty_test_result](pic/test_result.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/snappy/docs/pic/install_dir.png b/thirdparty/snappy/docs/pic/install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..cbb5faddb6f76609d4647b2ec78eae83f054d53b Binary files /dev/null and b/thirdparty/snappy/docs/pic/install_dir.png differ diff --git a/thirdparty/snappy/docs/pic/test_result.png b/thirdparty/snappy/docs/pic/test_result.png new file mode 100755 index 0000000000000000000000000000000000000000..25ab498c2767b8176555f0ec9365830ad8372ad0 Binary files /dev/null and b/thirdparty/snappy/docs/pic/test_result.png differ diff --git a/thirdparty/snappy/docs/pic/usage.png b/thirdparty/snappy/docs/pic/usage.png new file mode 100755 index 0000000000000000000000000000000000000000..459266b4431034c698f6cb8842a84cc611b3c574 Binary files /dev/null and b/thirdparty/snappy/docs/pic/usage.png differ