1{ stdenv
2, llvmPackages
3, lib
4, fetchFromGitHub
5, cmake
6, libffi
7, libpng
8, libjpeg
9, mesa
10, libGL
11, eigen
12, openblas
13, blas
14, lapack
15}:
16
17assert blas.implementation == "openblas" && lapack.implementation == "openblas";
18
19stdenv.mkDerivation rec {
20 pname = "halide";
21 version = "15.0.1";
22
23 src = fetchFromGitHub {
24 owner = "halide";
25 repo = "Halide";
26 rev = "v${version}";
27 sha256 = "sha256-mnZ6QMqDr48bH2W+andGZj2EhajXKApjuW6B50xtzx0=";
28 };
29
30 cmakeFlags = [
31 "-DWARNINGS_AS_ERRORS=OFF"
32 "-DWITH_PYTHON_BINDINGS=OFF"
33 "-DTARGET_WEBASSEMBLY=OFF"
34 # Disable performance tests since they may fail on busy machines
35 "-DWITH_TEST_PERFORMANCE=OFF"
36 ];
37
38 doCheck = true;
39
40 # Note: only openblas and not atlas part of this Nix expression
41 # see pkgs/development/libraries/science/math/liblapack/3.5.0.nix
42 # to get a hint howto setup atlas instead of openblas
43 buildInputs = [
44 llvmPackages.llvm
45 llvmPackages.lld
46 llvmPackages.openmp
47 llvmPackages.libclang
48 libffi
49 libpng
50 libjpeg
51 eigen
52 openblas
53 ] ++ lib.optionals (!stdenv.isDarwin) [
54 mesa
55 libGL
56 ];
57
58 nativeBuildInputs = [ cmake ];
59
60 meta = with lib; {
61 description = "C++ based language for image processing and computational photography";
62 homepage = "https://halide-lang.org";
63 license = licenses.mit;
64 platforms = platforms.all;
65 maintainers = with maintainers; [ ck3d atila twesterhout ];
66 };
67}