rustc: add host platform to --target when building cross-compiler
As of 1.48, std is only built for platforms in --target. If the host platform is not included, the resulting rustc can't compile build.rs scripts.
This commit is contained in:
parent
f947634aee
commit
5a923e552c
1 changed files with 9 additions and 2 deletions
|
@ -11,7 +11,7 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (stdenv.lib) optionals optional optionalString;
|
inherit (stdenv.lib) optionals optional optionalString concatStringsSep;
|
||||||
inherit (darwin.apple_sdk.frameworks) Security;
|
inherit (darwin.apple_sdk.frameworks) Security;
|
||||||
|
|
||||||
llvmSharedForBuild = pkgsBuildBuild.llvm_10.override { enableSharedLibraries = true; };
|
llvmSharedForBuild = pkgsBuildBuild.llvm_10.override { enableSharedLibraries = true; };
|
||||||
|
@ -72,7 +72,14 @@ in stdenv.mkDerivation rec {
|
||||||
"--enable-vendor"
|
"--enable-vendor"
|
||||||
"--build=${rust.toRustTargetSpec stdenv.buildPlatform}"
|
"--build=${rust.toRustTargetSpec stdenv.buildPlatform}"
|
||||||
"--host=${rust.toRustTargetSpec stdenv.hostPlatform}"
|
"--host=${rust.toRustTargetSpec stdenv.hostPlatform}"
|
||||||
"--target=${rust.toRustTargetSpec stdenv.targetPlatform}"
|
# std is built for all platforms in --target. When building a cross-compiler
|
||||||
|
# we need to add the host platform as well so rustc can compile build.rs
|
||||||
|
# scripts.
|
||||||
|
"--target=${concatStringsSep "," ([
|
||||||
|
(rust.toRustTargetSpec stdenv.targetPlatform)
|
||||||
|
] ++ optionals (stdenv.hostPlatform != stdenv.targetPlatform) [
|
||||||
|
(rust.toRustTargetSpec stdenv.hostPlatform)
|
||||||
|
])}"
|
||||||
|
|
||||||
"${setBuild}.cc=${ccForBuild}"
|
"${setBuild}.cc=${ccForBuild}"
|
||||||
"${setHost}.cc=${ccForHost}"
|
"${setHost}.cc=${ccForHost}"
|
||||||
|
|
Loading…
Reference in a new issue