# Maintainer: Laurent Carlier <lordheavym@gmail.com>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - use suffix=32 in packaging for 32-bit ARM architectures
#  - strip -m32 from CMakeLists

pkgbase=vulkan-lunarg-tools
pkgname=(vulkan-trace vulkan-extra-layers)
pkgver=1.2.131.1+10620+7c5f4d78b
pkgrel=1
arch=(x86_64)
url="http://lunarg.com/"
license=('custom')
depends=()
makedepends=(git cmake python libx11 libxrandr wayland qt5-svg qt5-webengine)
#source=("https://github.com/LunarG/VulkanTools/archive/v${pkgver}.tar.gz")
source=("VulkanTools-sdk::git+https://github.com/LunarG/VulkanTools.git#commit=7c5f4d78b0962bd42ca124b4cfab69a8764bf1b7")
sha256sums=('SKIP')

_install() {
  local src f dir
  for src; do
    f="${src#fakeinstall/}"
    dir="${pkgdir}/${f%/*}"
    install -m755 -d "${dir}"
    mv -v "${src}" "${dir}/"
  done
}

pkgver() {
  cd "${srcdir}"/VulkanTools*

  echo 1.2.131.1+$(git rev-list --count HEAD)+$(git rev-parse --short HEAD)
}

prepare() {
  cd "${srcdir}"/VulkanTools*
  sed -i 's/-m32//g' vktrace/CMakeLists.txt
}

build() {
  cd "${srcdir}"/VulkanTools*

  ./update_external_sources.sh
  rm -rf build ; mkdir build ; cd build
  ../scripts/update_deps.py

  cmake -C helper.cmake \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_SYSCONFDIR=/etc \
    -DCMAKE_INSTALL_DATADIR=/usr/share \
    -DCMAKE_INSTALL_LIBDIR=lib \
    -DCMAKE_SKIP_RPATH=True \
    -DBUILD_WSI_XCB_SUPPORT=On \
    -DBUILD_WSI_XLIB_SUPPORT=On \
    -DBUILD_WSI_WAYLAND_SUPPORT=On \
    -DBUILD_TESTS=OFF \
    -DBUILD_VIA=OFF \
    -DCMAKE_BUILD_TYPE=Release \
    ..
  make
  make DESTDIR="${srcdir}/fakeinstall" install
}

package_vulkan-trace() {
  pkgdesc="Vulkan tracing and replaying tools"
  depends=(vulkan-validation-layers qt5-svg qt5-webengine)
  groups=('vulkan-devel')

  [[ $CARCH == i686 || $CARCH == arm || $CARCH == armv6h || $CARCH == armv7h ]] && suffix=32

  _install fakeinstall/usr/bin/*
  _install fakeinstall/usr/lib/libVkLayer_vktrace_layer${suffix}.so
  _install fakeinstall/usr/lib/libvkdisplay_*.so
  _install fakeinstall/etc/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json

  install -dm755 ${pkgdir}/usr/share/{doc,licenses}/${pkgname}
  install -m644 VulkanTools*/vktrace/LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/
  install -m644 VulkanTools*/vktrace/vktrace.md "${pkgdir}"/usr/share/doc/${pkgname}/
}

package_vulkan-extra-layers() {
  pkgdesc="Extra layers for Vulkan development"
  depends=(vulkan-validation-layers)
  groups=('vulkan-devel')
  
  _install fakeinstall/usr/lib/libVkLayer_api_dump.so
  _install fakeinstall/usr/lib/libVkLayer_monitor.so
  _install fakeinstall/usr/lib/libVkLayer_screenshot.so
  _install fakeinstall/usr/lib/libVkLayer_device_simulation.so

  _install fakeinstall/etc/vulkan/explicit_layer.d/VkLayer_api_dump.json
  _install fakeinstall/etc/vulkan/explicit_layer.d/VkLayer_monitor.json
  _install fakeinstall/etc/vulkan/explicit_layer.d/VkLayer_screenshot.json
  _install fakeinstall/etc/vulkan/explicit_layer.d/VkLayer_device_simulation.json

  install -dm755 ${pkgdir}/usr/share/{doc,licenses}/${pkgname}
  install -m644 VulkanTools*/LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/
  install -m644 VulkanTools*/layersvt/README.md "${pkgdir}"/usr/share/doc/${pkgname}/
}