Fil-C on Nix

Filnix wiki

mbrock/filnix

lib/sources.nix

λpkgs, variant?
pkgs
variantdefault "release"
let
7inherit pkgs
fetchgit
8release=
builtins.fromJSONbuiltins.readFile./filc-upstream.json
9upstream=
variant ≡ "release"
→
variant ≡ "staging"
→
builtins.fromJSONbuiltins.readFile./filc-staging.json
else
throw"Unknown Fil-C source variant: ${variant}"
uses release used by coreRev mkFilcSrc
16hashData=
builtins.fromJSON
builtins.readFile
used by filcHashes
24coreRev=
upstream.coreRev
25sourcePatterns=
release.sourcePatterns
uses release used by mkFilcSrc
26filcHashes=
assert hashData.coreRev ≡ coreRev; hashData.hashes

Stable names and exact sparse patterns make unchanged component content reusable across core revisions. Cone mode also includes ancestor files.

in
44inherit
variant coreRev sourcePatterns filcHashes
51minilute-src=
mkFilcSrc"minilute-src"
uses mkFilcSrc
52sarcasm-src=
mkFilcSrc"sarcasm-src"
uses mkFilcSrc

Minimal clang compiler only (filc0)

55filc0-src=
mkFilcSrc"filc0-src"
uses mkFilcSrc

C++ runtimes and their CMake support, independent of compiler sources.

58libcxx-src=
mkFilcSrc"libcxx-src"
uses mkFilcSrc

A small reference copy for reading, not building: the design docs, the FilPizlonator pass and its two helper passes, the clang pipeline and driver files that wire them in, and the runtime (libpas/filc). Use this instead of filc0-src (about 1.6 GB) to look up behaviour.

64filc-ref-src=
mkFilcSrc"filc-ref-src"
uses mkFilcSrc

Just libpas + filc headers

67libpas-src=
mkFilcSrc"libpas-src"
uses mkFilcSrc

The LLVM JIT header generator and the LLVM C API headers it reads. Pins that predate the JIT have no hash for it, and libpizlo then skips it.

71llvmjit-src=
if filcHashes ? llvmjit-src then mkFilcSrc"llvmjit-src" else null

Yolo glibc (stage 1 runtime)

75yolo-glibc-src=
mkFilcSrc"yolo-glibc-src"
uses mkFilcSrc

User glibc (memory-safe glibc)

78user-glibc-src=
mkFilcSrc"user-glibc-src"
uses mkFilcSrc

compiler-rt (CRT files and builtins)

81compiler-rt-src=
mkFilcSrc"compiler-rt-src"
uses mkFilcSrc

yolounwind (stub unwind library for yolo runtime)

84yolounwind-src=
mkFilcSrc"yolounwind-src"
uses mkFilcSrc