| Index: gcc/depcomp
|
| diff --git a/gcc/depcomp b/gcc/depcomp
|
| index 3510ab0ff53b8a3c399759b9367d0a8defad5586..df8eea7e4ce8862105fcd7929b20bdb45488048b 100755
|
| --- a/gcc/depcomp
|
| +++ b/gcc/depcomp
|
| @@ -1,9 +1,10 @@
|
| #! /bin/sh
|
| # depcomp - compile a program generating dependencies as side-effects
|
|
|
| -scriptversion=2005-05-16.16
|
| +scriptversion=2009-04-28.21; # UTC
|
|
|
| -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
| +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
|
| +# Software Foundation, Inc.
|
|
|
| # This program is free software; you can redistribute it and/or modify
|
| # it under the terms of the GNU General Public License as published by
|
| @@ -16,9 +17,7 @@ scriptversion=2005-05-16.16
|
| # GNU General Public License for more details.
|
|
|
| # You should have received a copy of the GNU General Public License
|
| -# along with this program; if not, write to the Free Software
|
| -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
| -# 02110-1301, USA.
|
| +# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
| # As a special exception to the GNU General Public License, if you
|
| # distribute this file as part of a program that contains a
|
| @@ -86,12 +85,34 @@ if test "$depmode" = dashXmstdout; then
|
| depmode=dashmstdout
|
| fi
|
|
|
| +cygpath_u="cygpath -u -f -"
|
| +if test "$depmode" = msvcmsys; then
|
| + # This is just like msvisualcpp but w/o cygpath translation.
|
| + # Just convert the backslash-escaped backslashes to single forward
|
| + # slashes to satisfy depend.m4
|
| + cygpath_u="sed s,\\\\\\\\,/,g"
|
| + depmode=msvisualcpp
|
| +fi
|
| +
|
| case "$depmode" in
|
| gcc3)
|
| ## gcc 3 implements dependency tracking that does exactly what
|
| ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
| ## it if -MD -MP comes after the -MF stuff. Hmm.
|
| - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
| +## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
| +## the command line argument order; so add the flags where they
|
| +## appear in depend2.am. Note that the slowdown incurred here
|
| +## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
| + for arg
|
| + do
|
| + case $arg in
|
| + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
| + *) set fnord "$@" "$arg" ;;
|
| + esac
|
| + shift # fnord
|
| + shift # $arg
|
| + done
|
| + "$@"
|
| stat=$?
|
| if test $stat -eq 0; then :
|
| else
|
| @@ -178,14 +199,14 @@ sgi)
|
| ' < "$tmpdepfile" \
|
| | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
| tr '
|
| -' ' ' >> $depfile
|
| - echo >> $depfile
|
| +' ' ' >> "$depfile"
|
| + echo >> "$depfile"
|
|
|
| # The second pass generates a dummy entry for each header file.
|
| tr ' ' '
|
| ' < "$tmpdepfile" \
|
| | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
| - >> $depfile
|
| + >> "$depfile"
|
| else
|
| # The sourcefile does not contain any dependencies, so just
|
| # store a dummy comment line, to avoid errors with the Makefile
|
| @@ -201,34 +222,39 @@ aix)
|
| # current directory. Also, the AIX compiler puts `$object:' at the
|
| # start of each line; $object doesn't have directory information.
|
| # Version 6 uses the directory in both cases.
|
| - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
| - tmpdepfile="$stripped.u"
|
| + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
| + test "x$dir" = "x$object" && dir=
|
| + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
| if test "$libtool" = yes; then
|
| + tmpdepfile1=$dir$base.u
|
| + tmpdepfile2=$base.u
|
| + tmpdepfile3=$dir.libs/$base.u
|
| "$@" -Wc,-M
|
| else
|
| + tmpdepfile1=$dir$base.u
|
| + tmpdepfile2=$dir$base.u
|
| + tmpdepfile3=$dir$base.u
|
| "$@" -M
|
| fi
|
| stat=$?
|
|
|
| - if test -f "$tmpdepfile"; then :
|
| - else
|
| - stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
| - tmpdepfile="$stripped.u"
|
| - fi
|
| -
|
| if test $stat -eq 0; then :
|
| else
|
| - rm -f "$tmpdepfile"
|
| + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
| exit $stat
|
| fi
|
|
|
| + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
| + do
|
| + test -f "$tmpdepfile" && break
|
| + done
|
| if test -f "$tmpdepfile"; then
|
| - outname="$stripped.o"
|
| # Each line is of the form `foo.o: dependent.h'.
|
| # Do two passes, one to just change these to
|
| # `$object: dependent.h' and one to simply `dependent.h:'.
|
| - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
| - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
| + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
| + # That's a tab and a space in the [].
|
| + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
| else
|
| # The sourcefile does not contain any dependencies, so just
|
| # store a dummy comment line, to avoid errors with the Makefile
|
| @@ -276,27 +302,49 @@ icc)
|
| rm -f "$tmpdepfile"
|
| ;;
|
|
|
| -ia64hp)
|
| - # The "hp" stanza above does not work with HP's ia64 compilers,
|
| - # which have integrated preprocessors. The correct option to use
|
| - # with these is +Maked; it writes dependencies to a file named
|
| +hp2)
|
| + # The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
| + # compilers, which have integrated preprocessors. The correct option
|
| + # to use with these is +Maked; it writes dependencies to a file named
|
| # 'foo.d', which lands next to the object file, wherever that
|
| # happens to be.
|
| - tmpdepfile=`echo "$object" | sed -e 's/\.o$/.d/'`
|
| - "$@" +Maked
|
| + # Much of this is similar to the tru64 case; see comments there.
|
| + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
| + test "x$dir" = "x$object" && dir=
|
| + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
| + if test "$libtool" = yes; then
|
| + tmpdepfile1=$dir$base.d
|
| + tmpdepfile2=$dir.libs/$base.d
|
| + "$@" -Wc,+Maked
|
| + else
|
| + tmpdepfile1=$dir$base.d
|
| + tmpdepfile2=$dir$base.d
|
| + "$@" +Maked
|
| + fi
|
| stat=$?
|
| if test $stat -eq 0; then :
|
| else
|
| - rm -f "$tmpdepfile"
|
| + rm -f "$tmpdepfile1" "$tmpdepfile2"
|
| exit $stat
|
| fi
|
| - rm -f "$depfile"
|
|
|
| - # The object file name is correct already.
|
| - cat "$tmpdepfile" > "$depfile"
|
| - # Add `dependent.h:' lines.
|
| - sed -ne '2,${; s/^ //; s/ \\*$//; s/$/:/; p; }' "$tmpdepfile" >> "$depfile"
|
| - rm -f "$tmpdepfile"
|
| + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
| + do
|
| + test -f "$tmpdepfile" && break
|
| + done
|
| + if test -f "$tmpdepfile"; then
|
| + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
| + # Add `dependent.h:' lines.
|
| + sed -ne '2,${
|
| + s/^ *//
|
| + s/ \\*$//
|
| + s/$/:/
|
| + p
|
| + }' "$tmpdepfile" >> "$depfile"
|
| + else
|
| + echo "#dummy" > "$depfile"
|
| + fi
|
| + rm -f "$tmpdepfile" "$tmpdepfile2"
|
| ;;
|
|
|
| tru64)
|
| @@ -311,13 +359,13 @@ tru64)
|
|
|
| if test "$libtool" = yes; then
|
| # With Tru64 cc, shared objects can also be used to make a
|
| - # static library. This mecanism is used in libtool 1.4 series to
|
| + # static library. This mechanism is used in libtool 1.4 series to
|
| # handle both shared and static libraries in a single compilation.
|
| # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
| #
|
| # With libtool 1.5 this exception was removed, and libtool now
|
| # generates 2 separate objects for the 2 libraries. These two
|
| - # compilations output dependencies in in $dir.libs/$base.o.d and
|
| + # compilations output dependencies in $dir.libs/$base.o.d and
|
| # in $dir$base.o.d. We have to check for both files, because
|
| # one of the two compilations can be disabled. We should prefer
|
| # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
| @@ -368,7 +416,7 @@ dashmstdout)
|
|
|
| # Remove the call to Libtool.
|
| if test "$libtool" = yes; then
|
| - while test $1 != '--mode=compile'; do
|
| + while test "X$1" != 'X--mode=compile'; do
|
| shift
|
| done
|
| shift
|
| @@ -419,32 +467,39 @@ makedepend)
|
| "$@" || exit $?
|
| # Remove any Libtool call
|
| if test "$libtool" = yes; then
|
| - while test $1 != '--mode=compile'; do
|
| + while test "X$1" != 'X--mode=compile'; do
|
| shift
|
| done
|
| shift
|
| fi
|
| # X makedepend
|
| shift
|
| - cleared=no
|
| - for arg in "$@"; do
|
| + cleared=no eat=no
|
| + for arg
|
| + do
|
| case $cleared in
|
| no)
|
| set ""; shift
|
| cleared=yes ;;
|
| esac
|
| + if test $eat = yes; then
|
| + eat=no
|
| + continue
|
| + fi
|
| case "$arg" in
|
| -D*|-I*)
|
| set fnord "$@" "$arg"; shift ;;
|
| # Strip any option that makedepend may not understand. Remove
|
| # the object too, otherwise makedepend will parse it as a source file.
|
| + -arch)
|
| + eat=yes ;;
|
| -*|$object)
|
| ;;
|
| *)
|
| set fnord "$@" "$arg"; shift ;;
|
| esac
|
| done
|
| - obj_suffix="`echo $object | sed 's/^.*\././'`"
|
| + obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
| touch "$tmpdepfile"
|
| ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
| rm -f "$depfile"
|
| @@ -464,7 +519,7 @@ cpp)
|
|
|
| # Remove the call to Libtool.
|
| if test "$libtool" = yes; then
|
| - while test $1 != '--mode=compile'; do
|
| + while test "X$1" != 'X--mode=compile'; do
|
| shift
|
| done
|
| shift
|
| @@ -502,13 +557,27 @@ cpp)
|
|
|
| msvisualcpp)
|
| # Important note: in order to support this mode, a compiler *must*
|
| - # always write the preprocessed file to stdout, regardless of -o,
|
| - # because we must use -o when running libtool.
|
| + # always write the preprocessed file to stdout.
|
| "$@" || exit $?
|
| +
|
| + # Remove the call to Libtool.
|
| + if test "$libtool" = yes; then
|
| + while test "X$1" != 'X--mode=compile'; do
|
| + shift
|
| + done
|
| + shift
|
| + fi
|
| +
|
| IFS=" "
|
| for arg
|
| do
|
| case "$arg" in
|
| + -o)
|
| + shift
|
| + ;;
|
| + $object)
|
| + shift
|
| + ;;
|
| "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
| set fnord "$@"
|
| shift
|
| @@ -521,16 +590,23 @@ msvisualcpp)
|
| ;;
|
| esac
|
| done
|
| - "$@" -E |
|
| - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
| + "$@" -E 2>/dev/null |
|
| + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
| rm -f "$depfile"
|
| echo "$object : \\" > "$depfile"
|
| - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
| + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
| echo " " >> "$depfile"
|
| - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
| + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
| rm -f "$tmpdepfile"
|
| ;;
|
|
|
| +msvcmsys)
|
| + # This case exists only to let depend.m4 do its work. It works by
|
| + # looking at the text of this script. This case will never be run,
|
| + # since it is checked for above.
|
| + exit 1
|
| + ;;
|
| +
|
| none)
|
| exec "$@"
|
| ;;
|
| @@ -549,5 +625,6 @@ exit 0
|
| # eval: (add-hook 'write-file-hooks 'time-stamp)
|
| # time-stamp-start: "scriptversion="
|
| # time-stamp-format: "%:y-%02m-%02d.%02H"
|
| -# time-stamp-end: "$"
|
| +# time-stamp-time-zone: "UTC"
|
| +# time-stamp-end: "; # UTC"
|
| # End:
|
|
|