about summary refs log tree commit diff
path: root/pkgs/development/libraries/blitz/default.nix
diff options
context:
space:
mode:
authorAndreas Herrmann <andreash87@gmx.ch>2014-11-20 11:52:38 +0100
committerVladimír Čunát <vcunat@gmail.com>2014-11-21 11:49:39 +0100
commitf89eac32a7a2099d16a1a82709494b5d3f5e3694 (patch)
treead9e60838c1e2b51bbd4ee1b5ea1dad5ffe39a46 /pkgs/development/libraries/blitz/default.nix
parent8a175367570bdd7576413bf673112399ea90c396 (diff)
blitz: New package, version 0.10 (close #5062)
Fast multi-dimensional array library for C++

Blitz++ is a C++ class library for scientific computing which provides
performance on par with Fortran 77/90. It uses template techniques to
achieve high performance. Blitz++ provides dense arrays and vectors,
random number generators, and small vectors (useful for representing
multicomponent or vector fields).
Diffstat (limited to 'pkgs/development/libraries/blitz/default.nix')
-rw-r--r--pkgs/development/libraries/blitz/default.nix80
1 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/development/libraries/blitz/default.nix b/pkgs/development/libraries/blitz/default.nix
new file mode 100644
index 0000000000000..a64a8bd59437b
--- /dev/null
+++ b/pkgs/development/libraries/blitz/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchurl, pkgconfig, gfortran, texinfo
+
+# Select SIMD alignment width (in bytes) for vectorization.
+, simdWidth ? 1
+
+# Pad arrays to simdWidth by default?
+# Note: Only useful if simdWidth > 1
+, enablePadding ? false
+
+# Activate serialization through Boost.Serialize?
+, enableSerialization ? true, boost ? null
+
+# Activate test-suite?
+# WARNING: Some of the tests require up to 1700MB of memory to compile.
+, doCheck ? true
+
+}:
+
+assert enableSerialization -> boost != null;
+
+let
+  inherit (stdenv.lib) optional optionals optionalString;
+in
+
+stdenv.mkDerivation rec {
+  name = "blitz++-0.10";
+  src = fetchurl {
+    url = mirror://sourceforge/blitz/blitz-0.10.tar.gz;
+    sha256 = "153g9sncir6ip9l7ssl6bhc4qzh0qr3lx2d15qm68hqxj7kg0kl0";
+  };
+
+  patches = [ ./blitz-gcc47.patch ./blitz-testsuite-stencil-et.patch ];
+
+  buildInputs = [ pkgconfig gfortran texinfo ]
+    ++ optional (boost != null) boost
+    ;
+
+  configureFlags =
+    [ "--enable-shared"
+      "--disable-static"
+      "--enable-fortran"
+      "--enable-optimize"
+      "--with-pic=yes"
+      "--enable-html-docs"
+      "--disable-doxygen"
+      "--disable-dot"
+      "--disable-latex-docs"
+      "--enable-simd-width=${toString simdWidth}"
+    ]
+    ++ optional enablePadding "--enable-array-length-padding"
+    ++ optional enableSerialization "--enable-serialization"
+    ++ optionals (boost != null) [ "--with-boost=${boost.dev}"
+                                   "--with-boost-libdir=${boost.lib}/lib" ]
+    ++ optional stdenv.is64bit "--enable-64bit"
+    ;
+
+  enableParallelBuilding = true;
+
+  buildFlags = "lib info pdf html";
+  installTargets = [ "install" "install-info" "install-pdf" "install-html" ];
+
+  inherit doCheck;
+  checkTarget = "check-testsuite check-examples";
+
+  meta = {
+    description = "Fast multi-dimensional array library for C++";
+    homepage = http://sourceforge.net/projects/blitz/;
+    license = stdenv.lib.licenses.lgpl3;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+    maintainers = [ stdenv.lib.maintainers.aherrmann ];
+
+    longDescription = ''
+      Blitz++ is a C++ class library for scientific computing which provides
+      performance on par with Fortran 77/90. It uses template techniques to
+      achieve high performance. Blitz++ provides dense arrays and vectors,
+      random number generators, and small vectors (useful for representing
+      multicomponent or vector fields).
+    '';
+  };
+}