| # Copyright 2020-2021 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=7 |
| |
| PYTHON_COMPAT=( python3_{6,7,8,9} ) |
| |
| inherit cmake flag-o-matic python-any-r1 toolchain-funcs |
| |
| # yes, it needs SOURCE, not just installed one |
| GTEST_COMMIT="aee0f9d9b5b87796ee8a0ab26b7587ec30e8858e" |
| GTEST_FILE="gtest-1.10.0_p20200702.tar.gz" |
| |
| DESCRIPTION="Abseil Common Libraries (C++), LTS Branch" |
| HOMEPAGE="https://abseil.io" |
| SRC_URI="https://github.com/abseil/abseil-cpp/archive/${PV}.tar.gz -> ${P}.tar.gz |
| test? ( https://github.com/google/googletest/archive/${GTEST_COMMIT}.tar.gz -> ${GTEST_FILE} )" |
| |
| LICENSE=" |
| Apache-2.0 |
| test? ( BSD ) |
| " |
| SLOT="0/${PV%%.*}" |
| KEYWORDS="*" |
| IUSE="test" |
| |
| DEPEND="!=dev-cpp/absl-20210324.1" |
| RDEPEND="${DEPEND}" |
| |
| BDEPEND=" |
| ${PYTHON_DEPS} |
| test? ( sys-libs/timezone-data ) |
| " |
| |
| RESTRICT="!test? ( test )" |
| |
| PATCHES=( |
| "${FILESDIR}/${PN}-20200923-arm_no_crypto.patch" |
| ) |
| |
| ABSLDIR="${WORKDIR}/${P}_build/absl" |
| |
| src_prepare() { |
| # Workaround to avoid conflict with other packages: see also b/184603259 |
| grep -l -R -Z "absl::" . | xargs -0 sed -i 's/absl::/absl::ABSL_OPTION_INLINE_NAMESPACE_NAME::/g' |
| |
| cmake_src_prepare |
| |
| # un-hardcode abseil compiler flags |
| sed -i \ |
| -e '/"-maes",/d' \ |
| -e '/"-msse4.1",/d' \ |
| -e '/"-mfpu=neon"/d' \ |
| -e '/"-march=armv8-a+crypto"/d' \ |
| absl/copts/copts.py || die |
| |
| # now generate cmake files |
| python_fix_shebang absl/copts/generate_copts.py |
| absl/copts/generate_copts.py || die |
| |
| if use test; then |
| sed -i 's/-Werror//g' \ |
| "${WORKDIR}/googletest-${GTEST_COMMIT}"/googletest/cmake/internal_utils.cmake || die |
| fi |
| } |
| |
| src_configure() { |
| if use arm || use arm64; then |
| # bug #778926 |
| if [[ $($(tc-getCXX) ${CXXFLAGS} -E -P - <<<$'#if defined(__ARM_FEATURE_CRYPTO)\nHAVE_ARM_FEATURE_CRYPTO\n#endif') != *HAVE_ARM_FEATURE_CRYPTO* ]]; then |
| append-cxxflags -DABSL_ARCH_ARM_NO_CRYPTO |
| fi |
| fi |
| |
| local mycmakeargs=( |
| -DABSL_ENABLE_INSTALL=TRUE |
| -DABSL_LOCAL_GOOGLETEST_DIR="${WORKDIR}/googletest-${GTEST_COMMIT}" |
| -DCMAKE_CXX_STANDARD=17 |
| $(usex test -DBUILD_TESTING=ON '') #intentional usex |
| ) |
| cmake_src_configure |
| } |
| |
| src_compile() { |
| cmake_src_compile |
| |
| local libs=( "${ABSLDIR}"/*/libabsl_*.so ) |
| [[ ${#libs[@]} -le 1 ]] && die |
| local linklibs="$(echo "${libs[*]}" | sed -E -e 's|[^ ]*/lib([^ ]*)\.so|-l\1|g')" |
| sed -e "s/@LIBS@/${linklibs}/g" -e "s/@PV@/${PV}/g" \ |
| "${FILESDIR}/absl.pc.in" > absl.pc || die |
| } |
| |
| src_install() { |
| cmake_src_install |
| |
| insinto /usr/$(get_libdir)/pkgconfig |
| doins absl.pc |
| } |