depot/third_party/nixpkgs/pkgs/by-name/am/amd-libflame/package.nix

73 lines
1.6 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
cmake,
gfortran,
python3,
amd-blis,
aocl-utils,
withOpenMP ? true,
blas64 ? false,
withAMDOpt ? true,
}:
stdenv.mkDerivation rec {
pname = "amd-libflame";
version = "5.0";
src = fetchFromGitHub {
owner = "amd";
repo = "libflame";
rev = version;
hash = "sha256-Shsv5Zd59FN5tq1LY7QqPRtAHEysHIVbPeKIIZ/2eMw=";
};
postPatch = ''
patchShebangs build
# Enforce reproducible build compiler flags
substituteInPlace CMakeLists.txt --replace '-mtune=native' ""
'';
passthru = {
inherit blas64;
};
nativeBuildInputs = [
cmake
gfortran
python3
];
buildInputs = [
amd-blis
aocl-utils
];
cmakeFlags =
[
"-DLIBAOCLUTILS_LIBRARY_PATH=${lib.getLib aocl-utils}/lib/libaoclutils${stdenv.hostPlatform.extensions.sharedLibrary}"
"-DLIBAOCLUTILS_INCLUDE_PATH=${lib.getDev aocl-utils}/include"
"-DENABLE_BUILTIN_LAPACK2FLAME=ON"
"-DENABLE_CBLAS_INTERFACES=ON"
"-DENABLE_EXT_LAPACK_INTERFACE=ON"
]
++ lib.optional (!withOpenMP) "-DENABLE_MULTITHREADING=OFF"
++ lib.optional blas64 "-DENABLE_ILP64=ON"
++ lib.optional withAMDOpt "-DENABLE_AMD_OPT=ON";
postInstall = ''
ln -s $out/lib/libflame.so $out/lib/liblapack.so.3
ln -s $out/lib/libflame.so $out/lib/liblapacke.so.3
'';
meta = with lib; {
description = "LAPACK-compatible linear algebra library optimized for AMD CPUs";
homepage = "https://developer.amd.com/amd-aocl/blas-library/";
license = licenses.bsd3;
maintainers = [ maintainers.markuskowa ];
platforms = [ "x86_64-linux" ];
};
}