gentoo-ebuilds/app-emulation/fex-xtajit/fex-xtajit-2506.ebuild
Sasha Finkelstein 1cba0a2c84
app-emulation/fex-xtajit: Make const patch conditional
Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/42565
Signed-off-by: Sam James <sam@gentoo.org>
2025-06-12 22:42:23 +01:00

117 lines
3.3 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic ninja-utils toolchain-funcs
DESCRIPTION="A wine emulation dll for running x86 application on an arm64 host"
HOMEPAGE="https://fex-emu.com"
JEMALLOC_HASH="02ca52b5fefc0ccd0d2c4eaa1d17989cdd641927"
CPP_OPTPARSE_HASH="9f94388a339fcbb0bc95c17768eb786c85988f6e"
ROBIN_MAP_HASH="d5683d9f1891e5b04e3e3b2192b5349dc8d814ea"
FMT_HASH="123913715afeb8a437e6388b4473fcc4753e1c9a"
XXHASH_HASH="bbb27a5efb85b92a0486cf361a8635715a53f6ba"
SRC_URI="
https://github.com/FEX-Emu/jemalloc/archive/${JEMALLOC_HASH}.tar.gz -> jemalloc-${JEMALLOC_HASH}.tar.gz
https://github.com/Sonicadvance1/cpp-optparse/archive/${CPP_OPTPARSE_HASH}.tar.gz -> cpp-optparse-${CPP_OPTPARSE_HASH}.tar.gz
https://github.com/FEX-Emu/robin-map/archive/${ROBIN_MAP_HASH}.tar.gz -> robin-map-${ROBIN_MAP_HASH}.tar.gz
https://github.com/Cyan4973/xxHash/archive/${XXHASH_HASH}.tar.gz -> xxhash-${XXHASH_HASH}.tar.gz
https://github.com/fmtlib/fmt/archive/${FMT_HASH}.tar.gz -> fmt-${FMT_HASH}.tar.gz
https://github.com/FEX-Emu/FEX/archive/refs/tags/FEX-${PV}.tar.gz
"
S="${WORKDIR}/FEX-FEX-${PV}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="-* ~arm64"
BDEPEND="
dev-build/cmake
dev-util/llvm-mingw64
llvm-core/clang
llvm-core/llvm
"
src_prepare() {
has_version '<dev-util/llvm-mingw64-13.0.0' && eapply "${FILESDIR}/${P}-constness.patch"
default
}
src_unpack() {
default
local -A deps=(
jemalloc "jemalloc-${JEMALLOC_HASH}"
robin-map "robin-map-${ROBIN_MAP_HASH}"
xxhash "xxHash-${XXHASH_HASH}"
fmt "fmt-${FMT_HASH}"
)
for dep in "${!deps[@]}"; do
rmdir "${S}/External/${dep}" || die
mv "${WORKDIR}/${deps[${dep}]}" "${S}/External/${dep}"
done
rmdir "${S}/Source/Common/cpp-optparse" || die
mv "${WORKDIR}/cpp-optparse-${CPP_OPTPARSE_HASH}" "${S}/Source/Common/cpp-optparse" || die
}
src_configure() {
PATH="${BROOT}/usr/lib/llvm-mingw64/bin:${PATH}"
CHOST=aarch64-w64-mingw32
CC=${CHOST}-clang
CXX=${CHOST}-clang++
LD=${CHOST}-clang
AR=llvm-ar
NM=llvm-nm
RANLIB=llvm-ranlib
STRIP=llvm-strip
RC=${CHOST}-windres
KERNEL=Winnt
tc-export CC CXX LD AR NM OBJDUMP RANLIB PKG_CONFIG
strip-flags
filter-lto
filter-flags '-fuse-ld=*'
strip-unsupported-flags
mkdir "${WORKDIR}/build" || die
pushd "${WORKDIR}/build" >/dev/null || die
cmake -GNinja \
-DCMAKE_C_COMPILER_WORKS=1 \
-DCMAKE_CXX_COMPILER_WORKS=1 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE="${S}/toolchain_mingw.cmake" \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/fex-xtajit \
-DENABLE_LTO=False \
-DMINGW_TRIPLE=aarch64-w64-mingw32 \
-DBUILD_TESTS=False \
-DENABLE_JEMALLOC_GLIBC_ALLOC=False \
-DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_CCACHE=FALSE \
-DBUILD_FEXCONFIG=FALSE \
-DMINGW_BUILD=1 \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_DISABLE_FIND_PACKAGE_fmt=true \
"${S}" || die
popd >/dev/null || die
}
src_compile() {
pushd "${WORKDIR}/build" >/dev/null || die
eninja
popd >/dev/null || die
}
src_install() {
pushd "${WORKDIR}/build" >/dev/null || die
DESTDIR="${D}" eninja install
popd >/dev/null || die
rm -r "${ED}/usr/"{include,share} || die
}
pkg_postinst() {
elog "If you had already created a wine prefix, run wineboot -u"
elog "to install x86 emulation support, or update it's local copy"
elog "of the relevant files."
}