diff options
Diffstat (limited to 'games-board/fairy-stockfish/fairy-stockfish-14.0.1.ebuild')
-rw-r--r-- | games-board/fairy-stockfish/fairy-stockfish-14.0.1.ebuild | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/games-board/fairy-stockfish/fairy-stockfish-14.0.1.ebuild b/games-board/fairy-stockfish/fairy-stockfish-14.0.1.ebuild new file mode 100644 index 000000000..09b8e5d5f --- /dev/null +++ b/games-board/fairy-stockfish/fairy-stockfish-14.0.1.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="Chess variant engine derived from Stockfish to support fairy chess variants" +HOMEPAGE="https://github.com/ianfab/Fairy-Stockfish" + +MY_PV=$(ver_rs 1-2 _) + +SRC_URI=" + https://github.com/ianfab/Fairy-Stockfish/archive/fairy_sf_${MY_PV}_xq.tar.gz -> ${P}.tar.gz + nnue? ( + https://github.com/ianfab/Fairy-Stockfish/releases/download/fairy_sf_${MY_PV}_xq/janggi-85de3dae670a.nnue + https://github.com/ianfab/Fairy-Stockfish/releases/download/fairy_sf_${MY_PV}_xq/xiangqi-83f16c17fe26.nnue + ) +" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="cpu_flags_arm_v7 cpu_flags_x86_avx2 cpu_flags_x86_popcnt cpu_flags_x86_sse debug + general-32 general-64 largeboards nnue test" + +# Require largeboards for nnue support as it also built-in .nnue files for Xiangqi and Janggi +REQUIRED_USE="nnue? ( largeboards )" +RESTRICT="!test? ( test )" + +DEPEND=" + || ( app-arch/unzip app-arch/zip ) + test? ( dev-tcltk/expect ) +" +RDEPEND="" + +S="${WORKDIR}/Fairy-Stockfish-fairy_sf_${MY_PV}_xq/src" + +src_unpack() { + unpack ${P}.tar.gz + if use nnue ; then + cp "${DISTDIR}"/janggi-85de3dae670a.nnue "${S}/" || die + cp "${DISTDIR}"/xiangqi-83f16c17fe26.nnue "${S}/" || die + fi +} + +src_prepare() { + default + + local item + # Rename Stockfish to Fairy-Stockfish + sed -i -e 's:EXE = stockfish:EXE = fairy-stockfish:' Makefile || die + for item in ../tests/*.sh ; do + sed -i -e 's:./stockfish:./fairy-stockfish:' $item || die + done + # protocol.sh test 'ucci.exp' fails for timeout 5 but pass with 15 + sed -i -e 's:timeout 5:timeout 15:' ../tests/protocol.sh || die + # instrumented.sh syzygy test data tarball get differ size every time, drop it + sed -i -e '112,141d' ../tests/instrumented.sh || die + + # prevent pre-stripping + sed -e 's:-strip $(BINDIR)/$(EXE)::' -i Makefile \ + || die 'failed to disable stripping in the Makefile' +} + +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 + + # other architectures + use cpu_flags_arm_v7 && my_arch=armv7 + use ppc && my_arch=ppc + use ppc64 && my_arch=ppc64 + + # Skip the "build" target and use "all" instead to avoid the config + # sanity check (which would throw a fit about our compiler). 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. + # Build all variants (add Amazons game) and disable default optimize (-O3/-ffast) + emake all ARCH="${my_arch}" \ + COMP=$(tc-getCXX) \ + COMPILER=$(tc-getCXX) \ + all=yes \ + debug=$(usex debug "yes" "no") \ + largeboards=$(usex largeboards "yes" "no") \ + nnue=$(usex nnue "yes" "no") \ + optimize=no +} + +src_test() { + ../tests/instrumented.sh || die + ../tests/perft.sh || die + ../tests/protocol.sh || die + ../tests/reprosearch.sh || die + ../tests/signature.sh || die +} + +src_install() { + dobin "${PN}" + dodoc ../AUTHORS ../README.md +} |