summary refs log tree commit diff
diff options
context:
space:
mode:
authorBen Siraphob <bensiraphob@gmail.com>2021-11-12 22:29:43 -0600
committerGitHub <noreply@github.com>2021-11-12 22:29:43 -0600
commit281d13c4db8be5b79d91a51c2f273922d2cb3468 (patch)
tree1c7bbb8117f0f7059826dbd7bdb91b5741779d8e
parentd372457bf00a6f32f9cf4df8b66f3a1074ebba77 (diff)
parent869a386eedd003ea113f216e9a059a840101301b (diff)
downloadnixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar.gz
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar.bz2
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar.lz
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar.xz
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.tar.zst
nixpkgs-281d13c4db8be5b79d91a51c2f273922d2cb3468.zip
Merge pull request #145710 from veprbl/pr/vc_0_7_darwin_fix
vc_0_7: fix darwin build
-rw-r--r--pkgs/development/libraries/vc/0.7.nix3
-rw-r--r--pkgs/development/libraries/vc/vc_0_7_clang_fix.patch28
2 files changed, 31 insertions, 0 deletions
diff --git a/pkgs/development/libraries/vc/0.7.nix b/pkgs/development/libraries/vc/0.7.nix
index dd5b03f2dc5..310635d9cbf 100644
--- a/pkgs/development/libraries/vc/0.7.nix
+++ b/pkgs/development/libraries/vc/0.7.nix
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
     sha256 = "190s4r2n3jsivl4j2m288j3rqmgjj6gl308hi9mzwyhcfn17q8br";
   };
 
+  # Avoid requesting an unreasonable intrinsic
+  patches = lib.optional stdenv.cc.isClang ./vc_0_7_clang_fix.patch;
+
   nativeBuildInputs = [ cmake ];
 
   postPatch = ''
diff --git a/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch b/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch
new file mode 100644
index 00000000000..29ea6f52949
--- /dev/null
+++ b/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;
+     }