about summary refs log tree commit diff
path: root/pkgs/applications/science/electronics/flopoco/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/science/electronics/flopoco/default.nix')
-rw-r--r--pkgs/applications/science/electronics/flopoco/default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/applications/science/electronics/flopoco/default.nix b/pkgs/applications/science/electronics/flopoco/default.nix
new file mode 100644
index 0000000000000..7ce1087209e2c
--- /dev/null
+++ b/pkgs/applications/science/electronics/flopoco/default.nix
@@ -0,0 +1,93 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+, cmake
+, installShellFiles
+, bison
+, boost
+, flex
+, gmp
+, libxml2
+, mpfi
+, mpfr
+, scalp
+, sollya
+, wcpg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "flopoco";
+  version = "4.1.3";
+
+  src = fetchFromGitLab {
+    owner = pname;
+    repo = pname;
+    # flopoco-4.1.3 is not tagged on GitLab
+    rev = "67598298207c9f3261c35679c8a5966480c4343c";
+    sha256 = "sha256-0jRjg4/qciqBcjsi6BTbKO4VJkcoEzpC98wFkUOIGbI=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-clang-error-sin-cos.patch";
+      url = "https://gitlab.com/flopoco/flopoco/-/commit/de3aa60ad19333952c176c2a2e51f12653ca736b.patch";
+      postFetch = ''
+        substituteInPlace $out \
+          --replace 'FixSinCosCORDIC.hpp' 'CordicSinCos.hpp'
+      '';
+      sha256 = "sha256-BlamA/MZuuqqvGYto+jPeQPop6gwva0y394Odw8pdwg=";
+    })
+    (fetchpatch {
+      name = "fix-clang-error-atan2.patch";
+      url = "https://gitlab.com/flopoco/flopoco/-/commit/a3ffe2436c1b59ee0809b3772b74f2d43c6edb99.patch";
+      sha256 = "sha256-dSYcufLHDL0p1V1ghmy6X6xse5f6mjUqckaVqLZnTaA=";
+    })
+  ];
+
+  postPatch = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
+    sed -i "s/-pg//g" {,src/Apps/TaMaDi/}CMakeLists.txt
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    bison
+    cmake
+    installShellFiles
+  ];
+
+  buildInputs = [
+    boost
+    flex
+    gmp
+    libxml2
+    mpfi
+    mpfr
+    scalp
+    sollya
+    wcpg
+  ];
+
+  postBuild = ''
+    ./flopoco BuildAutocomplete
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 flopoco $out/bin/flopoco
+    cp bin* fp* ieee* longacc* $out/bin/
+    installShellCompletion --bash flopoco_autocomplete
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "The FloPoCo arithmetic core generator";
+    homepage = "https://flopoco.org/";
+    license = licenses.unfree;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ wegank ];
+  };
+}