diff options
author | Jude Taylor <me@jude.bio> | 2015-06-11 17:58:26 -0700 |
---|---|---|
committer | Jude Taylor <me@jude.bio> | 2015-06-18 12:37:41 -0700 |
commit | fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c (patch) | |
tree | 3488761b783cedf8a7c90f1a51c1435430c35cd4 /pkgs/os-specific/darwin/binutils/default.nix | |
parent | 5e63669520dc1ac22a16ddd7fef468f38ca0b221 (diff) | |
download | nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar.gz nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar.bz2 nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar.lz nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar.xz nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.tar.zst nixlib-fa9c81f69468098e0dd0ca79ea4d2ef74ec6bc0c.zip |
pure darwin stdenv
Diffstat (limited to 'pkgs/os-specific/darwin/binutils/default.nix')
-rw-r--r-- | pkgs/os-specific/darwin/binutils/default.nix | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/pkgs/os-specific/darwin/binutils/default.nix b/pkgs/os-specific/darwin/binutils/default.nix new file mode 100644 index 000000000000..abe4aa67b143 --- /dev/null +++ b/pkgs/os-specific/darwin/binutils/default.nix @@ -0,0 +1,39 @@ +{ stdenv, binutils-raw, cctools }: + +stdenv.mkDerivation { + name = "cctools-binutils-darwin"; + buildCommand = '' + mkdir -p $out/bin $out/include + + ln -s ${binutils-raw}/bin/c++filt $out/bin/c++filt + + # We specifically need: + # - ld: binutils doesn't provide it on darwin + # - as: as above + # - ar: the binutils one prodices .a files that the cctools ld doesn't like + # - ranlib: for compatibility with ar + # - dsymutil: soon going away once it goes into LLVM (this one is fake anyway) + # - otool: we use it for some of our name mangling + # - install_name_tool: we use it to rewrite stuff in our bootstrap tools + # - strip: the binutils one seems to break mach-o files + # - lipo: gcc build assumes it exists + # - nm: the gnu one doesn't understand many new load commands + for i in ar ranlib as dsymutil install_name_tool ld strip otool lipo nm strings size; do + ln -sf "${cctools}/bin/$i" "$out/bin/$i" + done + + for i in ${binutils-raw}/include/*.h; do + ln -s "$i" "$out/include/$(basename $i)" + done + + for i in ${cctools}/include/*; do + ln -s "$i" "$out/include/$(basename $i)" + done + + # FIXME: this will give us incorrect man pages for bits of cctools + ln -s ${binutils-raw}/share $out/share + ln -s ${binutils-raw}/lib $out/lib + + ln -s ${cctools}/libexec $out/libexec + ''; +} |