about summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
diff options
context:
space:
mode:
authormatthewcroughan <matt@croughan.sh>2021-08-24 10:17:22 +0100
committertomberek <tomberek@users.noreply.github.com>2022-01-29 21:23:12 -0500
commitb0c0e0d7eb099a61479b2ca6b390d3b0809a5519 (patch)
treec7f768a49160d9a795751f383238fca1a29f665d /pkgs/stdenv/adapters.nix
parent9721abadfdb42738ba3591f8b1da06a340b85309 (diff)
downloadnixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar.gz
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar.bz2
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar.lz
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar.xz
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.tar.zst
nixlib-b0c0e0d7eb099a61479b2ca6b390d3b0809a5519.zip
stdenv: introduce withCFlags
Adds an easy method of appending compiler flags to your stdenv via a
list.

Co-authored-by: tomberek <tomberek@users.noreply.github.com>
Co-authored-by: Gytis Ivaskevicius <gytis02.21@gmail.com>
Co-authored-by: sternenseemann <sternenseemann@systemli.org>
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r--pkgs/stdenv/adapters.nix21
1 files changed, 21 insertions, 0 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 971be95e935d..9884c219ff60 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -270,4 +270,25 @@ rec {
         allowSubstitutes = false;
       });
     });
+
+
+  /* Modify a stdenv so that it builds binaries with the specified list of
+     compilerFlags appended and passed to the compiler.
+
+     This example would recompile every derivation on the system with
+     -funroll-loops and -O3 passed to each gcc invocation.
+
+     Example:
+       nixpkgs.overlays = [
+         (self: super: {
+           stdenv = super.withCFlags [ "-funroll-loops" "-O3" ] super.stdenv;
+         })
+       ];
+  */
+  withCFlags = compilerFlags: stdenv:
+    stdenv.override (old: {
+      mkDerivationFromStdenv = extendMkDerivationArgs old (args: {
+        NIX_CFLAGS_COMPILE = toString (args.NIX_CFLAGS_COMPILE or "") + " ${toString compilerFlags}";
+      });
+    });
 }