From 6b3b94679fa7842f8f7d2d925e90502245e1a02f Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Mon, 29 Mar 2021 18:00:00 +0000 Subject: [PATCH] dev-cpp/abseil-cpp: Fix building on ARM{32,64} CPUs without crypto extension. Closes: https://bugs.gentoo.org/778926 Signed-off-by: Arfrever Frehtes Taifersar Arahesis --- dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild | 14 ++++++++++++-- .../abseil-cpp-20200923-arm_no_crypto.patch | 16 +++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 dev-cpp/abseil-cpp/files/abseil-cpp-20200923-arm_no_crypto.patch diff --git a/dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild b/dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild index 8e62b032d05..90be485e13a 100644 --- a/dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild +++ b/dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild @@ -1,11 +1,11 @@ -# Copyright 2020 Gentoo Authors +# Copyright 2020-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 PYTHON_COMPAT=( python3_{7,8,9} ) -inherit cmake python-any-r1 +inherit cmake python-any-r1 toolchain-funcs # yes, it needs SOURCE, not just installed one GTEST_COMMIT="aee0f9d9b5b87796ee8a0ab26b7587ec30e8858e" @@ -34,6 +34,10 @@ BDEPEND=" RESTRICT="!test? ( test )" +PATCHES=( + "${FILESDIR}/${PN}-20200923-arm_no_crypto.patch" +) + src_prepare() { cmake_src_prepare @@ -53,6 +57,12 @@ src_prepare() { } src_configure() { + if use arm || use arm64; then + 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}" diff --git a/dev-cpp/abseil-cpp/files/abseil-cpp-20200923-arm_no_crypto.patch b/dev-cpp/abseil-cpp/files/abseil-cpp-20200923-arm_no_crypto.patch new file mode 100644 index 00000000000..ded9bbe68b4 --- /dev/null +++ b/dev-cpp/abseil-cpp/files/abseil-cpp-20200923-arm_no_crypto.patch @@ -0,0 +1,16 @@ +--- /absl/random/internal/randen_hwaes.cc ++++ /absl/random/internal/randen_hwaes.cc +@@ -50,8 +50,11 @@ + (defined(__ARM_NEON) && defined(__ARM_FEATURE_CRYPTO)) + #define ABSL_RANDEN_HWAES_IMPL 1 + +-#elif ABSL_RANDOM_INTERNAL_AES_DISPATCH && !defined(__APPLE__) && \ +- (defined(__GNUC__) && __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 9) ++// When ABSL_ARCH_ARM_NO_CRYPTO is defined, then ARM CPU without ++// crypto extension is assumed. ++#elif !defined(ABSL_ARCH_ARM_NO_CRYPTO) && \ ++ (ABSL_RANDOM_INTERNAL_AES_DISPATCH && !defined(__APPLE__) && \ ++ (defined(__GNUC__) && __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 9)) + // ...or, on GCC, we can use an ASM directive to + // instruct the assember to allow crypto instructions. + #define ABSL_RANDEN_HWAES_IMPL 1 -- 2.31.0