{ stdenv, fetchurl, cmake, gfortran, ninja, cudatoolkit, libpthreadstubs, lapack, blas }: with stdenv.lib; let version = "2.5.4"; in stdenv.mkDerivation { pname = "magma"; inherit version; src = fetchurl { url = "https://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-${version}.tar.gz"; sha256 = "0rrvd21hczxlm8awc9z54fj7iqpjmsb518fy32s6ghz0g90znd3p"; name = "magma-${version}.tar.gz"; }; nativeBuildInputs = [ gfortran cmake ninja ]; buildInputs = [ cudatoolkit libpthreadstubs lapack blas ]; doCheck = false; preConfigure = '' export CC=${cudatoolkit.cc}/bin/gcc CXX=${cudatoolkit.cc}/bin/g++ ''; enableParallelBuilding=true; buildFlags = [ "magma" "magma_sparse" ]; # MAGMA's default CMake setup does not care about installation. So we copy files directly. installPhase = '' mkdir -p $out mkdir -p $out/include mkdir -p $out/lib mkdir -p $out/lib/pkgconfig cp -a ../include/*.h $out/include #cp -a sparse-iter/include/*.h $out/include cp -a lib/*.so $out/lib cat ../lib/pkgconfig/magma.pc.in | \ sed -e s:@INSTALL_PREFIX@:"$out": | \ sed -e s:@CFLAGS@:"-I$out/include": | \ sed -e s:@LIBS@:"-L$out/lib -lmagma -lmagma_sparse": | \ sed -e s:@MAGMA_REQUIRED@:: \ > $out/lib/pkgconfig/magma.pc ''; meta = with stdenv.lib; { description = "Matrix Algebra on GPU and Multicore Architectures"; license = licenses.bsd3; homepage = "http://icl.cs.utk.edu/magma/index.html"; platforms = platforms.unix; maintainers = with maintainers; [ tbenst ]; }; passthru.cudatoolkit = cudatoolkit; }