# Maintainer: RaumZeit <raumzeit@gmx.net>
# Contributor: pepedog at archlinuxarm dot com
# Contributor: Oleg Rakhmanov <oleg [at] archlinuxarm [dot] org>

buildarch=4
pkgbase=imx-gpu-viv
pkgver=5.0.11.p4.5
pkgrel=1
pkgdesc="Freescale proprietary Vivante GPU drivers for i.MX6 Quad SoC"

# filesystem prefix for the include files and license
_install_prefix=/opt/fsl
# filesystem prefix for the libraries
_install_exec_prefix=/opt/fsl
# filesystem prefix for the samples
_install_samples_prefix=/opt/fsl
url="https://community.freescale.com/docs/DOC-95560"
arch=('armv7h')
license=('proprietary')
source=("http://www.freescale.com/lgfiles/NMG/MAD/YOCTO/${pkgbase}-${pkgver}-hfp.bin"
	"98-galcore.rules"
	"egl.pc"
	"egl_x11.pc"
	"gc_wayland_protocol.pc"
	"glesv1_cm.pc"
	"glesv1_cm_x11.pc"
	"glesv2.pc"
	"glesv2_x11.pc"
	"vg.pc"
	"vg_x11.pc"
	"wayland-egl.pc"
	"wayland-viv.pc"
        "directfbrc")

md5sums=('8314408acb6b3bc58fcbbb8a0f48b54b'
         'ab0afbd747e802f0bc95d31494d3b559'
         'd56637776b8fa659d7b84f45d006dad2'
         '24ea66e2601cd3a1729c16e7e4052425'
         '9a815a054d9a2b94e78addd816fbb8a8'
         '16055b2e429354d117b9ea5c9d9b29d2'
         '7ce072e28e78fe9c67cb45d8ef447d85'
         '45982ac2514c8eb08105f8af427ce5eb'
         '7bb4eb0db280e9159726adafc8f95d31'
         '101994c11d92ff4bcd86ea25f3afa0f0'
         '36962675b16862e33f6d250865b0d6ba'
         '9e0ce33723aac9e9829a9322e38f6e32'
         '8994b882eaad8ee95ccb759505bdcf58'
         '7e56b987de6a243023c3313c36df57c5')

prepare() {
  cd "${srcdir}"
  sh ${pkgbase}-${pkgver}-hfp.bin --force --auto-accept
  sed -n '/EOEULA/,/EOEULA/p' ${pkgbase}-${pkgver}-hfp.bin | grep -v EOEULA > LICENSE.$pkgbase

  # adopt the prefix and exec_prefix variables in .pc files
  sed -i 's#^prefix=/usr#prefix='${_install_prefix}'#' *.pc
  sed -i 's#^exec_prefix=/usr#exec_prefix='${_install_exec_prefix}'#' *.pc
}

