# Maintainer: jc_gargma # Maintainer (Arch): Jonathan Steel # Contributor (Arch): Bartłomiej Piotrowski # Contributor (Arch): Duck Hunt # # I maintain this because: # Arch version lacks additional optimization and hardening flags # Arch version is broken with lua 5.4 # Arch version does not list lua as a depends # Arch version does not disable discord pkgbase=mgba pkgname=('libmgba' 'mgba-sdl' 'mgba-qt') pkgver=0.10.3 pkgrel=4.2 arch=('x86_64') url='http://mgba.io' license=('custom:MPL2') options=('lto') depends=('lua53') makedepends=('cmake' 'qt5-multimedia' 'sdl2' 'zlib' 'libpng' 'libzip' 'libedit' 'ffmpeg' 'desktop-file-utils' 'qt5-tools') source=($pkgbase-$pkgver.tar.gz::https://github.com/mgba-emu/mgba/archive/$pkgver.tar.gz 3a3ebb5d.patch) sha256sums=('be2cda7de3da8819fdab0c659c5cd4c4b8ca89d9ecddeeeef522db6d31a64143' '3fb63923547c42165dfd8bd47925cae3c711fec87f767bb5a94361dd022c8bd2') b2sums=('2109c53455ece7beba0af30787cd75cad85db334be44e41b51f579f813393f8d83c5c9537832b190bb8b0ac1c28d78e92adb6af23191b17b463847df3360f656' 'ce266b073694ab7b390c5138721a9a90ce6751a956e49c5daf86c084b12b6d11f4df6a69661c963688924b6ce4c7d599c89fa45e79b753ea278d44f24e038b03') prepare() { cd mgba-$pkgver patch -p1 -i ../3a3ebb5d.patch # Fix build with GCC 14 } build() { # Workaround for gcc14 CFLAGS+=" -Wno-incompatible-pointer-types" # -fPIE and -pie break compilation export CFLAGS="$CFLAGS -O3 -fPIC" export CXXFLAGS="$CXXFLAGS -O3 -fPIC" cmake -B build -S mgba-$pkgver \ -DCMAKE_BUILD_TYPE=None \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DUSE_MINIZIP=OFF \ -DUSE_DISCORD_RPC=OFF \ -DUSE_EPOXY=OFF \ -Wno-dev cmake --build build } package_libmgba() { pkgdesc='Shared library of mGBA' depends=('zlib' 'libpng' 'libzip' 'libedit' 'ffmpeg' 'sqlite') cmake \ -DCOMPONENT=libmgba mgba-$pkgver \ -DCMAKE_INSTALL_PREFIX="$pkgdir/usr" \ -P build/cmake_install.cmake cmake \ -DCOMPONENT=mgba-dev mgba-$pkgver \ -DCMAKE_INSTALL_PREFIX="$pkgdir/usr" \ -P build/cmake_install.cmake install -Dm644 mgba-$pkgver/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } package_mgba-sdl() { pkgdesc='A Nintendo Gameboy Advance Emulator focusing on both speed and accuracy' depends=('libmgba' 'sdl2') cmake \ -DCOMPONENT=mgba-sdl mgba-$pkgver \ -DCMAKE_INSTALL_PREFIX="$pkgdir/usr" \ -P build/cmake_install.cmake install -d "$pkgdir"/usr/share/licenses/$pkgname ln -s /usr/share/licenses/libmgba/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } package_mgba-qt() { pkgdesc='A Nintendo Gameboy Advance Emulator focusing on both speed and accuracy. Qt5 UI.' depends=('libmgba' 'lua53' 'qt5-multimedia' 'sdl2') cmake \ -DCOMPONENT=mgba-qt mgba-$pkgver \ -DCMAKE_INSTALL_PREFIX="$pkgdir/usr" \ -P build/cmake_install.cmake install -Dm644 mgba-$pkgver/res/mgba-256.png "$pkgdir"/usr/share/pixmaps/io.mgba.mGBA.png install -Dm644 mgba-$pkgver/res/mgba-256.png "$pkgdir"/usr/share/icons/hicolor/256x256/apps/io.mgba.mGBA.png install -d "$pkgdir"/usr/share/licenses/$pkgname ln -s /usr/share/licenses/libmgba/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE }