diff options
author | jlam <jlam@pkgsrc.org> | 2004-01-07 17:31:02 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2004-01-07 17:31:02 +0000 |
commit | 7d7b6932915da1a85bbff724cac65097f851de3d (patch) | |
tree | 11b45d59210a3504050602f25a4692ba337eab33 /mk | |
parent | 131d4f1716265e83154d3ab6503201888d50301d (diff) | |
download | pkgsrc-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/buffer | 22 |
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 |