From c2d20e086b4c78e83b83906938a901515f06ae30 Mon Sep 17 00:00:00 2001 From: xuwenlong Date: Mon, 19 Jun 2023 17:26:58 +0800 Subject: [PATCH 1/6] =?UTF-8?q?avro=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuwenlong --- thirdparty/avro/HPKBUILD | 71 +++ thirdparty/avro/SHA512SUM | 1 + thirdparty/avro/avro_oh_pkg.patch | 48 ++ thirdparty/avrocpp/HPKBUILD | 68 +++ thirdparty/avrocpp/LICENSE.txt | 570 ++++++++++++++++++ thirdparty/avrocpp/NOTICE.txt | 75 +++ thirdparty/avrocpp/OAT.xml | 20 + thirdparty/avrocpp/README.OpenSource | 11 + thirdparty/avrocpp/README_zh.md | 12 + thirdparty/avrocpp/SHA512SUM | 1 + thirdparty/avrocpp/avro_oh_pkg.patch | 25 + thirdparty/avrocpp/docs/hap_integrate.md | 88 +++ thirdparty/avrocpp/docs/pic/avro_build.png | Bin 0 -> 52138 bytes thirdparty/avrocpp/docs/pic/avro_test.png | Bin 0 -> 38084 bytes .../avrocpp/docs/pic/avrocpp_install_dir.png | Bin 0 -> 8463 bytes thirdparty/avrocpp/docs/pic/avrocpp_test.png | Bin 0 -> 20559 bytes .../avrocpp/single/PlainReport_avrocpp.txt | 19 + .../single/PlainReport_avrocpp_Detail.txt | 116 ++++ 18 files changed, 1125 insertions(+) create mode 100644 thirdparty/avro/HPKBUILD create mode 100644 thirdparty/avro/SHA512SUM create mode 100644 thirdparty/avro/avro_oh_pkg.patch create mode 100644 thirdparty/avrocpp/HPKBUILD create mode 100644 thirdparty/avrocpp/LICENSE.txt create mode 100644 thirdparty/avrocpp/NOTICE.txt create mode 100644 thirdparty/avrocpp/OAT.xml create mode 100644 thirdparty/avrocpp/README.OpenSource create mode 100644 thirdparty/avrocpp/README_zh.md create mode 100644 thirdparty/avrocpp/SHA512SUM create mode 100644 thirdparty/avrocpp/avro_oh_pkg.patch create mode 100644 thirdparty/avrocpp/docs/hap_integrate.md create mode 100755 thirdparty/avrocpp/docs/pic/avro_build.png create mode 100755 thirdparty/avrocpp/docs/pic/avro_test.png create mode 100755 thirdparty/avrocpp/docs/pic/avrocpp_install_dir.png create mode 100755 thirdparty/avrocpp/docs/pic/avrocpp_test.png create mode 100644 thirdparty/avrocpp/single/PlainReport_avrocpp.txt create mode 100644 thirdparty/avrocpp/single/PlainReport_avrocpp_Detail.txt diff --git a/thirdparty/avro/HPKBUILD b/thirdparty/avro/HPKBUILD new file mode 100644 index 00000000..9b9b1a39 --- /dev/null +++ b/thirdparty/avro/HPKBUILD @@ -0,0 +1,71 @@ +# Contributor: 小肉头君 +# Maintainer: 小肉头君 + +pkgname=avro +pkgver=release-1.11.1 +pkgrel=0 +pkgdesc="Apache Avro is a data serialization system." +url="https://github.com/apache/avro" +archs=("armeabi-v7a" "arm64-v8a") +license=("Apache-2.0 license") +depends=("jansson") +makedepends=() +source="https://github.com/apache/$pkgname/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +patchflag=true + +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz + +prepare() { + if $patchflag + then + cd $builddir + # 运行ctest时,会再去触发cmake去复制一份文件,这样会导致在设备上测试不通过 + # 并且测试套件已经在所在目录,所以打patch去掉cmake操作 + patch -p1 < `pwd`/../avro_oh_pkg.patch + # patch只需要打一次,关闭打patch + patchflag=false + cd $OLDPWD + fi + mkdir -p $builddir/$ARCH-build +} + +build() { + cd $builddir + # 编译avro c的版本 + PKG_CONFIG_PATH="${pkgconfigpath}" ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -Slang/c -L > `pwd`/$ARCH-build/build.log 2>&1 + make -j4 -C $ARCH-build >> `pwd`/$ARCH-build/build.log 2>&1 + ret=$? + + cd $OLDPWD + return $ret +} + +package() { + cd $builddir + make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1 + cd $OLDPWD +} + +check() { + cd $builddir + cp -rf lang/c/tests/schema_tests $ARCH-build/tests + cp lang/c/tests/avro-1237-bad-union-discriminant.avro $ARCH-build/tests + cp lang/c/tests/avro-1237-good.avro $ARCH-build/tests + cp lang/c/tests/avro-1238-good.avro $ARCH-build/tests + cp lang/c/tests/avro-1238-truncated.avro $ARCH-build/tests + cp lang/c/tests/avro-1279-codec.avro $ARCH-build/tests + cp lang/c/tests/avro-1279-no-codec.avro $ARCH-build/tests + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" + # real test + # ctest +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/avro/SHA512SUM b/thirdparty/avro/SHA512SUM new file mode 100644 index 00000000..858cef61 --- /dev/null +++ b/thirdparty/avro/SHA512SUM @@ -0,0 +1 @@ +1a9a9fc2c1d88db06d099ace2cc67c2b634acdf38b5b42a3a1daed929abeaf19005a82dffc1de7cbce96a1b2133b78e4c04ab808eb6e960ce719b37d31488b95 avro-release-1.11.1.tar.gz diff --git a/thirdparty/avro/avro_oh_pkg.patch b/thirdparty/avro/avro_oh_pkg.patch new file mode 100644 index 00000000..af30ab40 --- /dev/null +++ b/thirdparty/avro/avro_oh_pkg.patch @@ -0,0 +1,48 @@ +diff -Naur avro-release-1.11.1_old/lang/c/examples/CMakeLists.txt avro-release-1.11.1/lang/c/examples/CMakeLists.txt +--- avro-release-1.11.1_old/lang/c/examples/CMakeLists.txt 2023-06-08 10:46:03.120338183 +0800 ++++ avro-release-1.11.1/lang/c/examples/CMakeLists.txt 2023-06-08 10:52:34.003978909 +0800 +@@ -27,6 +27,5 @@ + endif (WIN32) + + add_test(quickstop +- ${CMAKE_COMMAND} -E chdir ${AvroC_SOURCE_DIR}/examples + ${exec_name} + ) +diff -Naur avro-release-1.11.1_old/lang/c/tests/CMakeLists.txt avro-release-1.11.1/lang/c/tests/CMakeLists.txt +--- avro-release-1.11.1_old/lang/c/tests/CMakeLists.txt 2023-06-08 10:46:03.124338242 +0800 ++++ avro-release-1.11.1/lang/c/tests/CMakeLists.txt 2023-06-08 10:52:23.643924713 +0800 +@@ -35,7 +35,6 @@ + endif (WIN32) + + add_test(${name} +- ${CMAKE_COMMAND} -E chdir ${AvroC_SOURCE_DIR}/tests + ${exec_name} + ) + endmacro(add_avro_test) + + --- avro-release-1.11.1_old/lang/c++/impl/FileStream.cc 2023-06-14 19:21:41.028932840 +0800 ++++ avro-release-1.11.1/lang/c++/impl/FileStream.cc 2023-06-14 19:21:54.049117895 +0800 +@@ -87,7 +87,11 @@ + } + + void seek(size_t len) final { ++#ifdef __ILP32__ ++ off_t r = ::lseek(fd_, static_cast(len), SEEK_CUR); ++#else + off_t r = ::lseek(fd_, len, SEEK_CUR); ++#endif + if (r == static_cast(-1)) { + throw Exception(boost::format("Cannot skip file: %1%") % strerror(errno)); + } +--- avro-release-1.11.1_old/lang/c++/CMakeLists.txt 2023-06-15 14:31:14.401856054 +0800 ++++ avro-release-1.11.1/lang/c++/CMakeLists.txt 2023-06-15 14:31:42.806246942 +0800 +@@ -140,7 +140,7 @@ + + macro (gen file ns) + add_custom_command (OUTPUT ${file}.hh +- COMMAND avrogencpp ++ COMMAND ${HOST_BUILD_DIR}/avrogencpp + -p - + -i ${CMAKE_CURRENT_SOURCE_DIR}/jsonschemas/${file} + -o ${file}.hh -n ${ns} -U + diff --git a/thirdparty/avrocpp/HPKBUILD b/thirdparty/avrocpp/HPKBUILD new file mode 100644 index 00000000..8c3e395e --- /dev/null +++ b/thirdparty/avrocpp/HPKBUILD @@ -0,0 +1,68 @@ +# Contributor: wlxuz +# Maintainer: wlxuz + +pkgname=avrocpp +pkgver=release-1.11.1 +pkgrel=0 +pkgdesc="Apache Avro is a data serialization system." +url="https://github.com/apache/avro" +archs=("armeabi-v7a" "arm64-v8a") +license=("Apache-2.0 license") +depends=("boost") +makedepends=() +source="https://github.com/apache/avro/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +patchflag=false +buildhost=false + +builddir=avro-$pkgver +packagename=avro-$pkgver.tar.gz + +prepare() { + if [ $patchflag == false ];then + cd $builddir + patch -p1 < `pwd`/../avro_oh_pkg.patch + patchflag=true + cd $OLDPWD + fi + mkdir -p $builddir/$ARCH-build + mkdir -p $builddir/host-build + + if [ $buildhost == false ];then + cd $builddir + cmake -Bhost-build -Slang/c++ -L > `pwd`/host-build/build.log 2>&1 + make -j4 -C host-build avrogencpp >> `pwd`/host-build/build.log 2>&1 + cd $OLDPWD + buildhost=true + fi +} + +build() { + # 编译avro c++的版本 + cd $builddir + PKG_CONFIG_PATH="${pkgconfigpath}" ${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DHOST_BUILD_DIR=$(pwd)/host-build -DOHOS_ARCH=$ARCH -B$ARCH-build -Slang/c++ -L > `pwd`/$ARCH-build/build.log 2>&1 + make -j4 -C $ARCH-build >> `pwd`/$ARCH-build/build.log 2>&1 + + ret=$? + cd $OLDPWD + return $ret +} + +package() { + 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!" + # real test + # ctest +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/avrocpp/LICENSE.txt b/thirdparty/avrocpp/LICENSE.txt new file mode 100644 index 00000000..7e159a69 --- /dev/null +++ b/thirdparty/avrocpp/LICENSE.txt @@ -0,0 +1,570 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + https://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. + +---------------------------------------------------------------------- +License for the Jansson C JSON parser used in the C implementation: + +Copyright (c) 2009-2011 Petri Lehtinen + +Some files include an additional copyright notice: +* lang/c/jansson/src/pack_unpack.c + Copyright (c) 2011 Graeme Smecher +* lang/c/jansson/test/suites/api/test_unpack.c + Copyright (c) 2011 Graeme Smecher +* lang/c/jansson/src/memory.c + Copyright (c) 2011 Basile Starynkevitch + +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. + +---------------------------------------------------------------------- +License for msinttypes.h and msstdint.h used in the C implementation: +Source from: +https://code.google.com/p/msinttypes/downloads/detail?name=msinttypes-r26.zip + +Copyright (c) 2006-2008 Alexander Chemeris + +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions are met: +| +| 1. Redistributions of source code must retain the above copyright notice, +| this list of conditions and the following disclaimer. +| +| 2. Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| +| 3. The name of the author may be used to endorse or promote products +| derived from this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +| WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +| EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +| OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +| WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +| OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +| ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +License for st.c and st.h used in the C implementation: + +| This is a public domain general purpose hash table package written by +| Peter Moore @ UCB. + +---------------------------------------------------------------------- +License for Dirent API for Microsoft Visual Studio used in the C implementation: +Source from: +http://www.softagalleria.net/download/dirent/dirent-1.11.zip + +Copyright (C) 2006 Toni Ronkko + +| Permission is hereby granted, free of charge, to any person obtaining +| a copy of this software and associated documentation files (the +| ``Software''), to deal in the Software without restriction, including +| without limitation the rights to use, copy, modify, merge, publish, +| distribute, sublicense, and/or sell copies of the Software, and to +| permit persons to whom the Software is furnished to do so, subject to +| the following conditions: +| +| The above copyright notice and this permission notice shall be included +| in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS +| OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +| IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR +| OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +| ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +| OTHER DEALINGS IN THE SOFTWARE. + +---------------------------------------------------------------------- +License for ivy-2.2.0.jar used in the python implementation: + +Apache License version 2.0 (see above) + +---------------------------------------------------------------------- +License for pyAntTasks-1.3.jar used in the python implementation: + +Apache License version 2.0 (see above) + +---------------------------------------------------------------------- +License for NUnit binary included with the C# implementation: +File: nunit.framework.dll + +| NUnit License +| +| Copyright © 2002-2015 Charlie Poole +| Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov +| Copyright © 2000-2002 Philip A. Craig +| +| This software is provided 'as-is', without any express or implied warranty. In +| no event will the authors be held liable for any damages arising from the use +| of this software. +| +| Permission is granted to anyone to use this software for any purpose, including +| commercial applications, and to alter it and redistribute it freely, subject to +| the following restrictions: +| +| The origin of this software must not be misrepresented; you must not claim that +| you wrote the original software. If you use this software in a product, an +| acknowledgment (see the following) in the product documentation is required. +| +| Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James W. +| Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. +| Craig +| +| Altered source versions must be plainly marked as such, and must not be +| misrepresented as being the original software. +| +| This notice may not be removed or altered from any source distribution. +| License Note +| +| This license is based on the open source zlib/libpng license. The idea was to +| keep the license as simple as possible to encourage use of NUnit in free and +| commercial applications and libraries, but to keep the source code together and +| to give credit to the NUnit contributors for their efforts. While this license +| allows shipping NUnit in source and binary form, if shipping a NUnit variant is +| the sole purpose of your product, please let us know. + +---------------------------------------------------------------------- +License for the Json.NET binary included with the C# implementation: +File: Newtonsoft.Json.dll + +Copyright (c) 2007 James Newton-King + +| Permission is hereby granted, free of charge, to any person obtaining +| a copy of this software and associated documentation files (the +| "Software"), to deal in the Software without restriction, including +| without limitation the rights to use, copy, modify, merge, publish, +| distribute, sublicense, and/or sell copies of the Software, and to +| permit persons to whom the Software is furnished to do so, subject to +| the following conditions: +| +| The above copyright notice and this permission notice shall be +| included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------------------------------------------------------------- +License for the Castle Core binary included with the C# implementation: +File: Castle.Core.dll + +Copyright (c) 2004-2015 Castle Project + +License: Apache License version 2.0 (see above) +URL: https://opensource.org/licenses/Apache-2.0 + +---------------------------------------------------------------------- +License for the log4net binary included with the C# implementation: +File: log4net.dll + +Copyright 2004-2015 The Apache Software Foundation. + +License: Apache License version 2.0 (see above) + +---------------------------------------------------------------------- +License for the m4 macros used by the C++ implementation: + +Files: +* lang/c++/m4/m4_ax_boost_system.m4 + Copyright (c) 2008 Thomas Porschberg + Copyright (c) 2008 Michael Tindal + Copyright (c) 2008 Daniel Casimiro +* lang/c++/m4/m4_ax_boost_asio.m4 + Copyright (c) 2008 Thomas Porschberg + Copyright (c) 2008 Pete Greenwell +* lang/c++/m4/m4_ax_boost_filesystem.m4 + Copyright (c) 2009 Thomas Porschberg + Copyright (c) 2009 Michael Tindal + Copyright (c) 2009 Roman Rybalko +* lang/c++/m4/m4_ax_boost_thread.m4 + Copyright (c) 2009 Thomas Porschberg + Copyright (c) 2009 Michael Tindal +* lang/c++/m4/m4_ax_boost_regex.m4 + Copyright (c) 2008 Thomas Porschberg + Copyright (c) 2008 Michael Tindal +* lang/c++/m4/m4_ax_boost_base.m4 + Copyright (c) 2008 Thomas Porschberg + +License text: +| Copying and distribution of this file, with or without modification, are +| permitted in any medium without royalty provided the copyright notice +| and this notice are preserved. This file is offered as-is, without any +| warranty. + +---------------------------------------------------------------------- +License for the AVRO_BOOT_NO_TRAIT code in the C++ implementation: +File: lang/c++/api/Boost.hh + +| Boost Software License - Version 1.0 - August 17th, 2003 +| +| Permission is hereby granted, free of charge, to any person or organization +| obtaining a copy of the software and accompanying documentation covered by +| this license (the "Software") to use, reproduce, display, distribute, +| execute, and transmit the Software, and to prepare derivative works of the +| Software, and to permit third-parties to whom the Software is furnished to +| do so, all subject to the following: +| +| The copyright notices in the Software and this entire statement, including +| the above license grant, this restriction and the following disclaimer, +| must be included in all copies of the Software, in whole or in part, and +| all derivative works of the Software, unless such copies or derivative +| works are solely in the form of machine-executable object code generated by +| a source language processor. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +| SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +| FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +| ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +| DEALINGS IN THE SOFTWARE. + +---------------------------------------------------------------------- +License for jquery.tipsy.js, tipsy.js, and tipsy.css used by the Java IPC implementation: + +Copyright (c) 2008 Jason Frame (jason@onehackoranother.com) + +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. + +---------------------------------------------------------------------- +License for protovis-r3.2.js used by the Java IPC implementation: + +Copyright (c) 2010, Stanford Visualization Group +All rights reserved. + +| Redistribution and use in source and binary forms, with or without modification, +| are permitted provided that the following conditions are met: +| +| * Redistributions of source code must retain the above copyright notice, +| this list of conditions and the following disclaimer. +| +| * Redistributions in binary form must reproduce the above copyright notice, +| this list of conditions and the following disclaimer in the documentation +| and/or other materials provided with the distribution. +| +| * Neither the name of Stanford University nor the names of its contributors +| may be used to endorse or promote products derived from this software +| without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +License for g.Raphael 0.4.1 used by the Java IPC implementation: + +Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com) +Licensed under the MIT (https://www.opensource.org/licenses/mit-license.php) license. + +---------------------------------------------------------------------- +License for jQuery v1.4.2 used by the Java IPC implementation: + +Copyright 2010, John Resig +Dual licensed under the MIT or GPL Version 2 licenses. +https://jquery.org/license + +jQuery includes Sizzle.js +https://sizzlejs.com/ +Copyright 2010, The Dojo Foundation +Released under the MIT, BSD, and GPL Licenses. + +Both are included under the terms of the MIT license: + +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. + +---------------------------------------------------------------------- +License for portions of idl.jj in the Java compiler implementation: + +Portions of idl.jj were modeled after the example Java 1.5 +parser included with JavaCC. For those portions: + +Copyright (c) 2006, Sun Microsystems, Inc. +All rights reserved. + +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions are met: +| +| * Redistributions of source code must retain the above copyright notice, +| this list of conditions and the following disclaimer. +| * Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| * Neither the name of the Sun Microsystems, Inc. nor the names of its +| contributors may be used to endorse or promote products derived from +| this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +| THE POSSIBILITY OF SUCH DAMAGE. diff --git a/thirdparty/avrocpp/NOTICE.txt b/thirdparty/avrocpp/NOTICE.txt new file mode 100644 index 00000000..737629b0 --- /dev/null +++ b/thirdparty/avrocpp/NOTICE.txt @@ -0,0 +1,75 @@ +Apache Avro +Copyright 2010-2019 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + +NUnit license acknowledgement: + +| Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James +| W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 +| Philip A. Craig + +Based upon the representations of upstream licensors, it is understood that +portions of the mapreduce API included in the Java implementation are licensed +from various contributors under one or more contributor license agreements to +Odiago, Inc. and were then contributed by Odiago to Apache Avro, which has now +made them available under the Apache 2.0 license. The original file header text +is: + +| Licensed to Odiago, Inc. under one or more contributor license +| agreements. See the NOTICE file distributed with this work for +| additional information regarding copyright ownership. Odiago, Inc. +| licenses this file to you 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 +| +| https://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. + +The Odiago NOTICE at the time of the contribution: + +| This product includes software developed by Odiago, Inc. +| (https://www.wibidata.com). + +Apache Ivy includes the following in its NOTICE file: + +| Apache Ivy +| Copyright 2007-2010 The Apache Software Foundation +| +| This product includes software developed by +| The Apache Software Foundation (https://www.apache.org/). +| +| Portions of Ivy were originally developed by +| Jayasoft SARL (http://www.jayasoft.fr/) +| and are licensed to the Apache Software Foundation under the +| "Software Grant License Agreement" +| +| SSH and SFTP support is provided by the JCraft JSch package, +| which is open source software, available under +| the terms of a BSD style license. +| The original software and related information is available +| at http://www.jcraft.com/jsch/. + +Apache Log4Net includes the following in its NOTICE file: + +| Apache log4net +| Copyright 2004-2015 The Apache Software Foundation +| +| This product includes software developed at +| The Apache Software Foundation (https://www.apache.org/). + +csharp reflect serializers were contributed by Pitney Bowes Inc. + +| Copyright 2019 Pitney Bowes Inc. +| 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 https://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. + diff --git a/thirdparty/avrocpp/OAT.xml b/thirdparty/avrocpp/OAT.xml new file mode 100644 index 00000000..96937ea0 --- /dev/null +++ b/thirdparty/avrocpp/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/avrocpp/README.OpenSource b/thirdparty/avrocpp/README.OpenSource new file mode 100644 index 00000000..4db6dd26 --- /dev/null +++ b/thirdparty/avrocpp/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "avrocpp", + "License": "Apache-2.0 license", + "License File": "LICENSES", + "Version Number": "1.11.1", + "Owner": "wlxuz@isoftstone.com", + "Upstream URL": "https://github.com/apache/avro/archive/refs/tags/release-1.11.1.tar.gz", + "Description": "Apache Avro is a data serialization system." + } +] \ No newline at end of file diff --git a/thirdparty/avrocpp/README_zh.md b/thirdparty/avrocpp/README_zh.md new file mode 100644 index 00000000..7bde21e9 --- /dev/null +++ b/thirdparty/avrocpp/README_zh.md @@ -0,0 +1,12 @@ +# avro三方库说明 +## 功能简介 +avro是指数据序列化的系统,有丰富的数据结构类型、快速可压缩的二进制数据形式。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:release-1.11.1 +- 当前适配的功能:提供数据的序列化框架 +- [Apache License](https://github.com/apache/avro/blob/master/LICENSE.txt) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) \ No newline at end of file diff --git a/thirdparty/avrocpp/SHA512SUM b/thirdparty/avrocpp/SHA512SUM new file mode 100644 index 00000000..858cef61 --- /dev/null +++ b/thirdparty/avrocpp/SHA512SUM @@ -0,0 +1 @@ +1a9a9fc2c1d88db06d099ace2cc67c2b634acdf38b5b42a3a1daed929abeaf19005a82dffc1de7cbce96a1b2133b78e4c04ab808eb6e960ce719b37d31488b95 avro-release-1.11.1.tar.gz diff --git a/thirdparty/avrocpp/avro_oh_pkg.patch b/thirdparty/avrocpp/avro_oh_pkg.patch new file mode 100644 index 00000000..1c7d0726 --- /dev/null +++ b/thirdparty/avrocpp/avro_oh_pkg.patch @@ -0,0 +1,25 @@ +--- avro-release-1.11.1_old/lang/c++/impl/FileStream.cc 2023-06-14 19:21:41.028932840 +0800 ++++ avro-release-1.11.1/lang/c++/impl/FileStream.cc 2023-06-14 19:21:54.049117895 +0800 +@@ -87,7 +87,11 @@ + } + + void seek(size_t len) final { ++#ifdef __ILP32__ ++ off_t r = ::lseek(fd_, static_cast(len), SEEK_CUR); ++#else + off_t r = ::lseek(fd_, len, SEEK_CUR); ++#endif + if (r == static_cast(-1)) { + throw Exception(boost::format("Cannot skip file: %1%") % strerror(errno)); + } +--- avro-release-1.11.1_old/lang/c++/CMakeLists.txt 2023-06-15 14:31:14.401856054 +0800 ++++ avro-release-1.11.1/lang/c++/CMakeLists.txt 2023-06-15 14:31:42.806246942 +0800 +@@ -140,7 +140,7 @@ + + macro (gen file ns) + add_custom_command (OUTPUT ${file}.hh +- COMMAND avrogencpp ++ COMMAND ${HOST_BUILD_DIR}/avrogencpp + -p - + -i ${CMAKE_CURRENT_SOURCE_DIR}/jsonschemas/${file} + -o ${file}.hh -n ${ns} -U diff --git a/thirdparty/avrocpp/docs/hap_integrate.md b/thirdparty/avrocpp/docs/hap_integrate.md new file mode 100644 index 00000000..fc0f999e --- /dev/null +++ b/thirdparty/avrocpp/docs/hap_integrate.md @@ -0,0 +1,88 @@ +# avro集成到应用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 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/avrocpp #三方库avrocpp的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将avrocpp拷贝至tools/main目录下 + + ```shell + cd tpc_c_cplusplus + cp -rf thirdparty/protobuf tools/main + ``` + +- 在tools目录下编译三方库 + 编译需要先安装libboost-all-dev + ```shell + sudo apt-get install libboost-all-dev + ``` + + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + + ```shell + cd tools + ./build.sh avrocpp boost + ``` + +- 三方库头文件及生成的库 + + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + avrocpp/arm64-v8a avrocpp/armeabi-v7a + ``` +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示: + ![thirdparty_install_dir](pic/avrocpp_install_dir.png) + +- 在最外层(entry/src/main/cpp)目录下CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + #使用c语言库 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/avro/${OHOS_ARCH}/lib/libavro.so) + + #使用c++库 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/avrocpp/${OHOS_ARCH}/lib/libavrocpp.so) + + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/avrocpp/${OHOS_ARCH}/include) + ``` + 在entry/build-profile.json5 添加配置: + ![pic/avro_build.png](pic/avro_build.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) diff --git a/thirdparty/avrocpp/docs/pic/avro_build.png b/thirdparty/avrocpp/docs/pic/avro_build.png new file mode 100755 index 0000000000000000000000000000000000000000..3a44fbf78c725c6d94bc99434b2eca64cf72b8a9 GIT binary patch literal 52138 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