Fil-C on Nix

Filnix wiki

mbrock/filnix

compiler/libcxx.nix

λpkgs, filc, filc-glibc, sources?
pkgs
filc
filc-glibc
sourcesdefault import../lib/sources.nix inherit pkgs;
let
9lib=
import../lib inherit pkgs;
10inherit lib
mkFilcLLVMBuild
in

Build libcxx with filc

15filc-libcxx=
mkFilcLLVMBuildpname = "filc-libcxx"; preConfigure = ""; cmakeSource = "runtimes"; buildDir = "build"; ninjaTargets = [ ]; customInstall = '' mkdir -p $out/lib $out/include cp -L build/lib/libc++*.{so,so.*,a} $out/lib/ || true cp -L build/lib/libc++abi*.{so,so.*,a} $out/lib/ || true cp -r build/include/c++/v1 $out/include/c++ || true # Fix RPATH to point to output lib directory for lib in $out/lib/*.so*; do [ -f "$lib" ] && patchelf --set-rpath "$out/lib" "$lib" || true done ''; cmakeOptions = LLVM_PATH = "../llvm"; LLVM_ENABLE_RUNTIMES = "libcxx\\;libcxxabi"; LLVM_INCLUDE_TESTS = false; LLVM_INCLUDE_BENCHMARKS = false; LLVM_COMPILER_CHECKED = true; HAVE_CXX_ATOMICS_WITHOUT_LIB = true; HAVE_CXX_ATOMICS64_WITHOUT_LIB = true; LIBCXX_ENABLE_STD_MODULES = false; LIBCXXABI_HAS_PTHREAD_API = true; LIBCXX_ENABLE_EXCEPTIONS = true; LIBCXXABI_ENABLE_EXCEPTIONS = true; LIBCXX_HAS_PTHREAD_API = true; LIBCXXABI_USE_LLVM_UNWINDER = false; LIBCXX_FORCE_LIBCXXABI = true; LIBCXX_ENABLE_WIDE_CHARACTERS = true; LIBCXX_INCLUDE_TESTS = false; LIBCXX_INCLUDE_BENCHMARKS = false; CMAKE_C_COMPILER = "${filc}/bin/clang"; CMAKE_CXX_COMPILER = "${filc}/bin/clang"; CMAKE_C_FLAGS = "-isystem ${filc-glibc}/include"; CMAKE_CXX_FLAGS = "-isystem ${filc-glibc}/include";; meta.description = "Fil-C LLVM C++ runtimes";.overrideAttrs

Skip compiler version checks

Atomics work natively

Avoid C++20 module checks

λold
59src=
sources.libcxx-src
Uses filtered source with libcxx/libcxxabi