1{
2 lib,
3 stdenv,
4 fetchurl,
5 cmake,
6 gfortran,
7 # Whether to build with ILP64 interface
8 blas64 ? false,
9}:
10
11stdenv.mkDerivation rec {
12 pname = "blas";
13 version = "3.12.0";
14
15 src = fetchurl {
16 url = "http://www.netlib.org/blas/${pname}-${version}.tgz";
17 sha256 = "sha256-zMQbXQiOUNsAMDF66bDJrzdXEME5KsrR/iCWAtpaWq0=";
18 };
19
20 passthru = { inherit blas64; };
21
22 nativeBuildInputs = [
23 cmake
24 gfortran
25 ];
26
27 cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ] ++ lib.optional blas64 "-DBUILD_INDEX64=ON";
28
29 postInstall =
30 let
31 canonicalExtension =
32 if stdenv.hostPlatform.isLinux then
33 "${stdenv.hostPlatform.extensions.sharedLibrary}.${lib.versions.major version}"
34 else
35 stdenv.hostPlatform.extensions.sharedLibrary;
36 in
37 lib.optionalString blas64 ''
38 ln -s $out/lib/libblas64${canonicalExtension} $out/lib/libblas${canonicalExtension}
39 '';
40
41 preFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
42 for fn in $(find $out/lib -name "*.so*"); do
43 if [ -L "$fn" ]; then continue; fi
44 install_name_tool -id "$fn" "$fn"
45 done
46 '';
47
48 meta = with lib; {
49 description = "Basic Linear Algebra Subprograms";
50 license = licenses.publicDomain;
51 maintainers = [ maintainers.markuskowa ];
52 homepage = "http://www.netlib.org/blas/";
53 platforms = platforms.unix;
54 };
55}