app-id: org.DolphinEmu.dolphin-emu
branch: stable
runtime: org.kde.Platform
runtime-version: '5.15'
sdk: org.kde.Sdk
command: dolphin-emu-wrapper
rename-desktop-file: dolphin-emu.desktop
rename-icon: dolphin-emu
rename-appdata-file: dolphin-emu.appdata.xml
finish-args:
  - --device=all
  # the file picker uses portals but the set
  # game directory feature still needs this
  - --filesystem=host:ro
  - --socket=pulseaudio
  - --env=QT_QPA_PLATFORM=xcb
  - --socket=x11
  - --share=network
  - --share=ipc
  # along with the bluez module, required for the
  # emulated bluetooth adapter feature to work.
  - --allow=bluetooth
  - --filesystem=xdg-run/app/com.discordapp.Discord:create
  - --talk-name=org.freedesktop.ScreenSaver
modules:
  # needed for the bluetooth passthrough feature to work
  - name: libusb
    config-opts:
      - --disable-static
    cleanup:
      - /include
      - /lib/*.la
      - /lib/pkgconfig
    sources:
      - type: archive
        url: https://github.com/libusb/libusb/releases/download/v1.0.24/libusb-1.0.24.tar.bz2
        sha256: 7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a
        x-checker-data:
          type: anitya
          project-id: 1749
          url-template: https://github.com/libusb/libusb/releases/download/v$version/libusb-$version.tar.bz2

  # needed for the emulate bluetooth adapter feature to work
  - name: bluez
    config-opts:
      - --enable-library
      - --disable-manpages
      - --disable-udev
      - --disable-tools
      - --disable-cups
      - --disable-monitor
      - --disable-client
      - --disable-systemd
      - --disable-a2dp
      - --disable-avrcp
      - --disable-network
      - --with-dbusconfdir=/app/etc
      - --with-dbussessionbusdir=/app/usr/lib/system-services
    sources:
      - type: archive
        url: https://www.kernel.org/pub/linux/bluetooth/bluez-5.62.tar.xz
        sha256: 38090a5b750e17fc08d3e52178ed8d3254c5f4bd2c48830d5c1955b88e3bc0c2
        x-checker-data:
          type: anitya
          project-id: 10029
          url-template: https://www.kernel.org/pub/linux/bluetooth/bluez-$version.tar.xz

  # enables motion controls on non-wii controllers (switch, ps4, etc)
  # requires a udev rule enabling Motion Sensors access
  - name: libevdev
    buildsystem: meson
    config-opts:
      - -Dtests=disabled
      - -Ddocumentation=disabled
    sources:
      - type: archive
        url: https://www.freedesktop.org/software/libevdev/libevdev-1.11.0.tar.xz
        sha256: 63f4ea1489858a109080e0b40bd43e4e0903a1e12ea888d581db8c495747c2d0
        x-checker-data:
          type: anitya
          project-id: 20540
          url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz

  # needed for screensaver inhibition
  - name: xdg-screensaver-shim
    buildsystem: meson
    sources:
      - type: archive
        url: https://github.com/Unrud/xdg-screensaver-shim/archive/0.0.2.tar.gz
        sha256: 0ed2a69fe6ee6cbffd2fe16f85116db737f17fb1e79bfb812d893cf15c728399

  - name: dolphin-emu
    buildsystem: cmake-ninja
    config-opts:
      - -DCMAKE_BUILD_TYPE=Release
      - -DENABLE_ALSA=OFF
      - -DENABLE_SDL=ON
      - -DENABLE_EVDEV=ON
      - -DDISTRIBUTOR=Flathub
    build-options:
      arch:
        arm:
          config-opts:
            - -DENABLE_GENERIC=ON
    cleanup:
      - /share/man
    post-install:
      - install -D dolphin-emu-wrapper /app/bin/dolphin-emu-wrapper
      - install -Dm644 appdata.xml /app/share/appdata/dolphin-emu.appdata.xml
      - sed -i -e 's/"2048"/"512"/g' /app/share/icons/hicolor/scalable/apps/dolphin-emu.svg
      - desktop-file-edit --set-key=Exec --set-value='/app/bin/dolphin-emu-wrapper'
        /app/share/applications/dolphin-emu.desktop
    sources:
      - type: git
        url: https://github.com/dolphin-emu/dolphin.git
        commit: 4b8b53ac732645f6c0fd3f4b11733cb3d86c9c41
      # prevents dolphin from attempting to write conf files
      # in non-writable paths, typically happens when a user
      # has leftover files from a previous non-flatpak install
      - type: patch
        path: forcexdg.patch
      # version strings must match exactly for online multiplayer
      - type: patch
        path: nodirtyversion.patch
      - type: file
        path: appdata.xml
      - type: script
        commands:
          - for i in {0..9}; do
          - test -S $XDG_RUNTIME_DIR/discord-ipc-$i || ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i;
          - done
          - dolphin-emu "$@"
        dest-filename: dolphin-emu-wrapper