nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 67 lines 1.5 kB view raw
1{ 2 autoreconfHook, 3 fetchFromGitHub, 4 fftwMpi, 5 gsl, 6 lib, 7 llvmPackages, 8 pfft, 9 precision ? "double", 10 stdenv, 11}: 12 13assert lib.elem precision [ 14 "single" 15 "double" 16 "long-double" 17]; 18 19let 20 fftw' = fftwMpi.override { inherit precision; }; 21 pfft' = pfft.override { inherit precision; }; 22in 23stdenv.mkDerivation (finalAttrs: { 24 pname = "pnfft-${precision}"; 25 version = "1.0.7-alpha-unstable-2018-06-04"; 26 27 src = fetchFromGitHub { 28 owner = "mpip"; 29 repo = "pnfft"; 30 rev = "a0bb24b8fa8af59c9e599b1cc3914586636d9125"; 31 hash = "sha256-Cgusm/zWCLy//3qh/YAXjCZGl+QOnycUjUCQsd1HxvQ="; 32 }; 33 34 outputs = [ 35 "out" 36 "dev" 37 ]; 38 39 nativeBuildInputs = [ autoreconfHook ]; 40 41 preConfigure = '' 42 export FCFLAGS="-I${lib.getDev fftw'}/include -I${lib.getDev pfft'}/include" 43 ''; 44 45 configureFlags = [ 46 "--enable-threads" 47 "--enable-portable-binary" 48 ] 49 ++ lib.optional (precision != "double") "--enable-${precision}"; 50 51 buildInputs = [ gsl ] ++ lib.optional stdenv.cc.isClang llvmPackages.openmp; 52 53 propagatedBuildInputs = [ pfft' ]; 54 55 enableParallelBuilding = true; 56 57 doCheck = true; 58 59 meta = { 60 description = "Parallel nonequispaced fast Fourier transforms"; 61 homepage = "https://www-user.tu-chemnitz.de/~potts/workgroup/pippig/software.php.en#pnfft"; 62 changelog = "https://github.com/mpip/pnfft/blob/master/ChangeLog"; 63 license = lib.licenses.gpl3Plus; 64 maintainers = with lib.maintainers; [ hmenke ]; 65 platforms = lib.platforms.linux; 66 }; 67})