diff --git a/thirdparty/muparser/HPKBUILD b/thirdparty/muparser/HPKBUILD new file mode 100644 index 0000000000000000000000000000000000000000..f8a7e53f03dc5d880a030d750bbf5fc2472bb391 --- /dev/null +++ b/thirdparty/muparser/HPKBUILD @@ -0,0 +1,63 @@ +# 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: chenyajie +# Maintainer: huangminzhong + +pkgname=muparser +pkgver=v2.3.4 +pkgrel=0 +pkgdesc="OPUS is an open, royalty-free audio codec designed to provide high-fidelity audio transmission across various network environments." +archs=("armeabi-v7a" "arm64-v8a") +url="https://github.com/beltoforion/muparser/" +license=("BSD 2-Clause") +depends=() +makedepends=() +source="https://github.com/beltoforion/${pkgname}/archive/refs/tags/${pkgver}.tar.gz" + +downloadpackage=true +autounpack=true +buildtools="cmake" + +builddir=$pkgname-${pkgver:1} +packagename=$builddir.tar.gz + +prepare() { + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DENABLE_OPENMP=OFF -DOPUS_BUILD_TESTING=ON -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ > $buildlog 2>&1 + $MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + $MAKE -C $ARCH-build install >> $buildlog 2>&1 + cd $OLDPWD +} + +check() { + #将测试用例使用的cmake改为CI工具的cmake + sed -i "s/\".*\/cmake\"/\"cmake\"/g" $builddir/$ARCH-build/CTestTestfile.cmake + echo "The test must be on an OpenHarmony device!" +} + +cleanbuild() { + rm -rf ${PWD}/$builddir +} + diff --git a/thirdparty/muparser/HPKCHECK b/thirdparty/muparser/HPKCHECK new file mode 100644 index 0000000000000000000000000000000000000000..b21ab4c5b0a586c405c1afdaf4ff88613c9ec92e --- /dev/null +++ b/thirdparty/muparser/HPKCHECK @@ -0,0 +1,41 @@ +# Contributor: chengkan +# Maintainer: chengkan + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log +#echo ${LYCIUM_THIRDPARTY_ROOT}/../lycium/usr/muparser/${ARCH}/lib +export LD_LIBRARY_PATH=/data/:${LYCIUM_THIRDPARTY_ROOT}/../lycium/usr/muparser/${ARCH}/lib +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build + echo "total test 3" >> $logfile + ./t_ParserTest >> $logfile + res=$? + + if [ $res -ne 0 ] + then + echo "test 1 error" >> $logfile + cd $OLDPWD + return $res + fi + echo "1 pass" >> $logfile + echo -e "list var\nquit" | ./example1 >> $logfile + res=$? + if [ $res -ne 0 ] + then + echo "test 2 error" >> $logfile + cd $OLDPWD + return $res + fi + echo "2 pass" >> $logfile + echo -e "list var\nquit" | ./example2 >> $logfile + res=$? + if [ $res -ne 0 ] + then + echo "test 3 error" >> $logfile + return $res + fi + echo "3 pass" >> $logfile + cd $OLDPWD + return $res +} diff --git a/thirdparty/muparser/OAT.xml b/thirdparty/muparser/OAT.xml new file mode 100644 index 0000000000000000000000000000000000000000..03ee5a760a1f17e2e86907647046114696ade760 --- /dev/null +++ b/thirdparty/muparser/OAT.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/muparser/README.OpenSource b/thirdparty/muparser/README.OpenSource new file mode 100644 index 0000000000000000000000000000000000000000..89ab387c1e8a18a86f1636c6ee0f862210e45154 --- /dev/null +++ b/thirdparty/muparser/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "muparser", + "License": "BSD 2-Clause", + "License File": "LICENSE", + "Version Number": "v2.3.4", + "Owner": "huangminzhong2@huawei.com", + "Upstream URL": "https://github.com/beltoforion/muparser", + "Description": "A library of parsers for mathematical expressions" + } +] diff --git a/thirdparty/muparser/README_zh.md b/thirdparty/muparser/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..3db2077482bf7aca9bc5f6999ba827593f703888 --- /dev/null +++ b/thirdparty/muparser/README_zh.md @@ -0,0 +1,9 @@ +# MUPARSER 三方库说明 +## 功能简介 +数学表达式解析器库 +## 使用约束 +- SDK版本:ohos_sdk_linux 5.0.3.100 +- 三方库版本:v2.3.4 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/muparser/SHA512SUM b/thirdparty/muparser/SHA512SUM new file mode 100644 index 0000000000000000000000000000000000000000..7f22edd8a57602e911660bbd3d0033f22507f442 --- /dev/null +++ b/thirdparty/muparser/SHA512SUM @@ -0,0 +1 @@ +5226fd666eaf3ff7e661bbf72e60114d0ceed10491ffa4ed2dd34cd669c6c21c037eff0388402d6b9d60b0a5a27b03ca35153e0c048328abc75dfd1eaf38ceca muparser-2.3.4.tar.gz diff --git a/thirdparty/muparser/docs/hap_integrate.md b/thirdparty/muparser/docs/hap_integrate.md new file mode 100644 index 0000000000000000000000000000000000000000..8636c9de61d49baad20affc873c1051acaa59583 --- /dev/null +++ b/thirdparty/muparser/docs/hap_integrate.md @@ -0,0 +1,92 @@ +# paho.muparser.c 集成到应用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)](http://download.ci.openharmony.cn/version/Master_Version/OpenHarmony_4.0.8.1/20230608_091016/version-Master_Version-OpenHarmony_4.0.8.1-20230608_091016-ohos-sdk-full.tar.gz) +- [DevEco Studio 3.1 Release](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_package_901_9/81/v3/tgRUB84wR72nTfE8Ir_xMw/devecostudio-windows-3.1.0.501.zip?HW-CC-KV=V1&HW-CC-Date=20230621T074329Z&HW-CC-Expire=315360000&HW-CC-Sign=22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ``` + tpc_c_cplusplus/thirdparty/muparser #三方库libmuparser的目录结构如下 + ├── muparser #三方库libmuparser的目录 + │   ├── HPKBUILD #构建脚本 + │   ├── HPKCHECK #测试脚本 + │   ├── OAT.xml #OAT文件 + │   ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + │   ├── README_zh.md # MUPARSER 三方库说明 + │   ├── SHA512SUM #三方库校验文件 + │   └── docs #三方库相关文档的文件夹 + │   ├── pic + │   │   ├── muparser-dev.png + │   │   └── test-muparser.png + │   └── hap_integrate.md + ``` + +- 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ``` + cd lycium + ./build.sh muparser + ``` + +- 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + muparser/arm64-v8a muparser/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的文件都拷贝到该目录下,如下图所示: + +  ![thirdparty_install_dir](pic/muparser-dev.png) + + 将编译生成的三方动态库(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下: + +  ![thirdparty_install_dir1](pic/muparser-dev.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句: + + ```makefile + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libmuparser.so) + #将三方库及其依赖库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/muparser/${OHOS_ARCH}/include) + ``` + + + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +进入到构建目录/tpc_c_cplusplus/thirdparty/muparser/muparser-2.3.4/armeabi-v7a-build,执行./t_ParserTest运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) +测试用例如下: ![thirdparty_install_dir](pic/test-muparser.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) \ No newline at end of file diff --git a/thirdparty/muparser/docs/pic/muparser-dev.png b/thirdparty/muparser/docs/pic/muparser-dev.png new file mode 100644 index 0000000000000000000000000000000000000000..0f96f23dc11f1c42b3a49721feacc546a97fce1f Binary files /dev/null and b/thirdparty/muparser/docs/pic/muparser-dev.png differ diff --git a/thirdparty/muparser/docs/pic/test-muparser.png b/thirdparty/muparser/docs/pic/test-muparser.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb5520908d01869908a0f9e7778f0a949b17587 Binary files /dev/null and b/thirdparty/muparser/docs/pic/test-muparser.png differ