mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-12-16 07:01:08 +00:00
92 lines
2.8 KiB
Bash
92 lines
2.8 KiB
Bash
# Copyright 2021-2025 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit cmake-multilib toolchain-funcs
|
|
|
|
DESCRIPTION="Performance-portable, length-agnostic SIMD with runtime dispatch"
|
|
HOMEPAGE="https://github.com/google/highway"
|
|
|
|
if [[ "${PV}" == *9999* ]]; then
|
|
inherit git-r3
|
|
EGIT_REPO_URI="https://github.com/google/highway.git"
|
|
else
|
|
SRC_URI="https://github.com/google/highway/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
|
|
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~sparc x86"
|
|
fi
|
|
|
|
LICENSE="Apache-2.0"
|
|
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)
|
|
-DBUILD_TESTING=$(usex test)
|
|
-DHWY_ENABLE_TESTS=$(usex test)
|
|
-DHWY_WARNINGS_ARE_ERRORS=OFF
|
|
)
|
|
|
|
use test && mycmakeargs+=( "-DHWY_SYSTEM_GTEST=ON" )
|
|
|
|
cmake_src_configure
|
|
}
|