diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2017-12-24 22:00:58 -0500 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2017-12-25 19:32:07 -0500 |
commit | 46514076540597a8af783938a538ddebf2b2e446 (patch) | |
tree | bdf3862cc085ec52e6025bef78ab0090bbc3c57a /pkgs/stdenv/darwin/default.nix | |
parent | dc906952be70e53270953df63419f5fdb256d343 (diff) | |
download | nixlib-46514076540597a8af783938a538ddebf2b2e446.tar nixlib-46514076540597a8af783938a538ddebf2b2e446.tar.gz nixlib-46514076540597a8af783938a538ddebf2b2e446.tar.bz2 nixlib-46514076540597a8af783938a538ddebf2b2e446.tar.lz nixlib-46514076540597a8af783938a538ddebf2b2e446.tar.xz nixlib-46514076540597a8af783938a538ddebf2b2e446.tar.zst nixlib-46514076540597a8af783938a538ddebf2b2e446.zip |
darwin stdenv: Make stdenv.cc, not stdenv, bring in libcxx
stdenvNoCC should not inject any C++ standard library, just as it doesn't inject any C standard library. stdenv still does, but only indirectly through stdenv.cc. Wrapped clangs can be simplified now that they don't need to worry about clobbering CoreFoundation when replacing the C++ standard library implementation. This generally-good cleanup should assist with debugging some C++ failures in #26805.
Diffstat (limited to 'pkgs/stdenv/darwin/default.nix')
-rw-r--r-- | pkgs/stdenv/darwin/default.nix | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index d202186c29b2..2542d2428859 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -58,6 +58,7 @@ in rec { extraPreHook ? "", extraNativeBuildInputs, extraBuildInputs, + libcxx, allowedRequisites ? null}: let buildPackages = lib.optionalAttrs (last ? stdenv) { @@ -82,6 +83,8 @@ in rec { inherit shell; inherit (last) stdenvNoCC; + extraPackages = lib.optional (libcxx != null) libcxx; + nativeTools = false; nativeLibc = false; inherit buildPackages coreutils gnugrep bintools; @@ -176,6 +179,7 @@ in rec { extraNativeBuildInputs = []; extraBuildInputs = []; + libcxx = null; }; stage1 = prevStage: let @@ -183,7 +187,8 @@ in rec { in with prevStage; stageFun 1 prevStage { extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; extraNativeBuildInputs = []; - extraBuildInputs = [ pkgs.libcxx ]; + extraBuildInputs = [ ]; + libcxx = pkgs.libcxx; allowedRequisites = [ bootstrapTools ] ++ (with pkgs; [ libcxx libcxxabi ]) ++ [ pkgs.darwin.Libsystem ]; @@ -210,7 +215,8 @@ in rec { ''; extraNativeBuildInputs = [ pkgs.xz ]; - extraBuildInputs = with pkgs; [ darwin.CF libcxx ]; + extraBuildInputs = [ pkgs.darwin.CF ]; + libcxx = pkgs.libcxx; allowedRequisites = [ bootstrapTools ] ++ @@ -242,7 +248,8 @@ in rec { # and instead goes by $PATH, which happens to contain bootstrapTools. So it goes and # patches our shebangs back to point at bootstrapTools. This makes sure bash comes first. extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ]; - extraBuildInputs = with pkgs; [ darwin.CF libcxx ]; + extraBuildInputs = [ pkgs.darwin.CF ]; + libcxx = pkgs.libcxx; extraPreHook = '' export PATH=${pkgs.bash}/bin:$PATH @@ -277,7 +284,9 @@ in rec { in with prevStage; stageFun 4 prevStage { shell = "${pkgs.bash}/bin/bash"; extraNativeBuildInputs = with pkgs; [ xz pkgs.bash ]; - extraBuildInputs = with pkgs; [ darwin.CF libcxx ]; + extraBuildInputs = [ pkgs.darwin.CF ]; + libcxx = pkgs.libcxx; + extraPreHook = '' export PATH_LOCALE=${pkgs.darwin.locale}/share/locale ''; @@ -347,10 +356,11 @@ in rec { cc = pkgs.llvmPackages.clang-unwrapped; bintools = pkgs.darwin.binutils; libc = pkgs.darwin.Libsystem; + extraPackages = [ pkgs.libcxx ]; }; extraNativeBuildInputs = []; - extraBuildInputs = with pkgs; [ darwin.CF libcxx ]; + extraBuildInputs = [ pkgs.darwin.CF ]; extraAttrs = { inherit platform bootstrapTools; |