Fil-C on Nix

Filnix wiki

mbrock/filnix

runtime/compiler-rt.nix

Build compiler-rt for CRT files and builtins

This builds LLVM's compiler-rt to produce:

- crtbegin.o / crtend.o (C runtime begin/end)
- libyolort.a (builtins library, renamed from libclang_rt.builtins)

These are used by the yolo runtime and replace GCC's crt files.

λpkgs, sources?
pkgs
sourcesdefault import../lib/sources.nix inherit pkgs;
let
14lib=
import../lib inherit pkgs;
15inherit lib
setupCcache

CMake flags following upstream build_compiler_rt.sh

18cmakeFlags=
"-G Ninja" "-DCMAKE_BUILD_TYPE=Release" "-DCOMPILER_RT_BUILD_BUILTINS=ON" "-DCOMPILER_RT_BUILD_CRT=ON" "-DCOMPILER_RT_CRT_USE_EH_FRAME_REGISTRY=ON" "-DCOMPILER_RT_BUILD_SANITIZERS=OFF" "-DCOMPILER_RT_BUILD_XRAY=OFF" "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF" "-DCOMPILER_RT_BUILD_PROFILE=OFF" "-DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=${lib.filcArch}-linux-gnu"
uses lib used by compiler-rt
in
33compiler-rt=
pkgs.stdenv.mkDerivation
34pname=
"filc-compiler-rt"
35version=
"git"
36src=
sources.compiler-rt-src
38nativeBuildInputs=
with pkgs; cmake ninja python3 ccache
45preConfigure=
cd compiler-rt
mkdir -p build
51configurePhase=
runHook preConfigure
cd build
cmake ${pkgs.lib.concatStringsSep" " cmakeFlags} ..
runHook postConfigure
58buildPhase=
runHook preBuild
ninja -j$NIX_BUILD_CORES
runHook postBuild
64installPhase=
runHook preInstall
mkdir -p $out/lib
# Copy and rename outputs following upstream's naming convention
cp lib/linux/clang_rt.crtbegin-${lib.filcArch}.o $out/lib/crtbegin.o
cp lib/linux/clang_rt.crtend-${lib.filcArch}.o $out/lib/crtend.o
cp lib/linux/libclang_rt.builtins-${lib.filcArch}.a $out/lib/libyolort.a
runHook postInstall
76enableParallelBuilding=
true
77meta.description=
"Fil-C compiler-rt (CRT files and builtins)"