diff --git a/thirdparty/snappy/HPKBUILD b/thirdparty/snappy/HPKBUILD index e67538495db32c69d851a3c75ff8fddf5c9dfc6b..2f7a19f9220364131ba46af3196bf3c9b6aa52cd 100644 --- a/thirdparty/snappy/HPKBUILD +++ b/thirdparty/snappy/HPKBUILD @@ -9,41 +9,64 @@ archs=("armeabi-v7a" "arm64-v8a") license=("snappy license") depends=() makedepends=() -source="https://github.com/google/$pkgname/archive/refs/tags/$pkgver.tar.gz" +source="https://github.com/google/snappy.git" downloadpackage=false autounpack=false builddir=$pkgname-$pkgver -packagename=$builddir.tar.gz +cloneflag=true # 第一次下载成功标记为true,防止第二次下载 prepare() { - git clone https://github.com/google/snappy.git $builddir - cd $builddir - git checkout $pkgver - git submodule update --init + if $cloneflag + then + git clone $source $builddir + ret=$? + if [ $ret -ne 0 ]; then + echo "fail: git clone $source $builddir $ret" + return $ret + fi + + cd $builddir + git checkout -b $pkgver $pkgver + ret=$? + if [ $ret -ne 0 ]; then + echo "fail: git checkout $pkgver $ret" + return $ret + fi + + git submodule update --init + ret=$? + if [ $ret -ne 0 ]; then + echo "fail: git submodule update --init $ret" + return $ret + fi + cd $OLDPWD + cloneflag=false + fi + mkdir -p $builddir/$ARCH-build } build() { - cd $builddir - mkdir -p $ARCH-build - ${OHOS_SDK}/native/build-tools/cmake/bin/cmake -DCMAKE_CXX_FLAGS="-w" "$@" ./ -B$ARCH-build -DOHOS_ARCH=$ARCH > $ARCH-build/build.log 2>&1 - make -j4 -C $ARCH-build >> $ARCH-build/build.log 2>&1 + cd $builddir + ${OHOS_SDK}/native/build-tools/cmake/bin/cmake -DCMAKE_CXX_FLAGS="-w" "$@" -S./ \ + -B$ARCH-build -DOHOS_ARCH=$ARCH > $ARCH-build/build.log 2>&1 + make VERBOSE=1 -j4 -C $ARCH-build >> $ARCH-build/build.log 2>&1 ret=$? cd $OLDPWD return $ret } package() { - cd "$builddir" + cd $builddir make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1 cd $OLDPWD } check() { echo "The test must be on an OpenHarmony device!" - #cd $ARCH-build - #ctest + # 进入编译目录 + # ctest } cleanbuild() { diff --git a/thirdparty/snappy/HPKCHECK b/thirdparty/snappy/HPKCHECK new file mode 100644 index 0000000000000000000000000000000000000000..d557b6fffbf59baa301a19b6f5a646e1a45c748f --- /dev/null +++ b/thirdparty/snappy/HPKCHECK @@ -0,0 +1,21 @@ +#Contributor: liucheng <1596268623@qq.com> +#Maintainer: liucheng <1596268623@qq.com> + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + + +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 +} diff --git a/thirdparty/snappy/docs/hap_integrate.md b/thirdparty/snappy/docs/hap_integrate.md index d2983f1d850994d592435a043a89ccf8b6972aef..d9eeacbf189a119d4ddceea15be6cd81dc52165a 100644 --- a/thirdparty/snappy/docs/hap_integrate.md +++ b/thirdparty/snappy/docs/hap_integrate.md @@ -5,8 +5,8 @@ - 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) +- [ohos_sdk_public 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) - [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) - [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) ## 编译三方库 @@ -14,7 +14,6 @@ ``` git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 ``` - - 三方库目录结构 ``` tpc_c_cplusplus/thirdparty/snappy #三方库的目录结构如下 @@ -29,9 +28,8 @@ 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) ``` cd lycium - bash ./build.sh snappy + ./build.sh snappy ``` - - 三方库头文件及生成的库 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库和头文件 ``` @@ -43,17 +41,24 @@ ## 应用中使用三方库 -- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,如下图所示 +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的头文件拷贝到该目录下,将编译生成的三方库全部(动态库名字带版本号和不带版本号的都需要)拷贝到工程的libs目录下,如下图所示  ![thirdparty_install_dir](pic/install_dir.png) - 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 ``` #将三方库加入工程中 -target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy/${OHOS_ARCH}/lib/libsnappy.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libbenchmark.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libbenchmark_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgmock_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libgtest_main.a) +target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libsnappy.a) #将三方库的头文件加入工程中 target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy/${OHOS_ARCH}/include) ``` + ![thirdparty_usage](pic/usage.png) ## 测试三方库 三方库的测试使用原库自带的测试用例来做测试