diff options
author | Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org> | 2021-03-29 18:00:00 +0000 |
---|---|---|
committer | Georgy Yakovlev <gyakovlev@gentoo.org> | 2021-04-01 20:03:39 -0700 |
commit | 619cfe3daec298493d31030008efc12e5ebbf7ec (patch) | |
tree | 03502e7402fab2a81b1b6259420adc25e04e7076 /dev-cpp/abseil-cpp | |
parent | sci-mathematics/maxima: require USE="ansi" and USE="readline" for gcl. (diff) | |
download | gentoo-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>
Diffstat (limited to 'dev-cpp/abseil-cpp')
-rw-r--r-- | dev-cpp/abseil-cpp/abseil-cpp-20200923.2.ebuild | 14 | ||||
-rw-r--r-- | dev-cpp/abseil-cpp/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 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 |