id: net.rpcs3.RPCS3
runtime: org.kde.Platform
runtime-version: '5.15'
sdk: org.kde.Sdk
sdk-extensions:
  - org.freedesktop.Sdk.Extension.llvm12
command: rpcs3
rename-desktop-file: rpcs3.desktop
rename-appdata-file: rpcs3.metainfo.xml
rename-icon: rpcs3
finish-args:
  - --device=all
  - --filesystem=home:ro
  - --filesystem=xdg-run/gvfs
  - --filesystem=xdg-run/gvfsd
  - --share=ipc
  - --socket=fallback-x11
  - --socket=pulseaudio
  - --socket=wayland
  - --share=network
  - --talk-name=org.a11y.Bus
  - --talk-name=org.gtk.vfs.*
add-extensions:
  org.freedesktop.Platform.ffmpeg-full:
    directory: lib/ffmpeg
    add-ld-path: .
    version: '20.08'
    autodownload: true
    autodelete: false
cleanup-commands:
  - mkdir -p ${FLATPAK_DEST}/lib/ffmpeg
build-options:
  prepend-ld-library-path: /usr/lib/sdk/llvm12/lib
  prepend-path: /usr/lib/sdk/llvm12/bin
modules:
  - shared-modules/glu/glu-9.json
  - shared-modules/glew/glew.json
  - shared-modules/libusb/libusb.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.11.0.tar.xz
        sha256: 63f4ea1489858a109080e0b40bd43e4e0903a1e12ea888d581db8c495747c2d0
        x-checker-data:
          type: anitya
          project-id: 20540
          stable-only: true
          url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz

  - name: flatbuffers
    buildsystem: cmake-ninja
    build-options:
      env:
        CC: clang
        CXX: clang++
    config-opts:
      - -DCMAKE_BUILD_TYPE=RelWithDebInfo
      - -DFLATBUFFERS_BUILD_TESTS=OFF
      - -DFLATBUFFERS_BUILD_FLATC=OFF
      - -DFLATBUFFERS_BUILD_SHAREDLIB=ON
    cleanup:
      - /include/
      - /lib/cmake/
      - /lib/pkgconfig/
      - /lib/*.a
    sources:
      - type: git
        url: https://github.com/google/flatbuffers.git
        tag: v2.0.0
        commit: a9a295fecf3fbd5a4f571f53b01f63202a3e2113
        x-checker-data:
          type: git
          tag-pattern: ^v([\\d.]+)$

  - name: pugixml
    buildsystem: cmake-ninja
    config-opts:
      - -DCMAKE_BUILD_TYPE=RelWithDebInfo
      - -DBUILD_SHARED_LIBS=ON
    cleanup:
      - /include/
      - /lib/cmake/
      - /lib/pkgconfig/
    sources:
      - type: archive
        url: https://github.com/zeux/pugixml/releases/download/v1.11.4/pugixml-1.11.4.tar.gz
        sha256: 8ddf57b65fb860416979a3f0640c2ad45ddddbbafa82508ef0a0af3ce7061716
        x-checker-data:
          type: anitya
          project-id: 3728
          stable-only: true
          url-template: https://github.com/zeux/pugixml/releases/download/v$version/pugixml-$version.tar.gz

  - name: xxhash
    no-autogen: true
    make-install-args:
      - PREFIX=${FLATPAK_DEST}
    cleanup:
      - /bin/
      - /include/
      - /lib/pkgconfig/
      - /lib/*.a
      - /share/
    sources:
      - type: archive
        url: https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.0.tar.gz
        sha256: 7054c3ebd169c97b64a92d7b994ab63c70dd53a06974f1f630ab782c28db0f4f
        x-checker-data:
          type: anitya
          project-id: 17583
          stable-only: true
          url-template: https://github.com/Cyan4973/xxHash/archive/refs/tags/v$version.tar.gz

  - name: rpcs3-llvm
    buildsystem: cmake-ninja
    builddir: true
    build-options:
      cxxflags: -msse -msse2 -mcx16
      env:
        AR: llvm-ar
        CC: clang
        CXX: clang++
        RANLIB: llvm-ranlib
      ldflags: -fuse-ld=lld
    config-opts:
      - -DCMAKE_BUILD_TYPE=Release
      - -DBUILD_SHARED_LIBS=OFF
      - -DLLVM_CCACHE_BUILD=ON
      - -DLLVM_TARGETS_TO_BUILD='X86'
      - -DLLVM_BUILD_RUNTIME=OFF
      - -DLLVM_BUILD_TOOLS=OFF
      - -DLLVM_INCLUDE_DOCS=OFF
      - -DLLVM_INCLUDE_EXAMPLES=OFF
      - -DLLVM_INCLUDE_TESTS=OFF
      - -DLLVM_INCLUDE_TOOLS=OFF
      - -DLLVM_INCLUDE_UTILS=OFF
      - -DLLVM_USE_INTEL_JITEVENTS=ON
      - -DLLVM_ENABLE_Z3_SOLVER=OFF
      - -DCMAKE_CXX_STANDARD=17
    cleanup:
      - '*'
    sources:
      - type: git
        url: https://github.com/RPCS3/llvm-mirror.git
        branch: master
        commit: 5836324d6443a62ed09b84c125029e98324978c3

  - name: rpcs3
    buildsystem: cmake-ninja
    build-options:
      env:
        AR: llvm-ar
        CC: clang
        CXX: clang++
        RANLIB: llvm-ranlib
      ldflags: -fuse-ld=lld
    config-opts:
      - -DCMAKE_BUILD_TYPE=RelWithDebInfo
      - -DBUILD_LLVM_SUBMODULE=OFF
      - -DUSE_NATIVE_INSTRUCTIONS=OFF
      - -DUSE_PRECOMPILED_HEADERS=OFF
      - -DUSE_SYSTEM_CURL=ON
      - -DUSE_SYSTEM_FFMPEG=ON
      - -DUSE_SYSTEM_FLATBUFFERS=ON
      - -DUSE_SYSTEM_LIBPNG=ON
      - -DUSE_SYSTEM_LIBUSB=ON
      - -DUSE_SYSTEM_PUGIXML=ON
      - -DUSE_SYSTEM_XXHASH=ON
      - -DUSE_SYSTEM_ZLIB=ON
    post-install:
      - |
        set -eux;

        sed -i 's|<id>RPCS3</id>|<id>net.rpcs3.RPCS3</id>|' ${FLATPAK_DEST}/share/metainfo/rpcs3.metainfo.xml;

        COMM_TAG="$(grep 'version{.*}' rpcs3/rpcs3_version.cpp | awk -F[\{,] '{printf "%d.%d.%d", $2, $3, $4}')";
        COMM_COUNT="$(git rev-list --count HEAD)";
        COMM_HASH="$(git rev-parse --short=8 HEAD)";
        sed -i 's|</component>|<content_rating type="oars-1.1"/><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
        branch: master
        commit: 6c44664c1934b2ed3cab8564ae6609861fe873ce