#!/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_ "${@}"