From e50eda70d8f3cd391f8a27ccb32f2a1a0238d4f2 Mon Sep 17 00:00:00 2001 From: l020998 Date: Thu, 7 Mar 2024 20:43:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Paddle-Lite-2.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: l020998 --- thirdparty/Paddle-Lite-2.7/HPKBUILD | 187 ++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100755 thirdparty/Paddle-Lite-2.7/HPKBUILD diff --git a/thirdparty/Paddle-Lite-2.7/HPKBUILD b/thirdparty/Paddle-Lite-2.7/HPKBUILD new file mode 100755 index 00000000..5860f7dc --- /dev/null +++ b/thirdparty/Paddle-Lite-2.7/HPKBUILD @@ -0,0 +1,187 @@ +# 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: liukai +# Maintainer: liukai + +pkgname=Paddle-Lite-2.7 +pkgver=v2.7 +pkgrel=0 +pkgdesc="PaddlePaddle High Performance Deep Learning Inference Engine for Mobile and Edge." +url="www.paddlepaddle.org.cn/lite" +archs=("armeabi-v7a" "arm64-v8a") +license=("Apache-2.0 license") +depends=() +makedepends=("python3") + +source="https://github.com/PaddlePaddle/Paddle-Lite/archive/refs/tags/$pkgver.zip" + +source envset.sh +buildtools="cmake" +autounpack=true +patchflag=true +downloadpackage=true + +builddir=$pkgname +packagename=$pkgname.zip +openblastarget= +protobufhostdir= +extracflags= +cc= +cxx= +ar= +ranlib= +# 准备三方代码 +repos=( + "https://gitee.com/mirrors/gflags.git" # 源链接: https://github.com/gflags/gflags.git + "https://gitee.com/mirrors/googletest.git" # 源链接: https://github.com/google/googletest.git +) +# 对应文件夹 +folders=( + "third-party/gflags" + "third-party/googletest" +) +# branches + +commitIDs=( + "77592648e3f3be87d6c7123eb81cbad75f9aef5a" # gflags + "ec44c6c1675c25b9827aacd08c02433cccde7780" # googletest +) + +clonesrc() { + for (( i=0; i<${#repos[@]}; i++ ));do + repo=${repos[$i]} + folder=${folders[$i]} + commitID=${commitIDs[$i]} + + git clone $repo $folder + if [ $? -ne 0 ];then + return -1 + fi + cd $folder + git checkout --detach $commitID + cd $OLDPWD + done +} + +prepare() { + # 下载子模块 + if [ $downloadpackage == true ];then + cd $builddir + if [ $? -ne 0 ];then + return -1 + fi + downloadpackage=false + cd $PKGBUILD_ROOT + fi + + # 1、大多数仿照Android移植修改。但Android的测试用例是单独写的,只使用了部分测试用例, + # 而OH是所有测试用例都跑,因此,发现了不少bug。 + # Android单元测试脚本: tools/ci_tools/ci_android_unit_test.sh + # 2、有部分修改是测试用例存在明显错误,没有指定模型文件,或模型文件指向不对, + # 参考issue: https://github.com/PaddlePaddle/Paddle-Lite/issues/10351 + # 3、还有部分修改是因为OH系统性能不够,延长了超时时间 + # 4、测试用例在执行汇编指令时出现段错误。 + # 参考issue: https://github.com/PaddlePaddle/Paddle-Lite/issues/10355 + # 参考PR: https://github.com/PaddlePaddle/Paddle-Lite/pull/10365 + + mkdir -p $builddir/$ARCH-build + + if [ $ARCH == "armeabi-v7a" ];then + openblastarget="armv7" + cc=${OHOS_SDK}/native/llvm/bin/clang + cxx=${OHOS_SDK}/native/llvm/bin/clang++ + ar=${OHOS_SDK}/native/llvm/bin/llvm-ar + ranlib=${OHOS_SDK}/native/llvm/bin/llvm-ranlib + elif [ $ARCH == "arm64-v8a" ];then + openblastarget="armv8" + cc="${OHOS_SDK}/native/llvm/bin/clang" + cxx="${OHOS_SDK}/native/llvm/bin/clang++" + ar=${OHOS_SDK}/native/llvm/bin/llvm-ar + ranlib=${OHOS_SDK}/native/llvm/bin/llvm-ranlib + else + echo "$ARCH not support!" + return -2 + fi +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake .. \ + -DWITH_GPU=OFF \ + -DWITH_MKL=OFF \ + -DWITH_LITE=ON \ + -DLITE_WITH_JAVA=OFF \ + -DLITE_WITH_CUDA=OFF \ + -DLITE_WITH_X86=OFF \ + -DLITE_WITH_ARM=ON \ + -DLITE_WITH_LIGHT_WEIGHT_FRAMEWORK=ON \ + -DWITH_TESTING=OFF \ + -DLITE_WITH_LOG=OFF \ + -DLITE_ON_TINY_PUBLISH=ON \ + -DARM_TARGET_OS=armlinux \ + -DARM_TARGET_ARCH_ABI=${openblastarget} \ + -DARM_TARGET_LANG=gcc \ + -DCMAKE_C_COMPILER=${OHOS_SDK}/native/llvm/bin/clang \ + -DCMAKE_CXX_COMPILER=${OHOS_SDK}/native/llvm/bin/clang++ \ + -DCC=${OHOS_SDK}/native/llvm/bin/clang \ + -DCXX=${OHOS_SDK}/native/llvm/bin/clang++ \ + -B$ARCH-build -S./ -L > `pwd`/$ARCH-build/build.log 2>&1 + make CC="${cc}" CXX="${cxx}" -j16 -C $ARCH-build VERBOSE=1 >> `pwd`/$ARCH-build/make.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + # 不支持make install, 参考$builddir/lite/tools/build_android.sh 的做法 + make -C $ARCH-build publish_inference VERBOSE=1 >> `pwd`/$ARCH-build/build.log 2>&1 + mkdir -p $LYCIUM_ROOT/usr/$pkgname/$ARCH + cp -rf $ARCH-build/inference_lite_lib.armlinux.$openblastarget/cxx/* $LYCIUM_ROOT/usr/$pkgname/$ARCH/ + cp -rf $ARCH-build/lite/api/*.so $ARCH-build/lite/api/*.a $LYCIUM_ROOT/usr/$pkgname/$ARCH/lib + cd $OLDPWD + + # 恢复环境 + unset extracflags +} + +check() { + if [ $ARCH == "armeabi-v7a" ];then + cp $OHOS_SDK/native/llvm/lib/arm-linux-ohos/libc++_shared.so $builddir/$ARCH-build/ + elif [ $ARCH == "arm64-v8a" ];then + cp $OHOS_SDK/native/llvm/lib/aarch64-linux-ohos/libc++_shared.so $builddir/$ARCH-build/ + else + echo "$ARCH not support!" + return -1 + fi + echo "The test must be on an OpenHarmony device!" + # real test + # ctest +} + +# 清理环境 +cleanbuild(){ + rm -rf $builddir +} + +recoverpkgbuildenv(){ + unset host + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + elif [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi +} -- Gitee