diff options
-rw-r--r-- | pkgs/default.nix | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix index df32f59..6224caa 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -121,18 +121,33 @@ pkgs: oldpkgs: { assert types.filename.check name; pkgs.writeBash "/bin/${name}"; - writeC = name: { destination ? "" }: text: pkgs.runCommand name { + writeC = name: { + destination ? "", + libraries ? {} + }: text: pkgs.runCommand name { inherit text; + buildInputs = [ pkgs.pkgconfig ] ++ attrValues libraries; passAsFile = [ "text" ]; } /* sh */ '' PATH=${makeBinPath [ pkgs.binutils-unwrapped pkgs.coreutils pkgs.gcc + pkgs.pkgconfig ]} exe=$out${destination} mkdir -p "$(dirname "$exe")" - gcc -O -Wall -o "$exe" -x c "$textPath" + gcc \ + ${optionalString (libraries != []) + /* sh */ "$(pkg-config --cflags --libs ${ + concatMapStringsSep " " escapeShellArg (attrNames libraries) + })" + } \ + -O \ + -o "$exe" \ + -Wall \ + -x c \ + "$textPath" strip --strip-unneeded "$exe" ''; |