_package_common() {
  provides=('imx-gpu-viv=5.0.11.p4' 'libgl')
  conflicts=('gpu-viv-bin-mx6q' 'mesa-libgl')
  cd "${pkgbase}-${pkgver}-hfp/gpu-core"
  mkdir -p "${pkgdir}${_install_prefix}/include"  "${pkgdir}${_install_exec_prefix}/lib"
  cp -r usr/include/* "${pkgdir}${_install_prefix}/include"
  cd usr/lib
  cp -r libCLC* libVDK* libVSC*  *GLES* libGL.* libGAL* libGLSLC* libOpenCL* libOpenVG.?d.so* "${pkgdir}${_install_exec_prefix}/lib"
  mkdir -p "${pkgdir}${_install_prefix}/licenses"
  cp "${srcdir}/LICENSE.$pkgbase" "$pkgdir${_install_prefix}/licenses"
  mkdir -p "${pkgdir}/etc/ld.so.conf.d"
  echo "${_install_prefix}/lib" > "${pkgdir}/etc/ld.so.conf.d/$pkgbase.conf"

  install -D -m0644 "${srcdir}/98-galcore.rules" "${pkgdir}/usr/lib/udev/rules.d/98-galcore.rules"

}

_package_common_post() {

  cd "${pkgdir}${_install_exec_prefix}/lib/"

  mv libGL.so.1.2 libGL.so.1.2.0
  ln -sf libGL.so.1.2.0 libGL.so.1.2
  ln -sf libGL.so.1.2.0 libGL.so
  mv libEGL-${backend}.so libEGL.so.1.0
  ln -sf libEGL.so.1.0 libEGL.so.1
  ln -sf libEGL.so.1.0 libEGL.so
  mv libGAL-${backend}.so libGAL.so

  if [ ${backend} != x11 ]; then
     mv libGAL_egl.${backend}.so libGAL_egl.so
  fi

  mv libVIVANTE-${backend}.so libVIVANTE.so
  mv libGLESv2-${backend}.so libGLESv2.so.2.0.0
  ln -sf libGLESv2.so.2.0.0 libGLESv2.so.2
  ln -sf libGLESv2.so.2.0.0 libGLESv2.so

  ln -sf libOpenVG.3d.so libOpenVG.so

  for backend in wl x11 fb dfb; do
    find "${pkgdir}${_install_exec_prefix}/lib/" -name "*${backend}.so" -exec rm '{}' ';'
  done

  find "${pkgdir}${_install_exec_prefix}/lib/" -type f -exec chmod 644 {} \;
  find "${pkgdir}${_install_prefix}/include/" -type f -exec chmod 644 {} \;
}

package_imx-gpu-viv-fb() {
  replaces=('gpu-viv-bin-mx6q-fb')  

  backend=fb
  _package_common
  cp -r *-fb* "${pkgdir}${_install_exec_prefix}/lib"

  install -d "${pkgdir}/usr/lib/pkgconfig"
  install -m0644 "${srcdir}/egl.pc" "${pkgdir}/usr/lib/pkgconfig/egl.pc"
  install -m0644 "${srcdir}/glesv1_cm.pc" "${pkgdir}/usr/lib/pkgconfig/glesv1_cm.pc"
  install -m0644 "${srcdir}/glesv2.pc" "${pkgdir}/usr/lib/pkgconfig/glesv2.pc"
  install -m0644 "${srcdir}/vg.pc" "${pkgdir}/usr/lib/pkgconfig/vg.pc"


  _package_common_post
}


package_imx-gpu-viv-x11() {
  replaces=('gpu-viv-bin-mx6q-x11')

  backend=x11
  _package_common
  cp -r dri "${pkgdir}${_install_exec_prefix}/lib"

  cp -r *-x11* "${pkgdir}${_install_exec_prefix}/lib"

  install -d "${pkgdir}/usr/lib/pkgconfig"
  install -m0644 "${srcdir}/egl_x11.pc" "${pkgdir}/usr/lib/pkgconfig/egl.pc"
  install -m0644 "${srcdir}/glesv1_cm_x11.pc" "${pkgdir}/usr/lib/pkgconfig/glesv1_cm.pc"
  install -m0644 "${srcdir}/glesv2_x11.pc" "${pkgdir}/usr/lib/pkgconfig/glesv2.pc"
  install -m0644 "${srcdir}/vg_x11.pc" "${pkgdir}/usr/lib/pkgconfig/vg.pc"

# 
  _package_common_post
}

package_imx-gpu-viv-wl() {
  replaces=('gpu-viv-bin-mx6q-wl')

  backend=wl
  _package_common
  cp -r *-wl* "${pkgdir}${_install_exec_prefix}/lib"
  cp -r *wayland* "${pkgdir}${_install_exec_prefix}/lib"

  install -d "${pkgdir}/usr/lib/pkgconfig"
  install -m0644 "${srcdir}/egl_x11.pc" "${pkgdir}/usr/lib/pkgconfig/egl.pc"
  install -m0644 "${srcdir}/glesv1_cm_x11.pc" "${pkgdir}/usr/lib/pkgconfig/glesv1_cm.pc"
  install -m0644 "${srcdir}/glesv2_x11.pc" "${pkgdir}/usr/lib/pkgconfig/glesv2.pc"
  install -m0644 "${srcdir}/vg_x11.pc" "${pkgdir}/usr/lib/pkgconfig/vg.pc"
  install -m0644 "${srcdir}/gc_wayland_protocol.pc" "${pkgdir}/usr/lib/pkgconfig/gc_wayland_protocol.pc"
  install -m0644 "${srcdir}/wayland-egl.pc" "${pkgdir}/usr/lib/pkgconfig/wayland-egl.pc"
  install -m0644 "${srcdir}/wayland-viv.pc" "${pkgdir}/usr/lib/pkgconfig/wayland-viv.pc"

  _package_common_post
}

package_imx-gpu-viv-dfb() {
  replaces=('gpu-viv-bin-mx6q-dfb')

  backend=dfb
  _package_common
  cp -r *-dfb* directfb* "${pkgdir}${_install_exec_prefix}/lib"
  install -d "${pkgdir}/etc"
  install -m0644 "${srcdir}/directfbrc" "${pkgdir}/etc/directfbrc"
  _package_common_post
}

package_imx-gpu-viv-g2d() {
  replaces=('gpu-viv-g2d')

  cd "${pkgbase}-${pkgver}-hfp/g2d"
  mkdir -p "${pkgdir}${_install_prefix}/include"  "${pkgdir}${_install_exec_prefix}/lib"
  cp -r usr/include/* "${pkgdir}${_install_prefix}/include"
  cp -r usr/lib/* "${pkgdir}${_install_prefix}/lib"
  mkdir -p "${pkgdir}${_install_prefix}/licenses"
  mkdir -p "${pkgdir}/etc/ld.so.conf.d"
  echo "${_install_prefix}/lib" > "${pkgdir}/etc/ld.so.conf.d/$pkgname.conf"
}

package_imx-gpu-viv-samples() {
  replaces=('gpu-viv-bin-mx6q-samples')

  cd "${pkgbase}-${pkgver}-hfp/gpu-demos"
  mkdir -p "${pkgdir}${_install_samples_prefix}/viv_samples"
  cp -r opt/viv_samples/* "${pkgdir}${_install_samples_prefix}/viv_samples"
}

pkgname=("${pkgbase}-x11" "${pkgbase}-fb" "${pkgbase}-dfb" "${pkgbase}-wl" "${pkgbase}-g2d" "${pkgbase}-samples")

# vim:set ts=2 sw=2 et: