summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>2021-03-29 18:00:00 +0000
committerGeorgy Yakovlev <gyakovlev@gentoo.org>2021-04-01 20:03:39 -0700
commit619cfe3daec298493d31030008efc12e5ebbf7ec (patch)
tree03502e7402fab2a81b1b6259420adc25e04e7076
parentsci-mathematics/maxima: require USE="ansi" and USE="readline" for gcl. (diff)
downloadgentoo-619cfe3daec298493d31030008efc12e5ebbf7ec.tar.gz
gentoo-619cfe3daec298493d31030008efc12e5ebbf7ec.tar.bz2
gentoo-619cfe3daec298493d31030008efc12e5ebbf7ec.zip
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@Apache.Org> Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>
-rw-r--r--dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild14
-rw-r--r--dev-cpp/abseil-cpp/files/abseil-cpp-20200923-arm_no_crypto.patch16
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 8e62b032d05f..90be485e13ae 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 000000000000..b74a6c70e904
--- /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