about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/vc
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/vc')
-rw-r--r--nixpkgs/pkgs/development/libraries/vc/0.7.nix32
-rw-r--r--nixpkgs/pkgs/development/libraries/vc/default.nix28
-rw-r--r--nixpkgs/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch28
3 files changed, 88 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/vc/0.7.nix b/nixpkgs/pkgs/development/libraries/vc/0.7.nix
new file mode 100644
index 000000000000..2e13f2f46ffa
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/vc/0.7.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "Vc";
+  version = "0.7.5";
+
+  src = fetchFromGitHub {
+    owner = "VcDevel";
+    repo = "Vc";
+    rev = version;
+    sha256 = "190s4r2n3jsivl4j2m288j3rqmgjj6gl308hi9mzwyhcfn17q8br";
+  };
+
+  # Avoid requesting an unreasonable intrinsic
+  patches = lib.optional stdenv.cc.isClang ./vc_0_7_clang_fix.patch;
+
+  nativeBuildInputs = [ cmake ];
+
+  postPatch = ''
+    sed -i '/OptimizeForArchitecture()/d' cmake/VcMacros.cmake
+    sed -i '/AutodetectHostArchitecture()/d' print_target_architecture.cmake
+  '';
+
+  meta = with lib; {
+    broken = (stdenv.isLinux && stdenv.isAarch64);
+    description = "Library for multiprecision complex arithmetic with exact rounding";
+    homepage = "https://github.com/VcDevel/Vc";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/vc/default.nix b/nixpkgs/pkgs/development/libraries/vc/default.nix
new file mode 100644
index 000000000000..559ef8d20700
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/vc/default.nix
@@ -0,0 +1,28 @@
+{ lib, stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "Vc";
+  version = "1.4.3";
+
+  src = fetchFromGitHub {
+    owner = "VcDevel";
+    repo = "Vc";
+    rev = version;
+    sha256 = "sha256-fv0FHAl0xvAFybR/jwhX2LkozwEDy1TNcbVAmRRnLVU=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  postPatch = ''
+    sed -i '/OptimizeForArchitecture()/d' cmake/VcMacros.cmake
+    sed -i '/AutodetectHostArchitecture()/d' print_target_architecture.cmake
+  '';
+
+  meta = with lib; {
+    description = "Library for multiprecision complex arithmetic with exact rounding";
+    homepage = "https://github.com/VcDevel/Vc";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch b/nixpkgs/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch
new file mode 100644
index 000000000000..29ea6f529490
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch
@@ -0,0 +1,28 @@
+diff -ur a/sse/intrinsics.h b/sse/intrinsics.h
+--- a/sse/intrinsics.h	2021-11-12 22:09:50.000000000 -0500
++++ b/sse/intrinsics.h	2021-11-12 22:14:08.000000000 -0500
+@@ -498,16 +498,6 @@
+         case 0:
+             f = _mm_cvtss_f32(v);
+             break;
+-#if defined VC_IMPL_SSE4_1 && !defined VC_MSVC
+-        default:
+-#ifdef VC_GCC
+-            f = __builtin_ia32_vec_ext_v4sf(static_cast<__v4sf>(v), (i));
+-#else
+-            // MSVC fails to compile this because it can't optimize i to an immediate
+-            _MM_EXTRACT_FLOAT(f, v, i);
+-#endif
+-            break;
+-#else
+         case 1:
+             f = _mm_cvtss_f32(_mm_castsi128_ps(_mm_srli_si128(_mm_castps_si128(v), 4)));
+             break;
+@@ -517,7 +507,6 @@
+         case 3:
+             f = _mm_cvtss_f32(_mm_castsi128_ps(_mm_srli_si128(_mm_castps_si128(v), 12)));
+             break;
+-#endif
+         }
+         return f;
+     }