arb-2.17.0.ebuild

Download (2 KB)

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

EAPI=7

inherit toolchain-funcs

DESCRIPTION="C library for arbitrary-precision interval arithmetic"
HOMEPAGE="http://fredrikj.net/arb/"
SRC_URI="https://github.com/fredrik-johansson/arb/archive/${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="LGPL-2.1+"
SLOT="0/2"
KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="static-libs"

RDEPEND="
	dev-libs/gmp:0=
	dev-libs/mpfr:0=
	>=sci-mathematics/flint-2.5.0:="

DEPEND="${RDEPEND}"

src_prepare() {
	default

	# The autodetection finds "lib" first, which may e.g. contain 32-bit
	# libs during a 64-bit build.
	#
	# Copied from flint which has the same issues because arb is just
	# copying flint. Of course flint doesn't have a line for itself
	# and, it had to be added.
	sed -e "s:{GMP_DIR}/lib\":{GMP_DIR}/$(get_libdir)\":g" \
		-e "s:{MPFR_DIR}/lib\":{MPFR_DIR}/$(get_libdir)\":g" \
		-e "s:{FLINT_DIR}/lib\":{FLINT_DIR}/$(get_libdir)\":g" \
		-i configure
}

src_configure() {
	# Not an autoconf configure script. It appears to have been cloned
	# from the flint configure script and that not all the options
	# offered are valid.
	tc-export CC AR CXX
	./configure \
		--prefix="${EPREFIX}/usr" \
		--with-flint="${EPREFIX}/usr" \
		--with-gmp="${EPREFIX}/usr" \
		--with-mpfr="${EPREFIX}/usr" \
		$(use_enable static-libs static) \
		CFLAGS="${CPPFLAGS} ${CFLAGS}" || die
}

src_compile() {
	emake verbose
}

src_test() {
	# We have to set the library path otherwise a previous install of
	# libarb may be loaded.  This is in part a consequence of setting
	# the soname/installname I think.
	if [[ ${CHOST} == *-darwin* ]] ; then
		DYLD_LIBRARY_PATH="${S}" emake AT= QUIET_CC= QUIET_CXX= QUIET_AR= check
	else
		LD_LIBRARY_PATH="${S}" emake AT= QUIET_CC= QUIET_CXX= QUIET_AR= check
	fi
}

src_install() {
	emake DESTDIR="${D}" LIBDIR="$(get_libdir)" install
	if ! use static-libs; then
		find "${ED}" -name '*.la' -delete || die
	fi
	dodoc README.md
}

Thank you!