From 19e197974fc259d245f72203a28fcd162c22c6a9 Mon Sep 17 00:00:00 2001 From: chengkan Date: Sun, 25 Jun 2023 11:24:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?tif=20=E5=BA=93=20=E5=90=8C=E6=AD=A5lycui?= =?UTF-8?q?=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chengkan --- thirdparty/tiff/HPKBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/tiff/HPKBUILD b/thirdparty/tiff/HPKBUILD index ec0523f1..be1de8ce 100644 --- a/thirdparty/tiff/HPKBUILD +++ b/thirdparty/tiff/HPKBUILD @@ -7,7 +7,7 @@ pkgdesc="" url="" archs=("armeabi-v7a" "arm64-v8a") license="LibTIFF license" -depends=("zstd" "libjpeg-turbo" "xz" "libwebp" "libdeflate") # TODO ISO JBIG/LERC +depends=("zstd" "libjpeg-turbo" "xz" "libwebp" "libdeflate" "jbigkit") # TODO LERC 循环依赖:libwebp 与 tiff 互相依赖, 这里为了不阻塞自动化构建,采用 libwebp 不依赖 tiff,tiff 依赖 libwebp makedepends=() source="http://download.osgeo.org/libtiff/$pkgname-$pkgver.tar.xz" -- Gitee From 2b1ec7d407f9e51e7a145cb74cc1a6c1d4d899c4 Mon Sep 17 00:00:00 2001 From: chengkan Date: Sun, 25 Jun 2023 15:52:01 +0800 Subject: [PATCH 2/3] =?UTF-8?q?tiff=E5=BA=93=20=E4=BF=AE=E6=94=B9hap=5Fint?= =?UTF-8?q?egrate.md=20=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chengkan --- thirdparty/tiff/docs/hap_integrate.md | 35 ++++++++++++++++--- thirdparty/tiff/docs/pic/tiff_ohos_test1.png | Bin 6603 -> 0 bytes 2 files changed, 31 insertions(+), 4 deletions(-) delete mode 100644 thirdparty/tiff/docs/pic/tiff_ohos_test1.png diff --git a/thirdparty/tiff/docs/hap_integrate.md b/thirdparty/tiff/docs/hap_integrate.md index 13567865..ca81253f 100644 --- a/thirdparty/tiff/docs/hap_integrate.md +++ b/thirdparty/tiff/docs/hap_integrate.md @@ -36,13 +36,16 @@ cp thirdparty/xz tools/main -rf cp thirdparty/zstd tools/main -rf cp thirdparty/libdeflate tools/main -rf + cp thirdparty/jbigkit tools/main -rf ``` - 在tools目录下编译三方库 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) ``` + (tiff库所需要的依赖库有 libpng giflib zstd libjpeg-turbo xz libdeflate jbigkit libwebp, 所以编译时需要一起编译) + cd tools - ./build.sh tiff libpng libjpeg-turbo libwebp zstd xz libdeflate + ./build.sh libpng giflib zstd libjpeg-turbo xz libdeflate jbigkit libwebp tiff ``` - 三方库头文件及生成的库 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 @@ -50,7 +53,7 @@ ``` tiff/arm64-v8a tiff/armeabi-v7a libpng/arm64-v8a libpng/armeabi-v7a libjpeg-turbo/arm64-v8a libjpeg-turbo/armeabi-v7a libwebp/arm64-v8a libwebp/armeabi-v7a - zstd/arm64-v8a zstd/armeabi-v7a xz/arm64-v8a xz/armeabi-v7a libdeflate/arm64-v8a libdeflate/armeabi-v7a + zstd/arm64-v8a zstd/armeabi-v7a xz/arm64-v8a xz/armeabi-v7a libdeflate/arm64-v8a libdeflate/armeabi-v7a jbigkit/arm64-v8a jbigkit/armeabi-v7a ``` - [测试三方库](#测试三方库) @@ -84,9 +87,33 @@ ## 测试三方库 三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) -进入到构建目录执行 make -C prog check-TESTS 运行测试用例,如下截图(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) -![tiff_test](pic/tiff_ohos_test1.png) +- 设置MAKE执行程序路径 + ``` + mkdir -p /data/local/tmp/ohos-sdk/linux/native/build-tools/cmake + ln -s /usr/bin /data/local/tmp/ohos-sdk/linux/native/build-tools/cmake/bin + ``` +- 拷贝CMAKE安装路径到单板 + ``` + 将编译机的/usr/share 目录下面cmake-3.26.X 进行压缩并传送到单板 + hdc.exe file send Z:\code\cmake-3.26.3.tar.gz /data/ + mv /data/cmake-3.26.3.tar.gz /usr/share + tar zxvf cmake-3.26.3.tar.gz + mv cmake-3.26.3 cmake-3.26 + ``` +- 将测试资源导入到开发板 +- 设置依赖库路径 +``` +32位系统 +export LD_LIBRARY_PATH=/data/local/tmp/lycium/usr/libjpeg-turbo/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libdeflate/armeabi-v7a/lib:/data/local/tmp/lycium/usr/xz/armeabi-v7a/lib:/data/local/tmp/lycium/usr/zstd/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libpng/armeabi-v7a/lib:/data/local/tmp/lycium/usr/tiff/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libwebp/armeabi-v7a/lib:/data/local/tmp/lycium/usr/jbigkit/armeabi-v7a/lib + +##64位系统 +export LD_LIBRARY_PATH=/data/local/tmp/lycium/usr/libjpeg-turbo/arm64-v8a/lib:/data/local/tmp/lycium/usr/libdeflate/arm64-v8a/lib:/data/local/tmp/lycium/usr/xz/arm64-v8a/lib:/data/local/tmp/lycium/usr/zstd/arm64-v8a/lib:/data/local/tmp/lycium/usr/libpng/arm64-v8a/lib:/data/local/tmp/lycium/usr/tiff/arm64-v8a/lib:/data/local/tmp/lycium/usr/libwebp/arm64-v8a/lib:/data/local/tmp/lycium/usr/jbigkit/arm64-v8a/lib + +``` +- 进入到构建目录执行 ctest 运行测试用例,如下截图(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![tiff_test](pic/tiff_ohos_test2.png) diff --git a/thirdparty/tiff/docs/pic/tiff_ohos_test1.png b/thirdparty/tiff/docs/pic/tiff_ohos_test1.png deleted file mode 100644 index d68ea3b71270c212e17d0fd56c082399d21b4c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6603 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 O977)E|N4{v^}hjf*j`}( -- Gitee From 2391d1e9127ba975a16b63422abb841358cd7ffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E4=BE=83?= Date: Sun, 25 Jun 2023 08:03:05 +0000 Subject: [PATCH 3/3] =?UTF-8?q?Revert=20"tiff=E5=BA=93=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9hap=5Fintegrate.md=20=E6=96=87=E4=BB=B6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 2b1ec7d407f9e51e7a145cb74cc1a6c1d4d899c4. --- thirdparty/tiff/docs/hap_integrate.md | 35 +++---------------- thirdparty/tiff/docs/pic/tiff_ohos_test1.png | Bin 0 -> 6603 bytes 2 files changed, 4 insertions(+), 31 deletions(-) create mode 100644 thirdparty/tiff/docs/pic/tiff_ohos_test1.png diff --git a/thirdparty/tiff/docs/hap_integrate.md b/thirdparty/tiff/docs/hap_integrate.md index ca81253f..13567865 100644 --- a/thirdparty/tiff/docs/hap_integrate.md +++ b/thirdparty/tiff/docs/hap_integrate.md @@ -36,16 +36,13 @@ cp thirdparty/xz tools/main -rf cp thirdparty/zstd tools/main -rf cp thirdparty/libdeflate tools/main -rf - cp thirdparty/jbigkit tools/main -rf ``` - 在tools目录下编译三方库 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) ``` - (tiff库所需要的依赖库有 libpng giflib zstd libjpeg-turbo xz libdeflate jbigkit libwebp, 所以编译时需要一起编译) - cd tools - ./build.sh libpng giflib zstd libjpeg-turbo xz libdeflate jbigkit libwebp tiff + ./build.sh tiff libpng libjpeg-turbo libwebp zstd xz libdeflate ``` - 三方库头文件及生成的库 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 @@ -53,7 +50,7 @@ ``` tiff/arm64-v8a tiff/armeabi-v7a libpng/arm64-v8a libpng/armeabi-v7a libjpeg-turbo/arm64-v8a libjpeg-turbo/armeabi-v7a libwebp/arm64-v8a libwebp/armeabi-v7a - zstd/arm64-v8a zstd/armeabi-v7a xz/arm64-v8a xz/armeabi-v7a libdeflate/arm64-v8a libdeflate/armeabi-v7a jbigkit/arm64-v8a jbigkit/armeabi-v7a + zstd/arm64-v8a zstd/armeabi-v7a xz/arm64-v8a xz/armeabi-v7a libdeflate/arm64-v8a libdeflate/armeabi-v7a ``` - [测试三方库](#测试三方库) @@ -87,33 +84,9 @@ ## 测试三方库 三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) +进入到构建目录执行 make -C prog check-TESTS 运行测试用例,如下截图(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) -- 设置MAKE执行程序路径 - ``` - mkdir -p /data/local/tmp/ohos-sdk/linux/native/build-tools/cmake - ln -s /usr/bin /data/local/tmp/ohos-sdk/linux/native/build-tools/cmake/bin - ``` -- 拷贝CMAKE安装路径到单板 - ``` - 将编译机的/usr/share 目录下面cmake-3.26.X 进行压缩并传送到单板 - hdc.exe file send Z:\code\cmake-3.26.3.tar.gz /data/ - mv /data/cmake-3.26.3.tar.gz /usr/share - tar zxvf cmake-3.26.3.tar.gz - mv cmake-3.26.3 cmake-3.26 - ``` -- 将测试资源导入到开发板 -- 设置依赖库路径 -``` -32位系统 -export LD_LIBRARY_PATH=/data/local/tmp/lycium/usr/libjpeg-turbo/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libdeflate/armeabi-v7a/lib:/data/local/tmp/lycium/usr/xz/armeabi-v7a/lib:/data/local/tmp/lycium/usr/zstd/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libpng/armeabi-v7a/lib:/data/local/tmp/lycium/usr/tiff/armeabi-v7a/lib:/data/local/tmp/lycium/usr/libwebp/armeabi-v7a/lib:/data/local/tmp/lycium/usr/jbigkit/armeabi-v7a/lib - -##64位系统 -export LD_LIBRARY_PATH=/data/local/tmp/lycium/usr/libjpeg-turbo/arm64-v8a/lib:/data/local/tmp/lycium/usr/libdeflate/arm64-v8a/lib:/data/local/tmp/lycium/usr/xz/arm64-v8a/lib:/data/local/tmp/lycium/usr/zstd/arm64-v8a/lib:/data/local/tmp/lycium/usr/libpng/arm64-v8a/lib:/data/local/tmp/lycium/usr/tiff/arm64-v8a/lib:/data/local/tmp/lycium/usr/libwebp/arm64-v8a/lib:/data/local/tmp/lycium/usr/jbigkit/arm64-v8a/lib - -``` -- 进入到构建目录执行 ctest 运行测试用例,如下截图(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) - - +![tiff_test](pic/tiff_ohos_test1.png) ![tiff_test](pic/tiff_ohos_test2.png) diff --git a/thirdparty/tiff/docs/pic/tiff_ohos_test1.png b/thirdparty/tiff/docs/pic/tiff_ohos_test1.png new file mode 100644 index 0000000000000000000000000000000000000000..d68ea3b71270c212e17d0fd56c082399d21b4c7f GIT binary patch literal 6603 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 O977)E|N4{v^}hjf*j`}( literal 0 HcmV?d00001 -- Gitee