nixpkgs/pkgs/development/libraries/ntl/default.nix

77 lines
2.2 KiB
Nix
Raw Normal View History

{ stdenv
, lib
, fetchurl
, perl
, gmp
, gf2x ? null
# I asked the ntl maintainer weather or not to include gf2x by default:
# > If I remember correctly, gf2x is now thread safe, so there's no reason not to use it.
, withGf2x ? true
, tune ? false # tune for current system; non reproducible and time consuming
2016-09-12 17:26:30 +00:00
}:
assert withGf2x -> gf2x != null;
2016-09-12 17:26:30 +00:00
stdenv.mkDerivation rec {
pname = "ntl";
2021-03-12 04:30:37 +00:00
version = "11.4.4";
2018-08-18 11:51:17 +00:00
2016-09-12 17:26:30 +00:00
src = fetchurl {
url = "http://www.shoup.net/ntl/ntl-${version}.tar.gz";
2021-03-12 04:30:37 +00:00
sha256 = "sha256-nX9uguEaQJ8VHA3i3rCMDXY7r5g0/d/UMr89IY+AIds=";
2016-09-12 17:26:30 +00:00
};
buildInputs = [
gmp
];
nativeBuildInputs = [
perl # needed for ./configure
];
2016-09-12 17:26:30 +00:00
sourceRoot = "${pname}-${version}/src";
2016-09-12 17:26:30 +00:00
enableParallelBuilding = true;
dontAddPrefix = true; # DEF_PREFIX instead
2016-09-12 17:26:30 +00:00
# reference: http://shoup.net/ntl/doc/tour-unix.html
configureFlags = [
"DEF_PREFIX=$(out)"
"SHARED=on" # genereate a shared library (as well as static)
"NATIVE=off" # don't target code to current hardware (reproducibility, portability)
"TUNE=${
if tune then
"auto"
else if stdenv.targetPlatform.isx86 then
"x86" # "chooses options that should be well suited for most x86 platforms"
else
"generic" # "chooses options that should be OK for most platforms"
}"
"CXX=${stdenv.cc.targetPrefix}c++"
] ++ lib.optionals withGf2x [
"NTL_GF2X_LIB=on"
"GF2X_PREFIX=${gf2x}"
];
2016-09-12 17:26:30 +00:00
doCheck = true; # takes some time
2016-09-12 17:26:30 +00:00
meta = with lib; {
2016-09-12 17:26:30 +00:00
description = "A Library for doing Number Theory";
longDescription = ''
NTL is a high-performance, portable C++ library providing data
structures and algorithms for manipulating signed, arbitrary
length integers, and for vectors, matrices, and polynomials over
the integers and over finite fields.
'';
2018-08-18 11:51:17 +00:00
# Upstream contact: maintainer is victorshoup on GitHub. Alternatively the
# email listed on the homepage.
homepage = "http://www.shoup.net/ntl/";
# also locally at "${src}/doc/tour-changes.html";
changelog = "https://www.shoup.net/ntl/doc/tour-changes.html";
maintainers = teams.sage.members;
license = licenses.gpl2Plus;
platforms = platforms.all;
2016-09-12 17:26:30 +00:00
};
}