From cf1ec77ff6e8907b601cddf774239ee8e260c95f Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Wed, 25 Mar 2015 22:59:04 -0700 Subject: [PATCH] gmp: Add version 6 --- pkgs/development/libraries/gmp/6.x.nix | 65 ++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 3 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/gmp/6.x.nix diff --git a/pkgs/development/libraries/gmp/6.x.nix b/pkgs/development/libraries/gmp/6.x.nix new file mode 100644 index 00000000000..b7350c19960 --- /dev/null +++ b/pkgs/development/libraries/gmp/6.x.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, m4, cxx ? true, withStatic ? true }: + +with { inherit (stdenv.lib) optional; }; + +stdenv.mkDerivation rec { + name = "gmp-6.0.0a"; + + src = fetchurl { # we need to use bz2, others aren't in bootstrapping stdenv + urls = [ "mirror://gnu/gmp/${name}.tar.bz2" "ftp://ftp.gmplib.org/pub/${name}/${name}.tar.bz2" ]; + sha256 = "1bwsfmf0vrx3rwl4xmi5jhhy3v1qx1xj0m7p9hb0fvcw9f09m3kz"; + }; + + nativeBuildInputs = [ m4 ]; + + configureFlags = + # Build a "fat binary", with routines for several sub-architectures + # (x86), except on Solaris where some tests crash with "Memory fault". + # See , for instance. + # + # no darwin because gmp uses ASM that clang doesn't like + optional (!stdenv.isSunOS) "--enable-fat" + ++ (if cxx then [ "--enable-cxx" ] + else [ "--disable-cxx" ]) + ++ optional (cxx && stdenv.isDarwin) "CPPFLAGS=-fexceptions" + ++ optional stdenv.isDarwin "ABI=64" + ++ optional stdenv.is64bit "--with-pic" + ; + + doCheck = true; + + dontDisableStatic = withStatic; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "http://gmplib.org/"; + description = "GNU multiple precision arithmetic library"; + license = licenses.gpl3Plus; + + longDescription = + '' GMP is a free library for arbitrary precision arithmetic, operating + on signed integers, rational numbers, and floating point numbers. + There is no practical limit to the precision except the ones implied + by the available memory in the machine GMP runs on. GMP has a rich + set of functions, and the functions have a regular interface. + + The main target applications for GMP are cryptography applications + and research, Internet security applications, algebra systems, + computational algebra research, etc. + + GMP is carefully designed to be as fast as possible, both for small + operands and for huge operands. The speed is achieved by using + fullwords as the basic arithmetic type, by using fast algorithms, + with highly optimised assembly code for the most common inner loops + for a lot of CPUs, and by a general emphasis on speed. + + GMP is faster than any other bignum library. The advantage for GMP + increases with the operand sizes for many operations, since GMP uses + asymptotically faster algorithms. + ''; + + platforms = platforms.all; + maintainers = [ maintainers.simons ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b76e93ab4bd..fee3f0ff993 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5795,7 +5795,8 @@ let gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { }; # required by older GHC versions gmp5 = callPackage ../development/libraries/gmp/5.1.x.nix { }; - gmp = gmp5; + gmp6 = callPackage ../development/libraries/gmp/6.x.nix { }; + gmp = gmp6; gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; }); #GMP ex-satellite, so better keep it near gmp