summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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