diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/vc')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/vc/0.7.nix | 32 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/vc/default.nix | 28 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/vc/vc_0_7_clang_fix.patch | 28 |
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; + } |