commit:     804b980d2d3c5c257ff0ebbb4603e6418e2861c5
Author:     Patrick Lauer <patrick <AT> gentoo <DOT> org>
AuthorDate: Thu Jan  4 15:45:07 2024 +0000
Commit:     罗百科 <patrick <AT> gentoo <DOT> org>
CommitDate: Thu Jan  4 15:46:48 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=804b980d

games-board/stockfish: Enable avx512 support

Signed-off-by: Patrick Lauer <patrick <AT> gentoo.org>

 games-board/stockfish/stockfish-16-r1.ebuild | 83 ++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/games-board/stockfish/stockfish-16-r1.ebuild 
b/games-board/stockfish/stockfish-16-r1.ebuild
new file mode 100644
index 000000000000..a6734bf75de8
--- /dev/null
+++ b/games-board/stockfish/stockfish-16-r1.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Free UCI chess engine, claimed to be the strongest in the world"
+HOMEPAGE="https://stockfishchess.org/";
+
+NNUE_FILE="nn-5af11540bbfe.nnue"
+
+SRC_URI="https://github.com/official-stockfish/Stockfish/archive/sf_${PV}.tar.gz
 -> ${P}.tar.gz
+       https://tests.stockfishchess.org/api/nn/${NNUE_FILE} -> 
${P}-${NNUE_FILE}"
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86"
+IUSE="cpu_flags_arm_v7 cpu_flags_x86_avx2 cpu_flags_x86_popcnt 
cpu_flags_x86_sse cpu_flags_x86_avx512f
+       cpu_flags_x86_avx512dq debug general-32 general-64 +optimize"
+
+DEPEND="|| ( app-arch/unzip app-arch/zip )"
+RDEPEND=""
+
+S="${WORKDIR}/Stockfish-sf_${PV}/src"
+
+src_prepare() {
+       default
+
+       # remove config sanity check that doesn't like our COMPILER settings
+       sed -i -e 's/ config-sanity//g' Makefile || die
+
+       cp "${DISTDIR}"/${P}-${NNUE_FILE} ${NNUE_FILE} || die "copying the nnue 
file failed"
+
+       # prevent pre-stripping
+       sed -e 's:-strip $(BINDIR)/$(EXE)::' -i Makefile \
+               || die 'failed to disable stripping in the Makefile'
+
+       # Makefile is a bit optimistic
+       sed -e 's:-flto=full:-flto:g' -i Makefile || die
+}
+
+src_compile() {
+       local my_arch
+
+       # generic unoptimized first
+       use general-32 && my_arch=general-32
+       use general-64 && my_arch=general-64
+
+       # x86
+       use x86 && my_arch=x86-32-old
+       use cpu_flags_x86_sse && my_arch=x86-32
+
+       # amd64
+       use amd64 && my_arch=x86-64
+       use cpu_flags_x86_popcnt && my_arch=x86-64-modern
+
+       # both bmi2 and avx2 are part of hni (haswell new instructions)
+       use cpu_flags_x86_avx2 && my_arch=x86-64-bmi2
+
+       # avx512
+       # we currently can't express  'avx512vnni' 'avx512dq' 'avx512f' 
'avx512bw' 'avx512vl'
+       # so only enable basic support
+       use cpu_flags_x86_avx512f && use cpu_flags_x86_avx512dq && 
my_arch=x86-64-avx512
+
+       # other architectures
+       use cpu_flags_arm_v7 && my_arch=armv7
+       use ppc && my_arch=ppc
+       use ppc64 && my_arch=ppc64
+
+       # There's a nice hack in the Makefile that overrides the value of CXX 
with
+       # COMPILER to support Travis CI and we abuse it to make sure that we
+       # build with our compiler of choice.
+       emake profile-build ARCH="${my_arch}" \
+               COMP="$(tc-getCXX)" \
+               COMPILER="$(tc-getCXX)" \
+               debug=$(usex debug "yes" "no") \
+               optimize=$(usex optimize "yes" "no")
+}
+
+src_install() {
+       dobin "${PN}"
+       dodoc ../AUTHORS ../README.md
+}

Reply via email to