diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/ntl')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/ntl/default.nix | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/ntl/default.nix b/nixpkgs/pkgs/development/libraries/ntl/default.nix new file mode 100644 index 000000000000..12d3c9ad9420 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/ntl/default.nix @@ -0,0 +1,74 @@ +{ 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 +}: + +assert withGf2x -> gf2x != null; + +stdenv.mkDerivation rec { + name = "ntl-${version}"; + version = "11.3.2"; + + src = fetchurl { + url = "http://www.shoup.net/ntl/ntl-${version}.tar.gz"; + sha256 = "17bfsvn72zjqfibnxscyf4hbk3inndh4r89jd2zg7mgqmd2k3fl4"; + }; + + buildInputs = [ + gmp + ]; + + nativeBuildInputs = [ + perl # needed for ./configure + ]; + + sourceRoot = "${name}/src"; + + enableParallelBuilding = true; + + dontAddPrefix = true; # DEF_PREFIX instead + + # 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=c++" + ] ++ lib.optionals withGf2x [ + "NTL_GF2X_LIB=on" + "GF2X_PREFIX=${gf2x}" + ]; + + doCheck = true; # takes some time + + meta = with lib; { + 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. + ''; + # Upstream contact: maintainer is victorshoup on GitHub. Alternatively the + # email listed on the homepage. + homepage = http://www.shoup.net/ntl/; + maintainers = with maintainers; [ timokau ]; + license = licenses.gpl2Plus; + platforms = platforms.all; + }; +} |