2015-01-19 17:32:10 +00:00
|
|
|
{ stdenv, fetchurl, m4, cxx ? true, withStatic ? true }:
|
2006-12-13 22:29:40 +00:00
|
|
|
|
2017-02-09 01:52:13 +00:00
|
|
|
let inherit (stdenv.lib) optional optionalString; in
|
2014-06-01 19:46:33 +01:00
|
|
|
|
2016-04-17 13:32:35 +01:00
|
|
|
let self = stdenv.mkDerivation rec {
|
2013-10-03 17:09:34 +01:00
|
|
|
name = "gmp-5.1.3";
|
2007-12-14 16:35:31 +00:00
|
|
|
|
2013-03-18 17:20:54 +00:00
|
|
|
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" ];
|
2013-10-03 17:09:34 +01:00
|
|
|
sha256 = "0q5i39pxrasgn9qdxzpfbwhh11ph80p57x6hf48m74261d97j83m";
|
2006-12-13 22:29:40 +00:00
|
|
|
};
|
2007-12-14 16:35:31 +00:00
|
|
|
|
2016-04-17 13:32:35 +01:00
|
|
|
#outputs TODO: split $cxx due to libstdc++ dependency
|
|
|
|
# maybe let ghc use a version with *.so shared with rest of nixpkgs and *.a added
|
|
|
|
# - see #5855 for related discussion
|
|
|
|
outputs = [ "out" "dev" "info" ];
|
|
|
|
passthru.static = self.out;
|
2014-08-27 00:14:09 +01:00
|
|
|
|
2012-12-28 18:20:09 +00:00
|
|
|
nativeBuildInputs = [ m4 ];
|
2009-06-29 12:01:10 +01:00
|
|
|
|
2015-02-03 22:58:42 +00:00
|
|
|
patches = if stdenv.isDarwin then [ ./need-size-t.patch ] else null;
|
|
|
|
|
2011-05-03 23:38:52 +01:00
|
|
|
configureFlags =
|
2012-07-06 23:59:40 +01:00
|
|
|
# Build a "fat binary", with routines for several sub-architectures
|
|
|
|
# (x86), except on Solaris where some tests crash with "Memory fault".
|
|
|
|
# See <http://hydra.nixos.org/build/2760931>, for instance.
|
2014-08-17 21:17:13 +01:00
|
|
|
#
|
|
|
|
# no darwin because gmp uses ASM that clang doesn't like
|
2014-06-01 19:46:33 +01:00
|
|
|
optional (!stdenv.isSunOS) "--enable-fat"
|
|
|
|
++ (if cxx then [ "--enable-cxx" ]
|
2014-05-28 07:35:31 +01:00
|
|
|
else [ "--disable-cxx" ])
|
2014-06-01 19:46:33 +01:00
|
|
|
++ optional (cxx && stdenv.isDarwin) "CPPFLAGS=-fexceptions"
|
2014-08-23 07:51:25 +01:00
|
|
|
++ optional stdenv.isDarwin "ABI=64"
|
2014-06-01 19:46:33 +01:00
|
|
|
++ optional stdenv.is64bit "--with-pic"
|
|
|
|
;
|
2009-06-29 12:01:10 +01:00
|
|
|
|
2015-06-12 08:33:59 +01:00
|
|
|
# The config.guess in GMP tries to runtime-detect various
|
|
|
|
# ARM optimization flags via /proc/cpuinfo (and is also
|
|
|
|
# broken on multicore CPUs). Avoid this impurity.
|
|
|
|
preConfigure = optionalString stdenv.isArm ''
|
|
|
|
configureFlagsArray+=("--build=$(./configfsf.guess)")
|
|
|
|
'';
|
|
|
|
|
2006-12-13 22:29:40 +00:00
|
|
|
doCheck = true;
|
2007-12-14 16:35:31 +00:00
|
|
|
|
2015-01-19 17:32:10 +00:00
|
|
|
dontDisableStatic = withStatic;
|
|
|
|
|
2010-06-23 15:35:18 +01:00
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
2014-07-06 12:37:46 +01:00
|
|
|
meta = with stdenv.lib; {
|
2017-08-02 22:50:51 +01:00
|
|
|
homepage = https://gmplib.org/;
|
2014-08-24 15:21:08 +01:00
|
|
|
description = "GNU multiple precision arithmetic library";
|
2014-07-06 12:37:46 +01:00
|
|
|
license = licenses.gpl3Plus;
|
2010-03-11 23:24:56 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
'';
|
|
|
|
|
2014-07-06 12:37:46 +01:00
|
|
|
platforms = platforms.all;
|
2016-05-16 21:30:20 +01:00
|
|
|
maintainers = [ maintainers.peti ];
|
2007-12-14 16:35:31 +00:00
|
|
|
};
|
2016-04-17 13:32:35 +01:00
|
|
|
};
|
|
|
|
in self
|