# $Id: PKGBUILD 220120 2014-08-16 22:32:11Z lfleischer $
# Maintainer (Arch): Paul Mattal <paul@archlinux.org>
# Maintainer: André Silva <emulatorman@parabola.nu>
# Contributor: Luke Shumaker <lukeshu@sbcglobal.net>
# Contributor: Márcio Silva <coadde@parabola.nu>

_kernelname=

if [[ ${_kernelname} == "" ]]; then
  _basekernel=3.17
  _archrel=8
  _parabolarel=1
elif [[ ${_kernelname} == -lts ]]; then
  _basekernel=3.14
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -grsec ]]; then
  _basekernel=3.16
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -lts-grsec ]]; then
  _basekernel=3.14
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -lts-knock ]]; then
  _basekernel=3.10
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -rt ]]; then
  _basekernel=3.14
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -pae ]]; then
  _basekernel=3.16
  _archrel=1
  _parabolarel=1
elif [[ ${_kernelname} == -xen ]]; then
  _basekernel=3.16
  _archrel=1
  _parabolarel=1
fi

pkgbase=lirc
_pkgname=${pkgbase}${_kernelname}
if [[ -z ${_kernelname} ]]; then
  pkgname=("$_pkgname" "${pkgbase}-utils")
else
  pkgname=("$_pkgname")
fi
_pkgver=0.9.1a
[[ $_pkgver =~ [a-z]$ ]] && pkgver="${_pkgver:0:-1}.${_pkgver: -1}" || pkgver="$_pkgver"
pkgrel=${_archrel}.parabola${_parabolarel}.basekernel${_basekernel}
epoch=1
_extramodules=extramodules-${_basekernel}${_kernelname}
arch=('i686' 'x86_64' 'mips64el')
url="http://www.$pkgbase.org/"
license=('GPL')
# NOTICE: Don't forget to bump version in depends in package_lirc()!
makedepends=('help2man' 'alsa-lib' 'libx11' 'libftdi-compat' 'libirman' 'python2')

# Generic (you shouldn't have to modify any of these variables)
_toohigh=$(IFS=. read a b <<<$_basekernel; echo $a.$((b+1)))
makedepends+=("linux-libre${_kernelname}>=${_basekernel}"         "linux-libre${_kernelname}<${_toohigh}"
              "linux-libre${_kernelname}-headers>=${_basekernel}" "linux-libre${_kernelname}-headers<${_toohigh}")

options=('!makeflags' '!strip')
source=("http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${_pkgver}.tar.bz2"
        wpc8769l-build-fix.patch
        ${pkgbase}-0.9.1a-fix-segfaults.patch
        ${pkgbase}.logrotate
        irexec.service
        ${pkgbase}.tmpfiles)
md5sums=('1f1fac162ed309dd50f307e96a292957'
         '9ec33169b3407f74264062d7679dd269'
         '2d68e8b7423b4f4e2fcb37f2a7ca3caf'
         '3deb02604b37811d41816e9b4385fcc3'
         '32df3b9bc859565d6acf5f0e5b747083'
         'febf25c154a7d36f01159e84f26c2d9a')

prepare() {
  cd "${srcdir}/lirc-${_pkgver}"

  patch -Np1 -i "${srcdir}/wpc8769l-build-fix.patch"
  patch -Np1 -i "${srcdir}/${pkgbase}-0.9.1a-fix-segfaults.patch"

  sed -i '/AC_PATH_XTRA/d' configure.ac
  sed -e 's/@X_CFLAGS@//g' \
      -e 's/@X_LIBS@//g' \
      -e 's/@X_PRE_LIBS@//g' \
      -e 's/@X_EXTRA_LIBS@//g' -i Makefile.am tools/Makefile.am

  libtoolize
  autoreconf
}

build() {
  cd "${srcdir}/${pkgbase}-${_pkgver}"
  _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"

  PYTHON=python2 ./configure --enable-sandboxed --prefix=/usr \
      --with-driver=all --with-kerneldir="/usr/lib/modules/${_kernver}/build/" \
      --with-moduledir="/usr/lib/modules/${_kernver}/kernel/drivers/misc" \
      --sbindir=/usr/bin --with-transmitter

  # Remove drivers already in kernel
  sed -e "s:lirc_dev::" -e "s:lirc_bt829::" -e "s:lirc_igorplugusb::" \
      -e "s:lirc_imon::" -e "s:lirc_parallel::" -e "s:lirc_sasem::" \
      -e "s:lirc_serial::" -e "s:lirc_sir::" -e "s:lirc_ttusbir::" \
      -e "s:lirc_atiusb::" -e "s:lirc_i2c::" \
      -i Makefile drivers/Makefile drivers/*/Makefile tools/Makefile
  make
}

package_lirc() {
  pkgdesc="Linux Infrared Remote Control kernel modules (built for the linux-libre${_kernelname} kernel package)"
  depends=("${pkgbase}-utils" "linux-libre${_kernelname}>=${_basekernel}" "linux-libre${_kernelname}<${_toohigh}")
  replaces=("${_pkgname}-libre${_kernelname}" "${_pkgname}-parabola${_kernelname}")
  [[ -n ${_kernelname} ]] && replaces+=("${_pkgname}${_kernelname}-parabola")
  conflicts=("${_pkgname}-libre${_kernelname}" "${_pkgname}-parabola${_kernelname}")
  [[ -n ${_kernelname} ]] && conflicts+=("${_pkgname}${_kernelname}-parabola")
  replaces+=("${pkgbase}+pctv")
  if [[ ${_kernelname} != "" ]]; then
    provides=("${_pkgname}")
  fi
  install=kmod.install

  cd "${srcdir}/${pkgbase}-${_pkgver}/drivers"

  make DESTDIR="${pkgdir}" moduledir="/usr/lib/modules/${_extramodules}" install
  gzip -9 "${pkgdir}/usr/lib/modules/${_extramodules}"/*.ko

  # Set the correct extramodules directory for install
  cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
  true && install=${install}.pkg
  sed -i "s/^_EXTRAMODULES=$/_EXTRAMODULES="${_extramodules}"/" "${startdir}/${install}"
}

package_lirc-utils() {
  pkgdesc="Linux Infrared Remote Control utilities"
  depends=('alsa-lib' 'libx11' 'libftdi-compat' 'libirman')
  optdepends=('python2: pronto2lirc utility')
  options=('strip')
  backup=("etc/${pkgbase}/${pkgbase}_options.conf" "etc/${pkgbase}/${pkgbase}d.conf" "etc/${pkgbase}/${pkgbase}md.conf")
  replaces=("${pkgbase}-libre-utils" "${pkgbase}-utils-parabola")
  conflicts=("${pkgbase}-libre-utils" "${pkgbase}-utils-parabola")
  install=${pkgbase}-utils.install

  cd "${srcdir}/${pkgbase}-${_pkgver}"

  make DESTDIR="${pkgdir}" install

  install -Dm644 "${srcdir}"/irexec.service "${pkgdir}"/usr/lib/systemd/system/irexec.service
  install -Dm644 "${srcdir}"/${pkgbase}.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/${pkgbase}.conf

  cp -rp remotes "${pkgdir}/usr/share/${pkgbase}"
  chmod -R go-w "${pkgdir}/usr/share/${pkgbase}/"

  # install the logrotate config
  install -Dm644 "${srcdir}/${pkgbase}.logrotate" "${pkgdir}/etc/logrotate.d/${pkgbase}"
    
  # remove built modules
  rm -r "${pkgdir}/usr/lib/modules"
}