diff options
author | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:36 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:47 +0000 |
commit | 36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch) | |
tree | b3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/development/libraries/gmp | |
parent | 4e31070265257dc67d120c27e0f75c2344fdfa9a (diff) | |
parent | abf060725d7614bd3b9f96764262dfbc2f9c2199 (diff) | |
download | nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2 nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip |
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gmp')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/gmp/4.3.2.nix | 74 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/gmp/5.1.x.nix | 80 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/gmp/6.x.nix | 82 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/gmp/need-size-t.patch | 18 |
4 files changed, 254 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gmp/4.3.2.nix b/nixpkgs/pkgs/development/libraries/gmp/4.3.2.nix new file mode 100644 index 000000000000..939f769b4570 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gmp/4.3.2.nix @@ -0,0 +1,74 @@ +{ stdenv, fetchurl, m4, cxx ? true }: + +let self = stdenv.mkDerivation rec { + name = "gmp-4.3.2"; + + src = fetchurl { + url = "mirror://gnu/gmp/${name}.tar.bz2"; + sha256 = "0x8prpqi9amfcmi7r4zrza609ai9529pjaq0h4aw51i867064qck"; + }; + + #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; + + nativeBuildInputs = [ m4 ]; + + # Prevent the build system from using sub-architecture-specific + # instructions (e.g., SSE2 on i686). + # + # This is not a problem for Apple machines, which are all alike. In + # addition, `configfsf.guess' would return `i386-apple-darwin10.2.0' on + # `x86_64-darwin', leading to a 32-bit ABI build, which is undesirable. + preConfigure = + if !stdenv.isDarwin + then "ln -sf configfsf.guess config.guess" + else ''echo "Darwin host is `./config.guess`."''; + + configureFlags = [ + (stdenv.lib.enableFeature cxx "cxx") + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + "ac_cv_build=x86_64-apple-darwin13.4.0" + "ac_cv_host=x86_64-apple-darwin13.4.0" + ]; + + # The test t-lucnum_ui fails (on Linux/x86_64) when built with GCC 4.8. + # Newer versions of GMP don't have that issue anymore. + doCheck = false; + + meta = { + branch = "4"; + description = "GNU multiple precision arithmetic library"; + + 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. + ''; + + homepage = https://gmplib.org/; + license = stdenv.lib.licenses.lgpl3Plus; + + maintainers = [ ]; + platforms = stdenv.lib.platforms.all; + }; +}; + in self diff --git a/nixpkgs/pkgs/development/libraries/gmp/5.1.x.nix b/nixpkgs/pkgs/development/libraries/gmp/5.1.x.nix new file mode 100644 index 000000000000..3b9fbc35a768 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gmp/5.1.x.nix @@ -0,0 +1,80 @@ +{ stdenv, fetchurl, m4, cxx ? true, withStatic ? true }: + +let inherit (stdenv.lib) optional optionalString; in + +let self = stdenv.mkDerivation rec { + name = "gmp-5.1.3"; + + 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 = "0q5i39pxrasgn9qdxzpfbwhh11ph80p57x6hf48m74261d97j83m"; + }; + + #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; + + nativeBuildInputs = [ m4 ]; + + patches = if stdenv.isDarwin then [ ./need-size-t.patch ] else null; + + configureFlags = [ + "--with-pic" + (stdenv.lib.enableFeature cxx "cxx") + # 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. + # + # no darwin because gmp uses ASM that clang doesn't like + (stdenv.lib.enableFeature (!stdenv.isSunOS && stdenv.hostPlatform.isx86) "fat") + ] ++ optional (cxx && stdenv.isDarwin) "CPPFLAGS=-fexceptions" + ++ optional (stdenv.isDarwin && stdenv.is64bit) "ABI=64" + ; + + # 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.isAarch32 '' + configureFlagsArray+=("--build=$(./configfsf.guess)") + ''; + + doCheck = true; + + dontDisableStatic = withStatic; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://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.peti ]; + }; +}; + in self diff --git a/nixpkgs/pkgs/development/libraries/gmp/6.x.nix b/nixpkgs/pkgs/development/libraries/gmp/6.x.nix new file mode 100644 index 000000000000..23a69282b41c --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gmp/6.x.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchurl, m4, cxx ? !stdenv.hostPlatform.useAndroidPrebuilt +, buildPackages +, withStatic ? false }: + +let inherit (stdenv.lib) optional optionalString; in + +let self = stdenv.mkDerivation rec { + name = "gmp-6.1.2"; + + 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 = "1clg7pbpk6qwxj5b2mw0pghzawp2qlm3jf9gdd8i6fl6yh2bnxaj"; + }; + + #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; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ m4 ]; + + configureFlags = [ + "--with-pic" + (stdenv.lib.enableFeature cxx "cxx") + # 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. + # + # no darwin because gmp uses ASM that clang doesn't like + (stdenv.lib.enableFeature (!stdenv.isSunOS && stdenv.hostPlatform.isx86) "fat") + ] ++ optional (cxx && stdenv.isDarwin) "CPPFLAGS=-fexceptions" + ++ optional (stdenv.isDarwin && stdenv.is64bit) "ABI=64" + ++ optional (with stdenv.hostPlatform; useAndroidPrebuilt || useiOSPrebuilt) "--disable-assembly" + ; + + # 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.isAarch32 '' + configureFlagsArray+=("--build=$(./configfsf.guess)") + ''; + + doCheck = true; # not cross; + + dontDisableStatic = withStatic; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://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.peti maintainers.vrthra ]; + }; +}; + in self diff --git a/nixpkgs/pkgs/development/libraries/gmp/need-size-t.patch b/nixpkgs/pkgs/development/libraries/gmp/need-size-t.patch new file mode 100644 index 000000000000..c4ba086182a9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gmp/need-size-t.patch @@ -0,0 +1,18 @@ +diff --git a/gmp-h.in b/gmp-h.in +index 7deb67a..240d663 100644 +--- a/gmp-h.in ++++ b/gmp-h.in +@@ -46,13 +46,11 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ + #ifndef __GNU_MP__ + #define __GNU_MP__ 5 + +-#define __need_size_t /* tell gcc stddef.h we only want size_t */ + #if defined (__cplusplus) + #include <cstddef> /* for size_t */ + #else + #include <stddef.h> /* for size_t */ + #endif +-#undef __need_size_t + + /* Instantiated by configure. */ + #if ! defined (__GMP_WITHIN_CONFIGURE) |