diff options
author | Dan Peebles <pumpkin@me.com> | 2018-09-15 16:49:44 -0400 |
---|---|---|
committer | Dan Peebles <pumpkin@me.com> | 2018-09-16 02:12:11 -0400 |
commit | 110c2528709ee10466a6b4bee5a2adefe11a0c3f (patch) | |
tree | eb398c8ec993c79ba28756b1c7484b8cc9c730c0 /pkgs/stdenv | |
parent | b91ad0e54f6a44737198b8cbcea67467ec991aee (diff) | |
download | nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar.gz nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar.bz2 nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar.lz nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar.xz nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.tar.zst nixlib-110c2528709ee10466a6b4bee5a2adefe11a0c3f.zip |
cctools: support LTO on Darwin
LTO is disabled during bootstrap to keep the bootstrap tools small and avoid unnecessary LLVM rebuilds, but is enabled in the final stdenv stage and should be usable by normal packages.
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r-- | pkgs/stdenv/darwin/default.nix | 1 | ||||
-rw-r--r-- | pkgs/stdenv/darwin/make-bootstrap-tools.nix | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index d287517e8868..c361ae6e4021 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -201,6 +201,7 @@ in rec { python2 = self.python; ninja = super.ninja.override { buildDocs = false; }; + darwin = super.darwin // { cctools = super.darwin.cctools.override { llvm = null; }; }; }; in with prevStage; stageFun 1 prevStage { extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index d128be7019bd..eee3b1ce0759 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -12,6 +12,10 @@ in rec { singleBinary = false; }); + # We want a version of cctools without LLVM, because the LTO support ends up making + # the bootstrap tools huge and isn't really necessary for bootstrap + cctools_ = darwin.cctools.override { llvm = null; }; + # Avoid debugging larger changes for now. bzip2_ = bzip2.override (args: { linkStatic = true; }); @@ -95,7 +99,7 @@ in rec { # Copy binutils. for i in as ld ar ranlib nm strip otool install_name_tool dsymutil lipo; do - cp ${darwin.cctools}/bin/$i $out/bin + cp ${cctools_}/bin/$i $out/bin done cp -rd ${pkgs.darwin.CF}/Library $out @@ -105,9 +109,9 @@ in rec { nuke-refs $out/bin/* rpathify() { - local libs=$(${darwin.cctools}/bin/otool -L "$1" | tail -n +2 | grep -o "$NIX_STORE.*-\S*") || true + local libs=$(${cctools_}/bin/otool -L "$1" | tail -n +2 | grep -o "$NIX_STORE.*-\S*") || true for lib in $libs; do - ${darwin.cctools}/bin/install_name_tool -change $lib "@rpath/$(basename $lib)" "$1" + ${cctools_}/bin/install_name_tool -change $lib "@rpath/$(basename $lib)" "$1" done } |