From 47945ac0399f65816366953e706f3d862c2dca7e Mon Sep 17 00:00:00 2001 From: han_jin_fei <1970336264@qq.com> Date: Tue, 13 Jun 2023 17:21:10 +0800 Subject: [PATCH] add uchardet Signed-off-by: han_jin_fei <1970336264@qq.com> --- thirdparty/uchardet/HPKBUILD | 49 ++++++++++++ thirdparty/uchardet/README.OpenSource | 11 +++ thirdparty/uchardet/README_zh.md | 12 +++ thirdparty/uchardet/SHA512SUM | 1 + thirdparty/uchardet/docs/hap_integrate.md | 72 ++++++++++++++++++ .../docs/pic/uchardet_install_dir.png | Bin 0 -> 14619 bytes .../uchardet/docs/pic/uchardet_test1.png | Bin 0 -> 14511 bytes .../uchardet/docs/pic/uchardet_test2.png | Bin 0 -> 7738 bytes .../uchardet/docs/pic/uchardet_usage.png | Bin 0 -> 18080 bytes 9 files changed, 145 insertions(+) create mode 100644 thirdparty/uchardet/HPKBUILD create mode 100644 thirdparty/uchardet/README.OpenSource create mode 100644 thirdparty/uchardet/README_zh.md create mode 100644 thirdparty/uchardet/SHA512SUM create mode 100755 thirdparty/uchardet/docs/hap_integrate.md create mode 100644 thirdparty/uchardet/docs/pic/uchardet_install_dir.png create mode 100644 thirdparty/uchardet/docs/pic/uchardet_test1.png create mode 100644 thirdparty/uchardet/docs/pic/uchardet_test2.png create mode 100644 thirdparty/uchardet/docs/pic/uchardet_usage.png diff --git a/thirdparty/uchardet/HPKBUILD b/thirdparty/uchardet/HPKBUILD new file mode 100644 index 00000000..4b6e10af --- /dev/null +++ b/thirdparty/uchardet/HPKBUILD @@ -0,0 +1,49 @@ +# Contributor: Jeff Han +# Maintainer: Jeff Han +pkgname=uchardet +pkgver=v0.0.8 +pkgrel=0 +pkgdesc="uchardet is an encoding detector library, which takes a sequence of bytes in an unknown character encoding without any additional information, and attempts to determine the encoding of the text. Returned encoding names are iconv-compatible." +url="https://www.freedesktop.org/wiki/Software/uchardet/" +archs=("armeabi-v7a" "arm64-v8a") +license=("MOZILLA PUBLIC LICENSE" "GPLV2" "LGPLV2") +depends=() +makedepends=() + +source="https://gitlab.freedesktop.org/$pkgname/$pkgname/-/archive/$pkgver/$pkgname-$pkgver.tar.gz" + +autounpack=true +downloadpackage=true + +builddir=$pkgname-${pkgver} +packagename=$builddir.tar.gz + +prepare() { + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ -L > `pwd`/$ARCH-build/build.log 2>&1 + make -j4 -C $ARCH-build >> `pwd`/$ARCH-build/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd "$builddir" + make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1 + cd $OLDPWD +} + +check() { + echo "The test must be on an OpenHarmony device!" + # real test CMD + # ctest +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} diff --git a/thirdparty/uchardet/README.OpenSource b/thirdparty/uchardet/README.OpenSource new file mode 100644 index 00000000..f252c236 --- /dev/null +++ b/thirdparty/uchardet/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "uchardet", + "License": " MOZILLA PUBLIC LICENSE GPLV2 LGPLV2 ", + "License File": "COPYING", + "Version Number": "v0.0.8", + "Owner": "hanjinfei@foxmail.com", + "Upstream URL": "https://gitlab.freedesktop.org/uchardet/uchardet/-/archive/v0.0.8/uchardet-v0.0.8.tar.gz", + "Description": "uchardet is an encoding detector library, which takes a sequence of bytes in an unknown character encoding without any additional information, and attempts to determine the encoding of the text. Returned encoding names are iconv-compatible." + } +] diff --git a/thirdparty/uchardet/README_zh.md b/thirdparty/uchardet/README_zh.md new file mode 100644 index 00000000..fce8fb10 --- /dev/null +++ b/thirdparty/uchardet/README_zh.md @@ -0,0 +1,12 @@ +# uchardet 三方库说明 +## 功能简介 +uchardet is an encoding detector library, which takes a sequence of bytes in an unknown character encoding without any additional information, and attempts to determine the encoding of the text. Returned encoding names are iconv-compatible. +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:v0.0.8 +- 当前适配的功能:encoding detector +- [ "MOZILLA PUBLIC LICENSE" "GPLV2" "LGPLV2" ](https://www.freedesktop.org/wiki/Software/uchardet/) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/uchardet/SHA512SUM b/thirdparty/uchardet/SHA512SUM new file mode 100644 index 00000000..a42d9baa --- /dev/null +++ b/thirdparty/uchardet/SHA512SUM @@ -0,0 +1 @@ +8d7a0abe1fcf7e92f9e264252eefa5810176603e3d3d825a23c3f5d23cd4f7cce9a0a9539e84bd70af5b66688394e48af00a00ce759a5a3d69b650f92351b6f2 uchardet-v0.0.8.tar.gz diff --git a/thirdparty/uchardet/docs/hap_integrate.md b/thirdparty/uchardet/docs/hap_integrate.md new file mode 100755 index 00000000..1806dca0 --- /dev/null +++ b/thirdparty/uchardet/docs/hap_integrate.md @@ -0,0 +1,72 @@ +# uchardet 集成到应用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环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/uchardet #三方库 uchardet 的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将 uchardet 拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/uchardet tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh uchardet + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + uchardet/arm64-v8a uchardet/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 +- 拷贝动态库到`\\entry\libs\${OHOS_ARCH}\`目录: + 动态库需要在`\\entry\libs\${OHOS_ARCH}\`目录,才能集成到hap包中,所以需要将对应的so文件拷贝到对应CPU架构的目录 +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/uchardet_install_dir.png) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libuchardet.so.0) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/include/uchardet/${OHOS_ARCH}) + + ``` + ![uchardet usage](pic/uchardet_usage.png) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行ctest运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![uchardet_test](pic/uchardet_test1.png) + ![uchardet_test](pic/uchardet_test2.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/uchardet/docs/pic/uchardet_install_dir.png b/thirdparty/uchardet/docs/pic/uchardet_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc1a711784e17f23039f95f47025e70d773728a GIT binary patch literal 14619 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 Gd;brs802LD literal 0 HcmV?d00001 diff --git a/thirdparty/uchardet/docs/pic/uchardet_test1.png b/thirdparty/uchardet/docs/pic/uchardet_test1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d49c460f6007add3c4ca16090efbdb7bb9c02c2 GIT binary patch literal 14511 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 VOGT^&8w~R29f|RrKkfhP{{zM41gro6 literal 0 HcmV?d00001 diff --git a/thirdparty/uchardet/docs/pic/uchardet_test2.png b/thirdparty/uchardet/docs/pic/uchardet_test2.png new file mode 100644 index 0000000000000000000000000000000000000000..19464f08888182daa87ea35f8a4e7fad68f95f2e GIT binary patch literal 7738 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 Z{B7lBdE(V4;0VBpqai`uPyYNr{}&lwe60Wg literal 0 HcmV?d00001 diff --git a/thirdparty/uchardet/docs/pic/uchardet_usage.png b/thirdparty/uchardet/docs/pic/uchardet_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..d7086248abbdaa8c618ad956c4166c0d7d32196b GIT binary patch literal 18080 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 Sdw{3PFnGH9xvX