diff options
author | Andreas Herrmann <andreash87@gmx.ch> | 2014-11-20 11:52:38 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2014-11-21 11:49:39 +0100 |
commit | f89eac32a7a2099d16a1a82709494b5d3f5e3694 (patch) | |
tree | ad9e60838c1e2b51bbd4ee1b5ea1dad5ffe39a46 /pkgs/development/libraries/blitz/default.nix | |
parent | 8a175367570bdd7576413bf673112399ea90c396 (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.nix | 80 |
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). + ''; + }; +} |