nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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})