commit: 619cfe3daec298493d31030008efc12e5ebbf7ec Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org> AuthorDate: Mon Mar 29 18:00:00 2021 +0000 Commit: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> CommitDate: Fri Apr 2 03:03:39 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=619cfe3d
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 <Arfrever <AT> Apache.Org> Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org> dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild | 14 ++++++++++++-- .../files/abseil-cpp-20200923-arm_no_crypto.patch | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) 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..b74a6c70e90 --- /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