summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2004-01-07 17:31:02 +0000
committerjlam <jlam@pkgsrc.org>2004-01-07 17:31:02 +0000
commit7d7b6932915da1a85bbff724cac65097f851de3d (patch)
tree11b45d59210a3504050602f25a4692ba337eab33 /mk
parent131d4f1716265e83154d3ab6503201888d50301d (diff)
downloadpkgsrc-7d7b6932915da1a85bbff724cac65097f851de3d.tar.gz
Suppress duplicates when splitting -Wl,-R/dir1:/dir2:... into separate
arguments. This avoids overfilling the circular buffer (length 5) used by the buildlink3 wrappers.
Diffstat (limited to 'mk')
-rw-r--r--mk/buildlink3/buffer22
1 files changed, 15 insertions, 7 deletions
diff --git a/mk/buildlink3/buffer b/mk/buildlink3/buffer
index bcc7425172e..8dd45bd0e8d 100644
--- a/mk/buildlink3/buffer
+++ b/mk/buildlink3/buffer
@@ -1,4 +1,4 @@
-# $NetBSD: buffer,v 1.1 2003/10/09 12:15:15 jlam Exp $
+# $NetBSD: buffer,v 1.2 2004/01/07 17:31:02 jlam Exp $
#
# Fill the buffer if it's empty, and shift the arguments. The next
# argument checked by the cache and logic files is taken from the
@@ -35,14 +35,22 @@ case ${buf1}${buf2}${buf3}${buf4}${buf5} in
arg=`$echo "X$arg" | $Xsed -e "s|^"$R"||g"`
allargs="$@"
save_IFS="${IFS}"; IFS=":"
+ dirlist=
set -- $arg
while $test $# -gt 0; do
- if $test -z "$buf1"; then buf1="$R$1"; shift
- elif $test -z "$buf2"; then buf2="$R$1"; shift
- elif $test -z "$buf3"; then buf3="$R$1"; shift
- elif $test -z "$buf4"; then buf4="$R$1"; shift
- elif $test -z "$buf5"; then buf5="$R$1"; shift
- fi
+ case "$dirlist" in
+ "$1"|"$1 "*) ;;
+ *" $1 "*|*" $1") ;;
+ *) dirlist="$dirlist $1"
+ if $test -z "$buf1"; then buf1="$R$1"
+ elif $test -z "$buf2"; then buf2="$R$1"
+ elif $test -z "$buf3"; then buf3="$R$1"
+ elif $test -z "$buf4"; then buf4="$R$1"
+ elif $test -z "$buf5"; then buf5="$R$1"
+ fi
+ ;;
+ esac
+ shift
done
IFS="${save_IFS}"
if $test -n "$allargs"; then