diff options
author | John Ericson <git@JohnEricson.me> | 2022-01-08 12:39:30 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-08 12:39:30 -0800 |
commit | baf290023c22a6f32dd34deb6f22d5b2f75fdc01 (patch) | |
tree | 3d3e648a570845b439a11ccb7b32ac7e75ff3931 /pkgs/stdenv | |
parent | 0ed184fb68d646408be936af83d52a1d7f23b296 (diff) | |
parent | e238f456b8d643d5afe5370e942e82204907d0ef (diff) |
Merge pull request #153790 from sternenseemann/cross-bootstrap-logic
Cross bootstrapping logic fixes benefitting llvmPackages
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r-- | pkgs/stdenv/booter.nix | 8 | ||||
-rw-r--r-- | pkgs/stdenv/cross/default.nix | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix index 51d617354e869..f1d07e6461a9c 100644 --- a/pkgs/stdenv/booter.nix +++ b/pkgs/stdenv/booter.nix @@ -124,7 +124,13 @@ stageFuns: let if buildPackages.stdenv.hasCC then if buildPackages.stdenv.cc.isClang or false - then buildPackages.clang + # buildPackages.clang checks targetPackages.stdenv.cc (i. e. this + # attribute) to get a sense of the its set's default compiler and + # chooses between libc++ and libstdc++ based on that. If we hit this + # code here, we'll cause an infinite recursion. Since a set with + # clang as its default compiler always means libc++, we can infer this + # decision statically. + then buildPackages.llvmPackages.libcxxClang else buildPackages.gcc else # This will blow up if anything uses it, but that's OK. The `if diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix index 613b8d5304c01..e01ac74599aeb 100644 --- a/pkgs/stdenv/cross/default.nix +++ b/pkgs/stdenv/cross/default.nix @@ -70,7 +70,7 @@ in lib.init bootStages ++ [ # when there is a C compiler and everything should be fine. then throw "no C compiler provided for this platform" else if crossSystem.isDarwin - then buildPackages.llvmPackages.clang + then buildPackages.llvmPackages.libcxxClang else if crossSystem.useLLVM or false then buildPackages.llvmPackages.clangUseLLVM else buildPackages.gcc; |