From 8343a40deba8dfde38f24851c479876c2326f4db Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Sun, 13 Oct 2024 20:22:18 +0800 Subject: [PATCH 1/7] =?UTF-8?q?cpu=5Ffeatures-0.4.0=EF=BC=9A=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B8=89=E6=96=B9=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/HPKBUILD | 73 ++++++++++++++++ thirdparty/cpu_features-0.4.0/HPKCHECK | 33 ++++++++ .../cpu_features-0.4.0/README.OpenSource | 11 +++ thirdparty/cpu_features-0.4.0/README_zh.md | 9 ++ thirdparty/cpu_features-0.4.0/SHA512SUM | 1 + .../cpu_features-0.4.0_oh_pkg.patch | 30 +++++++ .../cpu_features-0.4.0/docs/hap_integrate.md | 79 ++++++++++++++++++ .../docs/pic/cpu_features_install_dir.png | Bin 0 -> 12579 bytes .../docs/pic/cpu_features_test.png | Bin 0 -> 29258 bytes 9 files changed, 236 insertions(+) create mode 100644 thirdparty/cpu_features-0.4.0/HPKBUILD create mode 100644 thirdparty/cpu_features-0.4.0/HPKCHECK create mode 100644 thirdparty/cpu_features-0.4.0/README.OpenSource create mode 100644 thirdparty/cpu_features-0.4.0/README_zh.md create mode 100644 thirdparty/cpu_features-0.4.0/SHA512SUM create mode 100644 thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch create mode 100644 thirdparty/cpu_features-0.4.0/docs/hap_integrate.md create mode 100644 thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_install_dir.png create mode 100644 thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_test.png diff --git a/thirdparty/cpu_features-0.4.0/HPKBUILD b/thirdparty/cpu_features-0.4.0/HPKBUILD new file mode 100644 index 00000000..0e0db261 --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/HPKBUILD @@ -0,0 +1,73 @@ +# 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: wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2471389@stu.neu.edu.cn>, wangying +# Maintainer: wangyihao<2471389@stu.neu.edu.cn>, wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangying + +pkgname=cpu_features-0.4.0 +pkgver=v0.4.0 +pkgrel=0 +pkgdesc="cpu_features is a cross-platform C library to retrieve CPU features (such as available instructions) at runtime." +url="https://github.com/google/cpu_features/tree/v0.4.0" +archs=("armeabi-v7a" "arm64-v8a") +license=("Apache License 2.0") +depends=() +makedepends=() +source="https://github.com/google/cpu_features/archive/refs/tags/v0.4.0.zip" + +downloadpackage=true +autounpack=true +buildtools=cmake +patchflag=true + +builddir=cpu_features-0.4.0 +packagename=cpu_features-v0.4.0.zip + +# 为编译设置环境,如设置环境变量,创建编译目录等 +prepare() { + if $patchflag + then + cd $builddir + #自动克隆googletest时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest + patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch + # patch只需要打一次,关闭打patch + patchflag=false + cd $OLDPWD + fi + + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DCMAKE_C_FLAGS="-Wno-unused-command-line-argument" \ + -DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" -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() { + echo "The test must be on an OpenHarmony device!" +} + +cleanbuild() { + rm -rf ${PWD}/$builddir +} \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/HPKCHECK b/thirdparty/cpu_features-0.4.0/HPKCHECK new file mode 100644 index 00000000..45087f23 --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/HPKCHECK @@ -0,0 +1,33 @@ +# 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: wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2471389@stu.neu.edu.cn>, wangying +# Maintainer: wangyihao<2471389@stu.neu.edu.cn>, wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangying + +source HPKBUILD > /dev/null 2>&1 # 导入HPKBUILD文件 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${OHOS_SDK_VER}_test.log + + +# 在OH环境执行测试的接口 +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build # 进入到测试目录 + ctest > $logfile 2>&1 + res=$? + if [ $res -ne 0 ];then + mkdir ${LYCIUM_FAULT_PATH}/${pkgname} + cp Testing/Temporary/LastTest.log ${LYCIUM_FAULT_PATH}/${pkgname}/ + fi + cd $OLDPWD + return $res +} \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/README.OpenSource b/thirdparty/cpu_features-0.4.0/README.OpenSource new file mode 100644 index 00000000..8650f4e9 --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "cpu_features-0.4.0", + "License": "Apache License 2.0", + "License File": "https://github.com/google/cpu_features/blob/main/LICENSE", + "Version Number": "v0.4.0", + "Owner": "2942375747@qq.com", + "Upstream URL": "https://github.com/google/cpu_features", + "Description": "cpu_features is a cross-platform C library to retrieve CPU features (such as available instructions) at runtime." + } +] \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/README_zh.md b/thirdparty/cpu_features-0.4.0/README_zh.md new file mode 100644 index 00000000..1f8b97d2 --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/README_zh.md @@ -0,0 +1,9 @@ +# cpu_features-0.4.0三方库说明 +## 功能简介 +cpu_features是一个跨平台的C库,用于在运行时检索CPU特性(如可用指令)。 +## 三方库版本: +- v0.4.0 +## 使用约束: +- [IDE和SDK版本](../../docs/constraint.md) +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/SHA512SUM b/thirdparty/cpu_features-0.4.0/SHA512SUM new file mode 100644 index 00000000..9b087e8e --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/SHA512SUM @@ -0,0 +1 @@ +791b8e29d0171ca3657e0bdaaf09cb7c41aaea13718a8565b5248ba22e88e7f5944bb182090c5a60f1169ce5607407fe7543579bff17cc78a260d5936a316536 cpu_features-v0.4.0.zip \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch new file mode 100644 index 00000000..1861e95f --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch @@ -0,0 +1,30 @@ +diff -urN cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in cpu_features-0.4.0/cmake/googletest.CMakeLists.txt.in +--- cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in 2019-07-05 14:47:41.000000000 +0800 ++++ cpu_features-0.4.0/cmake/googletest.CMakeLists.txt.in 2024-10-13 14:54:59.848433567 +0800 +@@ -5,11 +5,11 @@ + include(ExternalProject) + ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git +- GIT_TAG master ++ GIT_TAG main + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +-) +\ No newline at end of file ++) +diff -urN cpu_features-0.4.0_old/CMakeLists.txt cpu_features-0.4.0/CMakeLists.txt +--- cpu_features-0.4.0_old/CMakeLists.txt 2019-07-05 14:47:41.000000000 +0800 ++++ cpu_features-0.4.0/CMakeLists.txt 2024-10-13 14:55:57.025803997 +0800 +@@ -13,7 +13,7 @@ + + # BUILD_TESTING is a standard CMake variable, but we declare it here to make it + # prominent in the GUI. +-option(BUILD_TESTING "Enable test (depends on googletest)." OFF) ++option(BUILD_TESTING "Enable test (depends on googletest)." ON) + # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make + # it prominent in the GUI. + # cpu_features uses bit-fields which are - to some extends - implementation-defined (see https://en.cppreference.com/w/c/language/bit_field). diff --git a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md new file mode 100644 index 00000000..664493be --- /dev/null +++ b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md @@ -0,0 +1,79 @@ +# cpu_features集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- [开发环境准备](../../../docs/hap_integrate_environment.md) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/cpu_features-0.4.0 #三方库cpu_features-0.4.0的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md #三方库简介 + ├── cpu_features-0.4.0_oh_pkg.patch #用于cpu_features-0.4.0库编译的补丁 + ``` + +- 在lycium目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ```shell + cd lycium + ./build.sh cpu_features-0.4.0 + ``` + +- 三方库头文件及生成的库 + + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + cpu_features-0.4.0/arm64-v8a cpu_features-0.4.0/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +- 编译出可执行的文件进行测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示: +   + +  ![thirdparty_install_dir](pic/cpu_features_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/cpu_features/${OHOS_ARCH}/lib/libcpu_features.a) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/cpu_features/${OHOS_ARCH}/include) + ``` + +## 测试三方库 +进入到构建目录运行测试用例(注意arm64-v8a为构建64位的目录,armeabi-v7a为构建32位的目录)。执行结果如图所示 + +```shell + cd /data/tpc_c_cplusplus/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0/arm64-v8a-build/ + ./ctest +``` + ![cpu_features_test](pic/cpu_features_test.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) \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_install_dir.png b/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..52989c4fc57c60451cd944f249aed5a1b9d4bf92 GIT binary patch literal 12579 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 literal 0 HcmV?d00001 diff --git a/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_test.png b/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_test.png new file mode 100644 index 0000000000000000000000000000000000000000..d043962973ff2ff085c0c6f8c0f55f084148ffc1 GIT binary patch literal 29258 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%0D%4e~K6uyY99De%W0>U&JeIB$lA3 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 Date: Thu, 17 Oct 2024 16:31:54 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9HPKBUILD=E5=8F=8A.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/HPKBUILD | 12 ++++++------ thirdparty/cpu_features-0.4.0/docs/hap_integrate.md | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/thirdparty/cpu_features-0.4.0/HPKBUILD b/thirdparty/cpu_features-0.4.0/HPKBUILD index 0e0db261..fdd41b37 100644 --- a/thirdparty/cpu_features-0.4.0/HPKBUILD +++ b/thirdparty/cpu_features-0.4.0/HPKBUILD @@ -37,12 +37,12 @@ packagename=cpu_features-v0.4.0.zip prepare() { if $patchflag then - cd $builddir - #自动克隆googletest时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest - patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch - # patch只需要打一次,关闭打patch - patchflag=false - cd $OLDPWD + cd $builddir + #克隆googletest源码时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest + patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch + # patch只需要打一次,关闭打patch + patchflag=false + cd $OLDPWD fi mkdir -p $builddir/$ARCH-build diff --git a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md index 664493be..c9ae9cd7 100644 --- a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md +++ b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md @@ -24,7 +24,7 @@ ├── SHA512SUM #三方库校验文件 ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 ├── README_zh.md #三方库简介 - ├── cpu_features-0.4.0_oh_pkg.patch #用于cpu_features-0.4.0库编译的补丁 + ├── cpu_features-0.4.0_oh_pkg.patch #用于cpu_features-0.4.0库编译的补丁 ``` - 在lycium目录下编译三方库 @@ -46,7 +46,6 @@ - [测试三方库](#测试三方库) -- 编译出可执行的文件进行测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) ## 应用中使用三方库 - 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示: @@ -64,11 +63,13 @@ ``` ## 测试三方库 + +- 编译出可执行的文件,使用原库自带的测试用例来做测试 [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) 进入到构建目录运行测试用例(注意arm64-v8a为构建64位的目录,armeabi-v7a为构建32位的目录)。执行结果如图所示 ```shell cd /data/tpc_c_cplusplus/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0/arm64-v8a-build/ - ./ctest + ctest ```  ![cpu_features_test](pic/cpu_features_test.png) -- Gitee From e9af1d442d27efba13c50699b2688264af91a542 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Tue, 29 Oct 2024 15:14:59 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9HPKBUILD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/HPKBUILD | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/thirdparty/cpu_features-0.4.0/HPKBUILD b/thirdparty/cpu_features-0.4.0/HPKBUILD index fdd41b37..969f2ad7 100644 --- a/thirdparty/cpu_features-0.4.0/HPKBUILD +++ b/thirdparty/cpu_features-0.4.0/HPKBUILD @@ -37,14 +37,13 @@ packagename=cpu_features-v0.4.0.zip prepare() { if $patchflag then - cd $builddir - #克隆googletest源码时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest - patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch - # patch只需要打一次,关闭打patch - patchflag=false - cd $OLDPWD + cd $builddir + #克隆googletest源码时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest + patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch + #patch只需要打一次,关闭打patch + patchflag=false + cd $OLDPWD fi - mkdir -p $builddir/$ARCH-build } -- Gitee From a9ae933f6346f2fd9689583997f3fd03a6f78c6a Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Tue, 29 Oct 2024 16:50:00 +0800 Subject: [PATCH 4/7] change Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/docs/hap_integrate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md index c9ae9cd7..2b313e40 100644 --- a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md +++ b/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md @@ -48,7 +48,7 @@ ## 应用中使用三方库 -- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库以及依赖库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示: +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件和静态库文件拷贝到该目录下,如下图所示:    ![thirdparty_install_dir](pic/cpu_features_install_dir.png) -- Gitee From d62006962af1204b9db726bc2e185d44c16ae977 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Wed, 30 Oct 2024 16:28:35 +0800 Subject: [PATCH 5/7] change Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/HPKBUILD | 4 ++-- .../cpu_features-0.4.0_oh_pkg.patch | 14 +------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/thirdparty/cpu_features-0.4.0/HPKBUILD b/thirdparty/cpu_features-0.4.0/HPKBUILD index 969f2ad7..943ec495 100644 --- a/thirdparty/cpu_features-0.4.0/HPKBUILD +++ b/thirdparty/cpu_features-0.4.0/HPKBUILD @@ -38,7 +38,7 @@ prepare() { if $patchflag then cd $builddir - #克隆googletest源码时,由于master分支已不存在,更新为默认的main分支;在根目录下的CMakeLists.txt中激活测试至ctest + #克隆googletest源码时,由于master分支已不存在,更新为默认的main分支 patch -p1 < `pwd`/../cpu_features-0.4.0_oh_pkg.patch #patch只需要打一次,关闭打patch patchflag=false @@ -50,7 +50,7 @@ prepare() { build() { cd $builddir ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DCMAKE_C_FLAGS="-Wno-unused-command-line-argument" \ - -DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" -B$ARCH-build -S./ > $buildlog 2>&1 + -DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" -B$ARCH-build -S./ -DBUILD_TESTING=ON > $buildlog 2>&1 $MAKE VERBOSE=1 -C $ARCH-build >> $buildlog 2>&1 ret=$? cd $OLDPWD diff --git a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch index 1861e95f..8abcc8f1 100644 --- a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch +++ b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch @@ -15,16 +15,4 @@ diff -urN cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in cpu_features TEST_COMMAND "" -) \ No newline at end of file -+) -diff -urN cpu_features-0.4.0_old/CMakeLists.txt cpu_features-0.4.0/CMakeLists.txt ---- cpu_features-0.4.0_old/CMakeLists.txt 2019-07-05 14:47:41.000000000 +0800 -+++ cpu_features-0.4.0/CMakeLists.txt 2024-10-13 14:55:57.025803997 +0800 -@@ -13,7 +13,7 @@ - - # BUILD_TESTING is a standard CMake variable, but we declare it here to make it - # prominent in the GUI. --option(BUILD_TESTING "Enable test (depends on googletest)." OFF) -+option(BUILD_TESTING "Enable test (depends on googletest)." ON) - # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make - # it prominent in the GUI. - # cpu_features uses bit-fields which are - to some extends - implementation-defined (see https://en.cppreference.com/w/c/language/bit_field). ++ \ No newline at end of file -- Gitee From d651ac506508a1614a613f85858afa1e4fed8236 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Thu, 31 Oct 2024 11:13:50 +0800 Subject: [PATCH 6/7] patch Signed-off-by: NEU-lab <2942375747@qq.com> --- thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch index 8abcc8f1..ec990462 100644 --- a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch +++ b/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch @@ -1,6 +1,6 @@ diff -urN cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in cpu_features-0.4.0/cmake/googletest.CMakeLists.txt.in --- cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in 2019-07-05 14:47:41.000000000 +0800 -+++ cpu_features-0.4.0/cmake/googletest.CMakeLists.txt.in 2024-10-13 14:54:59.848433567 +0800 ++++ cpu_features-0.4.0/cmake/googletest.CMakeLists.txt.in 2024-10-31 00:24:41.901607783 +0800 @@ -5,11 +5,11 @@ include(ExternalProject) ExternalProject_Add(googletest @@ -15,4 +15,4 @@ diff -urN cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in cpu_features TEST_COMMAND "" -) \ No newline at end of file -+ \ No newline at end of file ++) -- Gitee From cf7fdebd530252ba87faac9d5658719518eb51d2 Mon Sep 17 00:00:00 2001 From: NEU-lab <2942375747@qq.com> Date: Tue, 5 Nov 2024 16:36:09 +0800 Subject: [PATCH 7/7] name change Signed-off-by: NEU-lab <2942375747@qq.com> --- .../{cpu_features-0.4.0 => cpu_features}/HPKBUILD | 2 +- .../{cpu_features-0.4.0 => cpu_features}/HPKCHECK | 0 .../README.OpenSource | 2 +- .../README_zh.md | 2 +- .../{cpu_features-0.4.0 => cpu_features}/SHA512SUM | 0 .../cpu_features-0.4.0_oh_pkg.patch | 5 +---- .../docs/hap_integrate.md | 10 +++++----- .../docs/pic/cpu_features_install_dir.png | Bin .../docs/pic/cpu_features_test.png | Bin 9 files changed, 9 insertions(+), 12 deletions(-) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/HPKBUILD (98%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/HPKCHECK (100%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/README.OpenSource (91%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/README_zh.md (88%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/SHA512SUM (100%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/cpu_features-0.4.0_oh_pkg.patch (92%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/docs/hap_integrate.md (87%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/docs/pic/cpu_features_install_dir.png (100%) rename thirdparty/{cpu_features-0.4.0 => cpu_features}/docs/pic/cpu_features_test.png (100%) diff --git a/thirdparty/cpu_features-0.4.0/HPKBUILD b/thirdparty/cpu_features/HPKBUILD similarity index 98% rename from thirdparty/cpu_features-0.4.0/HPKBUILD rename to thirdparty/cpu_features/HPKBUILD index 943ec495..8d01af48 100644 --- a/thirdparty/cpu_features-0.4.0/HPKBUILD +++ b/thirdparty/cpu_features/HPKBUILD @@ -14,7 +14,7 @@ # Contributor: wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangyihao<2471389@stu.neu.edu.cn>, wangying # Maintainer: wangyihao<2471389@stu.neu.edu.cn>, wangjialun<2271411@stu.neu.edu.cn>, zhangqian<2371418@stu.neu.edu.cn>, wangying -pkgname=cpu_features-0.4.0 +pkgname=cpu_features pkgver=v0.4.0 pkgrel=0 pkgdesc="cpu_features is a cross-platform C library to retrieve CPU features (such as available instructions) at runtime." diff --git a/thirdparty/cpu_features-0.4.0/HPKCHECK b/thirdparty/cpu_features/HPKCHECK similarity index 100% rename from thirdparty/cpu_features-0.4.0/HPKCHECK rename to thirdparty/cpu_features/HPKCHECK diff --git a/thirdparty/cpu_features-0.4.0/README.OpenSource b/thirdparty/cpu_features/README.OpenSource similarity index 91% rename from thirdparty/cpu_features-0.4.0/README.OpenSource rename to thirdparty/cpu_features/README.OpenSource index 8650f4e9..af133c7c 100644 --- a/thirdparty/cpu_features-0.4.0/README.OpenSource +++ b/thirdparty/cpu_features/README.OpenSource @@ -1,6 +1,6 @@ [ { - "Name": "cpu_features-0.4.0", + "Name": "cpu_features", "License": "Apache License 2.0", "License File": "https://github.com/google/cpu_features/blob/main/LICENSE", "Version Number": "v0.4.0", diff --git a/thirdparty/cpu_features-0.4.0/README_zh.md b/thirdparty/cpu_features/README_zh.md similarity index 88% rename from thirdparty/cpu_features-0.4.0/README_zh.md rename to thirdparty/cpu_features/README_zh.md index 1f8b97d2..e0e80074 100644 --- a/thirdparty/cpu_features-0.4.0/README_zh.md +++ b/thirdparty/cpu_features/README_zh.md @@ -1,4 +1,4 @@ -# cpu_features-0.4.0三方库说明 +# cpu_features三方库说明 ## 功能简介 cpu_features是一个跨平台的C库,用于在运行时检索CPU特性(如可用指令)。 ## 三方库版本: diff --git a/thirdparty/cpu_features-0.4.0/SHA512SUM b/thirdparty/cpu_features/SHA512SUM similarity index 100% rename from thirdparty/cpu_features-0.4.0/SHA512SUM rename to thirdparty/cpu_features/SHA512SUM diff --git a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch b/thirdparty/cpu_features/cpu_features-0.4.0_oh_pkg.patch similarity index 92% rename from thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch rename to thirdparty/cpu_features/cpu_features-0.4.0_oh_pkg.patch index ec990462..c481c275 100644 --- a/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0_oh_pkg.patch +++ b/thirdparty/cpu_features/cpu_features-0.4.0_oh_pkg.patch @@ -12,7 +12,4 @@ diff -urN cpu_features-0.4.0_old/cmake/googletest.CMakeLists.txt.in cpu_features CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - TEST_COMMAND "" --) -\ No newline at end of file -+) + TEST_COMMAND " \ No newline at end of file diff --git a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md b/thirdparty/cpu_features/docs/hap_integrate.md similarity index 87% rename from thirdparty/cpu_features-0.4.0/docs/hap_integrate.md rename to thirdparty/cpu_features/docs/hap_integrate.md index 2b313e40..89df8622 100644 --- a/thirdparty/cpu_features-0.4.0/docs/hap_integrate.md +++ b/thirdparty/cpu_features/docs/hap_integrate.md @@ -17,14 +17,14 @@ - 三方库目录结构 ```shell - tpc_c_cplusplus/thirdparty/cpu_features-0.4.0 #三方库cpu_features-0.4.0的目录结构如下 + tpc_c_cplusplus/thirdparty/cpu_features #三方库cpu_features的目录结构如下 ├── docs #三方库相关文档的文件夹 ├── HPKBUILD #构建脚本 ├── HPKCHECK #测试脚本 ├── SHA512SUM #三方库校验文件 ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 ├── README_zh.md #三方库简介 - ├── cpu_features-0.4.0_oh_pkg.patch #用于cpu_features-0.4.0库编译的补丁 + ├── cpu_features_oh_pkg.patch #用于cpu_features库编译的补丁 ``` - 在lycium目录下编译三方库 @@ -33,7 +33,7 @@ ```shell cd lycium - ./build.sh cpu_features-0.4.0 + ./build.sh cpu_features ``` - 三方库头文件及生成的库 @@ -41,7 +41,7 @@ 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 ```shell - cpu_features-0.4.0/arm64-v8a cpu_features-0.4.0/armeabi-v7a + cpu_features/arm64-v8a cpu_features/armeabi-v7a ``` - [测试三方库](#测试三方库) @@ -68,7 +68,7 @@ 进入到构建目录运行测试用例(注意arm64-v8a为构建64位的目录,armeabi-v7a为构建32位的目录)。执行结果如图所示 ```shell - cd /data/tpc_c_cplusplus/thirdparty/cpu_features-0.4.0/cpu_features-0.4.0/arm64-v8a-build/ + cd /data/tpc_c_cplusplus/thirdparty/cpu_features/cpu_features-0.4.0/arm64-v8a-build/ ctest ```  ![cpu_features_test](pic/cpu_features_test.png) diff --git a/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_install_dir.png b/thirdparty/cpu_features/docs/pic/cpu_features_install_dir.png similarity index 100% rename from thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_install_dir.png rename to thirdparty/cpu_features/docs/pic/cpu_features_install_dir.png diff --git a/thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_test.png b/thirdparty/cpu_features/docs/pic/cpu_features_test.png similarity index 100% rename from thirdparty/cpu_features-0.4.0/docs/pic/cpu_features_test.png rename to thirdparty/cpu_features/docs/pic/cpu_features_test.png -- Gitee