* Use common prefixes for project specific build step functions: - ossbuild-prepare-<prjname> - ossbuild-build-<prjname> - ossbuild-install-<prjname> * New project specific build step function: ossbuild-configure-ok-p-<prjname> * New environment variable OSSBUILD_SKIP. Allows users to skip listed (comma separated) build steps. * Remove `-generic` from common function names. * Improve ossbuild-pushd/popd functions. * Improve doc comments. * Adapt projects to renamed functions
87 lines
2.4 KiB
Bash
Executable File
87 lines
2.4 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-prepare-protobuf() {
|
|
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-build-protobuf() {
|
|
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-install-protobuf() {
|
|
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[@]}"
|
|
}
|
|
|
|
ossbuild-protobuf() {
|
|
ossbuild-project-gh-init 'protocolbuffers' 'protobuf'
|
|
ossbuild-project-build-steps-all "${@}"
|
|
}
|
|
|
|
#
|
|
# run script, skip if sourced (while avoiding shellcheck issues)
|
|
#
|
|
(return 0 2>/dev/null) || ossbuild-protobuf "${@}"
|