about summary refs log tree commit diff
path: root/pkgs/build-support/cc-wrapper
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2016-10-31 10:07:30 -0400
committerShea Levy <shea@shealevy.com>2016-10-31 10:07:30 -0400
commit225602d9f2fc5d437e4996c9697dd272d18846c0 (patch)
tree9ee631e894407643224fb0e5990a4aaa282bd2ca /pkgs/build-support/cc-wrapper
parent31f0fdef32f014eee619ce27c0b5f44b255c311f (diff)
parent1ad1edbb32ce01ba8b47d8e8dad357b0edd6a4dc (diff)
downloadnixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar.gz
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar.bz2
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar.lz
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar.xz
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.tar.zst
nixlib-225602d9f2fc5d437e4996c9697dd272d18846c0.zip
Merge branch 'response-files' of git://github.com/corngood/nixpkgs into staging
Diffstat (limited to 'pkgs/build-support/cc-wrapper')
-rw-r--r--pkgs/build-support/cc-wrapper/cc-wrapper.sh2
-rw-r--r--pkgs/build-support/cc-wrapper/ld-wrapper.sh2
-rw-r--r--pkgs/build-support/cc-wrapper/utils.sh24
3 files changed, 26 insertions, 2 deletions
diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
index 03f068d8298e..3ccdc34db5b2 100644
--- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
@@ -24,7 +24,7 @@ nonFlagArgs=0
 [[ "@prog@" = *++ ]] && isCpp=1 || isCpp=0
 cppInclude=1
 
-params=("$@")
+expandResponseParams "$@"
 n=0
 while [ $n -lt ${#params[*]} ]; do
     p=${params[n]}
diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
index 44d9a047936a..056cfa920535 100644
--- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
@@ -16,7 +16,7 @@ source @out@/nix-support/utils.sh
 
 
 # Optionally filter out paths not refering to the store.
-params=("$@")
+expandResponseParams "$@"
 if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" \
         -a \( -z "$NIX_IGNORE_LD_THROUGH_GCC" -o -z "$NIX_LDFLAGS_SET" \) ]; then
     rest=()
diff --git a/pkgs/build-support/cc-wrapper/utils.sh b/pkgs/build-support/cc-wrapper/utils.sh
index 3ab512d85c4e..481d642f9674 100644
--- a/pkgs/build-support/cc-wrapper/utils.sh
+++ b/pkgs/build-support/cc-wrapper/utils.sh
@@ -22,3 +22,27 @@ badPath() {
         "${p:0:4}" != "/tmp" -a \
         "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP"
 }
+
+expandResponseParams() {
+    local inparams=("$@")
+    local n=0
+    local p
+    params=()
+    while [ $n -lt ${#inparams[*]} ]; do
+        p=${inparams[n]}
+        case $p in
+            @*)
+                if [ -e "${p:1}" ]; then
+                    args=$(<"${p:1}")
+                    eval 'for arg in '$args'; do params+=("$arg"); done'
+                else
+                    params+=("$p")
+                fi
+                ;;
+            *)
+                params+=("$p")
+                ;;
+        esac
+        n=$((n + 1))
+    done
+}