summary refs log tree commit diff
path: root/pkgs/build-support/rust/build-rust-crate/configure-crate.nix
diff options
context:
space:
mode:
authorAndreas Rammhold <andreas@rammhold.de>2019-02-18 00:10:36 +0100
committerAndreas Rammhold <andreas@rammhold.de>2019-02-18 00:10:36 +0100
commit044a8a24ed2361154de316ad0ba82cba8fd7631c (patch)
tree69a1e2fa8a92990aca6cdd39f161ed130ebfc5f8 /pkgs/build-support/rust/build-rust-crate/configure-crate.nix
parent5d42605b918f80a8cf4964ad42023791cae89e67 (diff)
downloadnixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.gz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.bz2
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.lz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.xz
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.tar.zst
nixpkgs-044a8a24ed2361154de316ad0ba82cba8fd7631c.zip
buildRustCrate: pass extraRustcOpts to configure crate
Previously build flags would not be available during the configure phase
while they might be required to build the `build.rs` file.
Diffstat (limited to 'pkgs/build-support/rust/build-rust-crate/configure-crate.nix')
-rw-r--r--pkgs/build-support/rust/build-rust-crate/configure-crate.nix22
1 files changed, 20 insertions, 2 deletions
diff --git a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix
index 7630c6471dc..700dff8499f 100644
--- a/pkgs/build-support/rust/build-rust-crate/configure-crate.nix
+++ b/pkgs/build-support/rust/build-rust-crate/configure-crate.nix
@@ -1,9 +1,27 @@
 { lib, stdenv, echo_build_heading, noisily, makeDeps }:
-{ build, buildDependencies, colors, completeBuildDeps, completeDeps, crateAuthors, crateFeatures, crateName, crateVersion, extraLinkFlags, libName, libPath, release, target_os, verbose, workspace_member }:
+{ build
+, buildDependencies
+, colors
+, completeBuildDeps
+, completeDeps
+, crateAuthors
+, crateFeatures
+, crateName
+, crateVersion
+, extraLinkFlags
+, extraRustcOpts
+, libName
+, libPath
+, release
+, target_os
+, verbose
+, workspace_member }:
 let version_ = lib.splitString "-" crateVersion;
     versionPre = if lib.tail version_ == [] then "" else builtins.elemAt version_ 1;
     version = lib.splitString "." (lib.head version_);
-    rustcOpts = (if release then "-C opt-level=3" else "-C debuginfo=2");
+    rustcOpts = lib.lists.foldl' (opts: opt: opts + " " + opt)
+        (if release then "-C opt-level=3" else "-C debuginfo=2")
+        (["-C codegen-units=1"] ++ extraRustcOpts);
     buildDeps = makeDeps buildDependencies;
     authors = lib.concatStringsSep ":" crateAuthors;
     optLevel = if release then 3 else 0;