From 9da66ad67d58929f7b56bd9b0533703da4b53a6a Mon Sep 17 00:00:00 2001 From: zhongluping <278527840@qq.com> Date: Mon, 8 May 2023 10:58:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0tools=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhongluping <278527840@qq.com> --- tools/build.sh | 25 ++++++++++++++ tools/script/build_hpk.sh | 70 +++++++++++++++++++++++++++++++-------- tools/template/HPKBUILD | 14 ++++---- 3 files changed, 89 insertions(+), 20 deletions(-) diff --git a/tools/build.sh b/tools/build.sh index 07334770..6df91452 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -1,6 +1,30 @@ #!/bin/bash +unames=`uname -s` +osname=${unames:0:5} + +# 根目录 +LYCIUM_ROOT= +buildcheckflag=true +if [ "$osname" == "Linux" ] +then + echo "Build OS linux" + LYCIUM_ROOT=`pwd` +elif [ "$osname" == "CYGWI" ] # CYGWIN +then + echo "Build OS CYGWIN" + lyciumroot=`cygpath -w $PWD` + LYCIUM_ROOT=${lyciumroot//\\/\/} + buildcheckflag=false +else + echo "System cannot recognize, exiting" + exit 0 +fi +export LYCIUM_BUILD_CHECK=$buildcheckflag +export LYCIUM_BUILD_OS=$osname +export LYCIUM_ROOT=$LYCIUM_ROOT jobFlag=true + checkbuildenv(){ if [ -z ${OHOS_SDK} ] then @@ -197,6 +221,7 @@ main(){ buildhpk cleanhpkdir + unset LYCIUM_BUILD_OS LYCIUM_ROOT LYCIUM_BUILD_CHECK } main $* diff --git a/tools/script/build_hpk.sh b/tools/script/build_hpk.sh index 79f5fb22..ff703a24 100755 --- a/tools/script/build_hpk.sh +++ b/tools/script/build_hpk.sh @@ -1,4 +1,5 @@ #!/bin/bash + # 退出码检查 sure() { @@ -98,25 +99,62 @@ builddepends() { } recordbuildlibs() { - echo $2,$3,$1>> `pwd`/../../usr/hpk_build.csv + echo $2,$3,$1>> $LYCIUM_ROOT/usr/hpk_build.csv } -dependpath= +buildargs= cmakedependpath() { - dependpath="-DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${OHOS_SDK}/native/build/cmake/ohos.toolchain.cmake -DCMAKE_INSTALL_PREFIX=`pwd`/../../usr/$pkgname-$1-install " + buildargs="-DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${OHOS_SDK}/native/build/cmake/ohos.toolchain.cmake -DCMAKE_INSTALL_PREFIX=$LYCIUM_ROOT/usr/$pkgname/$1 -G \"Unix Makefiles\" " if [ ${#depends[@]} -ne 0 ] then tmppath="\"" for depend in ${depends[@]} do - tmppath=$tmppath"`pwd`/../../usr/$depend-$1-install;" + dependpath=$LYCIUM_ROOT/usr/$depend/$1/ + tmppath=$tmppath"${dependpath};" done tmppath=$tmppath"\"" - dependpath=$dependpath"-DCMAKE_FIND_ROOT_PATH="$tmppath + buildargs=$buildargs"-DCMAKE_FIND_ROOT_PATH="$tmppath fi } + +pkgconfigpath= configuredependpath() { - dependpath="--prefix=`pwd`/../../usr/$pkgname-$1-install" + buildargs="--prefix=$LYCIUM_ROOT/usr/$pkgname/$1" + if [ ${#depends[@]} -ne 0 ] + then + pkgconfigpath="\"" + for depend in ${depends[@]} + do + dependpath=$LYCIUM_ROOT/usr/$depend/$1/lib/pkgconfig + if [ ! -d ${dependpath} ] + then + continue + fi + pkgconfigpath=$pkgconfigpath"${dependpath}:" + done + pkgconfigpath=$pkgconfigpath"\"" + fi +} + +checkmakedepends() { + ismakedependready=true + for makedepend in ${makedepends[@]} + do + which $makedepend >/dev/null 2>&1 + if [ $? -ne 0 ] + then + echo "请先安装 $makedepend 命令, 才可以编译 $1" + ismakedependready=false + else + echo "$makedepend 已安装" + fi + done + if ! $ismakedependready + then + echo "!!! 退出 $1 编译 !!!" + exit 1 + fi } builpackage() { @@ -130,13 +168,18 @@ builpackage() { echo "Build $pkgname $pkgver strat!" if [ ! $downloadpackage ] || [ $downloadpackage != false ] then - sure download $source $packageName - sure checksum SHA512SUM + sure download $source $packagename + if [ -f "SHA512SUM" ] + then + sure checksum SHA512SUM + fi fi if [ ! $autounpack ] || [ $autounpack != false ] then - sure unpack $packageName + sure unpack $packagename fi + + checkmakedepends $pkgname for arch in ${archs[@]} do echo "Compileing OpenHarmony $arch $pkgname $pkgver libs..." @@ -151,9 +194,12 @@ builpackage() { else echo "buildtools $buildtools, 需要用户自己传入编译参数(安装路径)" fi - sure build $dependpath + sure build $buildargs sure package - sure check + if $LYCIUM_BUILD_CHECK + then + sure check + fi sure recordbuildlibs $ARCH $pkgname $pkgver done echo "Build $pkgname $pkgver end!" @@ -164,8 +210,6 @@ cleanhpk(){ } main() { - # 根目录 - LYCIUM_ROOT=`pwd`/../.. # 清理上次的环境 sure cleanhpk # 编译 PKG diff --git a/tools/template/HPKBUILD b/tools/template/HPKBUILD index 27f52b9d..b3a5f6aa 100755 --- a/tools/template/HPKBUILD +++ b/tools/template/HPKBUILD @@ -14,15 +14,15 @@ url="" # 官网链接 archs=("armeabi-v7a" "arm64-v8a") # cpu 架构 license=() depends=() # 依赖库的目录名 必须保证被依赖的库的archs是当前库的archs的超集 -makedepends=() # 构建库时的依赖工具 +makedepends=() # 构建库时的依赖工具->需要用户安装的工具 source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" # 库源码下载链接 -downloadpackage=true # 是否自动下载压缩包,如若不写默认 true, 一些特殊情况,代码需要代码只能 git clone (项目中依赖 submoudle ) +downloadpackage=true # 是否自动下载压缩包,如若不写默认 true. (应对一些特殊情况,代码只能 git clone (项目中依赖 submoudle )) autounpack=true # 是否自动解压,如若不写默认 true, 如果为 false 则需要用户在 prepare 函数中自行解压 buildtools= # 编译方法, 暂时支持cmake, configure, make等, 是什么就填写什么. 如若不写默认为cmake. builddir= # 源码压缩包解压后目录名 编译目录名 -packageName=$builddir.tar.gz # 压缩包名 +packagename=$builddir.tar.gz # 压缩包名 # 为编译设置环境,如设置环境变量,创建编译目录等 prepare() { @@ -32,12 +32,12 @@ prepare() { # ${OHOS_SDK} oh sdk安装路径 # $ARCH 编译的架构是 archs 的遍历 -# $LYCIUM_ROOT/usr/$pkgname-$ARCH-install 安装到顶层目录的usr/$pkgname-$ARCH-install +# $LYCIUM_ROOT/usr/$pkgname/$ARCH 安装到顶层目录的usr/$pkgname/$ARCH # 执行编译构建的命令 build() { - # 如果是cmake构建 $*=-DCMAKE_FIND_ROOT_PATH="..." -DCMAKE_TOOLCHAIN_FILE="..." -DCMAKE_INSTALL_PREFIX="..." 依赖库的搜索路径,toolchain file 路径,安装路径 + # 如果是cmake构建 "$@"=-DCMAKE_FIND_ROOT_PATH="..." -DCMAKE_TOOLCHAIN_FILE="..." -DCMAKE_INSTALL_PREFIX="..." 依赖库的搜索路径,toolchain file 路径,安装路径 cd $builddir - ${OHOS_SDK}/native/build-tools/cmake/bin/cmake $* -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ -L + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ -L make -j4 -C $ARCH-build # 对最关键一步的退出码进行判断 ret=$? @@ -59,5 +59,5 @@ check() { # 清理环境 cleanbuild(){ - rm -rf ${PWD}/$builddir #${PWD}/$packageName + rm -rf ${PWD}/$builddir #${PWD}/$packagename } -- Gitee