id: net.rpcs3.RPCS3
runtime: org.kde.Platform
runtime-version: '6.7'
sdk: org.kde.Sdk
sdk-extensions:
  - org.freedesktop.Sdk.Extension.llvm18
command: rpcs3
rename-desktop-file: rpcs3.desktop
rename-appdata-file: rpcs3.metainfo.xml
rename-icon: rpcs3
finish-args:
  - --device=all
  - --filesystem=home:ro
  - --filesystem=/media
  - --filesystem=/run/media
  - --share=ipc
  - --socket=fallback-x11
  - --socket=pulseaudio
  - --socket=wayland
  - --share=network
  - --talk-name=org.freedesktop.ScreenSaver
  - --talk-name=org.mate.ScreenSaver

add-extensions:
  org.freedesktop.Platform.ffmpeg-full:
    directory: lib/ffmpeg
    add-ld-path: .
    version: '24.08'
    autodownload: true
    autodelete: false
cleanup-commands:
  - mkdir -p ${FLATPAK_DEST}/lib/ffmpeg

modules:
  - shared-modules/glu/glu-9.json
  - shared-modules/glew/glew.json

  - name: libevdev
    buildsystem: meson
    config-opts:
      - -Dtests=disabled
      - -Ddocumentation=disabled
    cleanup:
      - /bin
      - /include
      - /lib/pkgconfig
      - /share
    sources:
      - type: archive
        url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.3.tar.xz
        sha256: abf1aace86208eebdd5d3550ffded4c8d73bb405b796d51c389c9d0604cbcfbf
        x-checker-data:
          type: anitya
          project-id: 20540
          stable-only: true
          url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz

  - name: rpcs3
    buildsystem: cmake-ninja
    builddir: true
    build-options:
      append-ld-library-path: /usr/lib/sdk/llvm18/lib
      append-path: /usr/lib/sdk/llvm18/bin
      cflags: &optflags -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
        -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection
        -fcf-protection -fno-omit-frame-pointer
      cflags-override: true
      cxxflags: *optflags
      cxxflags-override: true
      env:
        AR: llvm-ar
        CC: clang
        CXX: clang++
        RANLIB: llvm-ranlib
      ldflags: -fuse-ld=lld
    config-opts:
      - -DCMAKE_BUILD_TYPE=RelWithDebInfo
      - -DBUILD_LLVM=OFF
      - -DUSE_NATIVE_INSTRUCTIONS=OFF
      - -DUSE_PRECOMPILED_HEADERS=OFF
      - -DUSE_SDL=ON
      - -DUSE_SYSTEM_CURL=ON
      - -DUSE_SYSTEM_FFMPEG=ON
      - -DUSE_SYSTEM_LIBPNG=ON
      - -DUSE_SYSTEM_SDL=ON
      - -DUSE_SYSTEM_ZLIB=ON
      - -Wno-dev
    post-install:
      - cp /usr/lib/sdk/llvm18/lib/libLLVM.so.18.1 /app/lib/
      - |-
        set -eux

        COMM_TAG="$(awk -F'[\{,]' '/version{.*}/{printf "%d.%d.%d", $2, $3, $4}' ../rpcs3/rpcs3_version.cpp)"
        COMM_COUNT="$(git rev-list --count HEAD)";
        COMM_HASH="$(git rev-parse --short=8 HEAD)";
        sed -i 's|</component>|<releases><release date="'$(git show -s --format=%cs)'" version="'"${COMM_TAG}"'-'"${COMM_COUNT}"'-'"${COMM_HASH}"'"/></releases></component>|' ${FLATPAK_DEST}/share/metainfo/rpcs3.metainfo.xml
    sources:
      - type: git
        url: https://github.com/RPCS3/rpcs3.git
        commit: 1b87e186c45a21de83e9fdc859af3e0c92ae8509