# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit elisp-common

DESCRIPTION="GNU Forth is a fast and portable implementation of the ANSI Forth language"
HOMEPAGE="https://www.gnu.org/software/gforth"
SRC_URI="mirror://gnu/gforth/${P}.tar.gz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~x86 ~x86-linux ~ppc-macos ~x64-macos"
IUSE="+check emacs"

DEPEND="dev-libs/ffcall
	emacs? ( >=app-editors/emacs-23.1:* )"
RDEPEND="${DEPEND}"

SITEFILE="50${PN}-gentoo.el"

PATCHES=(
	"${FILESDIR}"/${PN}-0.7.0-make-elc.patch
	"${FILESDIR}"/${PN}-0.7.3-rdynamic.patch
	"${FILESDIR}"/${PN}-0.7.3-rdynamic-auto.patch
	"${FILESDIR}"/${PN}-0.7.3-CFLAGS-LDFLAGS.patch
)

src_prepare() {
	default

	# gforth uses both $LIBTOOL and $GNU_LIBTOOL.
	# Let's settle on the former: bug #799371
	if [[ -n $LIBTOOL ]]; then
		export GNU_LIBTOOL=$LIBTOOL
		# ./configure does not generate it, but slibtool assumes
		# it's around
		ln -s "${EPREFIX}"/usr/bin/libtool libtool || die
	fi

	# We patches both configure and configure.ac.
	# Avoid reruining aclocal.
	touch aclocal.m4 configure || die
}

src_configure() {
	econf \
		$(use emacs || echo "--without-lispdir") \
		$(use_with check)
}

src_compile() {
	# Parallel make breaks here
	emake -j1
}

src_install() {
	default

	dodoc AUTHORS BUGS ChangeLog NEWS* README* ToDo doc/glossaries.doc doc/*.ps

	if use emacs; then
		elisp-install ${PN} gforth.el gforth.elc
		elisp-site-file-install "${FILESDIR}/${SITEFILE}"
	fi
}

pkg_postinst() {
	use emacs && elisp-site-regen
}

pkg_postrm() {
	use emacs && elisp-site-regen
}