summaryrefslogtreecommitdiff
path: root/dev-cpp
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2025-11-26 21:35:30 +0000
committerSam James <sam@gentoo.org>2025-11-26 21:37:50 +0000
commit3ec7b80fff6936079f0bc240bf6db9a4f4950a88 (patch)
tree1a608b9b1038cf99df3d0f6fac67c8910c74c495 /dev-cpp
parent95cc5d79a5385583e6094077481a5520c6e66675 (diff)
downloadgentoo-3ec7b80fff6936079f0bc240bf6db9a4f4950a88.tar.gz
gentoo-3ec7b80fff6936079f0bc240bf6db9a4f4950a88.tar.bz2
gentoo-3ec7b80fff6936079f0bc240bf6db9a4f4950a88.zip
dev-cpp/highway: needs >=gas-2.44
[21:17] <asturm> {standard input}: Assembler messages: [21:17] <asturm> {standard input}:8396: Error: no such instruction: `vucomxsh 62(%r12),%xmm0' Added in b6324bbd83d6b3009ea45b7a6ca6794a8c0b018a. Copy the check from sys-apps/pciutils. Bug: https://bugs.gentoo.org/966644 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/highway/highway-1.3.0.ebuild56
-rw-r--r--dev-cpp/highway/highway-9999.ebuild56
2 files changed, 110 insertions, 2 deletions
diff --git a/dev-cpp/highway/highway-1.3.0.ebuild b/dev-cpp/highway/highway-1.3.0.ebuild
index 379a4e39f798..089da1882f61 100644
--- a/dev-cpp/highway/highway-1.3.0.ebuild
+++ b/dev-cpp/highway/highway-1.3.0.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit cmake-multilib
+inherit cmake-multilib toolchain-funcs
DESCRIPTION="Performance-portable, length-agnostic SIMD with runtime dispatch"
HOMEPAGE="https://github.com/google/highway"
@@ -21,9 +21,63 @@ SLOT="0"
IUSE="cpu_flags_arm_neon test"
DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )"
+BDEPEND="|| ( >=sys-devel/binutils-2.44:* llvm-core/lld sys-devel/native-cctools )"
RESTRICT="!test? ( test )"
+check_binutils_version() {
+ if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! tc-ld-is-gold && ! tc-ld-is-lld ; then
+ # Okay, hopefully it's Binutils, but we don't have a nice way of checking
+ # the gas version.
+ #
+ # Convert this:
+ # ```
+ # GNU assembler (Gentoo 2.44 p1) 2.44
+ # Copyright (C) 2022 Free Software Foundation, Inc.
+ # This program is free software; you may redistribute it under the terms of
+ # the GNU General Public License version 3 or (at your option) a later version.
+ # This program has absolutely no warranty.
+ # ```
+ #
+ # into...
+ # ```
+ # 2.44
+ # ```
+ local ver=$($(tc-getAS) --version 2>&1 | head -n 1 | rev | cut -d' ' -f1 | rev)
+
+ if ! [[ ${ver} =~ [0-9].[0-9][0-9] ]] ; then
+ # Skip if unrecognised format so we don't pass something
+ # odd into ver_cut.
+ return
+ fi
+
+ ver_major=$(ver_cut 1 "${ver}")
+ ver_minor=$(ver_cut 2 "${ver}")
+
+ # Check borrowed from sys-apps/pciutils (see bug #966644).
+ if [[ ${ver_major} -eq 2 && ${ver_minor} -lt 44 ]] ; then
+ eerror "Old version of binutils activated! ${P} cannot be built with an old version."
+ eerror "Please follow these steps:"
+ eerror "1. Select a newer binutils (>= 2.44) using binutils-config"
+ eerror " (If no such version is installed, run emerge -v1 sys-devel/binutils)"
+ eerror "2. Run: . /etc/profile"
+ eerror "3. Try emerging again with: emerge -v1 ${CATEGORY}/${P}"
+ eerror "4. Complete your world upgrade if you were performing one."
+ eerror "5. Perform a depclean (emerge -acv)"
+ eerror "\tYou MUST depclean after every world upgrade in future!"
+ die "Old binutils found! Change to a newer (g)as using binutils-config."
+ fi
+ fi
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
multilib_src_configure() {
local mycmakeargs=(
-DHWY_CMAKE_ARM7=$(usex cpu_flags_arm_neon)
diff --git a/dev-cpp/highway/highway-9999.ebuild b/dev-cpp/highway/highway-9999.ebuild
index 379a4e39f798..089da1882f61 100644
--- a/dev-cpp/highway/highway-9999.ebuild
+++ b/dev-cpp/highway/highway-9999.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit cmake-multilib
+inherit cmake-multilib toolchain-funcs
DESCRIPTION="Performance-portable, length-agnostic SIMD with runtime dispatch"
HOMEPAGE="https://github.com/google/highway"
@@ -21,9 +21,63 @@ SLOT="0"
IUSE="cpu_flags_arm_neon test"
DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )"
+BDEPEND="|| ( >=sys-devel/binutils-2.44:* llvm-core/lld sys-devel/native-cctools )"
RESTRICT="!test? ( test )"
+check_binutils_version() {
+ if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]] && ! tc-ld-is-gold && ! tc-ld-is-lld ; then
+ # Okay, hopefully it's Binutils, but we don't have a nice way of checking
+ # the gas version.
+ #
+ # Convert this:
+ # ```
+ # GNU assembler (Gentoo 2.44 p1) 2.44
+ # Copyright (C) 2022 Free Software Foundation, Inc.
+ # This program is free software; you may redistribute it under the terms of
+ # the GNU General Public License version 3 or (at your option) a later version.
+ # This program has absolutely no warranty.
+ # ```
+ #
+ # into...
+ # ```
+ # 2.44
+ # ```
+ local ver=$($(tc-getAS) --version 2>&1 | head -n 1 | rev | cut -d' ' -f1 | rev)
+
+ if ! [[ ${ver} =~ [0-9].[0-9][0-9] ]] ; then
+ # Skip if unrecognised format so we don't pass something
+ # odd into ver_cut.
+ return
+ fi
+
+ ver_major=$(ver_cut 1 "${ver}")
+ ver_minor=$(ver_cut 2 "${ver}")
+
+ # Check borrowed from sys-apps/pciutils (see bug #966644).
+ if [[ ${ver_major} -eq 2 && ${ver_minor} -lt 44 ]] ; then
+ eerror "Old version of binutils activated! ${P} cannot be built with an old version."
+ eerror "Please follow these steps:"
+ eerror "1. Select a newer binutils (>= 2.44) using binutils-config"
+ eerror " (If no such version is installed, run emerge -v1 sys-devel/binutils)"
+ eerror "2. Run: . /etc/profile"
+ eerror "3. Try emerging again with: emerge -v1 ${CATEGORY}/${P}"
+ eerror "4. Complete your world upgrade if you were performing one."
+ eerror "5. Perform a depclean (emerge -acv)"
+ eerror "\tYou MUST depclean after every world upgrade in future!"
+ die "Old binutils found! Change to a newer (g)as using binutils-config."
+ fi
+ fi
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_binutils_version
+}
+
multilib_src_configure() {
local mycmakeargs=(
-DHWY_CMAKE_ARM7=$(usex cpu_flags_arm_neon)