# Maintainer: aur.chaotic.cx

: ${_install_path:=usr/lib}

_pkgname="vita3k"
pkgname="$_pkgname-git"
pkgver=r4066.5ded8c78f
pkgrel=1
pkgdesc="Experimental PlayStation Vita emulator"
url="https://github.com/Vita3K/Vita3K"
license=('GPL-2.0-or-later')
arch=('x86_64')

depends=(
  'libcrypto.so' # openssl
  'libcurl.so'   # curl
  'libssl.so'    # openssl
  'libz.so'      # zlib
  'qt6-base'
  'qt6-multimedia'
  'qt6-svg'
)
makedepends=(
  'clang'
  'cmake'
  'git'
  'lld'
  'ninja'
  'qt6-tools'

  ## sdl3
  'alsa-lib'
  'hidapi'
  'ibus'
  'jack'
  'libdecor'
  'libgl'
  'libpulse'
  'libusb'
  'libx11'
  'libxcursor'
  'libxext'
  'libxinerama'
  'libxkbcommon'
  'libxrandr'
  'libxrender'
  'libxss'
  'mesa'
  'pipewire'
  'sndio'
  'vulkan-headers'
  'wayland'
  'wayland-protocols'
)
optdepends=(
  'vulkan-validation-layers: Descriptive vulkan errors'
)

provides=("$_pkgname")
conflicts=("$_pkgname")

options=('!lto')

_pkgsrc="$_pkgname"
source=(
  "$_pkgsrc"::"git+$url.git"
  '0001-disable_startup_update_check.patch'
)
sha256sums=(
  'SKIP'
  '4c1ed321e11f5b8ca22ba9af5c8ed3daefdd00d64d1c01b2a58ec5eb2286a38c'
)

pkgver() {
  cd "$_pkgsrc"
  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=9 HEAD)"
}

prepare() {
  cd "$_pkgsrc"
  git submodule update --init --depth=1 --recursive

  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    src="${src%.zst}"
    if [[ $src == *.patch ]]; then
      printf '\nApplying patch: %s\n' "$src"
      patch -Np1 -F100 -i "${srcdir:?}/$src"
    fi
  done

  # Needed to have correct title version
  git remote set-url origin "$url.git"
}

build() {
  export CC=clang
  export CXX=clang++
  export LDFLAGS+=" -fuse-ld=lld"

  local _cmake_options=(
    -B build
    -S "$_pkgsrc"
    -G Ninja
    -DCMAKE_BUILD_TYPE=None
    -DCMAKE_INSTALL_PREFIX='/usr'
    -DBUILD_TESTING=OFF
    -Wno-author

    -DUSE_DISCORD_RICH_PRESENCE=OFF
    -DUSE_SANITIZERS=OFF # cubeb
    -DXXH_X86DISPATCH_ALLOW_AVX=ON
  )

  cmake "${_cmake_options[@]}"
  cmake --build build
}

package() {
  mkdir -pm755 "$pkgdir/usr/bin" "$pkgdir/$_install_path/$_pkgname"
  cp -r "build/bin"/* "$pkgdir/$_install_path/$_pkgname/"
  ln -sf "/$_install_path/$_pkgname/Vita3K" "$pkgdir/usr/bin/$_pkgname"

  install -Dm644 "build/bin/org.vita3k.vita3k.metainfo.xml" -t "$pkgdir/usr/share/metadata/"

  install -Dm644 "$_pkgsrc/dist/image/org.vita3k.vita3k.svg" -t "$pkgdir/usr/share/icons/hicolor/scalable/apps/"

  install -Dm644 "$_pkgsrc/dist/linux/org.vita3k.vita3k.desktop" -t "$pkgdir/usr/share/applications/"
}
