diff options
author | Michael Orlitzky <mjo@gentoo.org> | 2024-06-26 18:09:31 -0400 |
---|---|---|
committer | Michael Orlitzky <mjo@gentoo.org> | 2024-06-26 18:20:04 -0400 |
commit | f6d99555e8a35a1080174120515c87c59dc37a5e (patch) | |
tree | 4f23d09ca4eaec926d564fdcb0b2d5c199034057 /sci-mathematics | |
parent | net-libs/quiche: drop 0.21.0 (diff) | |
download | gentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.tar.gz gentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.tar.bz2 gentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.zip |
sci-mathematics/flint: add 3.1.3_p1
Closes: https://bugs.gentoo.org/934463
Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'sci-mathematics')
-rw-r--r-- | sci-mathematics/flint/Manifest | 1 | ||||
-rw-r--r-- | sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch | 320 | ||||
-rw-r--r-- | sci-mathematics/flint/flint-3.1.3_p1.ebuild | 89 |
3 files changed, 410 insertions, 0 deletions
diff --git a/sci-mathematics/flint/Manifest b/sci-mathematics/flint/Manifest index b1c7fc7e9dbf..9afbef59fe6e 100644 --- a/sci-mathematics/flint/Manifest +++ b/sci-mathematics/flint/Manifest @@ -1,3 +1,4 @@ DIST flint-2.9.0.tar.gz 5283894 BLAKE2B a790437ee142d8acb5cec1e6c7d21812f8d83f5d30d1e8c07e799713e96791d87792f25fbd4ce2d0d68f6a8ee2f0cde2b8d9f8db8ab26922a48485e0e90394aa SHA512 4494cba6a4e215e817d7c74ef6834c4e05a832488f4808bbd7bea8b02a4a35d47ef3c63a4f213230c712b32842f5588c503fc1cf23e5e2ddc4a4a5a1627a02ba DIST flint-3.0.1.tar.gz 7624944 BLAKE2B 0d94252075945f39af3dd2e49803cbe16aa65b108964dfc0c12bdfd9188748944c1e839401e17b974f8f6f8832e4da84d62a63f20b63cfff0ff5c2736bfd2d47 SHA512 4b5b432b962135cd708a0ce4242343f3226f0fdf73c3f541728ed4540e7ef6cb7812a48b6b46e65a8fcc1f5cae93d8bb59838d24728024cd9aa0f7b8e5c6f98f DIST flint-3.1.0.tar.gz 7585407 BLAKE2B 697be5bd88e7793eb160d5f0e2110a7b8371ef8d3ca82b576c4cc755983a660a884d35d3cbb442288caa074b7f41699f4c6bc3c244272d9e9f5755d8d209004d SHA512 1d33bb35853f4bdca047899ebb4ac9873748c6d57ad3b6aded32219261e95713fb26b394d8c86f6183b9f44db58697def07e6c565ac789461d5ccc4dca3e9ba7 +DIST flint-3.1.3_p1.tar.gz 7588734 BLAKE2B 87acf8778e21e37c01e12b198ff81e62ab113df3e0e9c6155ff7dd505828f79d5c49d85093e261ea96397e906350caa03477e3ecbdd1fc09d6ae5c984397a2be SHA512 1b16ff2fb9cb2ac4b75513278b8c14683e8d83db39985631df14d6ea74bee4d6ea818a200321d5f0de6f1af89898f7a99dc7088f712f4c6db1a2546199aefba7 diff --git a/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch new file mode 100644 index 000000000000..1ebe43d6243b --- /dev/null +++ b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch @@ -0,0 +1,320 @@ +From 1b93e73d00881be12e04b7f13e070214a3c9e1cc Mon Sep 17 00:00:00 2001 +From: Dima Pasechnik <dima@pasechnik.info> +Date: Wed, 19 Jun 2024 22:16:34 +0100 +Subject: [PATCH] ensure C99 compliance in headers, as 'I' is reserved +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Note that the following code +---- cut here: save as t.c +---- cut here + +fails to compile with a suffciently new compiler, e.g. clang 16 or gcc 14. + +$ gcc -c t.c +In file included from t.c:1: +/usr/include/flint/mpoly.h:1319:43: error: expected ‘)’ before ‘__extension__’ + 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); + | ^ +In file included from /usr/include/flint/fmpz_types.h:15, + from /usr/include/flint/fmpz_mod_types.h:15, + from /usr/include/flint/mpoly_types.h:15, + from /usr/include/flint/mpoly.h:23, + from t.c:2: +/usr/include/flint/mpoly.h:1319:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘mp_limb_signed_t’ + 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); + +... +--- + src/fft_small.h | 6 +++--- + src/fmpz_mod_mpoly_factor.h | 8 ++++---- + src/fmpz_mpoly.h | 2 +- + src/fmpz_mpoly_factor.h | 18 +++++++++--------- + src/fq_nmod_mpoly_factor.h | 6 +++--- + src/fq_zech_mpoly_factor.h | 6 +++--- + src/mpoly.h | 18 +++++++++--------- + src/nmod_mpoly.h | 4 ++-- + src/nmod_mpoly_factor.h | 6 +++--- + 9 files changed, 37 insertions(+), 37 deletions(-) + +diff --git a/src/fft_small.h b/src/fft_small.h +index 3f62f2e988..b7404f196d 100644 +--- a/src/fft_small.h ++++ b/src/fft_small.h +@@ -242,10 +242,10 @@ FLINT_INLINE double sd_fft_ctx_get_fft_index(double* d, ulong i) + } + + /* sd_fft.c */ +-void sd_fft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc); ++void sd_fft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc); + + /* sd_ifft.c */ +-void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong z, ulong n, int f); ++void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong z, ulong n, int f); + + /* sd_fft_ctx.c */ + void sd_fft_ctx_clear(sd_fft_ctx_t Q); +@@ -428,7 +428,7 @@ typedef struct { + + typedef mpn_ctx_struct mpn_ctx_t[1]; + +-void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong I); ++void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong Iv); + ulong flint_mpn_nbits(const ulong* a, ulong an); + int flint_mpn_cmp_ui_2exp(const ulong* a, ulong an, ulong b, ulong e); + unsigned char flint_mpn_add_inplace_c(ulong* z, ulong zn, ulong* a, ulong an, unsigned char cf); +diff --git a/src/fmpz_mod_mpoly_factor.h b/src/fmpz_mod_mpoly_factor.h +index 359fdd1e3d..460695dd23 100644 +--- a/src/fmpz_mod_mpoly_factor.h ++++ b/src/fmpz_mod_mpoly_factor.h +@@ -1203,15 +1203,15 @@ typedef struct { + typedef fmpz_mod_mpoly_pfrac_struct fmpz_mod_mpoly_pfrac_t[1]; + + +-int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t I, ++int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, slong l, slong r, const fmpz_mod_mpoly_struct * betas, + const fmpz * alpha, const fmpz_mod_mpoly_ctx_t ctx); + +-void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t I, ++void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t Iv, + const fmpz_mod_mpoly_ctx_t ctx); + + int fmpz_mod_mpoly_pfrac(slong r, fmpz_mod_mpoly_t t, const slong * deg, +- fmpz_mod_mpoly_pfrac_t I, const fmpz_mod_mpoly_ctx_t ctx); ++ fmpz_mod_mpoly_pfrac_t Iv, const fmpz_mod_mpoly_ctx_t ctx); + + int fmpz_mod_mpoly_hlift(slong m, fmpz_mod_mpoly_struct * f, slong r, + const fmpz * alpha, const fmpz_mod_mpoly_t A, const slong * degs, +@@ -1290,7 +1290,7 @@ int fmpz_mod_mpolyn_gcd_brown_smprime( + fmpz_mod_mpolyn_t B, + slong var, + const fmpz_mod_mpoly_ctx_t ctx, +- const mpoly_gcd_info_t I, ++ const mpoly_gcd_info_t Iv, + fmpz_mod_poly_polyun_mpolyn_stack_t St); + + int fmpz_mod_mpolyl_gcdp_zippel( +diff --git a/src/fmpz_mpoly.h b/src/fmpz_mpoly.h +index b7c9677915..4be3d05c56 100644 +--- a/src/fmpz_mpoly.h ++++ b/src/fmpz_mpoly.h +@@ -1084,7 +1084,7 @@ void fmpz_mpoly_vec_randtest_not_zero(fmpz_mpoly_vec_t vec, flint_rand_t state, + + void fmpz_mpoly_spoly(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_t g, const fmpz_mpoly_ctx_t ctx); + void fmpz_mpoly_vec_set_primitive_unique(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); +-void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t I, const fmpz_mpoly_ctx_t ctx); ++void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t Iv, const fmpz_mpoly_ctx_t ctx); + int fmpz_mpoly_vec_is_groebner(const fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); + void fmpz_mpoly_buchberger_naive(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); + int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, +diff --git a/src/fmpz_mpoly_factor.h b/src/fmpz_mpoly_factor.h +index 0da7c1052b..a04ef8021e 100644 +--- a/src/fmpz_mpoly_factor.h ++++ b/src/fmpz_mpoly_factor.h +@@ -298,11 +298,11 @@ void fmpz_mpoly_from_mpolyl_perm_inflate(fmpz_mpoly_t A, + + int fmpz_mpolyl_gcd_brown(fmpz_mpoly_t G, + fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B, +- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I); ++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv); + + int fmpz_mpolyl_gcd_brown_threaded_pool(fmpz_mpoly_t G, + fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B, +- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + const thread_pool_handle * handles, slong num_handles); + + int fmpz_mpolyl_gcd_zippel(fmpz_mpoly_t G, fmpz_mpoly_t Abar, +@@ -340,15 +340,15 @@ typedef struct { + + typedef fmpz_poly_pfrac_struct fmpz_poly_pfrac_t[1]; + +-void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t I); ++void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t Iv); + +-void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t I); ++void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t Iv); + +-int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t I, ++int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t Iv, + const fmpz_poly_struct * b, slong r); + + int fmpz_poly_pfrac_precomp(fmpz_poly_struct * c, +- const fmpz_poly_t A, fmpz_poly_pfrac_t I); ++ const fmpz_poly_t A, fmpz_poly_pfrac_t Iv); + + typedef struct { + flint_bitcnt_t bits; +@@ -372,15 +372,15 @@ typedef struct { + + typedef fmpz_mpoly_pfrac_struct fmpz_mpoly_pfrac_t[1]; + +-int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t I, flint_bitcnt_t bits, ++int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t Iv, flint_bitcnt_t bits, + slong r, slong w, const fmpz_mpoly_struct * betas, + const fmpz * alpha, const fmpz_mpoly_ctx_t ctx); + +-void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t I, ++void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t Iv, + const fmpz_mpoly_ctx_t ctx); + + int fmpz_mpoly_pfrac(slong l, fmpz_mpoly_t t, const slong * degs, +- fmpz_mpoly_pfrac_t I, const fmpz_mpoly_ctx_t ctx); ++ fmpz_mpoly_pfrac_t Iv, const fmpz_mpoly_ctx_t ctx); + + int fmpz_mpoly_hlift(slong m, fmpz_mpoly_struct * f, slong r, + const fmpz * alpha, const fmpz_mpoly_t A, const slong * degs, +diff --git a/src/fq_nmod_mpoly_factor.h b/src/fq_nmod_mpoly_factor.h +index 6289d3f1c5..29caa99aa4 100644 +--- a/src/fq_nmod_mpoly_factor.h ++++ b/src/fq_nmod_mpoly_factor.h +@@ -427,7 +427,7 @@ typedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1]; + + + int fq_nmod_mpoly_pfrac_init( +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, + slong l, slong r, + const fq_nmod_mpoly_struct * betas, +@@ -435,14 +435,14 @@ int fq_nmod_mpoly_pfrac_init( + const fq_nmod_mpoly_ctx_t ctx); + + void fq_nmod_mpoly_pfrac_clear( +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + const fq_nmod_mpoly_ctx_t ctx); + + int fq_nmod_mpoly_pfrac( + slong r, + fq_nmod_mpoly_t t, + const slong * deg, +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + const fq_nmod_mpoly_ctx_t ctx); + + int fq_nmod_mpoly_hlift( +diff --git a/src/fq_zech_mpoly_factor.h b/src/fq_zech_mpoly_factor.h +index 06f31369f9..3d3c51419f 100644 +--- a/src/fq_zech_mpoly_factor.h ++++ b/src/fq_zech_mpoly_factor.h +@@ -652,7 +652,7 @@ typedef fq_zech_mpoly_pfrac_struct fq_zech_mpoly_pfrac_t[1]; + + + int fq_zech_mpoly_pfrac_init( +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, + slong l, slong r, + const fq_zech_mpoly_struct * betas, +@@ -660,14 +660,14 @@ int fq_zech_mpoly_pfrac_init( + const fq_zech_mpoly_ctx_t ctx); + + void fq_zech_mpoly_pfrac_clear( +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + const fq_zech_mpoly_ctx_t ctx); + + int fq_zech_mpoly_pfrac( + slong r, + fq_zech_mpoly_t t, + const slong * deg, +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + const fq_zech_mpoly_ctx_t ctx); + + int fq_zech_mpoly_hlift( +diff --git a/src/mpoly.h b/src/mpoly.h +index b0950e3a48..fe0ccbe7c4 100644 +--- a/src/mpoly.h ++++ b/src/mpoly.h +@@ -1363,9 +1363,9 @@ typedef struct + + typedef mpoly_gcd_info_struct mpoly_gcd_info_t[1]; + +-void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); ++void mpoly_gcd_info_init(mpoly_gcd_info_t Iv, slong nvars); + +-void mpoly_gcd_info_clear(mpoly_gcd_info_t I); ++void mpoly_gcd_info_clear(mpoly_gcd_info_t Iv); + + void mpoly_gcd_info_limits(ulong * Amax_exp, ulong * Amin_exp, + slong * Amax_exp_count, slong * Amin_exp_count, +@@ -1378,25 +1378,25 @@ void mpoly_gcd_info_stride(ulong * strides, + const ulong * Bmax_exp, const ulong * Bmin_exp, + const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_set_perm(mpoly_gcd_info_t I, ++void mpoly_gcd_info_set_perm(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t I, ++slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t Iv, + slong var, slong bound); + +-void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + + int mpoly_monomial_cofactors(fmpz * Abarexps, fmpz * Bbarexps, +diff --git a/src/nmod_mpoly.h b/src/nmod_mpoly.h +index 2a8136e6eb..716ac9669a 100644 +--- a/src/nmod_mpoly.h ++++ b/src/nmod_mpoly.h +@@ -1619,13 +1619,13 @@ int nmod_mpolyn_gcd_brown_smprime_bivar( + int nmod_mpolyn_gcd_brown_smprime(nmod_mpolyn_t G, + nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar, + nmod_mpolyn_t A, nmod_mpolyn_t B, slong var, +- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + nmod_poly_stack_t Sp); + + int nmod_mpolyn_gcd_brown_smprime_threaded_pool(nmod_mpolyn_t G, + nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar, + nmod_mpolyn_t A, nmod_mpolyn_t B, slong var, +- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + const thread_pool_handle * handles, slong num_workers); + + int nmod_mpolyn_gcd_brown_lgprime(nmod_mpolyn_t G, +diff --git a/src/nmod_mpoly_factor.h b/src/nmod_mpoly_factor.h +index a46afc860f..b16c802b9b 100644 +--- a/src/nmod_mpoly_factor.h ++++ b/src/nmod_mpoly_factor.h +@@ -362,15 +362,15 @@ typedef struct { + typedef nmod_mpoly_pfrac_struct nmod_mpoly_pfrac_t[1]; + + +-int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t I, flint_bitcnt_t bits, ++int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t Iv, flint_bitcnt_t bits, + slong l, slong r, const nmod_mpoly_struct * betas, + const mp_limb_t * alpha, const nmod_mpoly_ctx_t ctx); + +-void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t I, ++void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t Iv, + const nmod_mpoly_ctx_t ctx); + + int nmod_mpoly_pfrac(slong r, nmod_mpoly_t t, const slong * deg, +- nmod_mpoly_pfrac_t I, const nmod_mpoly_ctx_t ctx); ++ nmod_mpoly_pfrac_t Iv, const nmod_mpoly_ctx_t ctx); + + int nmod_mpoly_hlift(slong m, nmod_mpoly_struct * f, slong r, + const mp_limb_t * alpha, const nmod_mpoly_t A, const slong * degs, diff --git a/sci-mathematics/flint/flint-3.1.3_p1.ebuild b/sci-mathematics/flint/flint-3.1.3_p1.ebuild new file mode 100644 index 000000000000..09d8ddd97e09 --- /dev/null +++ b/sci-mathematics/flint/flint-3.1.3_p1.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) +inherit cmake flag-o-matic python-any-r1 + +DESCRIPTION="Fast Library for Number Theory" +HOMEPAGE="https://www.flintlib.org/" + +MY_PV="${PV/_/-}" +SRC_URI="https://github.com/flintlib/flint/archive/refs/tags/v${MY_PV}.tar.gz + -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${MY_PV}" +LICENSE="LGPL-2.1+" + +# Based off the soname, e.g. /usr/lib64/libflint.so -> libflint.so.15 +SLOT="0/19" + +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="doc ntl test" + +RESTRICT="!test? ( test )" + +BDEPEND="${PYTHON_DEPS} + doc? ( + app-text/texlive-core + dev-python/sphinx + dev-tex/latexmk + dev-texlive/texlive-latex + dev-texlive/texlive-latexextra + ) +" +DEPEND="dev-libs/gmp:= + dev-libs/mpfr:= + ntl? ( dev-libs/ntl:= ) + virtual/cblas" +# flint 3 includes arb and arb cannot use flint 3. +RDEPEND="${DEPEND} + !sci-mathematics/arb" + +# The rst files are API docs, but they're very low-effort compared to +# the PDF and HTML docs, so we ship them unconditionally and hide only +# the painful parts behind USE=doc. +DOCS="AUTHORS README.md doc/source/*.rst" + +PATCHES=( + "${FILESDIR}/flint-3.0.1-find-cblas.patch" + "${FILESDIR}/flint-3.1.3_p1-c99-I.patch" +) + +src_configure() { + # Test failures: + # * https://bugs.gentoo.org/934463 + # * https://github.com/flintlib/flint/issues/2029 + filter-flags -floop-nest-optimize \ + -ftree-loop-linear \ + -floop-strip-mine \ + -floop-block \ + -fgraphite-identity + + local mycmakeargs=( + -DWITH_NTL="$(usex ntl)" + -DBUILD_TESTING="$(usex test)" + -DBUILD_DOCS="$(usex doc)" + ) + + cmake_src_configure + + if use doc; then + # Avoid the "html/_source" directory that will contain a copy of + # the rst sources we've already installed, and also avoid + # installing html/objects.inv. + HTML_DOCS="${BUILD_DIR}/html/*.html + ${BUILD_DIR}/html/*.js + ${BUILD_DIR}/html/_static" + DOCS+=" ${BUILD_DIR}/latex/Flint.pdf" + fi +} + +src_compile() { + cmake_src_compile + + if use doc; then + cmake_build html + cmake_build pdf + fi +} |