diff --git a/projects/abseil-cpp/README.org b/projects/abseil-cpp/README.org new file mode 100644 index 0000000..c380f6d --- /dev/null +++ b/projects/abseil-cpp/README.org @@ -0,0 +1,11 @@ +#+title: Abseil - C++ Common Libraries + +Abseil is an open-source collection of C++ code (compliant to C++14) designed to +augment the C++ standard library. + +See https://github.com/abseil/abseil-cpp. + +* Issues +** Building/running tests on QNAP/QTS 4.x (using Entware-NG) does not work + +Trying to enable tests results in build failures. diff --git a/projects/abseil-cpp/ossbuild-abseil-cpp.bash b/projects/abseil-cpp/ossbuild-abseil-cpp.bash new file mode 100755 index 0000000..db40872 --- /dev/null +++ b/projects/abseil-cpp/ossbuild-abseil-cpp.bash @@ -0,0 +1,88 @@ +#!/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-abseil-cpp-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="$(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-abseil-cpp-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}" + + 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}" +} + +ossbuild-abseil-cpp-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 'abseil' 'abseil-cpp' + ossbuild-project-build-steps-all "${@}" +} + +_main_ "${@}"