# Maintainer: Jaroslav Lichtblau <svetlemodry@archlinux.org>
# Contributor: Vesa Kaihlavirta <vegai@iki.fi>

pkgbase=quassel
pkgname=('quassel-core'
         'quassel-client'
         'quassel-client-qt'
         'quassel-monolithic'
         'quassel-monolithic-qt'
         'quassel-common')
pkgver=0.13.1
pkgrel=8
pkgdesc="Next-generation distributed IRC client"
arch=('x86_64')
url="https://quassel-irc.org/"
license=('GPL')
makedepends=('qt5-base' 'qt5-tools' 'qt5-webengine' 'qca' 'qt5-script'
             'qt5-multimedia' 'knotifyconfig' 'sonnet' 'libldap' 'cmake'
             'extra-cmake-modules' 'python' 'hicolor-icon-theme')
source=(https://quassel-irc.org/pub/$pkgbase-$pkgver.tar.bz2
        0001-qtui-Set-desktop-file-name.patch
        0002-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch
        0003-Removed-mozilla-IRC-network-from-networks.ini.patch
        0004-This-commit-changes-the-official-Quassel-IRC-channel.patch
        $pkgbase.service
        $pkgbase.sysusers
        $pkgbase.tmpfiles
        $pkgbase.conf)
sha256sums=('48efee9778743b1db9f44efb91d1c913104db01190c57f2ff57483c39a97e855'
            '7a64214024dc047f35ec8af3c5d543853a5c89c0506766c69c2e1072ca8f5ec7'
            'a1f874558f31c786b2fb483454d14e74a0dfc01382e1ba58bd610a65e02f4df4'
            '0f92f3a51d2e3272d71b21a563047d7fae93bc2dd6676f405a2d63a20d48521b'
            'f59d4138f5fc8c9e84b5626fcbe16eec21b22344dc6c28d784c511677de661e1'
            '5dbe20290f3361b9b7a74a52905137e76b656976febf2d31082a2276f9dcde7f'
            '3c72441a99e2668c6a8a751fa07beeb44f937576c8a1b5f615e4a55f841d93d9'
            '2afd4340c7713f6533e5d175a86b28fd118ecd907776c2b10925d1a4fb31cdca'
            'f3031ea8217e01ba42cea14606169e3e27affa5918968ffd5a03c21ae92fe2b8')

prepare() {
  cd $pkgbase-$pkgver
  patch -Np1 -i ../0001-qtui-Set-desktop-file-name.patch
  patch -Np1 -i ../0002-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch
  patch -Np1 -i ../0003-Removed-mozilla-IRC-network-from-networks.ini.patch
  patch -Np1 -i ../0004-This-commit-changes-the-official-Quassel-IRC-channel.patch
}

_build() (
  cmake -H$pkgbase-$pkgver -Bbuild-$1 \
    -DCMAKE_INSTALL_PREFIX=/usr/ \
    -DCMAKE_BUILD_TYPE=None \
    -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-suggest-override" \
    -DHAVE_SSL=ON \
    "${@:2}" \
    -Wno-dev
  cmake --build build-$1
)

_install() {
  DESTDIR="${pkgdir}" cmake --build build-$1 --target install
}

build() {
  _build core \
    -DWANT_QTCLIENT=OFF \
    -DWANT_MONO=OFF \
    -DWITH_BUNDLED_ICONS=OFF \
    -DWITH_WEBENGINE=OFF

  _build monolithic \
    -DWANT_CORE=OFF \
    -DWANT_QTCLIENT=OFF \
    -DWITH_KDE=ON

  _build monolithic-qt \
    -DWANT_CORE=OFF \
    -DWANT_QTCLIENT=OFF \
    -DWITH_WEBENGINE=OFF \
    -DCMAKE_DISABLE_FIND_PACKAGE_dbusmenu-qt5=ON \
    -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=ON \
    -DCMAKE_DISABLE_FIND_PACKAGE_Phonon4Qt5=ON

  _build client \
    -DWANT_CORE=OFF \
    -DWANT_MONO=OFF \
    -DWITH_KDE=ON

  _build client-qt \
    -DWANT_CORE=OFF \
    -DWANT_MONO=OFF \
    -DWITH_WEBENGINE=OFF \
    -DCMAKE_DISABLE_FIND_PACKAGE_dbusmenu-qt5=ON \
    -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=ON \
    -DCMAKE_DISABLE_FIND_PACKAGE_Phonon4Qt5=ON
}

