# Contributor: Bart Ribbers # Maintainer: Bart Ribbers pkgname=dolphin-emu pkgver=5.0_git20230402 pkgrel=2 _commit="0cd70c2aa51ce09460a9027199b422f787d80ffe" _commit_cubeb="27d2a102b0b75d9e49d43bc1ea516233fb87d778" _commit_gtest="58d77fa8070e8cec2dc1ed015d66b454c8d78850" _commit_implot="d87512353495e7760e7fda7566a05beef7627d8f" _commit_mgba="89f8873df366a99dfdf40347f72e68763fb50bd9" _commit_spirv="50b4d5389b6a06f86fb63a2848e1a7da6d9755ca" _commit_vulkan_memory="c351692490513cdb0e5a2c925aaf7ea4a9b672f4" _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="A Gamecube / Wii emulator" license="GPL-2.0-or-later" makedepends=" bluez-dev cmake curl-dev enet-dev eudev-dev ffmpeg-dev fmt-dev hidapi-dev libevdev-dev libpng-dev libspng-dev libusb-dev libx11-dev libxi-dev libxrandr-dev lzo-dev mesa-dev mesa-egl mbedtls-dev miniupnpc-dev ninja pugixml-dev pulseaudio-dev qt6-qtbase-dev qt6-qtbase-x11 sfml-dev vulkan-headers vulkan-loader-dev xz-dev zlib-dev zstd-dev " # The following dependencies are required, but atm not supported for using system wide libraries # minizip-dev xxhash-dev soundtouch-dev gtest-dev source="https://github.com/dolphin-emu/dolphin/archive/$_commit/dolphin-emu-$_commit.tar.gz https://github.com/mozilla/cubeb/archive/$_commit_cubeb/cubeb-$_commit_cubeb.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/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.tar.gz strerror_r.patch " subpackages="$pkgname-doc $pkgname-lang" builddir="$srcdir/dolphin-$_commit" [ "$CARCH" = "riscv64" ] && options="$options textrels" prepare() { default_prepare 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/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/implot/implot mv "$srcdir"/implot-$_commit_implot Externals/implot/implot rmdir Externals/VulkanMemoryAllocator mv "$srcdir"/VulkanMemoryAllocator-$_commit_vulkan_memory Externals/VulkanMemoryAllocator # 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 Vulkan VulkanMemoryAllocator cpp-optparse cubeb expr glslang gtest imgui implot mGBA minizip picojson rangeset soundtouch spirv_cross xxhash 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 \ -DUSE_SHARED_ENET=ON \ -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 cmake --build build } check() { cd build CTEST_OUTPUT_ON_FAILURE=TRUE ctest } package() { DESTDIR="$pkgdir" cmake --install build install -Dm 644 Data/51-usb-device.rules -t "$pkgdir"/usr/lib/udev/rules.d/ } sha512sums=" 80c9bd5afb8df31484c2388e6299ea59f978314508ae8d6eb5f768b36590b61fbe0caae5d9d736f537804dfd1369f2d7922833a808c86ad39119e2aa5ceac201 dolphin-emu-0cd70c2aa51ce09460a9027199b422f787d80ffe.tar.gz 0844b56a949a23474b4f8b736bfc61bfe713f2ededd7148644a65883d963606dbde9bed6fc07f1b9181af4e4f8c411e0147352a8556e660907f74b0e617a25d0 cubeb-27d2a102b0b75d9e49d43bc1ea516233fb87d778.tar.gz d8153c426e4f9c89a74721cc4a24dfcaf319810f4f10aa25fc972f99da2d96d66bc840cf2f51b756fef6b1ca47e8d2c8633f5862cc24e34d57309ad48802124a googletest-58d77fa8070e8cec2dc1ed015d66b454c8d78850.tar.gz 2b48ee1313ec6c0790fd10f5772082c91902fe3aa0a10a05b19107ee85096ef4e97b1068841cb7f6f947acfdd5df3695b01807222bdc1e4509cf79a1e6852ade implot-d87512353495e7760e7fda7566a05beef7627d8f.tar.gz d7c2d0470f34ca32a5970f284934c3467d911b79453d1f62b900fac5a59ad4b991011885b5e1a87c2a815b74eacff1d7ed0bab869bdab93369ce42ccdf3c4475 mgba-89f8873df366a99dfdf40347f72e68763fb50bd9.tar.gz 237bf9c902c23721592bff44b493198bc6b732cbaf4712b1bf56bfe1df76e7290fadec7cccd1694fccd808a1f57b681f696c323ef616f547bb54ddc97c604cea spirv-cross-50b4d5389b6a06f86fb63a2848e1a7da6d9755ca.tar.gz 10c733446050e205ac7fe5447a1eb982777bc8a4503f6e8080deb4cab3fc68bf064adc4b0efb70ee46c55f3e5053b8f9581c902c8c02dfd1f1a565b146c925bf VulkanMemoryAllocator-c351692490513cdb0e5a2c925aaf7ea4a9b672f4.tar.gz 73f4e56410ae298ef211ebab52b1a0d3d5bfae91c2de3cd294b56cd0a78ab50e1203b396c7df462f360c1aaaa9392ec5625473d1e9eb084cc64bc813e28d12a1 zlib-ng-0cd70c2aa51ce09460a9027199b422f787d80ffe.tar.gz 9ec0b7b9b8803d8755de0d36d6c8c0d52f198239c9ea7f1be039e77a9c4f0e8799015411de00ae589c1ffce608994bcbf46c024a0b49149ff15a8da48959ea6e strerror_r.patch "