Merge pull request #112449 from angerman/angerman/response-files

Add response file support when compiling with clang

Changed files
+14 -5
pkgs
build-support
cc-wrapper
expand-response-params
+12 -4
pkgs/build-support/cc-wrapper/cc-wrapper.sh
···
PATH="$path_backup"
# Old bash workaround, see above.
-
exec @prog@ \
-
${extraBefore+"${extraBefore[@]}"} \
-
${params+"${params[@]}"} \
-
${extraAfter+"${extraAfter[@]}"}
···
PATH="$path_backup"
# Old bash workaround, see above.
+
+
if (( "${NIX_CC_USE_RESPONSE_FILE:-@use_response_file_by_default@}" >= 1 )); then
+
exec @prog@ "@<(printf "%q\n" \
+
${extraBefore+"${extraBefore[@]}"} \
+
${params+"${params[@]}"} \
+
${extraAfter+"${extraAfter[@]}"})"
+
else
+
exec @prog@ \
+
${extraBefore+"${extraBefore[@]}"} \
+
${params+"${params[@]}"} \
+
${extraAfter+"${extraAfter[@]}"}
+
fi
+1
pkgs/build-support/cc-wrapper/default.nix
···
local dst="$1"
local wrapper="$2"
export prog="$3"
substituteAll "$wrapper" "$out/bin/$dst"
chmod +x "$out/bin/$dst"
}
···
local dst="$1"
local wrapper="$2"
export prog="$3"
+
export use_response_file_by_default=${if isClang then "1" else "0"}
substituteAll "$wrapper" "$out/bin/$dst"
chmod +x "$out/bin/$dst"
}
+1 -1
pkgs/build-support/expand-response-params/default.nix
···
src=$PWD
'';
buildPhase = ''
-
"$CC" -std=c99 -O3 -o "expand-response-params" expand-response-params.c
'';
installPhase = ''
mkdir -p $prefix/bin
···
src=$PWD
'';
buildPhase = ''
+
NIX_CC_USE_RESPONSE_FILE=0 "$CC" -std=c99 -O3 -o "expand-response-params" expand-response-params.c
'';
installPhase = ''
mkdir -p $prefix/bin