biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / development / rocm-modules / 5 / hipfft / default.nix
blob44d1475f68772505d68c3173176428ef0d320767
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , rocmUpdateScript
5 , cmake
6 , rocm-cmake
7 , clr
8 , git
9 , rocfft
10 , gtest
11 , boost
12 , fftw
13 , fftwFloat
14 , openmp
15 , buildTests ? false
16 , buildBenchmarks ? false
17 , buildSamples ? false
18 , gpuTargets ? [ ]
21 # Can also use cuFFT
22 stdenv.mkDerivation (finalAttrs: {
23   pname = "hipfft";
24   version = "5.7.1";
26   outputs = [
27     "out"
28   ] ++ lib.optionals buildTests [
29     "test"
30   ] ++ lib.optionals buildBenchmarks [
31     "benchmark"
32   ] ++ lib.optionals buildSamples [
33     "sample"
34   ];
36   src = fetchFromGitHub {
37     owner = "ROCm";
38     repo = "hipFFT";
39     rev = "rocm-${finalAttrs.version}";
40     hash = "sha256-fuYRKdlTrRMwxr3cgMeT3YniPzs4nuvF8YCzr3LLPFM=";
41     fetchSubmodules = true;
42   };
44   nativeBuildInputs = [
45     clr
46     git
47     cmake
48     rocm-cmake
49   ];
51   buildInputs = [
52     rocfft
53   ] ++ lib.optionals (buildTests || buildBenchmarks || buildSamples) [
54     gtest
55     boost
56     fftw
57     fftwFloat
58     openmp
59   ];
61   cmakeFlags = [
62     "-DCMAKE_C_COMPILER=hipcc"
63     "-DCMAKE_CXX_COMPILER=hipcc"
64     "-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip"
65     "-DHIP_ROOT_DIR=${clr}"
66     "-DHIP_PATH=${clr}"
67     # Manually define CMAKE_INSTALL_<DIR>
68     # See: https://github.com/NixOS/nixpkgs/pull/197838
69     "-DCMAKE_INSTALL_BINDIR=bin"
70     "-DCMAKE_INSTALL_LIBDIR=lib"
71     "-DCMAKE_INSTALL_INCLUDEDIR=include"
72   ] ++ lib.optionals (gpuTargets != [ ]) [
73     "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
74   ] ++ lib.optionals buildTests [
75     "-DBUILD_CLIENTS_TESTS=ON"
76   ] ++ lib.optionals buildBenchmarks [
77     "-DBUILD_CLIENTS_RIDER=ON"
78   ] ++ lib.optionals buildSamples [
79     "-DBUILD_CLIENTS_SAMPLES=ON"
80   ];
82   postInstall = lib.optionalString buildTests ''
83     mkdir -p $test/bin
84     mv $out/bin/hipfft-test $test/bin
85   '' + lib.optionalString buildBenchmarks ''
86     mkdir -p $benchmark/bin
87     mv $out/bin/hipfft-rider $benchmark/bin
88   '' + lib.optionalString buildSamples ''
89     mkdir -p $sample/bin
90     mv clients/staging/hipfft_* $sample/bin
91     patchelf $sample/bin/hipfft_* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE"
92   '' + lib.optionalString (buildTests || buildBenchmarks) ''
93     rmdir $out/bin
94   '';
96   passthru.updateScript = rocmUpdateScript {
97     name = finalAttrs.pname;
98     owner = finalAttrs.src.owner;
99     repo = finalAttrs.src.repo;
100   };
102   meta = with lib; {
103     description = "FFT marshalling library";
104     homepage = "https://github.com/ROCm/hipFFT";
105     license = with licenses; [ mit ];
106     maintainers = teams.rocm.members;
107     platforms = platforms.linux;
108     broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0";
109   };