da09d28be6
several arguments together) from the command line and push it onto the stack. Pop the top off the stack, process, and push replacement arguments onto the stack. Repeat the last step until no more processing is done, and we have our final argument to be passed on through to the rest of the wrapper script.
61 lines
1.4 KiB
Text
61 lines
1.4 KiB
Text
# $NetBSD: buffer,v 1.7 2004/01/30 13:44:52 jlam Exp $
|
|
#
|
|
# Push arguments onto the argument stack and shift the arguments. The
|
|
# next argument checked by the cache and logic files is take from the
|
|
# the top of the stack.
|
|
#
|
|
if $test -z "$depth"; then
|
|
arg="$1"; shift
|
|
#
|
|
# Marshall any group of consecutive arguments into a single
|
|
# $arg to be checked in the cache and logic files.
|
|
#
|
|
. $marshall
|
|
#
|
|
# Push the argument onto the stack.
|
|
#
|
|
depth=${depth}0
|
|
eval stack${depth}="\$arg"
|
|
fi
|
|
|
|
argok=no
|
|
while $test "$argok" = "no"; do
|
|
#
|
|
# Take $arg from the top of the stack.
|
|
#
|
|
eval arg="\$stack${depth}"
|
|
depth=${depth%0}
|
|
argok=yes
|
|
|
|
case $arg in
|
|
#
|
|
# Change "-<rpath_flag>/path1:/path2" into
|
|
# "-<rpath_flag>/path1 -<rpath_flag>/path2" so that
|
|
# they can be checked correctly in the cache and logic
|
|
# files.
|
|
#
|
|
-R*:*|-Wl,-R*:*|-Wl,-rpath,*:*|-Wl,-rpath-link,*:*|\
|
|
-Wl,--rpath,*:*|-Wl,--rpath-link,*:*)
|
|
case $arg in
|
|
-R*) R="-R" ;;
|
|
-Wl,-R*) R="-Wl,-R" ;;
|
|
-Wl,-rpath,*) R="-Wl,-rpath," ;;
|
|
-Wl,-rpath-link,*) R="-Wl,-rpath-link," ;;
|
|
-Wl,--rpath,*) R="-Wl,--rpath," ;;
|
|
-Wl,--rpath-link,*) R="-Wl,--rpath-link," ;;
|
|
esac
|
|
arg=`$echo "X$arg" | $Xsed -e "s|^"$R"||g"`
|
|
save_IFS="${IFS}"; IFS=":"
|
|
revarg=
|
|
for dir in $arg; do
|
|
revarg="$dir $revarg"
|
|
done
|
|
IFS="${save_IFS}"
|
|
for dir in $revarg; do
|
|
depth=${depth}0
|
|
eval stack${depth}="\$R\$dir"
|
|
done
|
|
argok=no
|
|
;;
|
|
esac
|
|
done
|