# Maintainer: stef <l0ls0fo2i@ctrlc.hu>
# Contributor: Timo Teräs <timo.teras@iki.fi>

setvar pkgname = 'emacs'
setvar pkgver = '25.3'
setvar pkgrel = '0'
setvar pkgdesc = ""The extensible, customizable, self-documenting real-time display editor""
setvar arch = ""all !aarch64""
setvar depends = ""emacs-nox""
setvar url = ""http://www.gnu.org/software/emacs/emacs.html""
setvar license = ""GPL3""
setvar makedepends = ""autoconf automake linux-headers paxmark gawk
	librsvg-dev giflib-dev libxpm-dev gtk+2.0-dev gconf-dev alsa-lib-dev
	glib-dev fontconfig-dev libpng-dev
	libxml2-dev pango-dev tiff-dev libjpeg-turbo-dev ncurses-dev
	ncurses-libs gnutls-dev libxaw-dev""
setvar subpackages = ""$pkgname-doc $pkgname-nox $pkgname-x11 $pkgname-gtk2""
setvar source = ""ftp://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz
	gamedir.patch
	noaslr-dump.patch
	musl.patch""

proc prepare {
	cd "$builddir/$1"
	default_prepare || return 1
	./autogen.sh || return 1
}

setvar builddir = ""$srcdir/emacs-$pkgver""
proc _build_variant {
	cd "$builddir/$1"
	shift'
	CFLAGS=-fno-pie'' \
	LDFLAGS=-no-pie' \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--libexecdir=/usr/lib \
		--localstatedir=/var \
		--without-makeinfo \
		--with-gameuser=:games \
		${@} \
		|| return 1
	make
}

proc _build_x11 {
	_build_variant x11 \
		--with-x-toolkit=athena \
		--without-toolkit-scroll-bars \
		--without-dbus \
		--with-xft \
		--with-jpeg=yes \
		--with-tiff=yes
}

proc _build_gtk2 {
	 _build_variant gtk2 \
		--with-x-toolkit=gtk2 \
		--with-xft \
		--with-jpeg=yes \
		--with-tiff=no
}

proc _build_nox {
	_build_variant nox \
		--without-sound \
		--without-x \
		--without-file-notification
}

proc build {
	cd $builddir
	mkdir -p nox
	mv * nox || true
	cp -a nox gtk2
	cp -a nox x11
	_build_x11 || return 1
	_build_nox || return 1
	_build_gtk2
}

proc package {
	mkdir -p $pkgdir
}

proc doc {
	mkdir -p $subpkgdir
	cd "$builddir/gtk2"
	make DESTDIR="$subpkgdir" install
	# remove conflict with ctags package
	mv "$subpkgdir"/usr/share/man/man1/ctags.1.gz "$subpkgdir"/usr/share/man/man1/ctags.emacs.1.gz
	# only keep info and man directories, all other is in the specific package
	rm -rf "$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/lib \
		"$subpkgdir"/usr/share/appdata \
		"$subpkgdir"/usr/share/applications \
		"$subpkgdir"/usr/share/emacs \
		"$subpkgdir"/usr/share/icons \
		"$subpkgdir"/var
}

proc _subpackage {
	cd "$builddir/$1"
	make DESTDIR="$subpkgdir" install

	# remove conflict with ctags package
	mv "$subpkgdir"/usr/bin/ctags "$subpkgdir"/usr/bin/ctags.emacs
	rm -rf "$subpkgdir"/usr/share/info \
		"$subpkgdir"/usr/share/man

	# fix user/root permissions on usr/share files
	find "$subpkgdir"/usr/share/emacs/ -exec chown root:root {} ';'
	find "$subpkgdir"/usr/lib -perm -g+s,g+x ! -type d -exec chmod g-s {} ';'
	# fix perms on /var/games
	chmod 775 "$subpkgdir"/var/games
	chmod 775 "$subpkgdir"/var/games/emacs
	chmod 664 "$subpkgdir"/var/games/emacs/*
	chown -R root:games "$subpkgdir"/var/games
}

proc nox {
	setvar pkgdesc = ""$pkgdesc - without X11""
	setvar depends = ""!emacs-x11 !emacs-gtk2""
	_subpackage nox
}

proc x11 {
	setvar pkgdesc = ""$pkgdesc - with X11""
	setvar depends = ""!emacs-nox !emacs-gtk2 hicolor-icon-theme desktop-file-utils""
	_subpackage x11
}

proc gtk2 {
	setvar pkgdesc = ""$pkgdesc - with GTK2""
	setvar depends = ""!emacs-nox !emacs-x11 hicolor-icon-theme desktop-file-utils""
	_subpackage gtk2
}

setvar sha512sums = ""1cce656451b6ca8502ebb229e88bd3ef48b7f9444a10eeac4ea43bd5491b2efacd641dfa35227a33362c3866493d3449cf1df81606563eef44bba0ed668e457f  emacs-25.3.tar.xz
8898f309aeaf274366849bd5c56c8e2a1be94dfee2f01b20f1700bf26203f49b9600237e5090fc3d8eaad3ea246f803ffd493d0c04cb3512084a4e3bf58f8f5e  gamedir.patch
d3a30a9bf7ef7349806a75ee919d6683a8000eb70f4c3040d149bd8911dc95b931a05c7cbf9f5b93176940ad87520dbb2ddef3b4136b0d5b140de0cdbc4b7a8f  noaslr-dump.patch
4ec078f970c2d0ad9b082a613e7c7e64e40f37eaee96e67ab9b2e467595c74533f94ced74f6753e393a9c0ead88fad75adcfdd31be4295f5763292a6dd846fe8  musl.patch""