74 lines
2.1 KiB
Bash
Executable File
74 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright The OpenTelemetry Authors
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set -ex
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
[ -z "${ABSEIL_CPP_VERSION}" ] && export ABSEIL_CPP_VERSION="20240116.1"
|
|
|
|
TOPDIR=`pwd`
|
|
|
|
BUILD_DIR=/tmp/
|
|
INSTALL_DIR=/usr/local/
|
|
pushd $BUILD_DIR
|
|
git clone --depth=1 -b ${ABSEIL_CPP_VERSION} https://github.com/abseil/abseil-cpp.git
|
|
cd abseil-cpp
|
|
ABSEIL_CPP_BUILD_OPTIONS=(
|
|
"-DBUILD_TESTING=OFF"
|
|
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
|
|
"-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR"
|
|
)
|
|
|
|
if [ ! -z "${CXX_STANDARD}" ]; then
|
|
ABSEIL_CPP_BUILD_OPTIONS+=("-DCMAKE_CXX_STANDARD=${CXX_STANDARD}")
|
|
ABSEIL_CPP_BUILD_OPTIONS+=("-DCMAKE_CXX_STANDARD_REQUIRED=ON")
|
|
ABSEIL_CPP_BUILD_OPTIONS+=("-DCMAKE_CXX_EXTENSIONS=OFF")
|
|
fi
|
|
|
|
#
|
|
# ABSEIL_CPP_VERSION="20240116.1" fails to build with CMake 3.30
|
|
# ABSEIL_CPP_VERSION="20240116.2" fails to build with CMake 3.30
|
|
# note that somehow the same builds with CMake 3.29.6
|
|
#
|
|
# Error reported:
|
|
# CMake Error at CMake/AbseilHelpers.cmake:317 (target_link_libraries):
|
|
# The link interface of target "test_allocator" contains:
|
|
#
|
|
# GTest::gmock
|
|
#
|
|
# but the target was not found. Possible reasons include:
|
|
#
|
|
# * There is a typo in the target name.
|
|
# * A find_package call is missing for an IMPORTED target.
|
|
# * An ALIAS target is missing.
|
|
#
|
|
# Call Stack (most recent call first):
|
|
# absl/container/CMakeLists.txt:206 (absl_cc_library)
|
|
#
|
|
# Root cause:
|
|
# https://github.com/abseil/abseil-cpp/pull/1536
|
|
#
|
|
# Applying fix from abseil commit 779a3565ac6c5b69dd1ab9183e500a27633117d5
|
|
#
|
|
# TODO(marcalff) Cleanup once abseil is upgraded to the next LTS
|
|
|
|
|
|
if [ "${ABSEIL_CPP_VERSION}" = "20240116.1" ] || [ "${ABSEIL_CPP_VERSION}" = "20240116.2" ]; then
|
|
echo "Patching abseil"
|
|
patch -p1 < ${TOPDIR}/ci/fix-abseil-cpp-issue-1536.patch
|
|
else
|
|
echo "Not patching abseil"
|
|
fi
|
|
|
|
echo "Building abseil ${ABSEIL_CPP_VERSION}"
|
|
echo "CMake build options:" "${ABSEIL_CPP_BUILD_OPTIONS[@]}"
|
|
|
|
mkdir build && pushd build
|
|
cmake "${ABSEIL_CPP_BUILD_OPTIONS[@]}" ..
|
|
make -j $(nproc)
|
|
make install
|
|
popd
|
|
popd
|
|
export PATH=${INSTALL_DIR}/bin:$PATH # ensure to use the installed abseil
|