# Maintainer: aur.chaotic.cx

_pkgname="ppsspp"
pkgname="$_pkgname-git"
pkgver=1.20.4.r450.g26c20c1
pkgrel=1
pkgdesc='PSP emulator written in C++'
url="https://github.com/hrydgard/ppsspp"
license=('GPL-2.0-or-later')
arch=('x86_64')

depends=(
  glew
  hicolor-icon-theme
  libglvnd
  libzip
  sdl3
  sdl3_ttf
  snappy
)
makedepends=(
  cmake
  git
  ninja
  python
)

provides=(
  "ppsspp=${pkgver%%.r*}"
  "ppsspp-assets=${pkgver%%.r*}"
)
conflicts=(
  "ppsspp"
  "ppsspp-assets"
)

options=('!lto')

_pkgsrc="ppsspp"
source=("git+https://github.com/hrydgard/ppsspp.git")
sha256sums=('SKIP')

pkgver() {
  cd "$_pkgsrc"
  git describe --long --tags --abbrev=7 --exclude='*[a-zA-Z][a-zA-Z]*' \
    | sed -E 's/^v//;s/([^-]*-g)/r\1/;s/-/./g'
}

prepare() {
  cd "$_pkgsrc"

  git rm -r SDL/macOS
  git rm -r pspautotests

  git submodule update --init --recursive --depth=1
}

build() {
  local _cmake_options=(
    -B build
    -S "$_pkgsrc"
    -G Ninja
    -DCMAKE_BUILD_TYPE=None
    -DCMAKE_SKIP_RPATH=ON
    -DBUILD_TESTING=OFF
    -Wno-dev

    -DHEADLESS=OFF
    -DOpenGL_GL_PREFERENCE=GLVND
    -DUNITTEST=OFF
    -DUSE_SYSTEM_FFMPEG=OFF
    -DUSE_SYSTEM_LIBPNG=ON
    -DUSE_SYSTEM_LIBSDL2=ON
    -DUSE_SYSTEM_LIBZIP=ON
    -DUSE_SYSTEM_MINIUPNPC=OFF
    -DUSE_SYSTEM_SNAPPY=ON
    -DUSE_SYSTEM_ZSTD=ON
    -DUSING_QT_UI=OFF
  )

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

package() {
  local _assets="build"
  install -Dm755 "$_assets/PPSSPPSDL" -t "$pkgdir/usr/bin/"

  ln -sf PPSSPPSDL "$pkgdir/usr/bin/ppsspp-sdl"

  mkdir -pm755 "$pkgdir/usr/share/ppsspp"
  cp -a "$_assets/assets" "$pkgdir/usr/share/ppsspp/"

  install -Dm644 ppsspp/icons/icon-512.svg "$pkgdir/usr/share/icons/hicolor/scalable/apps/$_pkgname.svg"

  install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/ppsspp-sdl.desktop" << END
[Desktop Entry]
Type=Application
Name=PPSSPP
Comment=$pkgdesc
Exec=PPSSPPSDL %f
Icon=$_pkgname
Terminal=false
StartupNotify=true
Categories=Game;
END

  chmod -R u+rwX,go+rX,go-w "$pkgdir/"
}
