1{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC }:
2let
3 callPackage = newScope (self // { inherit stdenv isl version fetch; });
4
5 version = "3.7.0";
6
7 fetch = fetch_v version;
8 fetch_v = ver: name: sha256: fetchurl {
9 url = "http://llvm.org/releases/${ver}/${name}-${ver}.src.tar.xz";
10 inherit sha256;
11 };
12
13 compiler-rt_src = fetch "compiler-rt" "02rbsqdnj1dw9q3d8w5wwmvz5gfraiv8xp18lis4kj8baacajzr2";
14 clang-tools-extra_src = fetch "clang-tools-extra" "1k894zkx4w8grigmgv5y4q9zrcic2ypz0zfn28270ykbm6is1s4a";
15
16 self = {
17 llvm = callPackage ./llvm.nix {
18 inherit compiler-rt_src stdenv;
19 };
20
21 clang-unwrapped = callPackage ./clang {
22 inherit clang-tools-extra_src stdenv;
23 };
24
25 clang = wrapCC self.clang-unwrapped;
26
27 stdenv = overrideCC stdenv self.clang;
28
29 lldb = callPackage ./lldb.nix {};
30
31 libcxx = callPackage ./libc++ {};
32
33 libcxxabi = callPackage ./libc++abi.nix {};
34 };
35in self