aports/community/dolphin-emu/APKBUILD
2025-04-24 20:53:03 +00:00

201 lines
7.3 KiB
Text

maintainer="Bart Ribbers <bribbers@disroot.org>"
pkgname=dolphin-emu
pkgver=2503a
pkgrel=0
_commit_cubeb="54217bca3f3e0cd53c073690a23dd25d83557909"
_commit_tinygltf="c5641f2c22d117da7971504591a8f6a41ece488b"
_commit_gtest="58d77fa8070e8cec2dc1ed015d66b454c8d78850"
_commit_implot="18c72431f8265e2b0b5378a3a73d8a883b2175ff"
_commit_mgba="8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51"
_commit_minizip_ng="55db144e03027b43263e5ebcb599bf0878ba58de"
_commit_rcheevos="d54cf8f1059cebc90a6f5ecdf03df69259f22054"
_commit_spirv="50b4d5389b6a06f86fb63a2848e1a7da6d9755ca"
_commit_vulkan_memory="009ecd192c1289c7529bff248a16cfe896254816"
_commit_zlib="ce01b1e41da298334f8214389cc9369540a7560f"
# Upstream doesn't actively support non 64-bit platforms and they're too slow
# to emulate any games anyway
arch="x86_64 aarch64 riscv64"
url="https://dolphin-emu.org"
pkgdesc="Gamecube / Wii emulator"
license="GPL-2.0-or-later"
makedepends="
bluez-dev
cmake
curl-dev
enet-dev
eudev-dev
ffmpeg-dev
fmt-dev
gtest-dev
hidapi-dev
libevdev-dev
libpng-dev
libspng-dev
libusb-dev
libx11-dev
libxi-dev
libxrandr-dev
lz4-dev
lzo-dev
mesa-dev
mbedtls2-dev
miniupnpc-dev
ninja
pugixml-dev
pulseaudio-dev
qt6-qtbase-dev
qt6-qtsvg-dev
sdl2-dev
sfml-dev
vulkan-headers
vulkan-loader-dev
xz-dev
xxhash-dev
zlib-dev
zstd-dev
"
# The following dependencies are required, but atm not supported for using system wide libraries
# minizip-dev soundtouch-dev gtest-dev
source="$pkgname-$pkgver.tar.gz::https://github.com/dolphin-emu/dolphin/archive/refs/tags/$pkgver.tar.gz
https://github.com/mozilla/cubeb/archive/$_commit_cubeb/cubeb-$_commit_cubeb.tar.gz
https://github.com/syoyo/tinygltf/archive/$_commit_tinygltf/tinygltf-$_commit_tinygltf.tar.gz
https://github.com/google/googletest/archive/$_commit_gtest/googletest-$_commit_gtest.tar.gz
https://github.com/epezent/implot/archive/$_commit_implot/implot-$_commit_implot.tar.gz
https://github.com/mgba-emu/mgba/archive/$_commit_mgba/mgba-$_commit_mgba.tar.gz
https://github.com/zlib-ng/minizip-ng/archive/$_commit_minizip_ng/minizip-ng-$_commit_minizip_ng.tar.gz
https://github.com/RetroAchievements/rcheevos/archive/$_commit_rcheevos/rcheevos-$_commit_rcheevos.tar.gz
https://github.com/KhronosGroup/SPIRV-Cross/archive/$_commit_spirv/spirv-cross-$_commit_spirv.tar.gz
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/$_commit_vulkan_memory/VulkanMemoryAllocator-$_commit_vulkan_memory.tar.gz
https://github.com/zlib-ng/zlib-ng/archive/$_commit_zlib/zlib-ng-$_commit_zlib.tar.gz
gcc13.patch
"
subpackages="$pkgname-doc $pkgname-lang"
builddir="$srcdir/dolphin-$pkgver"
prepare() {
default_prepare
git init -q
rmdir Externals/mGBA/mgba
mv "$srcdir"/mgba-$_commit_mgba Externals/mGBA/mgba
rmdir Externals/spirv_cross/SPIRV-Cross
mv "$srcdir"/SPIRV-Cross-$_commit_spirv Externals/spirv_cross/SPIRV-Cross
rmdir Externals/tinygltf/tinygltf
mv "$srcdir"/tinygltf-$_commit_tinygltf Externals/tinygltf/tinygltf
rmdir Externals/zlib-ng/zlib-ng
mv "$srcdir"/zlib-ng-$_commit_zlib Externals/zlib-ng/zlib-ng
rmdir Externals/cubeb/cubeb
mv "$srcdir"/cubeb-$_commit_cubeb Externals/cubeb/cubeb
rmdir Externals/gtest
mv "$srcdir"/googletest-$_commit_gtest Externals/gtest
rmdir Externals/rcheevos/rcheevos
mv "$srcdir"/rcheevos-$_commit_rcheevos Externals/rcheevos/rcheevos
rmdir Externals/implot/implot
mv "$srcdir"/implot-$_commit_implot Externals/implot/implot
rmdir Externals/VulkanMemoryAllocator
mv "$srcdir"/VulkanMemoryAllocator-$_commit_vulkan_memory Externals/VulkanMemoryAllocator
rmdir Externals/minizip-ng/minizip-ng
mv "$srcdir"/minizip-ng-$_commit_minizip_ng Externals/minizip-ng/minizip-ng
# Make sure we never use non-system libraries except the ones that are not
# supported being used system-wide by removing them from the Externals
# folder
KEEP_SOURCES="
Bochs_disasm
FatFs
FreeSurround
VulkanMemoryAllocator
cpp-optparse
cubeb
expr
glslang
gtest
imgui
implot
mGBA
minizip-ng
picojson
rangeset
rcheevos
soundtouch
spirv_cross
tinygltf
zlib-ng
"
# Move the libraries we want to keep out of the externals folder
for s in $KEEP_SOURCES; do
mv -v "Externals/$s" .
done
# Remove the rest
rm -r Externals/*
# Move them back
for s in $KEEP_SOURCES; do
mv -v "$s" "Externals/"
done
}
build() {
# Enable a generic build for riscv64
# This enables building for the architecture but disables JIT and is thus slow
# TODO: see if support for riscv64 has been enabled upstream and disable the generic build
case "$CARCH" in
riscv64) _generic=ON ;;
*) _generic=OFF ;;
esac
# analytics is opt-in, a pop up box at first launch, thus fine
CFLAGS="$CFLAGS -O2" \
CXXFLAGS="$CXXFLAGS -O2" \
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_LLVM=OFF \
-DENABLE_GENERIC=$_generic \
-DDISTRIBUTOR="alpinelinux.org" \
-DUSE_DISCORD_PRESENCE=OFF \
-DENABLE_AUTOUPDATE=OFF \
-DENABLE_ANALYTICS=ON \
-DUSE_SANITIZERS=OFF \
-DWITH_SANITIZER=OFF \
-DUSE_SYSTEM_FMT=ON
cmake --build build
}
check() {
cd build
ctest
}
package() {
DESTDIR="$pkgdir" cmake --install build
install -Dm 644 Data/51-usb-device.rules -t "$pkgdir"/usr/lib/udev/rules.d/
}
sha512sums="
005c9c9491afd8f016c1b31e4d9c1d2f09b00ac2b493bacbf566c3abda24ae79fec7d767dcc6b8e7ff03d3016b08007207df4ae709461bb01a472fa48ea0684d dolphin-emu-2503a.tar.gz
7ba1cd5b74d49512d2ebf9b07889ee3ad46559afe3293bcbebae0613661f7502f0baaa20b6723738c21b2d71f9d8f72ed1252703533507dec5d2b5ad84784017 cubeb-54217bca3f3e0cd53c073690a23dd25d83557909.tar.gz
486bcf32be137dea5746117074dc51bc978290698de7831e1c4bbaa4acb56ed99fc34c38e69878a955b3e5f10f43eab07b0637164f822beae0fddd099aa0c56d tinygltf-c5641f2c22d117da7971504591a8f6a41ece488b.tar.gz
d8153c426e4f9c89a74721cc4a24dfcaf319810f4f10aa25fc972f99da2d96d66bc840cf2f51b756fef6b1ca47e8d2c8633f5862cc24e34d57309ad48802124a googletest-58d77fa8070e8cec2dc1ed015d66b454c8d78850.tar.gz
9cb2581a4e8d844914606f55a667afcfb31374973b0035b4d81488253e350df67439e97b46b236324c2a1e01146e6a191ad94d70823a3888c97e9380715272fa implot-18c72431f8265e2b0b5378a3a73d8a883b2175ff.tar.gz
782d456b7bf827591c774f146a88821b41b3b936faefddb5aee82bb0dd16ca7ad7228a1c331e1e517eac40a71cc4c94cc44bee12560946328c8433e1c6327225 mgba-8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51.tar.gz
88d1222886a3b5cd3ca1aff7b12902d1d19462c446ef39a092a56bb91b5889956afcce047b4227c79a50a95d9275bd0a23f5cd6cbef76478b6e21bbf86dd486b minizip-ng-55db144e03027b43263e5ebcb599bf0878ba58de.tar.gz
ba9281099d9ef335d881cdad8fb43d89461eb7b77dbd6c6c61699211e64a41681e38974c7c40e9cb42773a5fdc69f124d1e3c9093d10d3ddeb31529234609a30 rcheevos-d54cf8f1059cebc90a6f5ecdf03df69259f22054.tar.gz
237bf9c902c23721592bff44b493198bc6b732cbaf4712b1bf56bfe1df76e7290fadec7cccd1694fccd808a1f57b681f696c323ef616f547bb54ddc97c604cea spirv-cross-50b4d5389b6a06f86fb63a2848e1a7da6d9755ca.tar.gz
3a47a4bc81562b96f598f357b803d2219fa167e6eb87779837efa6e85fc6eaff8e1cfbdea0935117a7b3c630cc99944b94e91823eafa8a94d80b2c459f33c317 VulkanMemoryAllocator-009ecd192c1289c7529bff248a16cfe896254816.tar.gz
73f4e56410ae298ef211ebab52b1a0d3d5bfae91c2de3cd294b56cd0a78ab50e1203b396c7df462f360c1aaaa9392ec5625473d1e9eb084cc64bc813e28d12a1 zlib-ng-ce01b1e41da298334f8214389cc9369540a7560f.tar.gz
8cdd88c93c49325de4cae62af14a14576f679c5b4c1350fb835e7007916d228811ecf5ba9e526760bd2388c69c46990fa33d2dd8bbb1b673dc7e6896ea958b44 gcc13.patch
"