summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: e303f00f34f536096a38fdb10bee8ab4bfc20377 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Maintainer: jc_gargma <jc_gargma@iserlohn-fortress.net>
# Maintainer (Arch):  Jonathan Steel <jsteel at archlinux.org>
# Contributor (Arch): Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor (Arch): Duck Hunt <vaporeon@tfwno.gf>

# # 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=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
}