package_quassel-core() {
pkgdesc="Next-generation distributed IRC client - core only"
depends=('icu' 'qca' 'qt5-script' 'libldap')
optdepends=('postgresql: PostgreSQL database support')
backup=(etc/conf.d/quassel)

  _install core

  # Remove unneeded pixmap icons
  rm -r "${pkgdir}"/usr/share

  install -Dm644 $pkgbase.sysusers \
    "${pkgdir}"/usr/lib/sysusers.d/$pkgbase.conf
  install -Dm644 $pkgbase.tmpfiles \
    "${pkgdir}"/usr/lib/tmpfiles.d/$pkgbase.conf
  install -Dm644 $pkgbase.service \
    "${pkgdir}"/usr/lib/systemd/system/$pkgbase.service
  install -Dm644 $pkgbase.conf \
    "${pkgdir}"/etc/conf.d/$pkgbase
}

package_quassel-client() {
pkgdesc="Next-generation distributed IRC client - client only, KDE version"
depends=('quassel-common' 'qt5-base' 'qt5-webengine' 'qt5-multimedia' 'knotifyconfig')
optdepends=('perl: for builtin /exec scripts')
conflicts=('quassel-client-qt')

  _install client
  install -Dm644 $pkgbase-$pkgver/data/quasselclient.appdata.xml "$pkgdir/usr/share/metainfo/quasselclient.appdata.xml"

  # Split quassel-common
  rm -r "$pkgdir"/usr/share/{icons,knotifications5,pixmaps,quassel}
}

package_quassel-client-qt() {
pkgdesc="Next-generation distributed IRC client - client only, Qt version with reduced deps"
depends=('quassel-common' 'qt5-base' 'qt5-svg' 'sonnet')
optdepends=('perl: for builtin /exec scripts')
conflicts=('quassel-client')
replaces=('quassel-client-small' 'quassel-remote')

  _install client-qt

  # Split quassel-common
  rm -r "$pkgdir"/usr/share/{icons,pixmaps,quassel}

  # Ignore package by AppStream to avoid duplicated IDs
  echo 'X-AppStream-Ignore=true' >> "$pkgdir/usr/share/applications/quasselclient.desktop"
}

package_quassel-monolithic() {
pkgdesc="Next-generation distributed IRC client - monolithic, KDE version"
depends=('quassel-common' 'qt5-base' 'qt5-webengine' 'qt5-multimedia' 'qt5-script' 'qca'
         'knotifyconfig' 'libldap')
optdepends=('perl: for builtin /exec scripts'
            'postgresql: PostgreSQL database support')
conflicts=('quassel-monolithic-qt')

  _install monolithic
  install -Dm644 $pkgbase-$pkgver/data/quassel.appdata.xml "$pkgdir/usr/share/metainfo/quassel.appdata.xml"

  # Split quassel-common
  mkdir "$srcdir/quassel-common"
  mv "$pkgdir"/usr/share/{icons,knotifications5,pixmaps,quassel} \
     "$srcdir/quassel-common/"
}

package_quassel-monolithic-qt() {
pkgdesc="Next-generation distributed IRC client - monolithic, Qt version with reduced deps"
depends=('quassel-common' 'qca' 'qt5-base' 'qt5-svg' 'qt5-script' 'sonnet')
optdepends=('perl: for builtin /exec scripts'
            'postgresql: PostgreSQL database support')
conflicts=('quassel-monolithic')

  _install monolithic-qt

  # Split quassel-common
  rm -r "$pkgdir"/usr/share/{icons,pixmaps,quassel}

  # Ignore package by AppStream to avoid duplicated IDs
  echo 'X-AppStream-Ignore=true' >> "$pkgdir/usr/share/applications/quassel.desktop"
}

package_quassel-common() {
  pkgdesc="Common files for Quassel"
  depends=('hicolor-icon-theme')

  install -dm755 "$pkgdir/usr/share"
  mv quassel-common/* "$pkgdir/usr/share"
}
