@ -1,7 +1,7 @@
{ lib , stdenv
, lapack-reference , openblasCompat , openblas
, is64bit ? false
, blasProvider ? if is64bit then openblas else openblasCompat } :
, isILP 64 ? false
, blasProvider ? if isILP 64 then openblas else openblasCompat } :
let
blasFortranSymbols = [
@ -31,12 +31,12 @@ let
else stdenv . hostPlatform . extensions . sharedLibrary ;
is64bit = blasProvider . blas64 or false ;
isILP 64 = blasProvider . blas64 or false ;
blasImplementation = lib . getName blasProvider ;
in
assert is64bit -> ( blasImplementation == " o p e n b l a s " && blasProvider . blas64 ) || blasImplementation == " m k l " ;
assert isILP 64 -> ( blasImplementation == " o p e n b l a s " && blasProvider . blas64 ) || blasImplementation == " m k l " ;
stdenv . mkDerivation {
pname = " b l a s " ;
@ -49,7 +49,7 @@ stdenv.mkDerivation {
} ;
passthru = {
inherit is64bit ;
inherit isILP 64 ;
provider = blasProvider ;
implementation = blasImplementation ;
} ;
@ -134,6 +134,6 @@ Libs: -L$out/lib -lcblas
EOF
'' + s t d e n v . l i b . o p t i o n a l S t r i n g ( b l a s I m p l e m e n t a t i o n = = " m k l " ) ''
mkdir - p $ out/nix-support
echo ' export MKL_INTERFACE_LAYER = $ { lib . optionalString is64bit " I " } LP64 , GNU' > $ out/nix-support/setup-hook
echo ' export MKL_INTERFACE_LAYER = $ { lib . optionalString isILP 64 " I " } LP64 , GNU' > $ out/nix-support/setup-hook
'' ) ;
}