summaryrefslogtreecommitdiff
path: root/dev-cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/Manifest.gzbin14634 -> 14615 bytes
-rw-r--r--dev-cpp/abseil-cpp/Manifest9
-rw-r--r--dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r3.ebuild1
-rw-r--r--dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r4.ebuild67
-rw-r--r--dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r3.ebuild (renamed from dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r2.ebuild)7
-rw-r--r--dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r3.ebuild (renamed from dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r2.ebuild)7
-rw-r--r--dev-cpp/abseil-cpp/files/abseil-cpp-20230802.0-conditional-use-of-lzcnt.patch49
-rw-r--r--dev-cpp/abseil-cpp/files/abseil-cpp-random-tests.patch19
-rw-r--r--dev-cpp/asio/Manifest2
-rw-r--r--dev-cpp/asio/asio-1.30.2.ebuild64
-rw-r--r--dev-cpp/catch/Manifest2
-rw-r--r--dev-cpp/catch/catch-3.6.0.ebuild2
-rw-r--r--dev-cpp/cppgir/Manifest2
-rw-r--r--dev-cpp/cppgir/cppgir-2.0_p20240315.ebuild2
-rw-r--r--dev-cpp/eigen/Manifest2
-rw-r--r--dev-cpp/eigen/eigen-3.4.0-r3.ebuild458
-rw-r--r--dev-cpp/eigen/files/eigen-3.4.0-ppc-no-vsx.patch195
-rw-r--r--dev-cpp/gtest/Manifest2
-rw-r--r--dev-cpp/gtest/gtest-1.14.0-r1.ebuild2
-rw-r--r--dev-cpp/kokkos/Manifest2
-rw-r--r--dev-cpp/kokkos/kokkos-4.3.1.ebuild56
-rw-r--r--dev-cpp/range-v3/Manifest2
-rw-r--r--dev-cpp/range-v3/range-v3-0.12.0.ebuild2
-rw-r--r--dev-cpp/robin-map/Manifest4
-rw-r--r--dev-cpp/robin-map/robin-map-1.3.0.ebuild37
-rw-r--r--dev-cpp/robin-map/robin-map-9999.ebuild23
-rw-r--r--dev-cpp/tbb/Manifest3
-rw-r--r--dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch38
-rw-r--r--dev-cpp/tbb/tbb-2021.13.0.ebuild49
-rw-r--r--dev-cpp/xsimd/Manifest4
-rw-r--r--dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch148
-rw-r--r--dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch88
-rw-r--r--dev-cpp/xsimd/xsimd-13.0.0.ebuild60
33 files changed, 1391 insertions, 17 deletions
diff --git a/dev-cpp/Manifest.gz b/dev-cpp/Manifest.gz
index e526fe4475f4..f139f7caf37f 100644
--- a/dev-cpp/Manifest.gz
+++ b/dev-cpp/Manifest.gz
Binary files differ
diff --git a/dev-cpp/abseil-cpp/Manifest b/dev-cpp/abseil-cpp/Manifest
index a2c345de24d2..d269d37a6827 100644
--- a/dev-cpp/abseil-cpp/Manifest
+++ b/dev-cpp/abseil-cpp/Manifest
@@ -3,7 +3,9 @@ AUX abseil-cpp-20211102.0-r2-cuda11.6-compile-fix.patch 741 BLAKE2B 22bc89e5b0ed
AUX abseil-cpp-20211102.0-r2-gcc-13.patch 951 BLAKE2B ad2a13d2260d7cfdfe95b07f1582bbf5ce627d8d8bf1e32b70834611065359b95d17b198c2b0aef70ff353dc289903c70ee9be95d40ef38f75c1872f08987eb1 SHA512 73aae8c3c90d87da47a8a37b68721fa06f44abcf02e829fecdcc076999f420a513005e946662bfeb073cf19a06916b1b400b3f35811ddfbe9b0fde75b4d87a53
AUX abseil-cpp-20211102.0-r2-loong.patch 739 BLAKE2B a3082b6da75719f57287dfac5b67e70ced0ebdbf3e2682c273d7022b024a92fedc8d33c781bafe167675a6a1cd592dbaf915c4031e6dca6aca2513451717cdc8 SHA512 d77e896e145e71b96be32779adb12cbaeabb3a69e5e57a0f47fdf428baf3b6ea22484e9a02979bf15f839417b13e74d0629a6d7207ad0bfa4f44eb9e1eb82867
AUX abseil-cpp-20230125.2-musl-1.2.4.patch 2203 BLAKE2B 74ebf85e5f35de255fbf5a757655fedd8f5821558ecf700fcc06e30950ce4bb802ca2431cf8b15d05ddc3a7bf2818eec49bf38c2e33d033df0c2973983340ed4 SHA512 404a3c25135573292cbe90f3fb459172a936abc2ec4739e57b8a1dac300a3e0b848ba18aaab5f6dfd12315de736175b962174022a7969149221bf595738bebb1
+AUX abseil-cpp-20230802.0-conditional-use-of-lzcnt.patch 2148 BLAKE2B 978304f3ff8f46ac8fcd7c708f464cacf657f5f4f76a5bab5c4db6e14dcde0bbc7b2ae03c8b74a527218eab737cbacb9219b1a87ee2af8dde8795d3c1b43c7af SHA512 c94ba837440e2c49f3703492f0eb51c7f1930d8d700660d6db56985ad05fe61d3c97656ba8e0a818b843f04c939bdeb4134005420ad561068c52f64ee481f091
AUX abseil-cpp-20230802.0-sdata-tests.patch 1541 BLAKE2B ae6cebeefc794e89101bd4d0a3a1c022e651dfdb312401fbbf035f6c2afbde8162c132f692e89a075cb1811ae9e0708652c469107047cba49618c0ef752eb108 SHA512 bda7cec902c1f71173b4e7bf2e35c3fffc5de216dc84680e9a0de56b1bb5b9ea4f50cb603e690275e1fc9e2fcbc8ad998a8dadb655fb96d28a651ac80bc2f764
+AUX abseil-cpp-random-tests.patch 660 BLAKE2B 60ef86170310b6ababed9f07fc2e40ca12b278f2202de3d1ae3f028eb081b3de0ba6e245211457e0c2d764142916c2a3c7a46c813ba2bc5536c50edebaf4c3f6 SHA512 d2356539fb38a16cc52cd11106d87613c46a4757827bdea22f4a42f5ea7d557387477ce17a20fa54051488f66b1e628be9e539948cdb1e87970174d3894b1d80
DIST abseil-cpp-20211102.0.tar.gz 1884080 BLAKE2B a148f3b7cc9516fbeacc25116032a956bfa3cce61b4294c226e826e1171d24c043ab199757a11fae3fec0bc307b2222773a6b4f4563b289f7565b0ce4f72318a SHA512 fed68aa434c02ec6faa9d1c81f1ad35b60ec024b44957e2e0ac31e6075e385c06a3e1b616afeb4bb7c2413191fd7827d82e1f9f0796b52ed21fb2c41dd9031cf
DIST abseil-cpp-20220623.1.tar.gz 1957483 BLAKE2B 5bcf60b5a55882bcb78c7095a9892f6d1e5819fb116e325a8299fb22780ab009f0e1d92d5d8aca5ae0d4acc6d60e620e3357a24e389059f6e75d94f1cbdc1ced SHA512 ab4fccd9a2bfa0c5ad4b56c8e8f8b7ec7a8eca8b6cc6959802acadd1da785e1feb078c6ac621808cd699c82717a9e637dc426d94b70a8db7f2a807059d41cbc2
DIST abseil-cpp-20230125.2.tar.gz 2119685 BLAKE2B 130e55c68acdec7af0f807189365a5206427fe0bcf564a2ece9837d84429505e763399384fae89a07db6b68ed18c63918dc5ae0e53e59cdb844e4d524932abf5 SHA512 b2ba5023610aacb680b22bef894372810e6e7df76e630e56ac2f4b9498f70a872171f4562f6560ab78e837437b7bcfd3c47bfc2a5bb7fb20f28ec490dc8ed61f
@@ -16,7 +18,8 @@ DIST gtest-e68764c147ea0dac1e8811925c531d937396878e.tar.gz 862129 BLAKE2B d6decb
EBUILD abseil-cpp-20211102.0-r2.ebuild 1812 BLAKE2B 3e8b5486a5b9817c089cae614e17c7f095d5b4067af9c9da5fb98eeba772b41f154312f67789391a72267f3a2fa7a1062623b312bbf9b391c8b79069d20af853 SHA512 be4eae4177d0817871aee1a4b43d91f766e8186b26e8cda153c04e5894c3943764d86440f09a6177ead172c73706cd68f4be4c61b0e612ad3fbd6ce08ffcf1b5
EBUILD abseil-cpp-20220623.1.ebuild 1732 BLAKE2B 8134bcb040be826b4f153afddc4c3aae86fd9d773afbf08b50bba323c0d067fd034c92fde3f9c15f73366e910f3641512e81cefa04bc5a9f2830d06e4b8ac3f5 SHA512 ac7802104eb66d08fdcc5904d1d9644ea1511c1f1d8bda2ba8931af6aa56ce5917d59bbb9e68354b8c4d1c38cba1507cb27420e681e3679c88d3bc9538b0e19e
EBUILD abseil-cpp-20230125.2.ebuild 1693 BLAKE2B ad84c9a1b9b5983029aa5978f1fefc14700c1ffdfd4edf4a4cf2ff782d25cc339b2354a293c51d8853a6a2e0107ed3f7ea8e32685663ad760fc0245c7a4ac79c SHA512 6fe0f3a491f71fcd954201653fcf329385c738a7e43cb18adf802dc2f10c27ceb7c87e8e5303d20cce07dc1f905a5e094d6979a615b14b4cdb0cce5880b1a467
-EBUILD abseil-cpp-20230125.3-r3.ebuild 1592 BLAKE2B 02e47125e49a1c2c26b41a3a36eb75dba0c970155ad7d80e32b2ca6740528a9d71168b17df346136a157fb1e65e3667b43d1b1255a9608e809c367f1e28a9174 SHA512 927a91147c2a2c4368631303b60df3cc4edbd70b793574ee02ba2b7be1abf412aff36a912a264c7e7db50a2f23832e7b78082488b27cb96cb34af16dd5603535
-EBUILD abseil-cpp-20230802.0-r2.ebuild 1597 BLAKE2B ecb56eadedd0fbe37b841f83b8629e08526f1dd98442aa3605f5d44836129ba6ba42469a3344c371c4a07e87868303bd82a0bb0bd4b6f24b21cbe734032a9d82 SHA512 cd0fc478c894d7fe73eb3cfb42236df8a654020cec7d499d6af715bf608c3726fdc77228626595459799db51d7c437edd1f0d1805e89ae6b57d506372d09f102
-EBUILD abseil-cpp-20240116.2-r2.ebuild 1597 BLAKE2B ecb56eadedd0fbe37b841f83b8629e08526f1dd98442aa3605f5d44836129ba6ba42469a3344c371c4a07e87868303bd82a0bb0bd4b6f24b21cbe734032a9d82 SHA512 cd0fc478c894d7fe73eb3cfb42236df8a654020cec7d499d6af715bf608c3726fdc77228626595459799db51d7c437edd1f0d1805e89ae6b57d506372d09f102
+EBUILD abseil-cpp-20230125.3-r3.ebuild 1640 BLAKE2B 534ee2c085dfb77471eb34a47491abff5a64aafc6052b3875645ed3e490acd0719855f79bc098bd9107ecc5bce406789804825a88f046d3cb47db83be1a7120d SHA512 55d1a88de4c1474c9b5e03e144a874bf15fb5f9b198a188f267d1290d9f92b7ba47106751d0ba6993b87436c49aa2a744d82edd32ee1235e21f6140c57289245
+EBUILD abseil-cpp-20230125.3-r4.ebuild 1713 BLAKE2B 1ab709d5aa35d36cc6cb1f64ec1e6ab370971df0a7468303c6b71185f6ef2f69580ce797909d5927fa77a1daa88028130d6a1de40fc5b512aca8c2bd26c07abb SHA512 fc99dc540a83bd6e95e6847d1dae1d8a883d130bd15090c1894cc3ce065d6fac9d2b4fa68fdf84f607b7407ab983186e73d91ee9909d44d4e37615c25789a9be
+EBUILD abseil-cpp-20230802.0-r3.ebuild 1718 BLAKE2B 1a46df3f2b8631c4cc5da5697494999329b85a0469e64f00ff2103425218086c7317594c2d4ae7e49e91fc1e636b782490825c94a01155d0bc4f72bff6e2a72b SHA512 bdbb13ac0faa4ccf7f7a41579311a65853916e7d533a107a84506dcc5463621ba5cc1ebcd1a41e01da5621c98ac4aaae0803175b0a74a02fc8af547afd8d9cbe
+EBUILD abseil-cpp-20240116.2-r3.ebuild 1718 BLAKE2B 1a46df3f2b8631c4cc5da5697494999329b85a0469e64f00ff2103425218086c7317594c2d4ae7e49e91fc1e636b782490825c94a01155d0bc4f72bff6e2a72b SHA512 bdbb13ac0faa4ccf7f7a41579311a65853916e7d533a107a84506dcc5463621ba5cc1ebcd1a41e01da5621c98ac4aaae0803175b0a74a02fc8af547afd8d9cbe
MISC metadata.xml 250 BLAKE2B f2e7e5ef7661a51822a5d563f7a835c3606c9bbb9688d599637e0950aa68dbacd67592a8c5306528653dd2b5f7100dc6f5e6ac69c5d7bf9777b12c984b53304c SHA512 99565f4efff02cf80efcaa76ad9247db3c0de6f855f37337579cfcd6e01f72a6e176d5e69ef1a1d338afee6a07c1620273fe56af046a60f195de4d8894a8d7f9
diff --git a/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r3.ebuild b/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r3.ebuild
index 46aea4f8cad5..c248fe6ae1a4 100644
--- a/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r3.ebuild
+++ b/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r3.ebuild
@@ -29,6 +29,7 @@ RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${PN}-20230125.2-musl-1.2.4.patch #906218
+ "${FILESDIR}"/${PN}-random-tests.patch #935417
)
src_prepare() {
diff --git a/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r4.ebuild b/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r4.ebuild
new file mode 100644
index 000000000000..87f1b86c7690
--- /dev/null
+++ b/dev-cpp/abseil-cpp/abseil-cpp-20230125.3-r4.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2020-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit cmake-multilib python-any-r1
+
+DESCRIPTION="Abseil Common Libraries (C++), LTS Branch"
+HOMEPAGE="https://abseil.io/"
+SRC_URI="https://github.com/abseil/abseil-cpp/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0/${PV%%.*}.0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="test"
+
+RDEPEND=">=dev-cpp/gtest-1.13.0[${MULTILIB_USEDEP}]"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ sys-libs/timezone-data
+ )
+"
+
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-20230125.2-musl-1.2.4.patch #906218
+ "${FILESDIR}"/${PN}-random-tests.patch #935417
+ "${FILESDIR}/${PN}-20230802.0-conditional-use-of-lzcnt.patch" #934337
+)
+
+src_prepare() {
+ cmake_src_prepare
+
+ # un-hardcode abseil compiler flags
+ sed -i \
+ -e '/"-maes",/d' \
+ -e '/"-msse4.1",/d' \
+ -e '/"-mfpu=neon"/d' \
+ -e '/"-march=armv8-a+crypto"/d' \
+ absl/copts/copts.py || die
+
+ # now generate cmake files
+ python_fix_shebang absl/copts/generate_copts.py
+ absl/copts/generate_copts.py || die
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ # We use -std=c++14 here so that abseil-cpp's string_view is used
+ # See the discussion in https://github.com/gentoo/gentoo/pull/32281.
+ -DCMAKE_CXX_STANDARD=14
+ -DABSL_ENABLE_INSTALL=TRUE
+ -DABSL_USE_EXTERNAL_GOOGLETEST=ON
+ -DABSL_PROPAGATE_CXX_STD=TRUE
+ # TEST_HELPERS needed for protobuf (bug #915902)
+ -DABSL_BUILD_TEST_HELPERS=ON
+ -DABSL_BUILD_TESTING=$(usex test ON OFF)
+ $(usex test -DBUILD_TESTING=ON '') # intentional usex, it used both variables for tests.
+ )
+
+ cmake_src_configure
+}
diff --git a/dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r2.ebuild b/dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r3.ebuild
index 1281eefffab0..dc13dfe5045f 100644
--- a/dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r2.ebuild
+++ b/dev-cpp/abseil-cpp/abseil-cpp-20230802.0-r3.ebuild
@@ -26,7 +26,12 @@ BDEPEND="
"
RESTRICT="!test? ( test )"
-PATCHES=( "${FILESDIR}/${PN}-20230802.0-sdata-tests.patch" )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-20230802.0-sdata-tests.patch"
+ "${FILESDIR}/${PN}-random-tests.patch" #935417
+ "${FILESDIR}/${PN}-20230802.0-conditional-use-of-lzcnt.patch" #934337
+)
src_prepare() {
cmake_src_prepare
diff --git a/dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r2.ebuild b/dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r3.ebuild
index 1281eefffab0..dc13dfe5045f 100644
--- a/dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r2.ebuild
+++ b/dev-cpp/abseil-cpp/abseil-cpp-20240116.2-r3.ebuild
@@ -26,7 +26,12 @@ BDEPEND="
"
RESTRICT="!test? ( test )"
-PATCHES=( "${FILESDIR}/${PN}-20230802.0-sdata-tests.patch" )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-20230802.0-sdata-tests.patch"
+ "${FILESDIR}/${PN}-random-tests.patch" #935417
+ "${FILESDIR}/${PN}-20230802.0-conditional-use-of-lzcnt.patch" #934337
+)
src_prepare() {
cmake_src_prepare
diff --git a/dev-cpp/abseil-cpp/files/abseil-cpp-20230802.0-conditional-use-of-lzcnt.patch b/dev-cpp/abseil-cpp/files/abseil-cpp-20230802.0-conditional-use-of-lzcnt.patch
new file mode 100644
index 000000000000..1fa00d9ff622
--- /dev/null
+++ b/dev-cpp/abseil-cpp/files/abseil-cpp-20230802.0-conditional-use-of-lzcnt.patch
@@ -0,0 +1,49 @@
+Bug: https://bugs.gentoo.org/934337
+From: https://github.com/abseil/abseil-cpp/commit/c1e1b47d989978cde8c5a2a219df425b785a0c47.patch
+From c1e1b47d989978cde8c5a2a219df425b785a0c47 Mon Sep 17 00:00:00 2001
+From: Derek Mauro <dmauro@google.com>
+Date: Fri, 3 May 2024 09:14:22 -0700
+Subject: [PATCH] Use __builtin_ctzg and __builtin_clzg in the implementations
+ of CountTrailingZeroesNonzero16 and CountLeadingZeroes16 when they are
+ available.
+
+GCC 14 and Clang 19 adds these new builtins. The g-suffix is for
+"generic". The s-suffix on __builtin_ctzs and __builtin_clzs is for
+"short". GCC never implemented the short versions and #1664 reports
+GCC 14 (pre-release) gives an error here, although this may be a
+pre-release bug.
+
+Fixes #1664
+
+PiperOrigin-RevId: 630408249
+Change-Id: I4aedcc82b85430f50d025f8eb1cab089c6fcd1bc
+---
+ absl/numeric/internal/bits.h | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/absl/numeric/internal/bits.h b/absl/numeric/internal/bits.h
+index bfef06bce1f..0917464d6ad 100644
+--- a/absl/numeric/internal/bits.h
++++ b/absl/numeric/internal/bits.h
+@@ -167,7 +167,9 @@ CountLeadingZeroes32(uint32_t x) {
+
+ ABSL_ATTRIBUTE_ALWAYS_INLINE ABSL_INTERNAL_CONSTEXPR_CLZ inline int
+ CountLeadingZeroes16(uint16_t x) {
+-#if ABSL_HAVE_BUILTIN(__builtin_clzs)
++#if ABSL_HAVE_BUILTIN(__builtin_clzg)
++ return x == 0 ? 16 : __builtin_clzg(x);
++#elif ABSL_HAVE_BUILTIN(__builtin_clzs)
+ static_assert(sizeof(unsigned short) == sizeof(x), // NOLINT(runtime/int)
+ "__builtin_clzs does not take 16-bit arg");
+ return x == 0 ? 16 : __builtin_clzs(x);
+@@ -303,7 +305,9 @@ CountTrailingZeroesNonzero64(uint64_t x) {
+
+ ABSL_ATTRIBUTE_ALWAYS_INLINE ABSL_INTERNAL_CONSTEXPR_CTZ inline int
+ CountTrailingZeroesNonzero16(uint16_t x) {
+-#if ABSL_HAVE_BUILTIN(__builtin_ctzs)
++#if ABSL_HAVE_BUILTIN(__builtin_ctzg)
++ return __builtin_ctzg(x);
++#elif ABSL_HAVE_BUILTIN(__builtin_ctzs)
+ static_assert(sizeof(unsigned short) == sizeof(x), // NOLINT(runtime/int)
+ "__builtin_ctzs does not take 16-bit arg");
+ return __builtin_ctzs(x);
diff --git a/dev-cpp/abseil-cpp/files/abseil-cpp-random-tests.patch b/dev-cpp/abseil-cpp/files/abseil-cpp-random-tests.patch
new file mode 100644
index 000000000000..769ac6a56e39
--- /dev/null
+++ b/dev-cpp/abseil-cpp/files/abseil-cpp-random-tests.patch
@@ -0,0 +1,19 @@
+https://github.com/abseil/abseil-cpp/issues/1528
+
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+Date: Sat, 7 Jul 2024 01:53:19 +0200
+Subject: [PATCH] remove abseil::random_internal_mock_overload_set
+See-Also: https://bugs.gentoo.org/935417
+
+diff --git a/absl/random/CMakeLists.txt b/absl/random/CMakeLists.txt
+index bd363d8..7692a35 100644
+--- a/absl/random/CMakeLists.txt
++++ b/absl/random/CMakeLists.txt
+@@ -112,7 +112,6 @@ absl_cc_library(
+ absl::raw_logging_internal
+ absl::random_distributions
+ absl::random_internal_distribution_caller
+- absl::random_internal_mock_overload_set
+ absl::random_random
+ absl::strings
+ absl::span
diff --git a/dev-cpp/asio/Manifest b/dev-cpp/asio/Manifest
index 3d2a306277a9..f9f71fcc2736 100644
--- a/dev-cpp/asio/Manifest
+++ b/dev-cpp/asio/Manifest
@@ -1,6 +1,8 @@
AUX asio-1.30.1-pkgconfig.patch 505 BLAKE2B d5c8d55444a47608f681dfbac9978edebb206b999aa7914b6d056bd18c252f001f58d53b587b2859c66495d6f8c3f74f252ddc9d7c25a8d37a394d843433f722 SHA512 b90f12054921913a6702863a731448e43635871e6fe1cb7baa80e5ad9487501704c634efe25592e661c999cafa61af2a4841add3221db28b1d29290eeea61446
DIST asio-1-30-1.tar.gz 2842718 BLAKE2B b99f6e1ab03c4da9bc802e04d66b46ac2374f7da9f65dd98dd3da3cf1cf507548ae2645343a63378ab91d665fc6e2efe5c5262f33757e851973534e23291abb1 SHA512 6b5f41479e20500dff6c535d8e3b096e11815784923bb4c0f68f69be59c80d7ad99c7e0380a1de4dd350e6cc6a79315d4645378a9b8d70d9f8d28a17f1cc68af
DIST asio-1.28.1.tar.bz2 3383257 BLAKE2B 9d98152a6cf8b0e2a807275092b23f6198d8175fd7260499be7561cea2e6723c1a8478107315b7163cdc31d6eecab552550393ab3b1cfb686dcb4157d1e91fe4 SHA512 fadd7748675743ba9110f873bf57f2400a5c9c0dc03c1d6cd7f0988bc70ccbbff6cb6140f5dd236d2d874fc82a6f216406e8892808e915aae5119fe9d95743de
+DIST asio-1.30.2.tar.bz2 3196850 BLAKE2B d902fda2338d9717bb8f2f5d43468c5d0b64591814c3ae3134350650f0dd97bf241287347d324b11d0e6993b1b44373df13305d736df09ad3375ce4976f5bb27 SHA512 2d26cdcfcc0c310e82ab502551b51d70fd95ba4628bd306929e78539299974fc14aa6ba27cf256f1df7a56539cb885012ba02a202ae17bf817ee6311308a795a
EBUILD asio-1.28.1.ebuild 1292 BLAKE2B f1a68c5338831c80f586f10207896fd9e0ee366d942542e9e65a13ef9b16652b4a4aac83f9c6cf8c28001505a092278a98679c18971266c248998cede51ea2c3 SHA512 889122ea7d5ba268c6b069e77eba129764eb31def43e34c2e423603a635ea53d30f5405d350a2ef500c34c5772e4f3c0190760ae0f7474235ce0b88049446be4
EBUILD asio-1.30.1.ebuild 1095 BLAKE2B 0c28bbb7d5ddc62a5ffed0ed43648d18d0259c6e623e7870f436b45dab3370c9a8fbd169308b480b51013b04e042c02c3fb4196ba84f77fde0fbf70652dfdfad SHA512 f5c1659cfeffec7a682f3dda76f38a907f243f56779f11602944e9dab8ee102f7017be95876f5ad0f4b888ca4b49bd330cf80eb8501813491264aae892cc866b
+EBUILD asio-1.30.2.ebuild 1235 BLAKE2B 8edf680dc17f5e311b1c8fdc890eb74eae889d894e555076d31013b9982363035deba9b4729b2bf6330299b9ec416a7988c61f9bdd9b24dc23513b47a5cf96da SHA512 337fe5917084bfd572dc3a37f68b0621c25fecd44969e5a2968ed05918671f00f6d13c874c1a6837b0123e84920f1adf5fc820f39c746d32ca6ea37556273cb0
MISC metadata.xml 487 BLAKE2B 57785b73f498590d36241612367eda9036cc4ce85baa6c59e45a4c4f0b696f24f7bbe012eef33dd2e29a9c82fad82f75639e55f9c7a6e2e001b7ab48b65787cc SHA512 4a4f9713ea7274f730707dda0f2de0e0c19e50166466c0b8c3e5053e44fa5df02866235cfd97ebeaff15271cce662f1ae19383c0023813d429eded937d9b9cfb
diff --git a/dev-cpp/asio/asio-1.30.2.ebuild b/dev-cpp/asio/asio-1.30.2.ebuild
new file mode 100644
index 000000000000..6592a495eec8
--- /dev/null
+++ b/dev-cpp/asio/asio-1.30.2.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Asynchronous Network Library"
+HOMEPAGE="https://think-async.com https://github.com/chriskohlhoff/asio"
+SRC_URI="https://downloads.sourceforge.net/asio/asio/${P}.tar.bz2"
+
+LICENSE="Boost-1.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ test? (
+ dev-libs/boost
+ dev-libs/openssl
+ )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/asio-1.30.1-pkgconfig.patch"
+)
+
+src_prepare() {
+ default
+
+ eautoreconf
+
+ if ! use test; then
+ # Don't build nor install any examples or unittests
+ # since we don't have a script to run them
+ cat > src/Makefile.in <<-EOF || die
+ all:
+
+ install:
+
+ clean:
+ EOF
+ fi
+}
+
+src_install() {
+ use doc && local HTML_DOCS=( doc/. )
+ default
+
+ if use examples; then
+ # Get rid of the object files
+ emake clean
+ dodoc -r src/examples
+ docompress -x /usr/share/doc/${PF}/examples
+
+ # Make links to the example .cpp files work
+ # https://bugs.gentoo.org/828648
+ if use doc; then
+ dosym ../examples /usr/share/doc/${PF}/src/examples
+ fi
+ fi
+}
diff --git a/dev-cpp/catch/Manifest b/dev-cpp/catch/Manifest
index 829d17731031..93e9269f3307 100644
--- a/dev-cpp/catch/Manifest
+++ b/dev-cpp/catch/Manifest
@@ -14,6 +14,6 @@ EBUILD catch-2.13.8.ebuild 1012 BLAKE2B 6d9ed3c4811c39fd9706896d41d048d2e17155d4
EBUILD catch-3.5.2.ebuild 1001 BLAKE2B f54bed2b5ffbc6f9312736e5006bd49d7dfc579fd214d00e9aede0ff840c606763524ea01b2861f5a43dfdf8e3527b730e26b51a8abdc59be37c452b276da1ef SHA512 860d76cb7b2a1b0f5b6aae04cd07acf40205726ac650d6f5351d151744b5a33fec31194dc1a01c8acd03bcfae620a4a8c409f6db1335e844813af352877acde1
EBUILD catch-3.5.3.ebuild 1009 BLAKE2B 655212eabcd56ab04f7569aac764b0f79b3e542521fbabc096c8256d68ec895ea6c58ab0ad4ae8ece8290fa5a849e472488894d7bbb410c883c086953b5bdae7 SHA512 20a5aa63d1cb679ffb7af373dc056993747199fab7b8cd857af94e030114ed48f04de793119c0944e207c7050d6f5c8d6092b5abfeafca69c4f4dedc276d062b
EBUILD catch-3.5.4.ebuild 1009 BLAKE2B 655212eabcd56ab04f7569aac764b0f79b3e542521fbabc096c8256d68ec895ea6c58ab0ad4ae8ece8290fa5a849e472488894d7bbb410c883c086953b5bdae7 SHA512 20a5aa63d1cb679ffb7af373dc056993747199fab7b8cd857af94e030114ed48f04de793119c0944e207c7050d6f5c8d6092b5abfeafca69c4f4dedc276d062b
-EBUILD catch-3.6.0.ebuild 1009 BLAKE2B 655212eabcd56ab04f7569aac764b0f79b3e542521fbabc096c8256d68ec895ea6c58ab0ad4ae8ece8290fa5a849e472488894d7bbb410c883c086953b5bdae7 SHA512 20a5aa63d1cb679ffb7af373dc056993747199fab7b8cd857af94e030114ed48f04de793119c0944e207c7050d6f5c8d6092b5abfeafca69c4f4dedc276d062b
+EBUILD catch-3.6.0.ebuild 1002 BLAKE2B 40fb2c0c1d2908cefac78183f5403864099637a78a611570426f3b1ba2283981e3f0779ddf60e888b5a909a4c479ae176e8117f8a9d82df2af5b28870a0a0b43 SHA512 c2e4d8af797415684d32ff5b410ab1892eb71a611b3a8c2941dfb6c4af937ed19660ac9188696220a84efd76c8a8485579179b953031277a002408a26022893c
EBUILD catch-9999.ebuild 1009 BLAKE2B 9dc56f59783ec8812d6701a2ed347e039c655f8ad874e20e5058d1667ba3c061cebd8824af1345e76fd90973b439aa3469bbaa564382f04545d0f43e9bc3d7af SHA512 dd9d0e08934ddb10273a2f6b5642bcca5471976f034cf026eec09da7d651553c2193d7f0928dbfa385333f21ef9a21a44185f3cc480970a97e83a08ec4f96103
MISC metadata.xml 325 BLAKE2B 170690d843389d8befc37befe36d57a20f791f6520a08a8eafae196c6ada323a9afb00f58b55d0df30aa67f3e96430a46c3ee0355911b2289056e8bed48509ff SHA512 d2e3d74294189b3c639a16084b7a3745af6854f295c529fc2dc76d05ed6d7ac7e84c8a760f47f07f0744cdd257b5bf851a900ae48482efceea4a8d6ac6ace7c4
diff --git a/dev-cpp/catch/catch-3.6.0.ebuild b/dev-cpp/catch/catch-3.6.0.ebuild
index cde2d006ed7f..31c6d23ac8c3 100644
--- a/dev-cpp/catch/catch-3.6.0.ebuild
+++ b/dev-cpp/catch/catch-3.6.0.ebuild
@@ -15,7 +15,7 @@ else
SRC_URI="https://github.com/catchorg/Catch2/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
fi
DESCRIPTION="Modern C++ header-only framework for unit-tests"
diff --git a/dev-cpp/cppgir/Manifest b/dev-cpp/cppgir/Manifest
index 970b6780e33b..2b2b3faed328 100644
--- a/dev-cpp/cppgir/Manifest
+++ b/dev-cpp/cppgir/Manifest
@@ -3,5 +3,5 @@ DIST cppgir-0_p20240110.tar.bz2 130503 BLAKE2B 8bfca0abb6c17101dff4993f19b422454
DIST cppgir-2.0_p20240315.tar.bz2 135008 BLAKE2B ebd304fe08ec9c203b9bfad1e63f3c0878ea9894487d10b0f5f47dfd41c826c5231cb91c1026b2a203e94bb3b017055c42264623ea6534e7eb78c99357308323 SHA512 e2fe3a042189e190a84c9c62ae5f44f2495a61e77e776b7862d8d673c2d94fe6968fa7f03f68291475cc1f00c46dd6f58d10fd2e6e2fdfab96479ef528937775
EBUILD cppgir-0_p20230926.ebuild 985 BLAKE2B 67b6ffa45ae5f75904229138856e6aa97e1d04e2c3fe555caab4f204c16f303143e6c50d19eed21af2d9853ce88d41e4007916e9587a972433d7718ddc473337 SHA512 ed637963a617d3b3580ec0bc27c149672741071cbc59bf34ecd36771f3be05bbaac2ec604c5556816eafd9ff3daba96b437fc9cd5c6c24557cde3f56fcec5305
EBUILD cppgir-0_p20240110.ebuild 984 BLAKE2B fd7b3e39d821aa5a9c59f141c9bc284bc5cd2fc4b080a58803f2af3e60af0a47c1d28a887bdae3ba9d09f16d376bd8ebfa36b871a7d1659494a7b972ee5e14d2 SHA512 cb3b07b99ddd31168c5b11d0f44287a5b9f816ffc61776cc0864d72145548901c0a14bc8a22db4c2fae723676d81f6bf0118050e48abba83942abfa8362281c7
-EBUILD cppgir-2.0_p20240315.ebuild 985 BLAKE2B d89b32f52117ef398986ac1b74a5d5579a092ada2e01a84c305464829842c4105de1adda3466b43a58880ef26fbc428c618dbdb9cadb1f223b91ef0976de5112 SHA512 5d1747be54442ef056b482ecf6f165514b92d59c03fe2a72662f5a5dc1d8540eb6df31226776ae84ce62883e7f7bc857d7d08925b3d32777d8a2730d79d215d0
+EBUILD cppgir-2.0_p20240315.ebuild 984 BLAKE2B dd5b68ef0ac66093201e01a6fb25c45600f18ffd24201fc95b884d4a3f2f2800de8a2c710e4635a8cdb25fcaf8bd19df8556412e525994f9f81e4cfeeb35cc8e SHA512 520b69d40487d15725bab8762c23c5450ea9affffbcbe1ca2a28cccda76cfce31ec3f494bcdeacc2ce02e5aca5bcb55bf251ea546214c9cf4c84abed6f8a166d
MISC metadata.xml 567 BLAKE2B 0684a8a7347f840ff2d683d32ccf4fd37e0c617be78600dde97ad5f1bf5e897b01fbf40474eeaf3bd14a4efd99642dd7e062b05a61fc2a2f15722996b5422673 SHA512 fcd0bfcbaa4a4d684ab29bdc6ef3d251bc17206d548ce15644efa0a5b6cfc7e072c04c6a7e882307e73eb74347e971389fdb01462be28e5bbd9bb8c0ec8934e9
diff --git a/dev-cpp/cppgir/cppgir-2.0_p20240315.ebuild b/dev-cpp/cppgir/cppgir-2.0_p20240315.ebuild
index 8f7f7db42bab..b8b203459ce3 100644
--- a/dev-cpp/cppgir/cppgir-2.0_p20240315.ebuild
+++ b/dev-cpp/cppgir/cppgir-2.0_p20240315.ebuild
@@ -14,7 +14,7 @@ S="${WORKDIR}/${PN}-${MY_PV}"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv"
+KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv"
IUSE="doc test"
RESTRICT="!test? ( test )"
diff --git a/dev-cpp/eigen/Manifest b/dev-cpp/eigen/Manifest
index 99e3e0d4e34e..530d9bf67e93 100644
--- a/dev-cpp/eigen/Manifest
+++ b/dev-cpp/eigen/Manifest
@@ -4,11 +4,13 @@ AUX eigen-3.4.0-buildstring.patch 716 BLAKE2B f9453cab7a7e4609b5801b7f8470bac2ed
AUX eigen-3.4.0-cxxstandard.patch 4274 BLAKE2B cd837966150b4cdd6a4080aba0b58785401adf03e3273b83cd03b4b999795b8d87419e31ed27e018feefda659627a3d62b538f7379de13c85fabfbcbdf9fa9f4 SHA512 473ea735425534403f6f66d1e3601e1fcaf6e1f2558f6b1b9695a69e05a4769d0951d4174d99f8853f3a0176d7c7722cbfb9942459da07bbe1636fd4cc847f95
AUX eigen-3.4.0-doc-nocompress.patch 873 BLAKE2B 0458b8e4c03fb8ef3f4ecd74d9f285ca8aa3787a0fd466922f45cb96386c8c5cd35116db4ab2caddc841e47cbf2678594ebf727153804878761dc455f08c2c81 SHA512 a4763cb037a16c12dc3d6a6ac075c7ff130ea9d2913f76472e61d821e45cfcce446ad11e43426227e7b60268a14cd952ee81104ca594c3710bde56d655f910b0
AUX eigen-3.4.0-noansi.patch 729 BLAKE2B 60088bddb6d79992e1f559f4977e6f51082cb6e382b6f481ef54b65d4db9c8042422ad3b26479f67151bf4455d448a59bebeada2cb651a32e7eafe86165ee1bf SHA512 a07851b377da8d927f27dd624a071a17176e76667bc2a38ef54820b7515fb7b0dffdb11200b7e85e10008b7bb69adafa3f4cae7fa237a1cb4c97f2b9ea2a9247
+AUX eigen-3.4.0-ppc-no-vsx.patch 6739 BLAKE2B 9b61a58c671353de4a8675af62d4168c8ec90164c58d159342c81cbd9d5823b08da7235ae5cbd9d316dcf4f3e200e61c3f61cb747b33d53e78b2f595b51c154b SHA512 f1788bc2893b2bc6929d564f0e7fa420e5c8b2829092c247bf9f38289d8f745e6c1f6a7a43bcb2ca8a6a5a0a1067acd20751506fc09e5b996f9aca9b700b5ab3
AUX eigen-9999-please_protect_your_min_with_parentheses.patch 1979 BLAKE2B 50da0559d66338af6d27b8fd8ec5b1273e27bda992e40db62044c1d6a8cc4a066f0d9c9ca2061af4384decaaa7ebe4a4964c8c7dfb4e1b2abca10a1c9e9e2715 SHA512 a0ecb745768e2118af687c6b316520c782f23e43fc33f603b06c5bd9bea141161d9547eacdd16f0038ba49c0307670a7549d3ba570b54b8d44d3a96a94895ff0
DIST eigen-3.4.0.tar.bz2 2143091 BLAKE2B a32aac13cbab68cfaaa252d8a406e6a36ecfd1239361412b1f9baa08284a94467479c08ffae10cb847e9916472b46b1c1af4efbf81f957c8200a4379acd42c42 SHA512 cc488eb111e0e248744d2bc4475b345b5fb82361dff226a5b73a33bd0388de8c219cff8cffcf8f476b672fc0e223f339e8c6a1cfb6293840a4a6abf232438a89
DIST eigen-3.4.0.tar.gz 2705005 BLAKE2B ae5f774a6ed36f52cf9fc3206e50796abacbba69fd0f67cd5759b4e04d847aa656861d5e06e6cd0d798a17f2b06abdb70b16f795a626bdd29edcc872c33821f8 SHA512 ba75ecb760e32acf4ceaf27115468e65d4f77c44f8d519b5a13e7940af2c03a304ad433368cb6d55431f307c5c39e2666ab41d34442db3cf441638e51f5c3b6a
DIST eigen-lapack_addons-3.4.1.tgz 6215074 BLAKE2B 564c3398de1f4ea249b58957a482cda0b5eb99e5021e1f18abf3b4d2893fed48912bfa8386681fcae03dd933eea91644f7429d47a53684d64462209a6ae76f30 SHA512 5a827d0befb521cb430f0d63f5000e7955359bc637cdb7292d942712e98c0702570a5b650a72fc609bf5b43633661c0e51de7761ae892df6ff0aab667f436edf
EBUILD eigen-3.4.0-r1.ebuild 2588 BLAKE2B b24a464408f8f03282db44144e07080a0bac0b71a38d0847af12f8e506d218f437ebfba0b8ba5ccb654c4d317ecb8006ed02f0b63673038a5f91ed35968762ca SHA512 be51f2e62f6f954365dadefb1e33d7dd5bb094ff33d954b75ab1bbd2a1d0d8e54a673bb44040608668bbe5d936dd16e169cd5b16e9a3fdbe61fdc11a21ccc870
EBUILD eigen-3.4.0-r2.ebuild 12325 BLAKE2B d1ca7a402652d4e02573bed1e752b41308b8e96e86259cbf6238a514602d848bd50b1da806b3eca71d42cfecc153ebaf8dc498adb1c171e3a4dd64312350ca17 SHA512 30d8749e5ce808e8c70fdd6ce5d82a2c0d16eb1be303dbf4da0ed93743b7874549d1ec7700205d2b3c7712eb8d0cfa91d093155ac2f602400fd5202c0c552de8
+EBUILD eigen-3.4.0-r3.ebuild 12384 BLAKE2B 20fac08e54380979ab413ac4d9a6939298c38130a06131d0dddf9ae72bd7b63a47a9effb3296eaf047ad885874bb53ff9853af5720be12dc0a7efc9a5a8c14cd SHA512 a7891132bffb927458c0505d551437c6e6d5cd2b6866a2fbc0c7b190eb28ae5b33936088fdf119a613eb1d1e07d48ec5b97fcb312a0b6c3bf436855c47a63c30
EBUILD eigen-9999.ebuild 11683 BLAKE2B 405987f4e22b99670a07c7a593f1f33317e6b3d8e44f111757145f63ead1a36247e4c4feb6a4078590c277e0d46ce04a305771221ac64ac75e7daaa14c25f95d SHA512 60d8ead0d69e9cebb415e2682f89dda1be3bce484c18505ba7bec1ea38653663b58d3d729b3ac5e34d3d11d0c958a6050bc4d19faf51fbeab2e13b9914952532
MISC metadata.xml 2122 BLAKE2B ce2287db5f80ce761bc100cc0f6fe3dd549dda68853f0fc40d362e9dce72d5a5398b3d2b9562aa8feafc5b869adaab78a87b65499404df072c35d353ec2f5cd8 SHA512 446fe2316a72f8c058445f4c14bfe4683476f1a041d9af55ab3d1f76b4e2b6e83d0f7aad4a7febcd7c4c5bdfdf1efc30483aaa276ace6ac941488ee3d137c5c7
diff --git a/dev-cpp/eigen/eigen-3.4.0-r3.ebuild b/dev-cpp/eigen/eigen-3.4.0-r3.ebuild
new file mode 100644
index 000000000000..91904f16f7ab
--- /dev/null
+++ b/dev-cpp/eigen/eigen-3.4.0-r3.ebuild
@@ -0,0 +1,458 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FORTRAN_NEEDED="test"
+inherit cmake cuda fortran-2 llvm toolchain-funcs
+
+DESCRIPTION="C++ template library for linear algebra"
+HOMEPAGE="https://eigen.tuxfamily.org/index.php?title=Main_Page"
+
+if [[ ${PV} = *9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.com/lib${PN}/${PN}.git"
+ if [[ ${PV} = 3.4.9999* ]] ; then
+ EGIT_COMMIT="3.4"
+ fi
+else
+ SRC_URI="
+ https://gitlab.com/lib${PN}/${PN}/-/archive/${PV}/${P}.tar.bz2
+ test? ( lapack? ( https://downloads.tuxfamily.org/${PN}/lapack_addons_3.4.1.tgz -> ${PN}-lapack_addons-3.4.1.tgz ) )
+ "
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+LICENSE="MPL-2.0"
+SLOT="3"
+
+# The following lines are shamelessly stolen from ffmpeg-9999.ebuild with modifications
+ARM_CPU_FEATURES=(
+ neon:NEON
+)
+PPC_CPU_FEATURES=(
+ altivec:ALTIVEC
+ vsx:VSX
+)
+X86_CPU_FEATURES=(
+ avx:AVX
+ avx2:AVX2
+ avx512f:AVX512
+ avx512dq:AVX512DQ
+ f16c:FP16C
+ fma3:FMA
+ popcnt:POPCNT
+ sse:SSE
+ sse2:SSE2
+ sse3:SSE3
+ ssse3:SSSE3
+ sse4_1:SSE4_1
+ sse4_2:SSE4_2
+)
+# MIPS_CPU_FEATURES=(
+# msa:MSA
+# )
+# S390_CPU_FEATURES=(
+# z13:Z13
+# z14:Z14
+# )
+
+CPU_FEATURES_MAP=(
+ "${ARM_CPU_FEATURES[@]/#/cpu_flags_arm_}"
+ "${PPC_CPU_FEATURES[@]/#/cpu_flags_ppc_}"
+ "${X86_CPU_FEATURES[@]/#/cpu_flags_x86_}"
+ # "${MIPS_CPU_FEATURES[@]/#/cpu_flags_mips_}"
+ # "${S390_CPU_FEATURES[@]/#/cpu_flags_s390_}"
+)
+
+IUSE_TEST_BACKENDS=(
+ "adolc"
+ "boost"
+ "cholmod"
+ "fftw"
+ "klu"
+ "opengl"
+ "openmp"
+ "pastix"
+ "sparsehash"
+ "spqr"
+ "superlu"
+ "umfpack"
+)
+
+IUSE="${CPU_FEATURES_MAP[*]%:*} clang cuda hip debug doc lapack mathjax test ${IUSE_TEST_BACKENDS[*]}" #zvector
+
+# Tests failing again because of compiler issues
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ doc? (
+ app-text/doxygen[dot]
+ dev-texlive/texlive-bibtexextra
+ dev-texlive/texlive-fontsextra
+ dev-texlive/texlive-fontutils
+ dev-texlive/texlive-latex
+ dev-texlive/texlive-latexextra
+ mathjax? ( dev-libs/mathjax )
+ )
+ test? ( virtual/pkgconfig )
+"
+
+# METIS
+# MPREAL
+# dev-libs/mpfr:0
+# dev-libs/gmp:0
+
+TEST_BACKENDS="
+ boost? ( dev-libs/boost )
+ adolc? ( sci-libs/adolc[sparse] )
+ cholmod? ( sci-libs/cholmod:= )
+ fftw? ( sci-libs/fftw )
+ spqr? ( sci-libs/spqr )
+ klu? ( sci-libs/klu )
+ opengl? (
+ media-libs/freeglut
+ media-libs/glew
+ media-libs/libglvnd
+ )
+ pastix? ( sci-libs/pastix[-mpi] )
+ sparsehash? (
+ amd64? ( dev-cpp/sparsehash )
+ arm64? ( dev-cpp/sparsehash )
+ ppc64? ( dev-cpp/sparsehash )
+ x86? ( dev-cpp/sparsehash )
+ )
+ superlu? ( sci-libs/superlu )
+ umfpack? ( sci-libs/umfpack )
+"
+DEPEND="
+ test? (
+ cuda? (
+ !clang? (
+ dev-util/nvidia-cuda-toolkit
+ )
+ clang? (
+ sys-devel/clang[llvm_targets_NVPTX]
+ openmp? ( sys-libs/libomp[llvm_targets_NVPTX,offload] )
+ )
+ )
+ hip? ( dev-util/hip )
+ lapack? ( virtual/lapacke )
+ ${TEST_BACKENDS}
+ )
+"
+
+REQUIRED_USE="
+ test? ( !lapack )
+ || ( ${IUSE_TEST_BACKENDS[*]} )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.3.9-max-macro.patch"
+ "${FILESDIR}/${PN}-3.4.0-doc-nocompress.patch" # bug 830064
+ "${FILESDIR}/${PN}-3.4.0-buildstring.patch"
+ "${FILESDIR}/${PN}-3.4.0-noansi.patch"
+ "${FILESDIR}/${PN}-3.4.0-cxxstandard.patch"
+ "${FILESDIR}/${PN}-3.4.0-ppc-no-vsx.patch" # bug 936107
+)
+
+# TODO should be in cuda.eclass
+cuda_set_CUDAHOSTCXX() {
+ local compiler
+ tc-is-gcc && compiler="gcc"
+ tc-is-clang && compiler="clang"
+ [[ -z "$compiler" ]] && die "no compiler specified"
+
+ local package="sys-devel/${compiler}"
+ local version="${package}"
+ local CUDAHOSTCXX_test
+ while
+ CUDAHOSTCXX="${CUDAHOSTCXX_test}"
+ version=$(best_version "${version}")
+ if [[ -z "${version}" ]]; then
+ if [[ -z "${CUDAHOSTCXX}" ]]; then
+ die "could not find supported version of ${package}"
+ fi
+ break
+ fi
+ CUDAHOSTCXX_test="$(
+ dirname "$(
+ realpath "$(
+ which "${compiler}-$(echo "${version}" | grep -oP "(?<=${package}-)[0-9]*")"
+ )"
+ )"
+ )"
+ version="<${version}"
+ do ! echo "int main(){}" | nvcc "-ccbin ${CUDAHOSTCXX_test}" - -x cu &>/dev/null; done
+
+ export CUDAHOSTCXX
+}
+
+pkg_setup() {
+ use test && use cuda && use clang && llvm_pkg_setup
+}
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]] ; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.bz2"
+
+ if use test && use lapack; then
+ cd "${S}/lapack" || die
+ unpack "${PN}-lapack_addons-3.4.1.tgz"
+ fi
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed \
+ -e "/add_subdirectory(bench\/spbench/s/^/#DONOTCOMPILE /g" \
+ -e "/add_subdirectory(demos/s/^/#DONOTCOMPILE /g" \
+ -i CMakeLists.txt || die
+
+ if ! use test; then
+ sed \
+ -e "/add_subdirectory(test/s/^/#DONOTCOMPILE /g" \
+ -e "/add_subdirectory(scripts/s/^/#DONOTCOMPILE /g" \
+ -e "/add_subdirectory(failtest/s/^/#DONOTCOMPILE /g" \
+ -e "/add_subdirectory(blas/s/^/#DONOTCOMPILE /g" \
+ -e "/add_subdirectory(lapack/s/^/#DONOTCOMPILE /g" \
+ -i CMakeLists.txt || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_SHARED_LIBS="yes"
+ -DBUILD_TESTING="$(usex test)"
+
+ -DEIGEN_BUILD_DOC="$(usex doc)" # Enable creation of Eigen documentation
+ -DEIGEN_BUILD_PKGCONFIG="yes" # Build pkg-config .pc file for Eigen
+ )
+ if use doc || use test; then
+ mycmakeargs+=(
+ # needs Qt4
+ -DEIGEN_TEST_NOQT="yes" # Disable Qt support in unit tests
+ )
+ fi
+
+ if use doc; then
+ mycmakeargs+=(
+ -DEIGEN_DOC_USE_MATHJAX="$(usex mathjax)" # Use MathJax for rendering math in HTML docs
+ -DEIGEN_INTERNAL_DOCUMENTATION=no # Build internal documentation
+ )
+ fi
+
+ if use test; then
+ mycmakeargs+=(
+ # the OpenGL testsuite is extremely brittle, bug #712808
+ -DOpenGL_GL_PREFERENCE="GLVND"
+ -DEIGEN_TEST_OPENGL="$(usex opengl)" # Enable OpenGL support in unit tests
+ -DEIGEN_TEST_OPENMP="$(usex openmp)" # Enable/Disable OpenMP in tests/examples
+
+ -DCMAKE_DISABLE_FIND_PACKAGE_MPREAL=ON
+
+ -DEIGEN_TEST_CXX11=yes
+
+ # -DEIGEN_TEST_CUSTOM_CXX_FLAGS= # Additional compiler flags when compiling unit tests.
+ # -DEIGEN_TEST_CUSTOM_LINKER_FLAGS= # Additional linker flags when linking unit tests.
+ # -DEIGEN_TEST_BUILD_FLAGS= # Options passed to the build command of unit tests
+
+ # -DEIGEN_BUILD_BTL=yes # Build benchmark suite
+
+ -DEIGEN_TEST_BUILD_DOCUMENTATION="$(usex doc)" # Test building the doxygen documentation
+
+ # -DEIGEN_COVERAGE_TESTING=no # Enable/disable gcov
+ # -DEIGEN_CTEST_ERROR_EXCEPTION= # Regular expression for build error messages to be filtered out
+ # -DEIGEN_DEBUG_ASSERTS=no # Enable advanced debugging of assertions
+ # -DEIGEN_NO_ASSERTION_CHECKING=no # Disable checking of assertions using exceptions
+ # -DEIGEN_TEST_NO_EXCEPTIONS=no # Disables C++ exceptions
+ # -DEIGEN_TEST_NO_EXPLICIT_ALIGNMENT=no # Disable explicit alignment (hence vectorization) in tests/examples
+ # -DEIGEN_TEST_NO_EXPLICIT_VECTORIZATION=no # Disable explicit vectorization in tests/examples
+
+ # -DEIGEN_DASHBOARD_BUILD_TARGET=buildtests # Target to be built in dashboard mode, default is buildtests
+
+ # -DEIGEN_DEFAULT_TO_ROW_MAJOR=no # Use row-major as default matrix storage order
+
+ # -DEIGEN_TEST_MATRIX_DIR=yes # Enable testing of realword sparse matrices contained in the specified path
+ # -DEIGEN_TEST_MAX_SIZE=320 # Maximal matrix/vector size, default is 320
+ # -DEIGEN_SPLIT_LARGE_TESTS=no # Split large tests into smaller executables
+ )
+
+ use !adolc && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_Adolc="TRUE" )
+ use !boost && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_Boost="TRUE" )
+ use !cholmod && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_CHOLMOD="TRUE" )
+ use !fftw && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_FFTW="TRUE" )
+ use !sparsehash && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_GoogleHash="TRUE" )
+ use !klu && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_KLU="TRUE" )
+ use !opengl && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_OpenGL="TRUE" )
+ use !openmp && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_OpenMP="TRUE" )
+ use !pastix && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_PASTIX="TRUE" )
+ use !spqr && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_SPQR="TRUE" )
+ use !superlu && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_SuperLU="TRUE" )
+ use !umfpack && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_UMFPACK="TRUE" )
+
+ if use lapack; then
+ mycmakeargs+=(
+ -DEIGEN_ENABLE_LAPACK_TESTS=yes
+ -DEIGEN_TEST_EXTERNAL_BLAS=yes # Use external BLAS library for testsuite
+ -DCMAKE_DISABLE_FIND_PACKAGE_SuperLU=ON
+ )
+ fi
+
+ if use arm; then
+ mycmakeargs+=(
+ -DEIGEN_TEST_NEON="$(usex cpu_flags_arm_neon)"
+ )
+ fi
+
+ if use arm64; then
+ mycmakeargs+=(
+ -DEIGEN_TEST_NEON64="$(usex cpu_flags_arm_neon)"
+ )
+ fi
+
+ if use ppc || use ppc64; then
+ mycmakeargs+=(
+ -DEIGEN_TEST_ALTIVEC="$(usex cpu_flags_ppc_altivec)"
+ -DEIGEN_TEST_VSX="$(usex cpu_flags_ppc_vsx)"
+ )
+ fi
+
+ if use amd64 || use x86; then
+ mycmakeargs+=(
+ # -DEIGEN_TEST_32BIT=no # Force generating 32bit code.
+ # -DEIGEN_TEST_X87=no # Force using X87 instructions. Implies no vectorization.
+ -DEIGEN_TEST_SSE2="$(usex cpu_flags_x86_sse2)"
+ -DEIGEN_TEST_SSE3="$(usex cpu_flags_x86_sse3)"
+ -DEIGEN_TEST_SSSE3="$(usex cpu_flags_x86_ssse3)"
+ -DEIGEN_TEST_FMA="$(usex cpu_flags_x86_fma3)"
+ -DEIGEN_TEST_SSE4_1="$(usex cpu_flags_x86_sse4_1)"
+ -DEIGEN_TEST_SSE4_2="$(usex cpu_flags_x86_sse4_2)"
+ -DEIGEN_TEST_AVX="$(usex cpu_flags_x86_avx)"
+ -DEIGEN_TEST_F16C="$(usex cpu_flags_x86_f16c)"
+ -DEIGEN_TEST_AVX2="$(usex cpu_flags_x86_avx2)"
+ -DEIGEN_TEST_AVX512="$(usex cpu_flags_x86_avx512f)"
+ -DEIGEN_TEST_AVX512DQ="$(usex cpu_flags_x86_avx512dq)"
+ )
+ fi
+
+ if use mips; then
+ mycmakeargs+=(
+ # -DEIGEN_TEST_MSA=no # Enable/Disable MSA in tests/examples
+ )
+ fi
+
+ if use s390; then
+ mycmakeargs+=(
+ # -DEIGEN_TEST_Z13=no # Enable/Disable S390X(zEC13) ZVECTOR in tests/examples
+ # -DEIGEN_TEST_Z14=no # Enable/Disable S390X(zEC14) ZVECTOR in tests/examples
+ )
+ fi
+
+ mycmakeargs+=(
+ -DEIGEN_TEST_CUDA="$(usex cuda)" # Enable CUDA support in unit tests
+ -DEIGEN_TEST_CUDA_CLANG="$(usex cuda "$(usex clang)")" # Use clang instead of nvcc to compile the CUDA tests
+
+ -DEIGEN_TEST_HIP="$(usex hip)" # Add HIP support.
+
+ # -DEIGEN_TEST_SYCL=no # Add Sycl support.
+ # -DEIGEN_SYCL_TRISYCL=no # Use the triSYCL Sycl implementation (ComputeCPP by default).
+ )
+
+ if use cuda; then
+ cuda_add_sandbox -w
+ if use clang; then
+ local llvm_prefix
+ llvm_prefix="$(get_llvm_prefix -b)"
+ export CC="${llvm_prefix}/bin/clang"
+ export CXX="${llvm_prefix}/bin/clang++"
+ export LIBRARY_PATH="${ESYSROOT}/usr/$(get_libdir)"
+ else
+ cuda_set_CUDAHOSTCXX
+ mycmakeargs+=(
+ -DCUDA_HOST_COMPILER="${CUDAHOSTCXX}"
+ )
+ fi
+ if [[ "${CUDA_VERBOSE}" == true ]]; then
+ mycmakeargs+=(
+ -DCUDA_VERBOSE_BUILD=yes
+ )
+ NVCCFLAGS+=" -v"
+ fi
+
+ export CUDAFLAGS="${NVCCFLAGS}"
+
+ [[ -z "${CUDAARCHS}" ]] && einfo "trying to determine host CUDAARCHS"
+ : "${CUDAARCHS:=$(__nvcc_device_query)}"
+ export CUDAARCHS
+
+ mycmakeargs+=(
+ -DEIGEN_CUDA_COMPUTE_ARCH="${CUDAARCHS}"
+ )
+ fi
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ local targets=()
+ if use doc; then
+ targets+=( doc )
+ HTML_DOCS=( "${BUILD_DIR}"/doc/html/. )
+ fi
+ if use test; then
+ targets+=( buildtests )
+ if ! use lapack; then
+ targets+=( blas )
+ fi
+ # tests generate random data, which
+ # obviously fails for some seeds
+ export EIGEN_SEED=712808
+ fi
+
+ if use doc || use test; then
+ cmake_src_compile "${targets[@]}"
+ fi
+}
+
+src_test() {
+ CMAKE_SKIP_TESTS=(
+ product_small_32 # 143 (Subprocess aborted)
+ product_small_33 # 144 (Subprocess aborted)
+
+ eigensolver_selfadjoint_13 # 452 (Subprocess aborted)
+
+ cholmod_support_21 # 726 (Subprocess aborted)
+ cholmod_support_22 # 727 (Subprocess aborted)
+
+ NonLinearOptimization # 930 (Subprocess aborted)
+ openglsupport # 990 (Failed)
+ levenberg_marquardt # 1020 (Subprocess aborted)
+ )
+
+ if use cuda ; then
+ cuda_add_sandbox -w
+
+ CMAKE_SKIP_TESTS+=(
+ cxx11_tensor_cast_float16_gpu
+ cxx11_tensor_gpu_5
+ )
+ fi
+
+ if use lapack ; then
+ CMAKE_SKIP_TESTS+=(
+ "^LAPACK-.*$"
+ )
+ fi
+
+ local myctestargs=(
+ -j1 # otherwise breaks due to cmake reruns
+ )
+
+ cmake_src_test
+}
diff --git a/dev-cpp/eigen/files/eigen-3.4.0-ppc-no-vsx.patch b/dev-cpp/eigen/files/eigen-3.4.0-ppc-no-vsx.patch
new file mode 100644
index 000000000000..7cfeaaf129ff
--- /dev/null
+++ b/dev-cpp/eigen/files/eigen-3.4.0-ppc-no-vsx.patch
@@ -0,0 +1,195 @@
+https://gitlab.com/libeigen/eigen/-/merge_requests/1028
+https://bugs.gentoo.org/936107
+--- a/Eigen/Core
++++ b/Eigen/Core
+@@ -346,7 +346,7 @@
+ #include "src/Core/CoreIterators.h"
+ #include "src/Core/ConditionEstimator.h"
+
+-#if defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
++#if defined(EIGEN_VECTORIZE_VSX)
+ #include "src/Core/arch/AltiVec/MatrixProduct.h"
+ #elif defined EIGEN_VECTORIZE_NEON
+ #include "src/Core/arch/NEON/GeneralBlockPanelKernel.h"
+--- a/Eigen/src/Core/arch/AltiVec/Complex.h
++++ b/Eigen/src/Core/arch/AltiVec/Complex.h
+@@ -100,6 +100,7 @@
+ HasAbs2 = 0,
+ HasMin = 0,
+ HasMax = 0,
++ HasSqrt = 1,
+ #ifdef __VSX__
+ HasBlend = 1,
+ #endif
+@@ -320,6 +321,7 @@
+ HasAbs2 = 0,
+ HasMin = 0,
+ HasMax = 0,
++ HasSqrt = 1,
+ HasSetLinear = 0
+ };
+ };
+--- a/Eigen/src/Core/arch/AltiVec/MathFunctions.h
++++ b/Eigen/src/Core/arch/AltiVec/MathFunctions.h
+@@ -40,16 +40,14 @@
+ return pcos_float(_x);
+ }
+
++#ifdef __VSX__
+ #ifndef EIGEN_COMP_CLANG
+ template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
+ Packet4f prsqrt<Packet4f>(const Packet4f& x)
+ {
+ return vec_rsqrt(x);
+ }
+-#endif
+
+-#ifdef __VSX__
+-#ifndef EIGEN_COMP_CLANG
+ template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
+ Packet2d prsqrt<Packet2d>(const Packet2d& x)
+ {
+@@ -74,6 +72,26 @@
+ {
+ return pexp_double(_x);
+ }
++
++template<> EIGEN_STRONG_INLINE Packet8bf psqrt<Packet8bf> (const Packet8bf& a){
++ BF16_TO_F32_UNARY_OP_WRAPPER(psqrt<Packet4f>, a);
++}
++
++#ifndef EIGEN_COMP_CLANG
++template<> EIGEN_STRONG_INLINE Packet8bf prsqrt<Packet8bf> (const Packet8bf& a){
++ BF16_TO_F32_UNARY_OP_WRAPPER(prsqrt<Packet4f>, a);
++}
++#endif
++#else
++template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
++Packet4f psqrt<Packet4f>(const Packet4f& x)
++{
++ Packet4f a;
++ for (Index i = 0; i < packet_traits<float>::size; i++) {
++ a[i] = numext::sqrt(x[i]);
++ }
++ return a;
++}
+ #endif
+
+ // Hyperbolic Tangent function.
+--- a/Eigen/src/Core/arch/AltiVec/PacketMath.h
++++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h
+@@ -175,16 +175,19 @@
+ #else
+ HasRsqrt = 0,
+ #endif
++ HasTanh = EIGEN_FAST_MATH,
++ HasErf = EIGEN_FAST_MATH,
++ HasRint = 1,
+ #else
+ HasSqrt = 0,
+ HasRsqrt = 0,
+- HasTanh = EIGEN_FAST_MATH,
+- HasErf = EIGEN_FAST_MATH,
++ HasTanh = 0,
++ HasErf = 0,
++ HasRint = 0,
+ #endif
+ HasRound = 1,
+ HasFloor = 1,
+ HasCeil = 1,
+- HasRint = 1,
+ HasNegate = 1,
+ HasBlend = 1
+ };
+@@ -217,16 +220,17 @@
+ #else
+ HasRsqrt = 0,
+ #endif
++ HasRint = 1,
+ #else
+ HasSqrt = 0,
+ HasRsqrt = 0,
+- HasTanh = EIGEN_FAST_MATH,
+- HasErf = EIGEN_FAST_MATH,
++ HasRint = 0,
+ #endif
++ HasTanh = 0,
++ HasErf = 0,
+ HasRound = 1,
+ HasFloor = 1,
+ HasCeil = 1,
+- HasRint = 1,
+ HasNegate = 1,
+ HasBlend = 1
+ };
+@@ -872,19 +876,29 @@
+ return vec_nor(c,c);
+ }
+
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet4i pcmp_le(const Packet4i& a, const Packet4i& b) { return reinterpret_cast<Packet4i>(vec_cmple(a,b)); }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet4i pcmp_lt(const Packet4i& a, const Packet4i& b) { return reinterpret_cast<Packet4i>(vec_cmplt(a,b)); }
+ template<> EIGEN_STRONG_INLINE Packet4i pcmp_eq(const Packet4i& a, const Packet4i& b) { return reinterpret_cast<Packet4i>(vec_cmpeq(a,b)); }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet8s pcmp_le(const Packet8s& a, const Packet8s& b) { return reinterpret_cast<Packet8s>(vec_cmple(a,b)); }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet8s pcmp_lt(const Packet8s& a, const Packet8s& b) { return reinterpret_cast<Packet8s>(vec_cmplt(a,b)); }
+ template<> EIGEN_STRONG_INLINE Packet8s pcmp_eq(const Packet8s& a, const Packet8s& b) { return reinterpret_cast<Packet8s>(vec_cmpeq(a,b)); }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet8us pcmp_le(const Packet8us& a, const Packet8us& b) { return reinterpret_cast<Packet8us>(vec_cmple(a,b)); }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet8us pcmp_lt(const Packet8us& a, const Packet8us& b) { return reinterpret_cast<Packet8us>(vec_cmplt(a,b)); }
+ template<> EIGEN_STRONG_INLINE Packet8us pcmp_eq(const Packet8us& a, const Packet8us& b) { return reinterpret_cast<Packet8us>(vec_cmpeq(a,b)); }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet16c pcmp_le(const Packet16c& a, const Packet16c& b) { return reinterpret_cast<Packet16c>(vec_cmple(a,b)); }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet16c pcmp_lt(const Packet16c& a, const Packet16c& b) { return reinterpret_cast<Packet16c>(vec_cmplt(a,b)); }
+ template<> EIGEN_STRONG_INLINE Packet16c pcmp_eq(const Packet16c& a, const Packet16c& b) { return reinterpret_cast<Packet16c>(vec_cmpeq(a,b)); }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet16uc pcmp_le(const Packet16uc& a, const Packet16uc& b) { return reinterpret_cast<Packet16uc>(vec_cmple(a,b)); }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet16uc pcmp_lt(const Packet16uc& a, const Packet16uc& b) { return reinterpret_cast<Packet16uc>(vec_cmplt(a,b)); }
+ template<> EIGEN_STRONG_INLINE Packet16uc pcmp_eq(const Packet16uc& a, const Packet16uc& b) { return reinterpret_cast<Packet16uc>(vec_cmpeq(a,b)); }
+
+@@ -937,6 +951,7 @@
+ }
+ template<> EIGEN_STRONG_INLINE Packet4f pceil<Packet4f>(const Packet4f& a) { return vec_ceil(a); }
+ template<> EIGEN_STRONG_INLINE Packet4f pfloor<Packet4f>(const Packet4f& a) { return vec_floor(a); }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet4f print<Packet4f>(const Packet4f& a)
+ {
+ Packet4f res;
+@@ -947,6 +962,7 @@
+
+ return res;
+ }
++#endif
+
+ template<typename Packet> EIGEN_STRONG_INLINE Packet ploadu_common(const __UNPACK_TYPE__(Packet)* from)
+ {
+@@ -1341,12 +1357,6 @@
+ BF16_TO_F32_BINARY_OP_WRAPPER(psub<Packet4f>, a, b);
+ }
+
+-template<> EIGEN_STRONG_INLINE Packet8bf psqrt<Packet8bf> (const Packet8bf& a){
+- BF16_TO_F32_UNARY_OP_WRAPPER(vec_sqrt, a);
+-}
+-template<> EIGEN_STRONG_INLINE Packet8bf prsqrt<Packet8bf> (const Packet8bf& a){
+- BF16_TO_F32_UNARY_OP_WRAPPER(prsqrt<Packet4f>, a);
+-}
+ template<> EIGEN_STRONG_INLINE Packet8bf pexp<Packet8bf> (const Packet8bf& a){
+ BF16_TO_F32_UNARY_OP_WRAPPER(pexp_float, a);
+ }
+@@ -1390,9 +1400,11 @@
+ template<> EIGEN_STRONG_INLINE Packet8bf pround<Packet8bf> (const Packet8bf& a){
+ BF16_TO_F32_UNARY_OP_WRAPPER(pround<Packet4f>, a);
+ }
++#ifdef __VSX__
+ template<> EIGEN_STRONG_INLINE Packet8bf print<Packet8bf> (const Packet8bf& a){
+ BF16_TO_F32_UNARY_OP_WRAPPER(print<Packet4f>, a);
+ }
++#endif
+ template<> EIGEN_STRONG_INLINE Packet8bf pmadd(const Packet8bf& a, const Packet8bf& b, const Packet8bf& c) {
+ Packet4f a_even = Bf16ToF32Even(a);
+ Packet4f a_odd = Bf16ToF32Odd(a);
diff --git a/dev-cpp/gtest/Manifest b/dev-cpp/gtest/Manifest
index e7e9b2ffc8bf..6e34a81cf600 100644
--- a/dev-cpp/gtest/Manifest
+++ b/dev-cpp/gtest/Manifest
@@ -1,7 +1,7 @@
DIST gtest-1.13.0.tar.gz 862871 BLAKE2B d2768332c233d62f7a5f5332b63dc587c96c24765b2eeaa4f4caf5d421b175aa850d81cec4f50eeef9e06d4b86cb959555b4c2862a197ce3cb86d61fcb51f5d1 SHA512 70c0cfb1b4147bdecb467ecb22ae5b5529eec0abc085763213a796b7cdbd81d1761d12b342060539b936fa54f345d33f060601544874d6213fdde79111fa813e
DIST gtest-1.14.0.tar.gz 867764 BLAKE2B c457f55ac572b9fb1553eee3df7eeeaf1e7dd2c3d747dd5e90dd279038fa5c71bb7b7d9ba1cf7e6143898b2a1d24d100584bd2a48ded41a426870c4825eec1b2 SHA512 765c326ccc1b87a01027385e69238266e356361cd4ee3e18e3c9d137a5d11fa5d657c164d02dd1be8fe693c8e10f2b580588dbfa57d27f070e2750f50d3e662c
EBUILD gtest-1.13.0.ebuild 1870 BLAKE2B f2ea03a8fa7c5d8c39b4a8af7e1a2ee7871fb0636fa457b1a0b850e0307d0f030228d0c7b60fc5b9545cd412b5b6d2886ccc690977682fbd307ff4bf82967a85 SHA512 4fd2ad52f159021aa883364dc0ec5c65376d6efff0279c9aaf516df5f258678df2c2bc84d5b19d638aa7831138e9af3dbb64ea7f7e80ae09923d02a9445ac4ba
-EBUILD gtest-1.14.0-r1.ebuild 1991 BLAKE2B 1bf94cf1ef46c97e6b40bb35d2a461f276966f05184e38d73d24b3756dbdee8f3f55a57a93afb91446bb165f9633c23b092b3162e2ab643d167f9c102018df66 SHA512 06d6eb4b8215ee8746d8752e582a9d43b09b8d617ee35e0a544deb63dc662b3a64849fbf509f93ca09d2f40ffdff18b25e7297c2ce2f3c1329dadad4a5c74c9d
+EBUILD gtest-1.14.0-r1.ebuild 1988 BLAKE2B e022138370dd8185311e10cd1e6efe06b434ff302017a916769bf5703f4c79d541715f556366e17a2b6b0dadec4f78cc04a2acc367174f118474a5c6150fb7cc SHA512 74299997535e7f342984a83c9ba9852b812a37e29ff1448e9849c1ae5eb5a36445d577acf1d1007f5fcb75ae0b13915d702980b71fca3e55d58f99c4ff6fa437
EBUILD gtest-1.14.0.ebuild 1755 BLAKE2B 50437b841c5a62f9f1d39e499bd2190bc0aa2e024fb81e4b834d3c44182e0d349bf8afe07b59a9ebf8ec375c27b234b09572849c34b51f9f7b47400ab7f2c440 SHA512 6888c92fa06a074cc83a8a99b661d2d5db561bd4860e205b10c58d3327eefd7baf5fad8b314f212001df595aa0c225164081420ebd37f6d7423471d9be4a8460
EBUILD gtest-9999.ebuild 1996 BLAKE2B c42acf93040334dd0300980e64d6ad662b0e33b4147d6e2dc2ec10ca9d618d4b2e21840963c114258579439dc736bf6db2b2d11cd56defb2ea7e27210efbcda3 SHA512 be1189ec0f6e3319d3d7b32208c51e6d4d6b8312750ea2ee0d8438ad61a1a1320302ef60645a6c68526c53bd1cf1cc84bd98869b3e61fa8803876714b18793b8
MISC metadata.xml 553 BLAKE2B a6d63b3f65e8cc9bf95fb0197c48f6adcca359f118797b0bb6c624d09dd586efe066c990e6cb709d42f8cbf32f67feeccf74b9662d13ddfd57f6b13f199585d3 SHA512 e1edf26c4cf978203c3c6e3fda887923dbf76101860dc8e6a81a7218f88fae0f28d4b78ce6cf34b5d3a61c550e1042d5fb3d3530f88b5277a5b46c8943dc0677
diff --git a/dev-cpp/gtest/gtest-1.14.0-r1.ebuild b/dev-cpp/gtest/gtest-1.14.0-r1.ebuild
index afb21ca17db8..927e75f3970d 100644
--- a/dev-cpp/gtest/gtest-1.14.0-r1.ebuild
+++ b/dev-cpp/gtest/gtest-1.14.0-r1.ebuild
@@ -21,7 +21,7 @@ else
-> ${P}.tar.gz"
S="${WORKDIR}"/googletest-${GOOGLETEST_COMMIT}
fi
- KEYWORDS="~alpha amd64 ~arm arm64 hppa ~ia64 ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
fi
DESCRIPTION="Google C++ Testing Framework"
diff --git a/dev-cpp/kokkos/Manifest b/dev-cpp/kokkos/Manifest
index 58541996f8c1..795ffb3f7eeb 100644
--- a/dev-cpp/kokkos/Manifest
+++ b/dev-cpp/kokkos/Manifest
@@ -1,3 +1,5 @@
DIST kokkos-4.0.1.tar.gz 2322402 BLAKE2B a4aba2f7ffe7b7c93051ad65d398f442b753975eceb3f83ed1bff0b8c468e4ffdcb6437989e740c65fc550f17ef8ddf78ca50ca881d3953f886309dc7d6fc597 SHA512 cf6742f4be777b52673858b49cf68fdf335e760509688483e62ef41af5026070f69dcf39d010134c85dc6c4868f82a38900872be11ed43190432c8530b90deee
+DIST kokkos-4.3.1.tar.gz 2431142 BLAKE2B 158ceea3c62449f386613b17e996e4d11e9b95c38a92f69fb3c487b90cf5f07dffdafb6ee0a37eff5299e7d1db50efaed4b26b9baebeeea9d675d0d98dd420e4 SHA512 8180ecdec2f0a6167a85dd1eb268996b0310e82098f2329eccf658aff90118a7c85c2f7607984602de2ca48dc45c1dbf30a4843b35c42590e58d4b03beff474a
EBUILD kokkos-4.0.1.ebuild 1307 BLAKE2B 49af4974d49b5f80c64aec156e388b0f10e578d00a27da67f7b15bc40f502ff48e9c739b8d2e8be1b1d6d6e331e184343e34b55bcaf97c4f8ea0b826014a7c6f SHA512 4f76de242f7842d4d6764296136e9eb8f30629e370b35249c6ece9d3d30d9f41eb8f6e9552b7b0de1959726b3b7ed54c164c048ce3c89728b7229484b7bbfd19
+EBUILD kokkos-4.3.1.ebuild 1308 BLAKE2B 52c905b0a914345661d9507c1973575a2d636cf58070501dba7a7b437e74dc5bf8befd63ce082510ebb9618e9c77e4a7063e798690a561bda4c06987629287d6 SHA512 c40b69d230cd428b8ecf1c84632cc1848b042ffdf69f93cadb90b2060fb0eba8025e3c399427c9fa3e2a28411dabdff917b10eb1e8eadef7c36e692e3a0396a6
MISC metadata.xml 440 BLAKE2B ac3497ce481935eaef7f87c9f1c2ff7360b75a7d1f5f9bfc018726784fe3d1573ca16177e0ed956b494371def35bd592878bac27ec3862904b21714c556f937d SHA512 748c3608ee175243a8c02912d18a9297708c1369ac79af913e05a9d2155805fc9b6b366625223d977e378584a69e6bac749e5d3ee0a874d72385427d6149e5c5
diff --git a/dev-cpp/kokkos/kokkos-4.3.1.ebuild b/dev-cpp/kokkos/kokkos-4.3.1.ebuild
new file mode 100644
index 000000000000..208704232631
--- /dev/null
+++ b/dev-cpp/kokkos/kokkos-4.3.1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake toolchain-funcs
+
+DESCRIPTION="C++ Performance Portability Programming EcoSystem"
+HOMEPAGE="https://github.com/kokkos"
+MY_PV="$(ver_cut 1-2).0$(ver_cut 3)"
+SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 -x86"
+IUSE="+openmp test"
+RESTRICT="!test? ( test )"
+
+DEPEND="sys-apps/hwloc:="
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_INCLUDEDIR=include/kokkos
+ -DKokkos_ENABLE_TESTS=$(usex test)
+ -DKokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON
+ -DKokkos_ENABLE_SERIAL=ON
+ -DKokkos_ENABLE_HWLOC=ON
+ -DKokkos_HWLOC_DIR="${EPREFIX}/usr"
+ -DKokkos_ENABLE_OPENMP=$(usex openmp)
+ -DBUILD_SHARED_LIBS=ON
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ local myctestargs=(
+ # Contains "death tests" which are known/expected(?) to fail
+ # https://github.com/kokkos/kokkos/issues/3033
+ # bug #791514
+ -E "(KokkosCore_UnitTest_OpenMP|KokkosCore_UnitTest_Serial)"
+ )
+
+ cmake_src_test
+}
diff --git a/dev-cpp/range-v3/Manifest b/dev-cpp/range-v3/Manifest
index eaa907a4ca00..89b6fc88ef1f 100644
--- a/dev-cpp/range-v3/Manifest
+++ b/dev-cpp/range-v3/Manifest
@@ -1,5 +1,5 @@
AUX 0.12.0-fix-any-1.patch 1252 BLAKE2B 307bbfa93cbecc4b58ff04172958e5d32c7e4f83b19140e6b3819517cb23a9089654954390e081a3ed82dc299f3bb1e3d0b257ed46b5f24cdb926bcaa28506e5 SHA512 617dfae7cf816cb554136a895f277541a2fa0030e78df60bcdbe6e3a2728f7d702b7c82ac15089f4c3a0fe83e92199b95c665a696471ceac70c8966d66381f25
AUX 0.12.0-fix-any-2.patch 5500 BLAKE2B b1d5df033bdda42d7db172e07a6577d398603ddc262d409529463866f0e5ebd87ff5082941313b61a346c8bae1ac6870103e307c123d525c49eefc97a00af26c SHA512 51dfa7f70020b174666034636de4e326c80bc292c6e579731df95ba07ec60a9523b4f231bd31a0f8217f23e4fd64be785dda3af8e018ebe7b17ba087fe6446f2
DIST range-v3-0.12.0.tar.gz 582834 BLAKE2B 252066fae70aae76450226f2c17248662de4778dcebcd7dbaa2bf757c1bfe3e7441f65e41e3110c1ae83ae93a41c54d6c006dbf5482ffbe09a3aa4f51d02df9c SHA512 b8b632b8e0f2a3234ef61813212c237f648cd741e816ca57bd86f82f6459f7d755e2b70361d2aa43847874fb546a31a792ab1c3ba90292818ae7313438dc62d0
-EBUILD range-v3-0.12.0.ebuild 1222 BLAKE2B 51aadc96e32717ac9c1c6b7dcc61048e89e46f90b52d875809d21bd1f8093a0038b35691b6514c8160a780aecae9ba19febc59712152b79893d459b44baa7890 SHA512 4a4b0cdf1d202e40cc083067f8a6dc2df73ac61d8019a9f511d2c9986e661ebb80547cff2c49ad6643cfc58e0bfea320185cd0691f3878abef459473db669e77
+EBUILD range-v3-0.12.0.ebuild 1221 BLAKE2B 43e6ed94902a160daea9f2d7c70aba1c23bad5020d8f15c06a7537fbe0a16d3fb3c577404984a164a61ca6aec780e2becdf346b0d041904d49529a7b72dd6def SHA512 84397fceb94b7032f64a6cd9fc86fce7b311dcfec72d0367f6d07897ea47932d70e3eb8fddf3972f4c3e9b1eaa92497bed53fc318ba9036dfa1871fca06061a1
MISC metadata.xml 810 BLAKE2B bdebf063bfd0652ef3a38f5c96f08fbcfe3933937aa00883d39cc216a79ebfd65fa3c538d15ab0b5b4855ef7696b98e14c292b6587f2d870ca9d4eb6d7d7e96c SHA512 b24ff8d2452b70c34a941c693e6b2bc256fbcc23a49acabdb7126d593b44de30116d9543edf57bf49ca5c6ba854b851b802167347a08736b16a1b200c28aa5fc
diff --git a/dev-cpp/range-v3/range-v3-0.12.0.ebuild b/dev-cpp/range-v3/range-v3-0.12.0.ebuild
index 1109148151c2..fd75ecd9247b 100644
--- a/dev-cpp/range-v3/range-v3-0.12.0.ebuild
+++ b/dev-cpp/range-v3/range-v3-0.12.0.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://github.com/ericniebler/${PN}/archive/${PV}.tar.gz -> ${P}.tar.g
LICENSE="Boost-1.0"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-cpp/robin-map/Manifest b/dev-cpp/robin-map/Manifest
index 58a0d671a2c6..aa7796f606b6 100644
--- a/dev-cpp/robin-map/Manifest
+++ b/dev-cpp/robin-map/Manifest
@@ -1,4 +1,6 @@
DIST robin-map-0.6.3.tar.gz 64506 BLAKE2B 46a2b5b47346016695db0c49f73cfbf8530b7db0a31527030eb00f3b6f0695325ab6fe16de1e60d6b1d0793818bdd1e31e50117f2e2e4c50154f65b38ac66d84 SHA512 485557f300d33bda62bb8accdf246819ee8ffe956bc022e7ddca54ff6ad1a9fdb8db8d80690add3ef238e834d1eb8e2905920cb0a0674e7df010f6946d01297b
+DIST robin-map-1.3.0.tar.gz 70562 BLAKE2B be6ee47ea06edd2485c16e02eecf8db28c7d18c2eb933450df54e0bab8c7ded79954a295a65a8990b641896186efef391a9f9f0f5b236ba96154bfa6cac45e14 SHA512 862cb98d771d1acb692e27d1cc8a4f2cda0883b66af7b38b63ea702ed2d4fc4d49e5700ca4d5f5148fee132f36e111c4839d4f8c52c96a9c60f3937d941b2320
EBUILD robin-map-0.6.3.ebuild 509 BLAKE2B 5dadc9271c94156fc401511e0e52d791d6e52ac463ebf8b7b6e3141e2ea09dd8379b36bcca378b899e353b48a8a6234fbe67176cc1f6ddc162dc37b73f0dbc30 SHA512 9a4a9ec944384b25dec8ad9c086b80939a18ca79bb7b7a8cfa2bfa6d9718f5b5460124ce86bcab59c753203f52cd57d9c95ce149f095a3b77f4cb9e438fe402a
-EBUILD robin-map-9999.ebuild 504 BLAKE2B fafe5db735e95537d9885600e4a2c760ed5070c769079411ea422c892bef4b06033f50456b855e662760a2d71eabdc8ee3b1f9f1e9dc5f0785893b34b1187877 SHA512 42dc895fc411aaeca3854220783c544dcb691c54590af7d5c7562fc44cde6e19a86d10c3ceb942ea2a34eef36115e513fd318867592ae0c9d8302d0ec912216a
+EBUILD robin-map-1.3.0.ebuild 792 BLAKE2B 9ee7616fe76d34570d1bdaf02d23b7e3b9ec292e5b72268582236b66500baf859ac8e6d4f70a859dfbbdb28be53eabd94e6904372a70b462b15c17dd8dd00ec8 SHA512 e68b25b99abb5f98e4eddc791e1f6d21f5e66e733e25bf72968f36b472ab6446a526a79c4f702c2d7b1ee08184f6faaed7213432a2a8683d300147fed507eefb
+EBUILD robin-map-9999.ebuild 792 BLAKE2B 9ee7616fe76d34570d1bdaf02d23b7e3b9ec292e5b72268582236b66500baf859ac8e6d4f70a859dfbbdb28be53eabd94e6904372a70b462b15c17dd8dd00ec8 SHA512 e68b25b99abb5f98e4eddc791e1f6d21f5e66e733e25bf72968f36b472ab6446a526a79c4f702c2d7b1ee08184f6faaed7213432a2a8683d300147fed507eefb
MISC metadata.xml 345 BLAKE2B 5cc37d0c8e9121615d9a64f9c0a2d401f10a37e82a17627c2b0284b7ec557d689b6f37475cc7f948a06e56cb94c96faa8d50082298ffc06dd2109b0519d3473f SHA512 e7aa93500c38f156256e9f3e2b62a1c98c0016fc70b930f69287737438931ef8cf09a92e5f828d5ae2fd140c94af50e3aa0345b2f0d9499764f0f6f37438ebcf
diff --git a/dev-cpp/robin-map/robin-map-1.3.0.ebuild b/dev-cpp/robin-map/robin-map-1.3.0.ebuild
new file mode 100644
index 000000000000..5ebd0b902e42
--- /dev/null
+++ b/dev-cpp/robin-map/robin-map-1.3.0.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="C++ fast hash map and hash set using robin hood hashing"
+HOMEPAGE="https://github.com/Tessil/robin-map"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Tessil/robin-map"
+else
+ SRC_URI="https://github.com/Tessil/robin-map/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? ( dev-libs/boost )
+"
+
+src_test() {
+ cd tests || die
+ sed -i \
+ -e '/Boost_USE_STATIC_LIBS/d' \
+ -e 's/-Werror//' \
+ CMakeLists.txt || die
+ cmake -S "${S}/tests" -B . -GNinja || die
+ eninja
+ ./tsl_robin_map_tests || die
+}
diff --git a/dev-cpp/robin-map/robin-map-9999.ebuild b/dev-cpp/robin-map/robin-map-9999.ebuild
index 99255a6ea187..5ebd0b902e42 100644
--- a/dev-cpp/robin-map/robin-map-9999.ebuild
+++ b/dev-cpp/robin-map/robin-map-9999.ebuild
@@ -1,7 +1,7 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
inherit cmake
@@ -13,8 +13,25 @@ if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://github.com/Tessil/robin-map"
else
SRC_URI="https://github.com/Tessil/robin-map/archive/v${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+ KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
fi
LICENSE="MIT"
SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? ( dev-libs/boost )
+"
+
+src_test() {
+ cd tests || die
+ sed -i \
+ -e '/Boost_USE_STATIC_LIBS/d' \
+ -e 's/-Werror//' \
+ CMakeLists.txt || die
+ cmake -S "${S}/tests" -B . -GNinja || die
+ eninja
+ ./tsl_robin_map_tests || die
+}
diff --git a/dev-cpp/tbb/Manifest b/dev-cpp/tbb/Manifest
index f41f489c2adf..d9c7ccf9da58 100644
--- a/dev-cpp/tbb/Manifest
+++ b/dev-cpp/tbb/Manifest
@@ -1,5 +1,6 @@
AUX tbb-2020.1-makefile-debug.patch 2640 BLAKE2B 98e1d88f279452898be78fb53235427a5c45a0056429e07acd5bc273a48c7214dc8df29c72cba344688f650fce25bba06f6f9e4dfbf1091260544e95159cf33d SHA512 9a29ff67321b75efe10621bfe924e89a5c51d4e7327e20aa69018aaea590189ed297b9ab94bd3b48172d0b093e3d2aaebfc7088b480364f6f6c7802a27d3c1e4
AUX tbb-2020.3-gcc13.patch 1384 BLAKE2B 8d4288d8c4597247930949d053bcbc4f6b91f3693a6b2e54b67b2ca6f0c2d4797428654eca0afa3b09d0cd2eff005d553d637cefa962017b80a7af8e0efde49f SHA512 101781458837345c0efc1c3cd7c8d1d517628df190a73a9b8d9de55cb150807cd8c548bdd33ee11a837b07bb6f3b705f4bc4ef5a57a944fe9baa6c34958b1164
+AUX tbb-2021.13.0-test-atomics.patch 1391 BLAKE2B 96d18091c1df00c2ae4dbbc341a727559a3137e940a2c90efb8bd218f63b0376451b58ed1c0f5ef8a3711c48c82d7fff83eb07443a92736a6e50d942d8071f5c SHA512 0d155b182ef85437dfa16021b5cee12fa6534318a4890c08cb107826f0ebb327385dd540a094399ce53e91211fed16983a359eeabb01d04dc7d2445cf49c638e
AUX tbb-2021.4.0-lto.patch 9710 BLAKE2B 801b7886af6ec02f118add4607c22b26cfafb14997162d5d4e72ec3b48d6ab5ea03995c6a02957331b65172b2d18d932b59bf655352dcbbc178aa508613681f1 SHA512 d65c84a3246dcf5a7c799fd87566834842adfd104bca2c0b0cbd9e2dcae0b900a189154ca9d9c95351c32ff9014cee15f0eb924228e486b58fdcfc624b12d46b
AUX tbb-2021.4.0-missing-TBB_machine_fetchadd4.patch 645 BLAKE2B 8a769caed4817413f8e8d11ae3264a75769826989e3815cf24fa856d601ded1ffbd7edd772aa268ca0f8afa15f9fab8bf1deb019635f2355377367814c62d5ce SHA512 d84bed45b82cd63c8afb1f22e2688a7e298014997fa3d1107d7a91b1d4a0f7a54a42cfa38841a051c6a0ca6721182584472f34362c97edba02e3131c77230545
AUX tbb-2021.5.0-flags-stripping.patch 1078 BLAKE2B 32b5463980ae8841ce551caffb91d5bb20a70af4d93d6c0d9e45bd235f3948599c42fa779eb4c53a6994275d827c0074dab8cb2e66313989a1ffe067e48b12c3 SHA512 22460e212ea506bfd13765eb9557d21cb19d4fd9f42e195ed36f12aabd6e9b4c24a218a5bcb55894f45ce0f118de89287751913d386931bd9cda3a389bc04345
@@ -13,6 +14,7 @@ DIST tbb-2020.3.tar.gz 2639788 BLAKE2B 3e92bccdc8179fc049379ccbb8ad7f615623177ab
DIST tbb-2021.10.0.tar.gz 2598088 BLAKE2B ba8352474b97c3d98b534cbfd8f61af165352967529f19226dbae17f17d20a8b5dfd7a3b29bab85431620cea1ee1c5990ec7311cc9b1b865d6aa1800540dd6d0 SHA512 d71cf317e7f78948c1ea20977cfcfba1eff72cb20c457c87e624cb3aaa3215a1c24eeeec11ed6ed99cf118c577d956234202458bb5e0215c9c317099d9c3b732
DIST tbb-2021.11.0.tar.gz 2613493 BLAKE2B 2b56042c8126709b6f36c1118685b28ddf2ff39b6563aae168d6bb8106d234757ff125a39da37f907a7da62f2f2ad64e4db01ca028d20c1e74def4ba2e92c1a6 SHA512 4779141b7602f2fa3a509fdd346824ba270a3a568df3649ce8cb51264d233df5cec5e5cb67b91319dd11d3d5e054697b4ed345e07216107985ddb6e1e7ef94e5
DIST tbb-2021.12.0.tar.gz 2617255 BLAKE2B 3e1db8b1972a7225c5355def66ae40006e6e0f0f97e2efff45dd361f724e348a2f0476bc14b59f89f5361cac6fa36a4973602467bc7fbb2b8b139a4ff4dd58de SHA512 64022bcb61cf7b2030a1bcc11168445ef9f0d69b70290233a7febb71cc7a12cc2282dddc045f84e30893efe276342f02fd78d176706268eeaefe9aac7446d4e9
+DIST tbb-2021.13.0.tar.gz 2613916 BLAKE2B 0edd2d8a966dba673e50827629491924140a302430f4380e7cd9914f3592eaf6515204c7267649237970a5482cc030f0c29cbddd1476f16caf46989f70041058 SHA512 1f536b98c4eb331c3ba21e4b36362c932d7852b974ea7237b5f7bffb0e996d76f688c7ac534cb56f5866cfdffd5d3f015521b4c2ca21e584503070782ca82a2f
DIST tbb-2021.5.0.tar.gz 2463218 BLAKE2B 2d50d312b86318ba4923afe68753b3781f9646cbdb33861f3458301a3a19b7ca3aab6959dca085294dfc743d7f552635f80fb524ec5d780a46f58ffe02e3280d SHA512 0e7b71022e397a6d7abb0cea106847935ae79a1e12a6976f8d038668c6eca8775ed971202c5bd518f7e517092b67af805cc5feb04b5c3a40e9fbf972cc703a46
DIST tbb-2021.7.0.tar.gz 2571727 BLAKE2B 2977ef1a33d9bc7baa40e0e57c02e62798a09c6c66cdbe369f2702d87fd9877c3d97f8d83f71384028995ea0956f5c5630d4aaf4edbe68538e7c514d3b87085c SHA512 d314e3d88b85c96607a9eda15e3d808bf361eb562a534c59101929236e90c187883e7718e5435b5e7f01f4ee652c9765af95f5f173368b83997e4666b7403a49
DIST tbb-2021.8.0.tar.gz 2575336 BLAKE2B 2c3a7f0e59d70b17550f805461a15a520c7f1b3a37a41bd51c51f9f5863b50812d2b939351e11e0f4ceb3da8a47e413abe171bcb6bfb71c0fe2f81ed373f65f2 SHA512 72f68730dfd89409796f9548d3c302111787712089688a7c77092ed1b3a7bf4e7444fe4b58015d2c78b7b71259852526789b2483bf1e71bea8146c4b4676e7b4
@@ -21,6 +23,7 @@ EBUILD tbb-2020.3.ebuild 3437 BLAKE2B 16b92e3a47f6ff29b92163d589f90fed7cffa31f1e
EBUILD tbb-2021.10.0.ebuild 1373 BLAKE2B 55884f50fce48432b098ac6ac8b4f1111db584dcb0fd8b97a47c432a031d401a64aa0e47a9e530f51d79fc366a1445d0b489f74b3f7b4a8a45fcaadf3a74c4d7 SHA512 0371109aeeb690b5325abd9a8fb62b6246da916807ba11b3bcd916659f35ccfd95f7f596aaaf7e6f7d588e87a915a06d5a164f0033e547e6fcfccf5b47aedce1
EBUILD tbb-2021.11.0.ebuild 1373 BLAKE2B 8ffdd8f4c0fa0be004647dfc8bc6c14c154b3e3c1963a4c8e3a05fab58162957321457dd679fbce184ef738ad448ef4cd8c28ff3fb19aaa5d99445459db46258 SHA512 95a06feac192edac1b5cda90413b9b1aa045869acaf46c32dd69572ebf564c3ec23f54793b46a4b8fb924a1e9df645eab569db7e97b6e9a459872dc736926e14
EBUILD tbb-2021.12.0.ebuild 1373 BLAKE2B 8ffdd8f4c0fa0be004647dfc8bc6c14c154b3e3c1963a4c8e3a05fab58162957321457dd679fbce184ef738ad448ef4cd8c28ff3fb19aaa5d99445459db46258 SHA512 95a06feac192edac1b5cda90413b9b1aa045869acaf46c32dd69572ebf564c3ec23f54793b46a4b8fb924a1e9df645eab569db7e97b6e9a459872dc736926e14
+EBUILD tbb-2021.13.0.ebuild 1423 BLAKE2B 1752a9546d5c9291fc5c3081ebb237be2172cc071143e587dc5a2278143279d756308a9f3f445069da8c6a41d6cab1f124625963fffc0a0e27b0f11df9bf695c SHA512 48ee55cdc0a33d8b7ffa56fe88791d13469fb0a21a75d81410f616dc59013f38bcf34c08d15691ae7973093d9d1f3761568da96b7079ba50f2400589651fa086
EBUILD tbb-2021.5.0-r1.ebuild 1618 BLAKE2B f382a29be9b11a662e9f90b501c589da661a90ff0078a2f77a53f56f310748a74905f6ac5ef2ef9eda4b1ab44c02820ff2fbff1868cc6c30ee9e70e42672cbc5 SHA512 198135a64c94e5665cf172dd4c0dc07b9155bf070451c6aaa56ffeaf37c5bd1512bae15591c122f8ef73855c3189b816561ba27bb90831dd33b0e6c583174fdd
EBUILD tbb-2021.7.0-r1.ebuild 1092 BLAKE2B 449710ffde68b12225ac8bccd749f54abda65e6764339cdc56b855e2fceb084362971302d1f9bbc6c8742cbdccb430d02b9fe0babfa46a3d5f3c246c679efe8d SHA512 a4af6752b60e17c22215f2455643e3ebc3440dadc058196f0482fdde08bbf95184ad1fdf9fb3f6409287d6406c3b4803fd30c0a1b349fffdc9bf10a4db14ed52
EBUILD tbb-2021.7.0.ebuild 1112 BLAKE2B fd19a921be35faeb73ab5bf64a124e02055da4b52b9fbdc4f23eb1131042260d562016fff0a91e3ef9dc53a864ca5d6ebd33b2b2cc5b677bd600eebf740dd70d SHA512 e9d46e652ca21812fcbfb9e2d37967167c72bb45c5d246c10977fb2b80c129ce24525647abf34a491f797a673e349b600badb6783a327301bede83c0b5173cb0
diff --git a/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch b/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch
new file mode 100644
index 000000000000..7cc8216153d0
--- /dev/null
+++ b/dev-cpp/tbb/files/tbb-2021.13.0-test-atomics.patch
@@ -0,0 +1,38 @@
+From c828ae47b8f4bea7736d2f9d05460e2b529c9d7d Mon Sep 17 00:00:00 2001
+From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Date: Fri, 9 Dec 2022 12:36:11 +0100
+Subject: [PATCH] Add cmake check for libatomic requirement when building with
+ gcc (#980)
+
+Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+---
+ cmake/compilers/GNU.cmake | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/cmake/compilers/GNU.cmake b/cmake/compilers/GNU.cmake
+index cd76acfe1e..59f4e6934f 100644
+--- a/cmake/compilers/GNU.cmake
++++ b/cmake/compilers/GNU.cmake
+@@ -44,6 +44,22 @@ if (NOT MINGW)
+ set(TBB_COMMON_LINK_LIBS dl)
+ endif()
+
++# Check whether code with full atomics can be built without libatomic
++# see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81358
++include(CheckCXXSourceCompiles)
++check_cxx_source_compiles("#include <atomic>
++int main() {
++ std::atomic<uint8_t> w1;
++ std::atomic<uint16_t> w2;
++ std::atomic<uint32_t> w4;
++ std::atomic<uint64_t> w8;
++ return ++w1 + ++w2 + ++w4 + ++w8;
++}" TBB_BUILDS_WITHOUT_LIBATOMIC)
++
++if(NOT TBB_BUILDS_WITHOUT_LIBATOMIC)
++ set(TBB_COMMON_LINK_LIBS ${TBB_COMMON_LINK_LIBS} atomic)
++endif()
++
+ # Ignore -Werror set through add_compile_options() or added to CMAKE_CXX_FLAGS if TBB_STRICT is disabled.
+ if (NOT TBB_STRICT AND COMMAND tbb_remove_compile_flag)
+ tbb_remove_compile_flag(-Werror)
diff --git a/dev-cpp/tbb/tbb-2021.13.0.ebuild b/dev-cpp/tbb/tbb-2021.13.0.ebuild
new file mode 100644
index 000000000000..ac958e5973a4
--- /dev/null
+++ b/dev-cpp/tbb/tbb-2021.13.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib flag-o-matic
+
+DESCRIPTION="High level abstract threading library"
+HOMEPAGE="https://github.com/oneapi-src/oneTBB"
+SRC_URI="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/oneTBB-${PV}"
+
+LICENSE="Apache-2.0"
+# https://github.com/oneapi-src/oneTBB/blob/master/CMakeLists.txt#L53
+# libtbb<SONAME>-libtbbmalloc<SONAME>-libtbbbind<SONAME>
+SLOT="0/12.5-2.5-3.5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="!kernel_Darwin? ( sys-apps/hwloc:= )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2021.8.0-gcc-13.patch
+ "${FILESDIR}"/${PN}-2021.13.0-test-atomics.patch
+)
+
+src_prepare() {
+ # Has an #error to force compilation as C but links with C++ library, dies
+ # with GLIBCXX_ASSERTIONS as a result.
+ sed -i -e '/tbb_add_c_test(SUBDIR tbbmalloc NAME test_malloc_pure_c DEPENDENCIES TBB::tbbmalloc)/d' test/CMakeLists.txt || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # Workaround for bug #912210
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+
+ local mycmakeargs=(
+ -DTBB_TEST=$(usex test)
+ -DTBB_ENABLE_IPO=OFF
+ -DTBB_STRICT=OFF
+ )
+
+ cmake-multilib_src_configure
+}
diff --git a/dev-cpp/xsimd/Manifest b/dev-cpp/xsimd/Manifest
index 21d48dbecda6..f69c57ee861c 100644
--- a/dev-cpp/xsimd/Manifest
+++ b/dev-cpp/xsimd/Manifest
@@ -1,8 +1,12 @@
AUX xsimd-11.1.0-c++17.patch 1429 BLAKE2B 23be29fdd74ed37632bd1fba0ffdedf08af48f14985494f5befac4afb34622bb44e294e954d9d4e57a07ee6e9d988a48a93dd1b66a6f6206b79bd7c0cb600cc8 SHA512 41a474a6d768aec39e6760d4ff60017a5e3d5c4349bf244d3de1464bd9b06022d6cadcd4f91cc17a6630f38f1b0fe0e3aa4fa5a6810b8c57d649f5a8da28c217
AUX xsimd-11.1.0-no-march.patch 3720 BLAKE2B 21adb3c35d8161db849c90363781642fa9c1051686e6dba00e55396adc905d1276540c663d34ab7bd124daa3fe6e367c5c41c17d7e0f31d55b82b1488fbdee0f SHA512 567f535a2a0dcdb02f05b53beba48e9704ef40d63df9531014257e0773a8df09854245ec5d22e6b7cffdf7541e8f48e55e2ea8faa513ca93f952aa177757bb3a
AUX xsimd-12.1.1-no-march.patch 3739 BLAKE2B 44fb2ddfb55b8109e3b92a1479647ecbaf0f16fe949bc70c2f12fcfbd1cb0d87bfdf43d0fc2ac835bde8dbe843527d6426692a2fd0b504b6cfdcee824ae5d262 SHA512 82d5d1834af23f94ef0421c328e8f0b84c4c3b05acbd3c05bc9ea9c56c4078e827b8dcecf5f726deb35de9b3693c63effd5b7085c07a3b964f25a577d53c6da2
+AUX xsimd-13.0.0-detection-simd-with-mitigations.patch 5810 BLAKE2B a9a2bf8211e60c4e370c6c845cb06a1b17c7666778e907ba3215c9309a82e70efba2462cfb77298f15dd2366b0354c5830c99a3d08cfd619981b5e9c5179726b SHA512 b01b33722aa0a45f74d4df9810ea442ec37932aeb188c5c40e63f15533667b82b0ad5a0c2c737e18ad327e70c44bf13669f46dcc57fcde305dd94f0d24421e9f
+AUX xsimd-13.0.0-sve-rvv.patch 3244 BLAKE2B 50681c648f98caf5efa5c916618be090435f1e35ecc1877e4c933e31d2e869c25cc36b6c8d885ec0749753b07b903125b17dbfd55e95e5f5e1a3e01363942463 SHA512 36f4dfee1103155b1dc9159293690df937fd554d0ce401834193e59283f65beb366f9a48f5fc25bb367a11c0c2b7a57b7e225d1a9cd74de9f1a143e919c0b052
DIST xsimd-11.1.0.tar.gz 219350 BLAKE2B 2bbbc4f7dbe489a407fe798b146c008aba44664efc943c2e1507d5c6e7da2a03ed91abf0d872e5abf9bd94be3e76bef276ec5b47d4e356b42a7b4c680bd6f3d9 SHA512 3a6141dfa4d95a977f4222880dfd06197613d153a78a84653022423279eec037ea9def08ae225aba7231c0b2c434ab7c907c965f8367fb0db9b96113980b51f3
DIST xsimd-12.1.1.tar.gz 253141 BLAKE2B 29efbb045d8ade8737d702a73f3d0a912111dd4fbc84485c0e54c8b06d73edbb4b85f4b51e24da9bed0dea010b0cce9d99b57e20e8b94d3daf90d46031548eb9 SHA512 8e45a8e9b28358d5f20f713ea19a8c366edc62790c27984149f283dfe808d78a549c8ec465e8b3677d7e30b2cb80093908de364bbb9dc80683f5fdfb843131e1
+DIST xsimd-13.0.0.tar.gz 259967 BLAKE2B 63267c75a7e8ed2e8689a912e79a1d012ff3cf3813969f97a640801e372ec9e66a6e3d3034b6918a30dc3374e8211fd1107f1309156354b6bca6ba17c6f132b4 SHA512 cdc42ddad3353297cf25ea2b6b3f09967f5f388efc26241f2997979fdbbac072819ff771145bc5bfa86cb326cca84b4119e8e6e3f658407961cf203a40603a7f
EBUILD xsimd-11.1.0-r1.ebuild 1034 BLAKE2B fdc6a900c039da14a5091ee7ed4a9ea9e2611610a9bd812fc6be91544e08e2f91d101b0800e70c8df224bab2d08677723e9aece300edbca585d9e31ee9425c4a SHA512 0e00b0d9143cd2c2736be80f35616fbb17789bc9696efb9ee340d13243b2c1c299314549faeeb6e02b3029e96709d8e7c108fe2b58cd5658aa60a8e9ff44c1e1
EBUILD xsimd-12.1.1.ebuild 1045 BLAKE2B 263ebcc57be8996455820190be8d339f4f22ceb17d4da6e8f1438502307b429b091cf721d2ea9e55e7a2a6c66e65d1d824a271af3f5aeec0d66aa519c2e345c7 SHA512 998d903d3841879ce50c7e812b74d04bea52f49eb02222d886d4322f4cd7dd386c6eecf95f39b26668c93d91ac899c2c336ba6a677d3bd354e07c5aff52d8ed3
+EBUILD xsimd-13.0.0.ebuild 1161 BLAKE2B fecc69fcb7fb158a22d5bf98f3b4f0e7ea7a69364daf25371f2fe9979fd0b8b2a6bb1d1fcbbe6dd54d4c5d0cd1877cf2eb9f56d357e98d722ced29136b701732 SHA512 536dcb2b6373a3463142d03cca4544856d529106bd049aca0e720c14a09cf4457a4d9a42de0fe3bbd859b7934cb180469191f513e5013155bc100944702f018e
MISC metadata.xml 385 BLAKE2B e22c7622c338c277eee7dd048463a2d3244fffcd255b1a9dd9652a1295c3c1f0043e67fab28b084b3f10b03b5fd5e36b4f713c040ddc168ac6be9287af14e031 SHA512 5826eb1e62fa79c1e355668ad83a9e4e113b3cf154535537181597062f952ad436c56c8d9dd9f3599815307e33f4e1366b2a9b109d27c53bc112fe0a4c62d885
diff --git a/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch b/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch
new file mode 100644
index 000000000000..6aab22cd8416
--- /dev/null
+++ b/dev-cpp/xsimd/files/xsimd-13.0.0-detection-simd-with-mitigations.patch
@@ -0,0 +1,148 @@
+https://mail.kde.org/pipermail/distributions/2024-July/001511.html
+https://github.com/xtensor-stack/xsimd/commit/96edf0340492fa9c080f5182b38358ca85baef5e
+
+From 96edf0340492fa9c080f5182b38358ca85baef5e Mon Sep 17 00:00:00 2001
+From: Dmitry Kazakov <dimula73@gmail.com>
+Date: Tue, 28 May 2024 22:21:08 +0200
+Subject: [PATCH] Fix detection of SSE/AVX/AVX512 when they are explicitly
+ disabled by OS
+
+Some CPU vulnerability mitigations may disable AVX functionality
+on the hardware level via the XCR0 register. We should check that
+manually to verify that OS actually allows us to use this feature.
+
+See https://bugs.kde.org/show_bug.cgi?id=484622
+
+Fix #1025
+---
+ include/xsimd/config/xsimd_cpuid.hpp | 91 ++++++++++++++++++++++------
+ 1 file changed, 72 insertions(+), 19 deletions(-)
+
+diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp
+index f22089bac..6dda3be09 100644
+--- a/include/xsimd/config/xsimd_cpuid.hpp
++++ b/include/xsimd/config/xsimd_cpuid.hpp
+@@ -114,6 +114,35 @@ namespace xsimd
+ #endif
+
+ #elif defined(__x86_64__) || defined(__i386__) || defined(_M_AMD64) || defined(_M_IX86)
++
++ auto get_xcr0_low = []() noexcept
++ {
++ uint32_t xcr0;
++
++#if defined(_MSC_VER) && _MSC_VER >= 1400
++
++ xcr0 = (uint32_t)_xgetbv(0);
++
++#elif defined(__GNUC__)
++
++ __asm__(
++ "xorl %%ecx, %%ecx\n"
++ "xgetbv\n"
++ : "=a"(xcr0)
++ :
++#if defined(__i386__)
++ : "ecx", "edx"
++#else
++ : "rcx", "rdx"
++#endif
++ );
++
++#else /* _MSC_VER < 1400 */
++#error "_MSC_VER < 1400 is not supported"
++#endif /* _MSC_VER && _MSC_VER >= 1400 */
++ return xcr0;
++ };
++
+ auto get_cpuid = [](int reg[4], int level, int count = 0) noexcept
+ {
+
+@@ -148,19 +177,43 @@ namespace xsimd
+
+ get_cpuid(regs1, 0x1);
+
+- sse2 = regs1[3] >> 26 & 1;
+- sse3 = regs1[2] >> 0 & 1;
+- ssse3 = regs1[2] >> 9 & 1;
+- sse4_1 = regs1[2] >> 19 & 1;
+- sse4_2 = regs1[2] >> 20 & 1;
+- fma3_sse42 = regs1[2] >> 12 & 1;
++ // OS can explicitly disable the usage of SSE/AVX extensions
++ // by setting an appropriate flag in CR0 register
++ //
++ // https://docs.kernel.org/admin-guide/hw-vuln/gather_data_sampling.html
++
++ unsigned sse_state_os_enabled = 1;
++ unsigned avx_state_os_enabled = 1;
++ unsigned avx512_state_os_enabled = 1;
++
++ // OSXSAVE: A value of 1 indicates that the OS has set CR4.OSXSAVE[bit
++ // 18] to enable XSETBV/XGETBV instructions to access XCR0 and
++ // to support processor extended state management using
++ // XSAVE/XRSTOR.
++ bool osxsave = regs1[2] >> 27 & 1;
++ if (osxsave)
++ {
++
++ uint32_t xcr0 = get_xcr0_low();
++
++ sse_state_os_enabled = xcr0 >> 1 & 1;
++ avx_state_os_enabled = xcr0 >> 2 & sse_state_os_enabled;
++ avx512_state_os_enabled = xcr0 >> 6 & avx_state_os_enabled;
++ }
++
++ sse2 = regs1[3] >> 26 & sse_state_os_enabled;
++ sse3 = regs1[2] >> 0 & sse_state_os_enabled;
++ ssse3 = regs1[2] >> 9 & sse_state_os_enabled;
++ sse4_1 = regs1[2] >> 19 & sse_state_os_enabled;
++ sse4_2 = regs1[2] >> 20 & sse_state_os_enabled;
++ fma3_sse42 = regs1[2] >> 12 & sse_state_os_enabled;
+
+- avx = regs1[2] >> 28 & 1;
++ avx = regs1[2] >> 28 & avx_state_os_enabled;
+ fma3_avx = avx && fma3_sse42;
+
+ int regs8[4];
+ get_cpuid(regs8, 0x80000001);
+- fma4 = regs8[2] >> 16 & 1;
++ fma4 = regs8[2] >> 16 & avx_state_os_enabled;
+
+ // sse4a = regs[2] >> 6 & 1;
+
+@@ -168,23 +221,23 @@ namespace xsimd
+
+ int regs7[4];
+ get_cpuid(regs7, 0x7);
+- avx2 = regs7[1] >> 5 & 1;
++ avx2 = regs7[1] >> 5 & avx_state_os_enabled;
+
+ int regs7a[4];
+ get_cpuid(regs7a, 0x7, 0x1);
+- avxvnni = regs7a[0] >> 4 & 1;
++ avxvnni = regs7a[0] >> 4 & avx_state_os_enabled;
+
+ fma3_avx2 = avx2 && fma3_sse42;
+
+- avx512f = regs7[1] >> 16 & 1;
+- avx512cd = regs7[1] >> 28 & 1;
+- avx512dq = regs7[1] >> 17 & 1;
+- avx512bw = regs7[1] >> 30 & 1;
+- avx512er = regs7[1] >> 27 & 1;
+- avx512pf = regs7[1] >> 26 & 1;
+- avx512ifma = regs7[1] >> 21 & 1;
+- avx512vbmi = regs7[2] >> 1 & 1;
+- avx512vnni_bw = regs7[2] >> 11 & 1;
++ avx512f = regs7[1] >> 16 & avx512_state_os_enabled;
++ avx512cd = regs7[1] >> 28 & avx512_state_os_enabled;
++ avx512dq = regs7[1] >> 17 & avx512_state_os_enabled;
++ avx512bw = regs7[1] >> 30 & avx512_state_os_enabled;
++ avx512er = regs7[1] >> 27 & avx512_state_os_enabled;
++ avx512pf = regs7[1] >> 26 & avx512_state_os_enabled;
++ avx512ifma = regs7[1] >> 21 & avx512_state_os_enabled;
++ avx512vbmi = regs7[2] >> 1 & avx512_state_os_enabled;
++ avx512vnni_bw = regs7[2] >> 11 & avx512_state_os_enabled;
+ avx512vnni_vbmi = avx512vbmi && avx512vnni_bw;
+ #endif
+ }
+
diff --git a/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch b/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch
new file mode 100644
index 000000000000..38ea56d1baa2
--- /dev/null
+++ b/dev-cpp/xsimd/files/xsimd-13.0.0-sve-rvv.patch
@@ -0,0 +1,88 @@
+https://mail.kde.org/pipermail/distributions/2024-July/001511.html
+https://github.com/xtensor-stack/xsimd/commit/80a59235e3ffa51659aaa06f002bfd088b77023c
+
+From 80a59235e3ffa51659aaa06f002bfd088b77023c Mon Sep 17 00:00:00 2001
+From: Dmitry Kazakov <dimula73@gmail.com>
+Date: Fri, 14 Jun 2024 10:19:55 +0200
+Subject: [PATCH] Fix xsimd::available_architectures().has() for sve and rvv
+ archs
+
+Ideally the patch CPU detection code should also check if the length
+of SVE and RVV is actually supported by the current CPU implementation
+(i.e. ZCR_Elx.LEN register for SVE and something else for RVV), but
+I don't have such CPUs/emulators handy, so I cannot add such checks.
+
+Given that xsimd::available_architectures().has() is a new feature
+of XSIMD13 and the length check has never been present in XSIMD, this
+bug is not a regression at least.
+
+The patch also adds a unittest that reproduces the error the patch fixes
+---
+ include/xsimd/config/xsimd_cpuid.hpp | 12 ++++++++++--
+ test/test_arch.cpp | 15 +++++++++++++++
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp
+index 6dda3be09..8021fceb8 100644
+--- a/include/xsimd/config/xsimd_cpuid.hpp
++++ b/include/xsimd/config/xsimd_cpuid.hpp
+@@ -42,6 +42,10 @@ namespace xsimd
+ #define ARCH_FIELD_EX(arch, field_name) \
+ unsigned field_name; \
+ XSIMD_INLINE bool has(::xsimd::arch) const { return this->field_name; }
++
++#define ARCH_FIELD_EX_REUSE(arch, field_name) \
++ XSIMD_INLINE bool has(::xsimd::arch) const { return this->field_name; }
++
+ #define ARCH_FIELD(name) ARCH_FIELD_EX(name, name)
+
+ ARCH_FIELD(sse2)
+@@ -72,8 +76,12 @@ namespace xsimd
+ ARCH_FIELD(neon)
+ ARCH_FIELD(neon64)
+ ARCH_FIELD_EX(i8mm<::xsimd::neon64>, i8mm_neon64)
+- ARCH_FIELD(sve)
+- ARCH_FIELD(rvv)
++ ARCH_FIELD_EX(detail::sve<512>, sve)
++ ARCH_FIELD_EX_REUSE(detail::sve<256>, sve)
++ ARCH_FIELD_EX_REUSE(detail::sve<128>, sve)
++ ARCH_FIELD_EX(detail::rvv<512>, rvv)
++ ARCH_FIELD_EX_REUSE(detail::rvv<256>, rvv)
++ ARCH_FIELD_EX_REUSE(detail::rvv<128>, rvv)
+ ARCH_FIELD(wasm)
+
+ #undef ARCH_FIELD
+diff --git a/test/test_arch.cpp b/test/test_arch.cpp
+index b42073358..f1f50d546 100644
+--- a/test/test_arch.cpp
++++ b/test/test_arch.cpp
+@@ -38,6 +38,16 @@ struct check_supported
+ }
+ };
+
++struct check_cpu_has_intruction_set
++{
++ template <class Arch>
++ void operator()(Arch arch) const
++ {
++ static_assert(std::is_same<decltype(xsimd::available_architectures().has(arch)), bool>::value,
++ "cannot test instruction set availability on CPU");
++ }
++};
++
+ struct check_available
+ {
+ template <class Arch>
+@@ -71,6 +81,11 @@ TEST_CASE("[multi arch support]")
+ xsimd::supported_architectures::for_each(check_supported {});
+ }
+
++ SUBCASE("xsimd::available_architectures::has")
++ {
++ xsimd::all_architectures::for_each(check_cpu_has_intruction_set {});
++ }
++
+ SUBCASE("xsimd::default_arch::name")
+ {
+ constexpr char const* name = xsimd::default_arch::name();
+
diff --git a/dev-cpp/xsimd/xsimd-13.0.0.ebuild b/dev-cpp/xsimd/xsimd-13.0.0.ebuild
new file mode 100644
index 000000000000..41414ef626b6
--- /dev/null
+++ b/dev-cpp/xsimd/xsimd-13.0.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="C++ wrappers for SIMD intrinsics"
+HOMEPAGE="https://github.com/xtensor-stack/xsimd"
+SRC_URI="https://github.com/xtensor-stack/${PN}/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ doc? (
+ app-text/doxygen
+ dev-python/breathe
+ dev-python/sphinx
+ dev-python/sphinx-rtd-theme
+ )
+ test? ( dev-cpp/doctest )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-11.1.0-c++17.patch
+ "${FILESDIR}"/${PN}-12.1.1-no-march.patch
+ "${FILESDIR}"/${PN}-13.0.0-sve-rvv.patch
+ "${FILESDIR}"/${PN}-13.0.0-detection-simd-with-mitigations.patch
+)
+
+src_prepare() {
+ sed -i \
+ -e '/fPIC/d' \
+ test/CMakeLists.txt \
+ || die
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ )
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+ use doc && emake -C docs html
+}
+
+src_install() {
+ cmake_src_install
+ if use doc; then
+ dodoc -r docs/build/html
+ fi
+}