Rewrite a few stdenv.cross uses that *should* be targetPlatform

The previous commit redefines `stdenv.cross` for the sake of normal
libaries, the most common use-case of that attribute. Some compilers
however relied on the old definition so we have them use
`targetPlatform` instead. This special casing is fine because we
eventually want to remove `stdenv.cross` and use either `hostPlatform`
or `targetPlatform` instead.
This commit is contained in:
John Ericson 2017-02-11 18:24:24 -05:00
parent a7d89139ea
commit a7068ace35
7 changed files with 123 additions and 117 deletions

View File

@ -26,6 +26,7 @@
, gnat ? null
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, stripped ? true
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -271,15 +272,15 @@ stdenv.mkDerivation ({
targetConfig = if cross != null then cross.config else null;
crossAttrs = {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -311,7 +312,7 @@ stdenv.mkDerivation ({
${if langAda then " --enable-libada" else ""}
${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""}
${if cross != null then crossConfigureFlags else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
'';
};

View File

@ -34,6 +34,7 @@
, stripped ? true
, gnused ? null
, darwin ? null
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -123,12 +124,12 @@ let version = "4.8.5";
crossMingw = cross != null && cross.libc == "msvcrt";
crossDarwin = cross != null && cross.libc == "libSystem";
crossConfigureFlags = let
gccArch = stdenv.cross.gcc.arch or null;
gccCpu = stdenv.cross.gcc.cpu or null;
gccAbi = stdenv.cross.gcc.abi or null;
gccFpu = stdenv.cross.gcc.fpu or null;
gccFloat = stdenv.cross.gcc.float or null;
gccMode = stdenv.cross.gcc.mode or null;
gccArch = targetPlatform.gcc.arch or null;
gccCpu = targetPlatform.gcc.cpu or null;
gccAbi = targetPlatform.gcc.abi or null;
gccFpu = targetPlatform.gcc.fpu or null;
gccFloat = targetPlatform.gcc.float or null;
gccMode = targetPlatform.gcc.mode or null;
withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
@ -382,26 +383,26 @@ stdenv.mkDerivation ({
else "install";
crossAttrs = let
xgccArch = stdenv.cross.gcc.arch or null;
xgccCpu = stdenv.cross.gcc.cpu or null;
xgccAbi = stdenv.cross.gcc.abi or null;
xgccFpu = stdenv.cross.gcc.fpu or null;
xgccFloat = stdenv.cross.gcc.float or null;
xgccArch = targetPlatform.gcc.arch or null;
xgccCpu = targetPlatform.gcc.cpu or null;
xgccAbi = targetPlatform.gcc.abi or null;
xgccFpu = targetPlatform.gcc.fpu or null;
xgccFloat = targetPlatform.gcc.float or null;
xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
in {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -431,7 +432,7 @@ stdenv.mkDerivation ({
)
}
${if langAda then " --enable-libada" else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
${xwithArch}
${xwithCpu}
${xwithAbi}

View File

@ -34,6 +34,7 @@
, stripped ? true
, gnused ? null
, darwin ? null
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -125,12 +126,12 @@ let version = "4.9.4";
crossMingw = cross != null && cross.libc == "msvcrt";
crossDarwin = cross != null && cross.libc == "libSystem";
crossConfigureFlags = let
gccArch = stdenv.cross.gcc.arch or null;
gccCpu = stdenv.cross.gcc.cpu or null;
gccAbi = stdenv.cross.gcc.abi or null;
gccFpu = stdenv.cross.gcc.fpu or null;
gccFloat = stdenv.cross.gcc.float or null;
gccMode = stdenv.cross.gcc.mode or null;
gccArch = targetPlatform.gcc.arch or null;
gccCpu = targetPlatform.gcc.cpu or null;
gccAbi = targetPlatform.gcc.abi or null;
gccFpu = targetPlatform.gcc.fpu or null;
gccFloat = targetPlatform.gcc.float or null;
gccMode = targetPlatform.gcc.mode or null;
withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
@ -389,26 +390,26 @@ stdenv.mkDerivation ({
else "install";
crossAttrs = let
xgccArch = stdenv.cross.gcc.arch or null;
xgccCpu = stdenv.cross.gcc.cpu or null;
xgccAbi = stdenv.cross.gcc.abi or null;
xgccFpu = stdenv.cross.gcc.fpu or null;
xgccFloat = stdenv.cross.gcc.float or null;
xgccArch = targetPlatform.gcc.arch or null;
xgccCpu = targetPlatform.gcc.cpu or null;
xgccAbi = targetPlatform.gcc.abi or null;
xgccFpu = targetPlatform.gcc.fpu or null;
xgccFloat = targetPlatform.gcc.float or null;
xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
in {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -438,7 +439,7 @@ stdenv.mkDerivation ({
)
}
${if langAda then " --enable-libada" else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
${xwithArch}
${xwithCpu}
${xwithAbi}

View File

@ -36,6 +36,7 @@
, binutils ? null
, cloog # unused; just for compat with gcc4, as we override the parameter on some places
, darwin ? null
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -129,12 +130,12 @@ let version = "5.4.0";
crossMingw = cross != null && cross.libc == "msvcrt";
crossDarwin = cross != null && cross.libc == "libSystem";
crossConfigureFlags = let
gccArch = stdenv.cross.gcc.arch or null;
gccCpu = stdenv.cross.gcc.cpu or null;
gccAbi = stdenv.cross.gcc.abi or null;
gccFpu = stdenv.cross.gcc.fpu or null;
gccFloat = stdenv.cross.gcc.float or null;
gccMode = stdenv.cross.gcc.mode or null;
gccArch = targetPlatform.gcc.arch or null;
gccCpu = targetPlatform.gcc.cpu or null;
gccAbi = targetPlatform.gcc.abi or null;
gccFpu = targetPlatform.gcc.fpu or null;
gccFloat = targetPlatform.gcc.float or null;
gccMode = targetPlatform.gcc.mode or null;
withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
@ -398,26 +399,26 @@ stdenv.mkDerivation ({
else "install";
crossAttrs = let
xgccArch = stdenv.cross.gcc.arch or null;
xgccCpu = stdenv.cross.gcc.cpu or null;
xgccAbi = stdenv.cross.gcc.abi or null;
xgccFpu = stdenv.cross.gcc.fpu or null;
xgccFloat = stdenv.cross.gcc.float or null;
xgccArch = targetPlatform.gcc.arch or null;
xgccCpu = targetPlatform.gcc.cpu or null;
xgccAbi = targetPlatform.gcc.abi or null;
xgccFpu = targetPlatform.gcc.fpu or null;
xgccFloat = targetPlatform.gcc.float or null;
xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
in {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -446,7 +447,7 @@ stdenv.mkDerivation ({
)
}
${if langAda then " --enable-libada" else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
${xwithArch}
${xwithCpu}
${xwithAbi}

View File

@ -36,6 +36,7 @@
, binutils ? null
, cloog # unused; just for compat with gcc4, as we override the parameter on some places
, darwin ? null
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -125,12 +126,12 @@ let version = "6.3.0";
crossMingw = cross != null && cross.libc == "msvcrt";
crossDarwin = cross != null && cross.libc == "libSystem";
crossConfigureFlags = let
gccArch = stdenv.cross.gcc.arch or null;
gccCpu = stdenv.cross.gcc.cpu or null;
gccAbi = stdenv.cross.gcc.abi or null;
gccFpu = stdenv.cross.gcc.fpu or null;
gccFloat = stdenv.cross.gcc.float or null;
gccMode = stdenv.cross.gcc.mode or null;
gccArch = targetPlatform.gcc.arch or null;
gccCpu = targetPlatform.gcc.cpu or null;
gccAbi = targetPlatform.gcc.abi or null;
gccFpu = targetPlatform.gcc.fpu or null;
gccFloat = targetPlatform.gcc.float or null;
gccMode = targetPlatform.gcc.mode or null;
withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
@ -386,26 +387,26 @@ stdenv.mkDerivation ({
else "install";
crossAttrs = let
xgccArch = stdenv.cross.gcc.arch or null;
xgccCpu = stdenv.cross.gcc.cpu or null;
xgccAbi = stdenv.cross.gcc.abi or null;
xgccFpu = stdenv.cross.gcc.fpu or null;
xgccFloat = stdenv.cross.gcc.float or null;
xgccArch = targetPlatform.gcc.arch or null;
xgccCpu = targetPlatform.gcc.cpu or null;
xgccAbi = targetPlatform.gcc.abi or null;
xgccFpu = targetPlatform.gcc.fpu or null;
xgccFloat = targetPlatform.gcc.float or null;
xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
in {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -434,7 +435,7 @@ stdenv.mkDerivation ({
)
}
${if langAda then " --enable-libada" else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
${xwithArch}
${xwithCpu}
${xwithAbi}

View File

@ -37,6 +37,7 @@
, cloog # unused; just for compat with gcc4, as we override the parameter on some places
, darwin ? null
, flex ? null
, buildPlatform, hostPlatform, targetPlatform
}:
assert langJava -> zip != null && unzip != null
@ -125,12 +126,12 @@ let version = "7-20170409";
crossMingw = cross != null && cross.libc == "msvcrt";
crossDarwin = cross != null && cross.libc == "libSystem";
crossConfigureFlags = let
gccArch = stdenv.cross.gcc.arch or null;
gccCpu = stdenv.cross.gcc.cpu or null;
gccAbi = stdenv.cross.gcc.abi or null;
gccFpu = stdenv.cross.gcc.fpu or null;
gccFloat = stdenv.cross.gcc.float or null;
gccMode = stdenv.cross.gcc.mode or null;
gccArch = targetPlatform.gcc.arch or null;
gccCpu = targetPlatform.gcc.cpu or null;
gccAbi = targetPlatform.gcc.abi or null;
gccFpu = targetPlatform.gcc.fpu or null;
gccFloat = targetPlatform.gcc.float or null;
gccMode = targetPlatform.gcc.mode or null;
withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
@ -386,26 +387,26 @@ stdenv.mkDerivation ({
else "install";
crossAttrs = let
xgccArch = stdenv.cross.gcc.arch or null;
xgccCpu = stdenv.cross.gcc.cpu or null;
xgccAbi = stdenv.cross.gcc.abi or null;
xgccFpu = stdenv.cross.gcc.fpu or null;
xgccFloat = stdenv.cross.gcc.float or null;
xgccArch = targetPlatform.gcc.arch or null;
xgccCpu = targetPlatform.gcc.cpu or null;
xgccAbi = targetPlatform.gcc.abi or null;
xgccFpu = targetPlatform.gcc.fpu or null;
xgccFloat = targetPlatform.gcc.float or null;
xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
in {
AR = "${stdenv.cross.config}-ar";
LD = "${stdenv.cross.config}-ld";
CC = "${stdenv.cross.config}-gcc";
CXX = "${stdenv.cross.config}-gcc";
AR_FOR_TARGET = "${stdenv.cross.config}-ar";
LD_FOR_TARGET = "${stdenv.cross.config}-ld";
CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
NM_FOR_TARGET = "${stdenv.cross.config}-nm";
CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
AR = "${targetPlatform.config}-ar";
LD = "${targetPlatform.config}-ld";
CC = "${targetPlatform.config}-gcc";
CXX = "${targetPlatform.config}-gcc";
AR_FOR_TARGET = "${targetPlatform.config}-ar";
LD_FOR_TARGET = "${targetPlatform.config}-ld";
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
NM_FOR_TARGET = "${targetPlatform.config}-nm";
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
# If we are making a cross compiler, cross != null
NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
dontStrip = true;
@ -434,7 +435,7 @@ stdenv.mkDerivation ({
)
}
${if langAda then " --enable-libada" else ""}
--target=${stdenv.cross.config}
--target=${targetPlatform.config}
${xwithArch}
${xwithCpu}
${xwithAbi}

View File

@ -4971,8 +4971,8 @@ with pkgs;
gccCrossStageStatic = assert targetPlatform != buildPlatform; let
libcCross1 =
if stdenv.cross.libc == "msvcrt" then windows.mingw_w64_headers
else if stdenv.cross.libc == "libSystem" then darwin.xcode
if targetPlatform.libc == "msvcrt" then windows.mingw_w64_headers
else if targetPlatform.libc == "libSystem" then darwin.xcode
else null;
in wrapGCCCross {
gcc = forcedNativePackages.gcc.cc.override {