# Maintainer: Alexey Pavlov <alexpux@gmail.com>

_realname=level-zero
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-headers"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-loader")
pkgver=1.16.1
pkgrel=1
pkgdesc="API for accessing low level interfaces in oneAPI platform devices (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://spec.oneapi.com/versions/latest/elements/l0/source/index.html"
msys2_repository_url="https://github.com/oneapi-src/level-zero"
msys2_references=(
  'archlinux: level-zero'
)
license=('spdx:MIT')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-clang"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-opencl-headers"
             )
source=("https://github.com/oneapi-src/level-zero/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        001-mingw-support.patch
        002-missing-include.patch)
sha256sums=('f341dd6355d8da6ee9c29031642b8e8e4259f91c13c72d318c81663af048817e'
            '35963c211c359506c4e0803a9f51ebb20537c244603d0021303c4c9350144228'
            '9fb2dc38efdaadb1819ed509695aa38588716f60fb47f4e215db8097e785a8d3')

prepare() {
  cd ${_realname}-${pkgver}
  patch -p1 -i ${srcdir}/001-mingw-support.patch
  patch -p1 -i ${srcdir}/002-missing-include.patch

  printf '%s\n' ${pkgver##*.} > VERSION_PATCH
}

build() {
  declare -a extra_config
  if check_option "debug" "n"; then
    extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake \
    -G"Ninja" \
    -Wno-dev \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    ${extra_config[@]} \
    ../${_realname}-${pkgver}

  ${MINGW_PREFIX}/bin/cmake --build .
}

package_level-zero-headers() {
  pkgdesc+=" (headers)"

  cd ${srcdir}/build-${MSYSTEM}
  DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .
  rm -rf "${pkgdir}${MINGW_PREFIX}"/bin
  rm -f "${pkgdir}${MINGW_PREFIX}"/lib/*.dll
  install -Dm644 ${srcdir}/${_realname}-${pkgver}/LICENSE -t "${pkgdir}${MINGW_PREFIX}"/share/licenses/${_realname}-headers
}

package_level-zero-loader() {
  pkgdesc+=" (loader)"
  depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs")

  cd ${srcdir}/build-${MSYSTEM}
  DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .
  mv "${pkgdir}${MINGW_PREFIX}"/lib/*.dll "${pkgdir}${MINGW_PREFIX}"/bin/
  rm -rf "${pkgdir}${MINGW_PREFIX}"/{include,lib}
  install -Dm644 ${srcdir}/${_realname}-${pkgver}/LICENSE -t "${pkgdir}${MINGW_PREFIX}"/share/licenses/${_realname}-loader
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
