1{ lib, stdenv, fetchurl
2, gfortran
3, pkg-config, libtool
4, m4, gnum4
5, file
6# Memory Hierarchy (End-user can provide this.)
7, memHierarchy ? ""
8# Headers/Libraries
9, blas, zlib
10# RPC headers (rpc/xdr.h)
11, openmpi
12, help2man
13, doxygen
14, octave
15}:
16
17stdenv.mkDerivation rec {
18 pname = "librsb";
19 version = "1.2.0.9";
20
21 src = fetchurl {
22 url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
23 sha256 = "1ynrsgnvv1jfm8dv3jwjrip9x9icxv7w3qrk149025j6fbaza8gl";
24 };
25
26 # The default configure flags are still present when building
27 # --disable-static --disable-dependency-tracking
28 # Along with the --prefix=... flag (but we want that one).
29 configureFlags = [
30 "--enable-static"
31 "--enable-doc-build"
32 "--enable-octave-testing"
33 "--enable-sparse-blas-interface"
34 "--enable-fortran-module-install"
35 "--enable-pkg-config-install"
36 "--enable-matrix-types=all"
37 "--with-zlib=${zlib}/lib/libz.so"
38 "--with-memhinfo=${memHierarchy}"
39 ];
40
41 # Ensure C/Fortran code is position-independent.
42 NIX_CFLAGS_COMPILE = [ "-fPIC" "-Ofast" ];
43 FCFLAGS = [ "-fPIC" "-Ofast" ];
44
45 enableParallelBuilding = true;
46
47 nativeBuildInputs = [
48 gfortran
49 pkg-config libtool
50 m4 gnum4
51 file
52 blas zlib
53 openmpi
54 octave
55 help2man # Turn "--help" into a man-page
56 doxygen # Build documentation
57 ];
58
59 # Need to run cleanall target to remove any previously-generated files.
60 preBuild = ''
61 make cleanall
62 '';
63
64 checkInputs = [
65 octave
66 ];
67 checkTarget = "tests";
68
69 meta = with lib; {
70 homepage = "http://librsb.sourceforge.net/";
71 description = "Shared memory parallel sparse matrix and sparse BLAS library";
72 longDescription = ''
73 Library for sparse matrix computations featuring the Recursive Sparse
74 Blocks (RSB) matrix format. This format allows cache efficient and
75 multi-threaded (that is, shared memory parallel) operations on large
76 sparse matrices.
77 librsb implements the Sparse BLAS standard, as specified in the BLAS
78 Forum documents.
79 Contains libraries and header files for developing applications that
80 want to make use of librsb.
81 '';
82 license = with licenses; [ lgpl3Plus ];
83 maintainers = with maintainers; [ KarlJoad ];
84 platforms = platforms.all;
85 };
86}