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

EAPI=8

# ninja doesn't like "-lcblas" so using make.
CMAKE_MAKEFILE_GENERATOR="emake"
PYTHON_COMPAT=( python3_{9..11} )
inherit cmake python-any-r1

DESCRIPTION="Fast Library for Number Theory"
HOMEPAGE="http://www.flintlib.org/"

# flintlib.org tarballs have been broken in the past, Bill Hart suggests
# we get them from Github (which he has control over).
SRC_URI="https://github.com/wbhart/flint2/archive/refs/tags/v${PV}.tar.gz
	-> ${P}.tar.gz"

LICENSE="LGPL-2.1+"

# Based off the soname, e.g. /usr/lib64/libflint.so -> libflint.so.15
SLOT="0/17"

KEYWORDS="amd64 ~arm arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
IUSE="doc ntl test"

RESTRICT="!test? ( test )"

BDEPEND="doc? (
	dev-python/sphinx
	app-text/texlive-core
	dev-texlive/texlive-latex
	dev-texlive/texlive-latexextra
	dev-tex/latexmk
	)
	${PYTHON_DEPS}"
DEPEND="dev-libs/gmp:=
	dev-libs/mpfr:=
	ntl? ( dev-libs/ntl:= )
	virtual/cblas"
RDEPEND="${DEPEND}"

S="${WORKDIR}/flint2-${PV}"
PATCHES=( "${FILESDIR}/${PN}-2.9.0-remove-hardcoded-CFLAGS.patch" )

src_prepare() {
	# https://github.com/wbhart/flint2/issues/1140
	rm test/t-sdiv_qrnnd.c || die
	cmake_src_prepare
}

src_configure() {
	local mycmakeargs=(
		-DWITH_NTL="$(usex ntl)"
		-DBUILD_TESTING="$(usex test)"
		-DBUILD_DOCS="$(usex doc)"
		-DCBLAS_INCLUDE_DIRS="${EPREFIX}/usr/include"
		-DCBLAS_LIBRARIES="-lcblas"
	)

	cmake_src_configure

	if use doc ; then
		HTML_DOCS="${BUILD_DIR}/html/*"
		DOCS=(
			"${S}"/README
			"${S}"/AUTHORS
			"${S}"/NEWS
			"${BUILD_DIR}"/latex/Flint.pdf
		)
	fi
}

src_compile() {
	cmake_src_compile

	if use doc ; then
		cmake_build html
		cmake_build pdf
	fi
}