# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit autotools flag-o-matic toolchain-funcs elisp-common DESCRIPTION="Symbolic Manipulation System" HOMEPAGE="https://www.nikhef.nl/~form/ https://github.com/vermaseren/form/" ZSTD_VERSION="1.5.7" SRC_URI="https://github.com/vermaseren/${PN}/archive/refs/tags/v${PV/_beta/-beta.}.tar.gz -> ${P}.tar.gz https://dev.gentoo.org/~grozin/zlibWrapper-${ZSTD_VERSION}.tar.gz emacs? ( https://dev.gentoo.org/~grozin/form-mode.el.gz )" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="devref doc doxygen emacs +flint +gmp +mpfr mpi test threads zlib zstd" RESTRICT="!test? ( test )" RDEPEND=" flint? ( >=sci-mathematics/flint-3.2:0= ) gmp? ( dev-libs/gmp:0= ) mpfr? ( dev-libs/mpfr:0= ) mpi? ( virtual/mpi ) zlib? ( virtual/zlib:= ) zstd? ( app-arch/zstd:= ) " BDEPEND="${RDEPEND} devref? ( dev-texlive/texlive-latexrecommended ) doc? ( dev-texlive/texlive-latexrecommended ) doxygen? ( app-text/doxygen ) emacs? ( app-editors/emacs:* ) test? ( dev-lang/ruby dev-ruby/test-unit ) " SITEFILE="64${PN}-gentoo.el" PATCHES=( "${FILESDIR}"/5.0.0-manual.patch ) src_unpack() { default mv "${WORKDIR}"/zlibWrapper-${ZSTD_VERSION} "${WORKDIR}"/${P}/extern/zstd/zlibWrapper || die "mv zlibWrapper failed" } src_prepare() { default sed -i 's/LINKFLAGS = -s/LINKFLAGS =/' sources/Makefile.am || die eautoreconf } src_configure() { # Workaround for GCC -fchecking ICE, bug #904339 append-cxxflags $(test-flags-CXX -Wno-uninitialized) econf \ --enable-scalar \ --enable-largefile \ --disable-debug \ --disable-static-link \ --with-api=posix \ $(use_with flint ) \ $(use_with gmp ) \ $(use_with mpfr ) \ $(use_enable mpi parform ) \ $(use_enable threads threaded ) \ $(use_with zlib ) \ $(use_with zstd ) \ CC="$(tc-getCC)" \ CXX="$(tc-getCXX)" \ CFLAGS="${CFLAGS}" \ LDFLAGS="${LDFLAGS}" \ CXXFLAGS="${CXXFLAGS}" } src_compile() { default if use devref; then pushd doc/devref > /dev/null || die "doc/devref does not exist" LANG=C VARTEXFONTS="${T}/fonts" emake pdf popd > /dev/null fi if use doc; then pushd doc/manual > /dev/null || die "doc/manual does not exist" LANG=C VARTEXFONTS="${T}/fonts" emake pdf popd > /dev/null fi if use doxygen; then pushd doc/doxygen > /dev/null || die "doc/doxygen does not exist" emake html popd > /dev/null fi } src_install() { default if use devref; then dodoc doc/devref/devref.pdf fi if use doc; then dodoc doc/manual/manual.pdf fi if use doxygen; then docinto html dodoc -r doc/doxygen/html/. fi if use emacs; then elisp-install ${PN} "${WORKDIR}"/*.el elisp-site-file-install "${FILESDIR}/${SITEFILE}" fi } pkg_postinst() { use emacs && elisp-site-regen } pkg_postrm() { use emacs && elisp-site-regen }