# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
# Maintainer: Frederik Schwan <freswa at archlinux dot org>
# Contributor: Jaroslav Lichtblau <svetlemodry@archlinux.org>
# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>

pkgbase=emacs
pkgname=(emacs emacs-nox emacs-wayland)
pkgver=30.2
pkgrel=1
arch=('x86_64')
url='https://www.gnu.org/software/emacs/emacs.html'
license=('GPL3')
depends=(
  gmp
  gnutls
  lcms2
  libacl.so
  libasound.so
  libgccjit
  libdbus-1.so
  libfontconfig.so
  libfreetype.so
  libgdk-3.so
  libgdk_pixbuf-2.0.so
  libgif.so
  libgio-2.0.so
  libglib-2.0.so
  libgobject-2.0.so
  libgpm.so
  libgtk-3.so
  libharfbuzz.so
  libice
  libjpeg.so
  libncursesw.so
  libotf
  libpango-1.0.so
  libpng
  librsvg-2.so
  libsm
  sqlite libsqlite3.so
  libsystemd.so
  libtiff.so
  libtree-sitter.so
  libwebp.so
  libwebpdemux.so
  libxfixes
  libxml2.so
  m17n-lib
  zlib
)
makedepends=(libgccjit)
source=(
  https://ftp.gnu.org/gnu/emacs/${pkgname}-${pkgver}.tar.xz{,.sig}
)
b2sums=('9163ba6bfab1010a156c669ac085ad363545d73e3ffac21c710b14b618df61a4c6a80a50fd3fa81d852c2ccace5080e614b679606fa584e28509f99ad6196784'
        'SKIP')
validpgpkeys=('17E90D521672C04631B1183EE78DAE0F3115E06B'  # Eli Zaretskii <eliz@gnu.org>
              'CEA1DE21AB108493CC9C65742E82323B8F4353EE') # Stefan Kangas <stefankangas@gmail.com>

prepare() {
  cp --reflink=auto -ar ${pkgname}-${pkgver} ${pkgbase}-${pkgver}-nox
  cp --reflink=auto -ar ${pkgname}-${pkgver} ${pkgbase}-${pkgver}-wayland
}

build() {
  local _confflags=(
    --sysconfdir=/etc
    --prefix=/usr
    --libexecdir=/usr/lib
    --localstatedir=/var
    --disable-build-details
    --with-cairo
    --with-harfbuzz
    --with-libsystemd
    --with-modules
    --with-native-compilation=aot
    --with-tree-sitter
  )

  export ac_cv_lib_gif_EGifPutExtensionLast=yes

  cd ${pkgname}-${pkgver}
  ./configure \
    --with-x-toolkit=gtk3 \
    "${_confflags[@]}"
  make

  cd ../${pkgbase}-${pkgver}-nox
  ./configure \
    --without-x \
    --without-sound \
    "${_confflags[@]}"
  make

  cd ../${pkgbase}-${pkgver}-wayland
  ./configure \
    --with-pgtk \
    "${_confflags[@]}"
  make bootstrap
}

package_emacs() {
  pkgdesc='The extensible, customizable, self-documenting real-time display editor'
  replaces=(emacs-nativecomp)

  cd ${pkgname}-${pkgver}
  make DESTDIR="${pkgdir}" install

  # remove conflict with ctags package
  mv "${pkgdir}"/usr/bin/{ctags,ctags.emacs}
  mv "${pkgdir}"/usr/share/man/man1/{ctags.1.gz,ctags.emacs.1}

  # fix user/root permissions on usr/share files
  chown -R root:root "${pkgdir}/usr/share/emacs/${pkgver}"
}

package_emacs-nox() {
  pkgdesc='The extensible, customizable, self-documenting real-time display editor without X11 support'
  depends=(
    gmp
    gnutls
    hicolor-icon-theme
    lcms2
    libacl.so
    libdbus-1.so
    libgccjit
    libgpm.so
    libncursesw.so
    libsystemd.so
    libtree-sitter.so
    libxml2.so
    zlib
  )
  provides=(emacs)
  conflicts=(emacs)

  cd ${pkgbase}-${pkgver}-nox
  make DESTDIR="${pkgdir}" install

  # remove conflict with ctags package
  mv "${pkgdir}"/usr/bin/{ctags,ctags.emacs}
  mv "${pkgdir}"/usr/share/man/man1/{ctags.1.gz,ctags.emacs.1}

  # fix user/root permissions on usr/share files
  chown -R root:root "${pkgdir}/usr/share/emacs/${pkgver}"
}

package_emacs-wayland() {
  pkgdesc='The extensible, customizable, self-documenting real-time display editor with PGTK enabled'
  provides=(emacs)
  conflicts=(emacs)

  cd ${pkgbase}-${pkgver}-wayland
  make DESTDIR="${pkgdir}" install

  # remove conflict with ctags package
  mv "${pkgdir}"/usr/bin/{ctags,ctags.emacs}
  mv "${pkgdir}"/usr/share/man/man1/{ctags.1.gz,ctags.emacs.1}

  # fix user/root permissions on usr/share files
  chown -R root:root "${pkgdir}/usr/share/emacs/${pkgver}"
}
