nixpkgs/pkgs/development/libraries/flint/3.nix
2024-03-26 19:26:23 +01:00

83 lines
1.7 KiB
Nix

{ lib
, stdenv
, fetchpatch
, fetchurl
, gmp
, mpfr
, ntl
, autoconf
, automake
, gettext
, libtool
, openblas ? null, blas, lapack
, withBlas ? true
, withNtl ? true
}:
assert withBlas -> openblas != null && blas.implementation == "openblas" && lapack.implementation == "openblas";
stdenv.mkDerivation rec {
pname = "flint3";
version = "3.0.1";
src = fetchurl {
url = "https://www.flintlib.org/flint-${version}.tar.gz";
sha256 = "sha256-ezEaAFA6hjiB64F32+uEMi8pOZ89fXLzsaTJuh1XlLQ=";
};
patches = [
(fetchpatch {
url = "https://github.com/flintlib/flint/commit/e7d005c369754243cba32bd782ea2a5fc874fde5.diff";
hash = "sha256-IqEtYEpNVXfoTeerh/0ig+eDqUpAlGdBB3uO8ShYh3o=";
})
];
nativeBuildInputs = [
autoconf
automake
gettext
libtool
];
propagatedBuildInputs = [
mpfr
];
buildInputs = [
gmp
] ++ lib.optionals withBlas [
openblas
] ++ lib.optionals withNtl [
ntl
];
# We're not using autoreconfHook because flint's bootstrap
# script calls autoreconf, among other things.
preConfigurePhase = ''
echo "Executing bootstrap.sh"
./bootstrap.sh
'';
configureFlags = [
"--with-gmp=${gmp}"
"--with-mpfr=${mpfr}"
] ++ lib.optionals withBlas [
"--with-blas=${openblas}"
] ++ lib.optionals withNtl [
"--with-ntl=${ntl}"
];
enableParallelBuilding = true;
doCheck = true;
meta = with lib; {
description = "Fast Library for Number Theory";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ smasher164 ] ++ teams.sage.members;
platforms = platforms.unix;
homepage = "https://www.flintlib.org/";
downloadPage = "https://www.flintlib.org/downloads.html";
};
}