1{ stdenv
2, lib
3, fetchFromGitHub
4, fetchpatch
5, cmake
6, python3
7, enableModTool ? true
8, removeReferencesTo
9}:
10
11stdenv.mkDerivation (finalAttrs: {
12 pname = "volk";
13 version = "3.0.0";
14
15 src = fetchFromGitHub {
16 owner = "gnuradio";
17 repo = "volk";
18 rev = "v${finalAttrs.version}";
19 hash = "sha256-kI4IuO6TLplo5lLAGIPWQWtePcjIEWB9XaJDA6WlqSg=";
20 fetchSubmodules = true;
21 };
22 patches = [
23 # Remove a failing test
24 (fetchpatch {
25 url = "https://github.com/gnuradio/volk/commit/fe2e4a73480bf2ac2e566052ea682817dddaf61f.patch";
26 hash = "sha256-Vko/Plk7u6UAr32lieU+T9G34Dkg9EW3Noi/NArpRL4=";
27 })
28 ];
29
30 cmakeFlags = lib.optionals (!enableModTool) [
31 "-DENABLE_MODTOOL=OFF"
32 ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
33 "-DVOLK_CPU_FEATURES=OFF"
34 # offset 17912 in1: -0.0366274 in2: -0.0366173 tolerance was: 1e-05
35 # volk_32f_log2_32f: fail on arch neon
36 "-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;qa_volk_32f_log2_32f"
37 ];
38
39 postInstall = lib.optionalString (!stdenv.isDarwin) ''
40 ${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc} $(readlink -f $out/lib/libvolk.so)
41 '';
42
43 nativeBuildInputs = [
44 cmake
45 python3
46 python3.pkgs.mako
47 ];
48
49 doCheck = true;
50
51 meta = with lib; {
52 homepage = "http://libvolk.org/";
53 description = "The Vector Optimized Library of Kernels";
54 license = licenses.gpl3Plus;
55 maintainers = with maintainers; [ doronbehar ];
56 platforms = platforms.all;
57 };
58})