From 5058d21a91535019601a3ee1e04d8ddc4a11fefd Mon Sep 17 00:00:00 2001 From: "Kai Tetzlaff (qnas)" Date: Fri, 30 Jun 2023 08:11:24 +0200 Subject: [PATCH] Add project: profobuf (https://github.com/protocolbuffers/protobuf) --- projects/protobuf/ossbuild-protobuf.bash | 83 ++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 projects/protobuf/ossbuild-protobuf.bash diff --git a/projects/protobuf/ossbuild-protobuf.bash b/projects/protobuf/ossbuild-protobuf.bash new file mode 100755 index 0000000..f1b9784 --- /dev/null +++ b/projects/protobuf/ossbuild-protobuf.bash @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +# See: +# +# - https://github.com/protocolbuffers/protobuf +# - https://github.com/protocolbuffers/protobuf/blob/main/src/README.md +# - https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md + +LIB_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")/../../lib")" +source "${LIB_DIR}/ossbuild-common.bash" + +#PROTOBUF_DEFAULT_VERSION='23.3' +#https://github.com/protocolbuffers/protobuf/releases/download/v23.3/protobuf-23.3.tar.gz + +ossbuild-protobuf-prepare() { + local version gh_url archive archive_url src_tree + ossbuild-project-var-get -v version VERSION + ossbuild-project-var-get -v gh_url GH_URL + archive="protobuf-${version}.tar.gz" + archive_url="${gh_url}/releases/download/v${version}/${archive}" + src_tree="$(ossbuild-project-src-path "$(basename "${archive}" .tar.gz)")" + + ossbuild-project-var-set ARCHIVE "$(ossbuild-project-src-base)/${archive}" + ossbuild-project-var-set ARCHIVE_URL "${archive_url}" + ossbuild-project-var-set SRC_TREE "${src_tree}" + + ossbuild-src-tar "${archive_url}" + + [ -d "${src_tree}" ] || { + bsl_loge "failed to create '${src_tree}'" + ossbuild-project-var-unset SRC_TREE + return 2 + } +} + +ossbuild-protobuf-build() { + local src_tree build_tree + ossbuild-project-var-get -v src_tree SRC_TREE + build_tree="${src_tree}/ossbuild" + ossbuild-project-var-set BUILD_TREE "${build_tree}" + + echo "src: '${src_tree}'" + echo "build: '${build_tree}'" + + local generate_opts=( + -B "${build_tree}" + -G Ninja + '-DCMAKE_BUILD_TYPE=Release' + "-DCMAKE_INSTALL_PREFIX=${PREFIX}" + ) + if is-qnap-qts; then + generate_opts+=( + '-DCMAKE_INSTALL_LIBDIR=lib' + ) + fi + generate_opts+=( + "-Dprotobuf_BUILD_TESTS=OFF" + "-Dprotobuf_ABSL_PROVIDER=package" + ) + + ossbuild-cmd cmake "${generate_opts[@]}" "${src_tree}" + ossbuild-cmd cmake --build "${build_tree}" +} + +ossbuild-protobuf-install() { + local build_tree + ossbuild-project-var-get -v build_tree BUILD_TREE + + local cmd=( + cmake + --build "${build_tree}" + --target 'install' + ) + ossbuild-writable-p "${PREFIX}" || cmd=(sudo "${cmd[@]}") + ossbuild-cmd "${cmd[@]}" +} + +_main_() { + ossbuild-project-gh-init 'protocolbuffers' 'protobuf' + ossbuild-project-build-steps-all "${@}" +} + +_main_ "${@}"