forked from mirrors/nixpkgs
bintools-wrapper: Import separately from cc-wrapper
This commit is contained in:
parent
8e557ed2c5
commit
2bba929062
|
@ -6,18 +6,17 @@
|
|||
# compiler and the linker just "work".
|
||||
|
||||
{ name ? "", stdenvNoCC, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? ""
|
||||
, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenvNoCC.shell
|
||||
, cc ? null, libc ? null, bintools, coreutils ? null, shell ? stdenvNoCC.shell
|
||||
, zlib ? null, extraPackages ? [], extraBuildCommands ? ""
|
||||
, isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null
|
||||
, buildPackages ? {}
|
||||
, useMacosReexportHack ? false
|
||||
}:
|
||||
|
||||
with stdenvNoCC.lib;
|
||||
|
||||
assert nativeTools -> nativePrefix != "";
|
||||
assert !nativeTools ->
|
||||
cc != null && binutils != null && coreutils != null && gnugrep != null;
|
||||
cc != null && coreutils != null && gnugrep != null;
|
||||
assert !(nativeLibc && noLibc);
|
||||
assert (noLibc || nativeLibc) == (libc == null);
|
||||
|
||||
|
@ -28,17 +27,6 @@ let
|
|||
stdenv = stdenvNoCC;
|
||||
inherit (stdenv) hostPlatform targetPlatform;
|
||||
|
||||
bintools = import ../bintools-wrapper {
|
||||
bintools = binutils;
|
||||
inherit # name
|
||||
stdenvNoCC nativeTools noLibc nativeLibc nativePrefix
|
||||
libc
|
||||
coreutils shell gnugrep
|
||||
extraPackages extraBuildCommands
|
||||
buildPackages
|
||||
useMacosReexportHack;
|
||||
};
|
||||
|
||||
# Prefix for binaries. Customarily ends with a dash separator.
|
||||
#
|
||||
# TODO(@Ericson2314) Make unconditional, or optional but always true by
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ newScope, stdenv, wrapCC, wrapCCWith, symlinkJoin }:
|
||||
{ newScope, stdenv, binutils-raw, wrapCCWith, symlinkJoin }:
|
||||
let
|
||||
callPackage = newScope (self // {inherit stdenv;});
|
||||
|
||||
|
@ -6,6 +6,8 @@ let
|
|||
emscriptenfastcomp-unwrapped = callPackage ./emscripten-fastcomp.nix {};
|
||||
emscriptenfastcomp-wrapped = wrapCCWith {
|
||||
cc = self.emscriptenfastcomp-unwrapped;
|
||||
# Never want Apple's cctools for WASM target
|
||||
bintools = binutils-raw;
|
||||
libc = stdenv.cc.libc;
|
||||
extraBuildCommands = ''
|
||||
# hardening flags break WASM support
|
||||
|
|
|
@ -30,14 +30,14 @@ let
|
|||
libstdcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ libstdcxxHook ];
|
||||
};
|
||||
|
||||
libcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ self.libcxx self.libcxxabi ];
|
||||
};
|
||||
|
||||
|
|
|
@ -27,14 +27,14 @@ let
|
|||
libstdcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ libstdcxxHook ];
|
||||
};
|
||||
|
||||
libcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ self.libcxx self.libcxxabi ];
|
||||
};
|
||||
|
||||
|
|
|
@ -27,14 +27,14 @@ let
|
|||
libstdcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ libstdcxxHook ];
|
||||
};
|
||||
|
||||
libcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ self.libcxx self.libcxxabi ];
|
||||
};
|
||||
|
||||
|
|
|
@ -42,14 +42,14 @@ let
|
|||
libstdcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ libstdcxxHook ];
|
||||
};
|
||||
|
||||
libcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ self.libcxx self.libcxxabi ];
|
||||
};
|
||||
|
||||
|
|
|
@ -42,14 +42,14 @@ let
|
|||
libstdcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ libstdcxxHook ];
|
||||
};
|
||||
|
||||
libcxxClang = ccWrapperFun {
|
||||
cc = self.clang-unwrapped;
|
||||
/* FIXME is this right? */
|
||||
inherit (stdenv.cc) libc nativeTools nativeLibc;
|
||||
inherit (stdenv.cc) bintools libc nativeTools nativeLibc;
|
||||
extraPackages = [ self.libcxx self.libcxxabi ];
|
||||
};
|
||||
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "libbfd-${version}";
|
||||
inherit (binutils-raw) version src;
|
||||
inherit (binutils-raw.bintools) version src;
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = binutils-raw.patches ++ [
|
||||
patches = binutils-raw.bintools.patches ++ [
|
||||
../../tools/misc/binutils/build-components-separately.patch
|
||||
];
|
||||
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "libopcodes-${version}";
|
||||
inherit (binutils-raw) version src;
|
||||
inherit (binutils-raw.bintools) version src;
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = binutils-raw.patches ++ [
|
||||
patches = binutils-raw.bintools.patches ++ [
|
||||
../../tools/misc/binutils/build-components-separately.patch
|
||||
];
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ stdenv.mkDerivation {
|
|||
buildCommand = ''
|
||||
mkdir -p $out/bin $out/include
|
||||
|
||||
ln -s ${binutils-raw.out}/bin/${targetPrefix}c++filt $out/bin/${targetPrefix}c++filt
|
||||
ln -s ${binutils-raw.bintools.out}/bin/${targetPrefix}c++filt $out/bin/${targetPrefix}c++filt
|
||||
|
||||
# We specifically need:
|
||||
# - ld: binutils doesn't provide it on darwin
|
||||
|
@ -38,7 +38,7 @@ stdenv.mkDerivation {
|
|||
done
|
||||
|
||||
# FIXME: this will give us incorrect man pages for bits of cctools
|
||||
ln -s ${binutils-raw.out}/share $out/share
|
||||
ln -s ${binutils-raw.bintools.out}/share $out/share
|
||||
|
||||
ln -s ${cctools}/libexec $out/libexec
|
||||
'';
|
||||
|
|
|
@ -60,10 +60,40 @@ in rec {
|
|||
extraBuildInputs,
|
||||
allowedRequisites ? null}:
|
||||
let
|
||||
buildPackages = lib.optionalAttrs (last ? stdenv) {
|
||||
inherit (last) stdenv;
|
||||
};
|
||||
|
||||
coreutils = { name = "coreutils-9.9.9"; outPath = bootstrapTools; };
|
||||
gnugrep = { name = "gnugrep-9.9.9"; outPath = bootstrapTools; };
|
||||
|
||||
bintools = import ../../build-support/bintools-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenvNoCC;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
inherit buildPackages coreutils gnugrep;
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
bintools = { name = "binutils-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
cc = if isNull last then "/dev/null" else import ../../build-support/cc-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenvNoCC;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
inherit buildPackages coreutils gnugrep bintools;
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
isClang = true;
|
||||
cc = { name = "clang-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
thisStdenv = import ../generic {
|
||||
inherit config shell extraNativeBuildInputs extraBuildInputs;
|
||||
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
|
||||
thisStdenv.cc.expand-response-params
|
||||
cc.expand-response-params cc.bintools
|
||||
];
|
||||
|
||||
name = "stdenv-darwin-boot-${toString step}";
|
||||
|
@ -72,24 +102,9 @@ in rec {
|
|||
hostPlatform = localSystem;
|
||||
targetPlatform = localSystem;
|
||||
|
||||
cc = if isNull last then "/dev/null" else import ../../build-support/cc-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenvNoCC;
|
||||
inherit cc;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
buildPackages = lib.optionalAttrs (last ? stdenv) {
|
||||
inherit (last) stdenv;
|
||||
};
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
isClang = true;
|
||||
cc = { name = "clang-9.9.9"; outPath = bootstrapTools; };
|
||||
binutils = { name = "binutils-9.9.9"; outPath = bootstrapTools; };
|
||||
coreutils = { name = "coreutils-9.9.9"; outPath = bootstrapTools; };
|
||||
gnugrep = { name = "gnugrep-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
preHook = stage0.stdenv.lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
|
||||
preHook = lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
|
||||
# Don't patch #!/interpreter because it leads to retained
|
||||
# dependencies on the bootstrapTools in the final stdenv.
|
||||
dontPatchShebangs=1
|
||||
|
@ -328,9 +343,10 @@ in rec {
|
|||
buildPackages = {
|
||||
inherit (prevStage) stdenv;
|
||||
};
|
||||
inherit (pkgs) coreutils binutils gnugrep;
|
||||
cc = pkgs.llvmPackages.clang-unwrapped;
|
||||
libc = pkgs.darwin.Libsystem;
|
||||
inherit (pkgs) coreutils gnugrep;
|
||||
cc = pkgs.llvmPackages.clang-unwrapped;
|
||||
bintools = pkgs.darwin.binutils;
|
||||
libc = pkgs.darwin.Libsystem;
|
||||
};
|
||||
|
||||
extraNativeBuildInputs = [];
|
||||
|
@ -349,8 +365,8 @@ in rec {
|
|||
xz.out xz.bin libcxx libcxxabi gmp.out gnumake findutils bzip2.out
|
||||
bzip2.bin llvmPackages.llvm llvmPackages.llvm.lib zlib.out zlib.dev libffi.out coreutils ed diffutils gnutar
|
||||
gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk
|
||||
gnugrep llvmPackages.clang-unwrapped patch pcre.out binutils-raw.out
|
||||
binutils gettext
|
||||
gnugrep llvmPackages.clang-unwrapped patch pcre.out gettext
|
||||
binutils-raw.bintools binutils binutils.bintools
|
||||
cc.expand-response-params
|
||||
]) ++ (with pkgs.darwin; [
|
||||
dyld Libsystem CF cctools ICU libiconv locale
|
||||
|
|
|
@ -80,9 +80,10 @@ let
|
|||
inherit (prevStage) stdenv;
|
||||
};
|
||||
cc = prevStage.gcc-unwrapped;
|
||||
bintools = prevStage.binutils;
|
||||
isGNU = true;
|
||||
libc = prevStage.glibc;
|
||||
inherit (prevStage) binutils coreutils gnugrep;
|
||||
inherit (prevStage) coreutils gnugrep;
|
||||
name = name;
|
||||
stdenvNoCC = prevStage.ccWrapperStdenv;
|
||||
};
|
||||
|
@ -143,7 +144,15 @@ in
|
|||
'';
|
||||
};
|
||||
gcc-unwrapped = bootstrapTools;
|
||||
binutils = bootstrapTools;
|
||||
binutils = import ../../build-support/bintools-wrapper {
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
buildPackages = { };
|
||||
libc = self.glibc;
|
||||
inherit (self) stdenvNoCC coreutils gnugrep;
|
||||
bintools = bootstrapTools;
|
||||
name = "bootstrap-binutils-wrapper";
|
||||
};
|
||||
coreutils = bootstrapTools;
|
||||
gnugrep = bootstrapTools;
|
||||
};
|
||||
|
@ -165,7 +174,7 @@ in
|
|||
|
||||
# Rebuild binutils to use from stage2 onwards.
|
||||
overrides = self: super: {
|
||||
binutils = super.binutils.override { gold = false; };
|
||||
binutils = super.binutils_nogold;
|
||||
inherit (prevStage)
|
||||
ccWrapperStdenv
|
||||
glibc gcc-unwrapped coreutils gnugrep;
|
||||
|
@ -188,9 +197,14 @@ in
|
|||
overrides = self: super: {
|
||||
inherit (prevStage)
|
||||
ccWrapperStdenv
|
||||
binutils gcc-unwrapped coreutils gnugrep
|
||||
gcc-unwrapped coreutils gnugrep
|
||||
perl paxctl gnum4 bison;
|
||||
# This also contains the full, dynamically linked, final Glibc.
|
||||
binutils = prevStage.binutils.override {
|
||||
# Rewrap the binutils with the new glibc, so both the next
|
||||
# stage's wrappers use it.
|
||||
libc = self.glibc;
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
|
@ -235,6 +249,15 @@ in
|
|||
# other purposes (binutils and top-level pkgs) too.
|
||||
inherit (prevStage) gettext gnum4 bison gmp perl glibc zlib linuxHeaders;
|
||||
|
||||
binutils = super.binutils.override {
|
||||
# Don't use stdenv's shell but our own
|
||||
shell = self.bash + "/bin/bash";
|
||||
# Build expand-response-params with last stage like below
|
||||
buildPackages = {
|
||||
inherit (prevStage) stdenv;
|
||||
};
|
||||
};
|
||||
|
||||
gcc = lib.makeOverridable (import ../../build-support/cc-wrapper) {
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
|
@ -243,8 +266,9 @@ in
|
|||
inherit (prevStage) stdenv;
|
||||
};
|
||||
cc = prevStage.gcc-unwrapped;
|
||||
bintools = self.binutils;
|
||||
libc = self.glibc;
|
||||
inherit (self) stdenvNoCC binutils coreutils gnugrep;
|
||||
inherit (self) stdenvNoCC coreutils gnugrep;
|
||||
name = "";
|
||||
shell = self.bash + "/bin/bash";
|
||||
};
|
||||
|
@ -299,8 +323,8 @@ in
|
|||
allowedRequisites = with prevStage; with lib;
|
||||
# Simple executable tools
|
||||
concatMap (p: [ (getBin p) (getLib p) ])
|
||||
[ gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
|
||||
gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
||||
[ gzip bzip2 xz bash binutils.bintools coreutils diffutils findutils
|
||||
gawk gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
||||
]
|
||||
# Library dependencies
|
||||
++ map getLib (
|
||||
|
@ -310,7 +334,7 @@ in
|
|||
# More complicated cases
|
||||
++ [
|
||||
glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
|
||||
gcc gcc.cc gcc.cc.lib gcc.expand-response-params
|
||||
binutils gcc gcc.cc gcc.cc.lib gcc.expand-response-params
|
||||
]
|
||||
++ lib.optionals localSystem.isAarch64
|
||||
[ prevStage.updateAutotoolsGnuConfigScriptsHook prevStage.gnu-config ];
|
||||
|
@ -322,7 +346,7 @@ in
|
|||
attr acl paxctl zlib pcre;
|
||||
} // lib.optionalAttrs (super.targetPlatform == localSystem) {
|
||||
# Need to get rid of these when cross-compiling.
|
||||
inherit (prevStage) binutils;
|
||||
inherit (prevStage) binutils binutils-raw;
|
||||
gcc = cc;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -177,7 +177,7 @@ rec {
|
|||
|
||||
# Copy binutils.
|
||||
for i in as ld ar ranlib nm strip readelf objdump; do
|
||||
cp ${binutils.out}/bin/$i $out/bin
|
||||
cp ${binutils.bintools.out}/bin/$i $out/bin
|
||||
done
|
||||
|
||||
chmod -R u+w $out
|
||||
|
|
|
@ -126,7 +126,7 @@ rec {
|
|||
|
||||
# Copy binutils.
|
||||
for i in as ld ar ranlib nm strip readelf objdump; do
|
||||
cp ${binutils.out}/bin/$i $out/bin
|
||||
cp ${binutils.bintools.out}/bin/$i $out/bin
|
||||
done
|
||||
|
||||
chmod -R u+w $out
|
||||
|
|
|
@ -5462,7 +5462,9 @@ with pkgs;
|
|||
|
||||
clang-sierraHack = clang.override {
|
||||
name = "clang-wrapper-with-reexport-hack";
|
||||
useMacosReexportHack = true;
|
||||
bintools = clang.bintools.override {
|
||||
useMacosReexportHack = true;
|
||||
};
|
||||
};
|
||||
|
||||
clang_5 = llvmPackages_5.clang;
|
||||
|
@ -5491,7 +5493,7 @@ with pkgs;
|
|||
cc = build;
|
||||
isClang = true;
|
||||
inherit stdenvNoCC;
|
||||
libc = glibc;
|
||||
inherit (targetPackages.stdenv.cc) bintools libc;
|
||||
extraPackages = [ libcxx libcxxabi ];
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
|
@ -5561,18 +5563,23 @@ with pkgs;
|
|||
};
|
||||
|
||||
wrapCCMulti = cc:
|
||||
if system == "x86_64-linux" then lowPrio (wrapCCWith {
|
||||
if system == "x86_64-linux" then let
|
||||
# Binutils with glibc multi
|
||||
bintools = cc.bintools.override {
|
||||
libc = glibc_multi;
|
||||
};
|
||||
in lowPrio (wrapCCWith {
|
||||
cc = cc.cc.override {
|
||||
stdenv = overrideCC stdenv (wrapCCWith {
|
||||
cc = cc.cc;
|
||||
inherit bintools;
|
||||
libc = glibc_multi;
|
||||
});
|
||||
profiledCompiler = false;
|
||||
enableMultilib = true;
|
||||
};
|
||||
|
||||
libc = glibc_multi;
|
||||
|
||||
inherit bintools;
|
||||
extraBuildCommands = ''
|
||||
echo "dontMoveLib64=1" >> $out/nix-support/setup-hook
|
||||
'';
|
||||
|
@ -5605,6 +5612,10 @@ with pkgs;
|
|||
if targetPlatform.libc == "msvcrt" then targetPackages.windows.mingw_w64_headers
|
||||
else if targetPlatform.libc == "libSystem" then darwin.xcode
|
||||
else null;
|
||||
binutils1 = wrapBintoolsWith {
|
||||
bintools = binutils-unwrapped;
|
||||
libc = libcCross1;
|
||||
};
|
||||
in wrapCCWith {
|
||||
name = "gcc-cross-wrapper";
|
||||
cc = gccFun {
|
||||
|
@ -5618,9 +5629,10 @@ with pkgs;
|
|||
crossStageStatic = true;
|
||||
langCC = false;
|
||||
libcCross = libcCross1;
|
||||
targetPackages.stdenv.cc.bintools = binutils;
|
||||
targetPackages.stdenv.cc.bintools = binutils1;
|
||||
enableShared = false;
|
||||
};
|
||||
bintools = binutils1;
|
||||
libc = libcCross1;
|
||||
};
|
||||
|
||||
|
@ -5629,6 +5641,7 @@ with pkgs;
|
|||
name = "gcc-cross-wrapper";
|
||||
cc = gccCrossStageStatic.gcc;
|
||||
libc = windows.mingw_headers2;
|
||||
inherit binutils;
|
||||
};
|
||||
|
||||
gcc45 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.5 {
|
||||
|
@ -6394,7 +6407,8 @@ with pkgs;
|
|||
|
||||
wla-dx = callPackage ../development/compilers/wla-dx { };
|
||||
|
||||
wrapCCWith = { name ? "", cc, libc, extraBuildCommands ? "" }: ccWrapperFun rec {
|
||||
wrapCCWith = { name ? "", cc, bintools, libc, extraBuildCommands ? "" }:
|
||||
ccWrapperFun rec {
|
||||
nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false;
|
||||
nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false;
|
||||
nativePrefix = stdenv.cc.nativePrefix or "";
|
||||
|
@ -6403,14 +6417,20 @@ with pkgs;
|
|||
isGNU = cc.isGNU or false;
|
||||
isClang = cc.isClang or false;
|
||||
|
||||
inherit name cc libc extraBuildCommands;
|
||||
inherit name cc bintools libc extraBuildCommands;
|
||||
};
|
||||
|
||||
ccWrapperFun = callPackage ../build-support/cc-wrapper;
|
||||
bintoolsWrapperFun = callPackage ../build-support/bintools-wrapper;
|
||||
|
||||
wrapCC = cc: wrapCCWith {
|
||||
name = lib.optionalString (targetPlatform != hostPlatform) "gcc-cross-wrapper";
|
||||
inherit cc;
|
||||
# This should be the only bintools runtime dep with this sort of logic. The
|
||||
# Others should instead delegate to the next stage's choice with
|
||||
# `targetPackages.stdenv.cc.bintools`. This one is different just to
|
||||
# provide the default choice, avoiding infinite recursion.
|
||||
bintools = if targetPlatform.isDarwin then darwin.binutils else binutils;
|
||||
libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc;
|
||||
};
|
||||
# legacy version, used for gnat bootstrapping
|
||||
|
@ -6422,6 +6442,17 @@ with pkgs;
|
|||
libc = glibc;
|
||||
};
|
||||
|
||||
wrapBintoolsWith = { bintools, libc }: bintoolsWrapperFun {
|
||||
nativeTools = targetPlatform == hostPlatform && stdenv.cc.nativeTools or false;
|
||||
nativeLibc = targetPlatform == hostPlatform && stdenv.cc.nativeLibc or false;
|
||||
nativePrefix = stdenv.cc.nativePrefix or "";
|
||||
|
||||
noLibc = (libc == null);
|
||||
|
||||
inherit bintools libc;
|
||||
extraBuildCommands = "";
|
||||
};
|
||||
|
||||
# prolog
|
||||
yap = callPackage ../development/compilers/yap { };
|
||||
|
||||
|
@ -7003,13 +7034,19 @@ with pkgs;
|
|||
then darwin.binutils
|
||||
else binutils-raw;
|
||||
|
||||
binutils-raw = callPackage ../development/tools/misc/binutils {
|
||||
binutils-unwrapped = callPackage ../development/tools/misc/binutils {
|
||||
# FHS sys dirs presumably only have stuff for the build platform
|
||||
noSysDirs = (targetPlatform != buildPlatform) || noSysDirs;
|
||||
};
|
||||
binutils-raw = wrapBintoolsWith {
|
||||
libc = if targetPlatform != hostPlatform then libcCross else stdenv.cc.libc;
|
||||
bintools = binutils-unwrapped;
|
||||
};
|
||||
|
||||
binutils_nogold = lowPrio (binutils-raw.override {
|
||||
gold = false;
|
||||
bintools = binutils-raw.bintools.override {
|
||||
gold = false;
|
||||
};
|
||||
});
|
||||
|
||||
bison2 = callPackage ../development/tools/parsing/bison/2.x.nix { };
|
||||
|
|
|
@ -10,8 +10,14 @@ in
|
|||
|
||||
apple_sdk = callPackage ../os-specific/darwin/apple-sdk { };
|
||||
|
||||
binutils = callPackage ../os-specific/darwin/binutils {
|
||||
inherit (darwin) cctools;
|
||||
binutils = pkgs.wrapBintoolsWith {
|
||||
libc =
|
||||
if pkgs.targetPlatform != pkgs.hostPlatform
|
||||
then pkgs.libcCross
|
||||
else pkgs.stdenv.cc.libc;
|
||||
bintools = callPackage ../os-specific/darwin/binutils {
|
||||
inherit (darwin) cctools;
|
||||
};
|
||||
};
|
||||
|
||||
cctools = callPackage ../os-specific/darwin/cctools/port.nix {
|
||||
|
|
Loading…
Reference in a new issue