overrideLibcxx
pkgs.overrideLibcxx
Docs pulled from | This Revision | 10 minutes ago
because older compilers may not be able to parse the headers from the default stdenv’s libc++.
Noogle detected
Implementation
The following is the current implementation of this function.
overrideLibcxx =
stdenv:
assert stdenv.cc.libcxx != null;
assert pkgs.stdenv.cc.libcxx != null;
# only unified libcxx / libcxxabi stdenv's are supported
assert lib.versionAtLeast pkgs.stdenv.cc.libcxx.version "12";
assert lib.versionAtLeast stdenv.cc.libcxx.version "12";
let
llvmLibcxxVersion = lib.getVersion llvmLibcxx;
stdenvLibcxx = pkgs.stdenv.cc.libcxx;
llvmLibcxx = stdenv.cc.libcxx;
libcxx =
pkgs.runCommand "${stdenvLibcxx.name}-${llvmLibcxxVersion}"
{
outputs = [
"out"
"dev"
];
isLLVM = true;
}
''
mkdir -p "$dev/nix-support"
ln -s '${stdenvLibcxx}' "$out"
echo '${stdenvLibcxx}' > "$dev/nix-support/propagated-build-inputs"
ln -s '${lib.getDev llvmLibcxx}/include' "$dev/include"
'';
in
overrideCC stdenv (
stdenv.cc.override {
inherit libcxx;
extraPackages = [
pkgs.buildPackages.targetPackages."llvmPackages_${lib.versions.major llvmLibcxxVersion}".compiler-rt
];
}
);