summary refs log tree commit diff
path: root/pkgs/build-support/rust
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2019-11-01 15:46:47 +0000
committerGitHub <noreply@github.com>2019-11-01 15:46:47 +0000
commit56240d7f20a2cc4b931a89617c37403586dc5b74 (patch)
treee6ed3a95889bb58037d35525df1309aeaa3699ba /pkgs/build-support/rust
parenta8ebd0b0c05bcca2d870d6172d9387fc6dd1638e (diff)
parentbb7184d6a62f3eefdadb069091f8985871279b15 (diff)
downloadnixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar.gz
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar.bz2
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar.lz
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar.xz
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.tar.zst
nixpkgs-56240d7f20a2cc4b931a89617c37403586dc5b74.zip
Merge pull request #71899 from decentriq/aslemmer/build-rust-package-add-target
build-support/rust: Add target option
Diffstat (limited to 'pkgs/build-support/rust')
-rw-r--r--pkgs/build-support/rust/default.nix8
1 files changed, 5 insertions, 3 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 8b41d992d1e..f0f949b2205 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -18,6 +18,7 @@
   verifyCargoDeps ? false
 , buildType ? "release"
 , meta ? {}
+, target ? null
 
 , cargoVendorDir ? null
 , ... } @ args:
@@ -50,12 +51,13 @@ let
   rustHostConfig = {
     x86_64-pc-mingw32 = "x86_64-pc-windows-gnu";
   }.${hostConfig} or hostConfig;
+  rustTarget = if target == null then rustHostConfig else target;
 
   ccForBuild="${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc";
   cxxForBuild="${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}c++";
   ccForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
   cxxForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++";
-  releaseDir = "target/${rustHostConfig}/${buildType}";
+  releaseDir = "target/${rustTarget}/${buildType}";
 in
 
 stdenv.mkDerivation (args // {
@@ -88,7 +90,7 @@ stdenv.mkDerivation (args // {
     [target."${stdenv.buildPlatform.config}"]
     "linker" = "${ccForBuild}"
     ${stdenv.lib.optionalString (stdenv.buildPlatform.config != stdenv.hostPlatform.config) ''
-    [target."${rustHostConfig}"]
+    [target."${rustTarget}"]
     "linker" = "${ccForHost}"
     ${# https://github.com/rust-lang/rust/issues/46651#issuecomment-433611633
       stdenv.lib.optionalString (stdenv.hostPlatform.isMusl && stdenv.hostPlatform.isAarch64) ''
@@ -133,7 +135,7 @@ stdenv.mkDerivation (args // {
       "CXX_${stdenv.hostPlatform.config}"="${cxxForHost}" \
       cargo build \
         ${stdenv.lib.optionalString (buildType == "release") "--release"} \
-        --target ${rustHostConfig} \
+        --target ${rustTarget} \
         --frozen ${concatStringsSep " " cargoBuildFlags}
     )