1{ lib
2, stdenv
3, fetchFromGitHub
4, substituteAll
5, doctest
6, cmake
7}:
8
9stdenv.mkDerivation rec {
10 pname = "taskflow";
11 version = "3.5.0";
12
13 src = fetchFromGitHub {
14 owner = "taskflow";
15 repo = "taskflow";
16 rev = "v${version}";
17 hash = "sha256-UUWJENGn60YQdUSQ55uL+/3xt/JUsVuKnqm/ef7wPVM=";
18 };
19
20 patches = [
21 (substituteAll {
22 src = ./unvendor-doctest.patch;
23 inherit doctest;
24 })
25 ];
26
27 postPatch = ''
28 rm -r 3rd-party
29
30 # tries to use x86 intrinsics on aarch64-darwin
31 sed -i '/^#if __has_include (<immintrin\.h>)/,/^#endif/d' taskflow/utility/os.hpp
32 '';
33
34 nativeBuildInputs = [
35 cmake
36 ];
37
38 doCheck = true;
39
40 meta = {
41 description = "General-purpose Parallel and Heterogeneous Task Programming System";
42 homepage = "https://taskflow.github.io/";
43 changelog = let
44 release = lib.replaceStrings ["."] ["-"] version;
45 in "https://taskflow.github.io/taskflow/release-${release}.html";
46 license = lib.licenses.mit;
47 platforms = lib.platforms.unix;
48 maintainers = with lib.maintainers; [ dotlambda ];
49 };
50}