68 lines
2.1 KiB
Nix
68 lines
2.1 KiB
Nix
|
{ stdenv, lib, fetchFromGitHub, pkg-config, gfortran, texinfo, python, boost
|
||
|
# 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
|
||
|
# Activate test-suite?
|
||
|
# WARNING: Some of the tests require up to 1700MB of memory to compile.
|
||
|
, doCheck ? true
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
inherit (lib) optional optionals;
|
||
|
in
|
||
|
stdenv.mkDerivation rec {
|
||
|
pname = "blitz++";
|
||
|
version = "1.0.1";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "blitzpp";
|
||
|
repo = "blitz";
|
||
|
rev = "1.0.1";
|
||
|
sha256 = "0nq84vwvvbq7m0my6h835ijfw53bxdp42qjc6kjhk436888qy9rh";
|
||
|
};
|
||
|
|
||
|
nativeBuildInputs = [ pkg-config python texinfo ];
|
||
|
buildInputs = [ gfortran texinfo 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}"
|
||
|
"--with-boost=${boost.dev}"
|
||
|
"--with-boost-libdir=${boost.out}/lib"
|
||
|
] ++ optional enablePadding "--enable-array-length-padding"
|
||
|
++ optional enableSerialization "--enable-serialization"
|
||
|
++ optional stdenv.is64bit "--enable-64bit";
|
||
|
|
||
|
enableParallelBuilding = true;
|
||
|
|
||
|
inherit doCheck;
|
||
|
checkTarget = "check-testsuite check-examples";
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = "Fast multi-dimensional array library for C++";
|
||
|
homepage = https://sourceforge.net/projects/blitz/;
|
||
|
license = licenses.lgpl3;
|
||
|
platforms = platforms.unix;
|
||
|
maintainers = with maintainers; [ ToxicFrog ];
|
||
|
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).
|
||
|
'';
|
||
|
};
|
||
|
}
|