# Maintainer: aur.chaotic.cx

_pkgname="ryzen_smu"
pkgname="$_pkgname-dkms-git"
pkgver=179.c4986ce
pkgrel=1
pkgdesc="A Linux kernel driver that exposes access to the SMU (System Management Unit) for certain AMD Ryzen Processors"
url="https://github.com/amkillam/ryzen_smu"
license=(
  'GPL-2.0-only'     # kernel module
  'GPL-3.0-or-later' # monitor_cpu
)
arch=('x86_64')

depends=('dkms')
makedepends=('git')

provides=('ryzen_smu' 'ryzen_smu-dkms')
conflicts=('ryzen_smu' 'ryzen_smu-dkms')

_pkgsrc="amkillam.ryzen_smu"
source=("$_pkgsrc"::"git+$url.git")
sha256sums=('SKIP')

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

prepare() {
  cd "$_pkgsrc"
  rm -rf scripts/ pics/ README.md

  sed -E 's&^(CFLAGS) = .*$&\1 = -O3&' -i userspace/Makefile
  sed -E 's&\bTYPE_RSMU&SMU_TYPE_RSMU&' -i userspace/monitor_cpu.c
}

build() {
  cd "$_pkgsrc"
  make -C userspace
}

package() {
  local _dkms_path="usr/src/$_pkgname-$pkgver"

  local _files=(
    LICENSE
    Makefile
    dkms.conf
    drv.c
    smu.c
    smu.h
  )

  for i in ${_files[@]}; do
    install -Dm644 "$_pkgsrc/$i" -t "$pkgdir/$_dkms_path/"
  done

  install -Dm644 /dev/stdin "$pkgdir/$_dkms_path/dkms.conf" << END
PACKAGE_NAME="$_pkgname"
PACKAGE_VERSION="$pkgver"
MAKE[0]="make -C \$kernel_source_dir M=\$dkms_tree/\$PACKAGE_NAME/\$PACKAGE_VERSION/build modules"
BUILT_MODULE_NAME[0]="$_pkgname"
DEST_MODULE_LOCATION[0]="/kernel/drivers/$_pkgname"
AUTOINSTALL="yes"
END

  install -Dm644 /dev/stdin "$pkgdir/usr/lib/depmod.d/$_pkgname.conf" << END
search updates extramodules built-in
END

  install -Dm700 "$_pkgsrc/userspace/monitor_cpu" "$pkgdir/usr/bin/monitor_cpu"
}
