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 | |
| sources | default import../lib/sources.nix inherit pkgs; |
let
CMake flags following upstream build_compiler_rt.sh
"-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
pkgs.stdenv.mkDerivation
"filc-compiler-rt"
"git"
runHook preConfigure
cd build
cmake ${pkgs.lib.concatStringsSep" " cmakeFlags} ..
runHook postConfigure
runHook preBuild
ninja -j$NIX_BUILD_CORES
runHook postBuild
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
uses cmakeFlags lib setupCcache