1{ lib
2, stdenv
3, fetchFromGitHub
4, cmake
5, llvmPackages
6, libxml2
7, zlib
8}:
9
10stdenv.mkDerivation rec {
11 pname = "zig";
12 version = "0.9.1";
13
14 src = fetchFromGitHub {
15 owner = "ziglang";
16 repo = pname;
17 rev = version;
18 hash = "sha256-x2c4c9RSrNWGqEngio4ArW7dJjW0gg+8nqBwPcR721k=";
19 };
20
21 # Fix index out of bounds reading RPATH (cherry-picked from 0.10-dev)
22 patches = [ ./rpath.patch ];
23
24 nativeBuildInputs = [
25 cmake
26 llvmPackages.llvm.dev
27 ];
28
29 buildInputs = [
30 libxml2
31 zlib
32 ] ++ (with llvmPackages; [
33 libclang
34 lld
35 llvm
36 ]);
37
38 preBuild = ''
39 export HOME=$TMPDIR;
40 '';
41
42 cmakeFlags = [
43 # file RPATH_CHANGE could not write new RPATH
44 "-DCMAKE_SKIP_BUILD_RPATH=ON"
45 ];
46
47 doCheck = true;
48 checkPhase = ''
49 runHook preCheck
50 ./zig test --cache-dir "$TMPDIR" -I $src/test $src/test/behavior.zig
51 runHook postCheck
52 '';
53
54 meta = with lib; {
55 homepage = "https://ziglang.org/";
56 description =
57 "General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software";
58 license = licenses.mit;
59 maintainers = with maintainers; [ aiotter andrewrk AndersonTorres ];
60 platforms = platforms.unix;
61 };
62}