oss-build-scripts/projects/protobuf/ossbuild-protobuf.bash

84 lines
2.3 KiB
Bash
Executable File

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