oss-build-scripts/projects/abseil-cpp/ossbuild-abseil-cpp.bash
Kai Tetzlaff (kai+qnas) 99a79e2218 Refactor lib/ossbuild-common.bash and adapt projects to changes
* 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
2024-05-18 01:48:22 +02:00

93 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# See:
#
# - https://github.com/abseil/abseil-cpp
LIB_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")/../../lib")"
source "${LIB_DIR}/ossbuild-common.bash"
ABSEIL_CPP_DEFAULT_VERSION='20230125.3'
#https://github.com/abseil/abseil-cpp/archive/refs/tags/20230125.3.tar.gz
ossbuild-prepare-abseil-cpp() {
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="$(ossbuild-project-src-path "$(ossbuild-project-archive-gnu)")"
archive_url="${gh_url}/archive/refs/tags/${version}.tar.gz"
src_tree="$(ossbuild-project-src-path "$(ossbuild-project-namever-gnu)")"
ossbuild-project-var-set ARCHIVE "${archive}"
ossbuild-project-var-set ARCHIVE_URL "${archive_url}"
ossbuild-project-var-set SRC_TREE "${src_tree}"
ossbuild-src-tar "${archive_url}" "${archive}"
[ -d "${src_tree}" ] || {
bsl_loge "failed to create '${src_tree}'"
ossbuild-project-var-unset SRC_TREE
return 2
}
}
ossbuild-build-abseil-cpp() {
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}"
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+=(
'-DCMAKE_CXX_STANDARD=14'
'-DABSL_PROPAGATE_CXX_STD=ON'
)
if ossbuild-run-tests-p; then
if is-qnap-qts; then
bsl_logw "when last checked (20230630) running Abseil tests on QNAO/QTS does not work"
else
generate_opts+=(
'-DABSL_BUILD_TESTING=ON'
'-DABSL_USE_GOOGLETEST_HEAD=ON'
)
fi
fi
ossbuild-cmd cmake "${generate_opts[@]}" "${src_tree}"
ossbuild-cmd cmake --build "${build_tree}"
return 1
}
ossbuild-install-abseil-cpp() {
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-abseil-cpp() {
ossbuild-project-gh-init 'abseil' 'abseil-cpp'
ossbuild-project-build-steps-all "${@}"
}
#
# run script, skip if sourced (while avoiding shellcheck issues)
#
(return 0 2>/dev/null) || ossbuild-abseil-cpp "${@}"