diff options
Diffstat (limited to 'aux-build/depcomp')
| -rwxr-xr-x | aux-build/depcomp | 220 | 
1 files changed, 164 insertions, 56 deletions
| diff --git a/aux-build/depcomp b/aux-build/depcomp index 11e2d3b..df8eea7 100755 --- a/aux-build/depcomp +++ b/aux-build/depcomp @@ -1,9 +1,10 @@  #! /bin/sh  # depcomp - compile a program generating dependencies as side-effects -scriptversion=2004-05-31.23 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999, 2000, 2003, 2004 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=2004-05-31.23  # 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, 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 @@ -50,11 +49,11 @@ Environment variables:  Report bugs to <bug-automake@gnu.org>.  EOF -    exit 0 +    exit $?      ;;    -v | --v*)      echo "depcomp $scriptversion" -    exit 0 +    exit $?      ;;  esac @@ -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,6 +302,51 @@ icc)    rm -f "$tmpdepfile"    ;; +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. +  # 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 "$tmpdepfile1" "$tmpdepfile2" +     exit $stat +  fi + +  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)     # The Tru64 compiler uses -MD to generate dependencies as a side     # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. @@ -287,36 +358,43 @@ tru64)     base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`     if test "$libtool" = yes; then -      # Dependencies are output in .lo.d with libtool 1.4. -      # With libtool 1.5 they are output both in $dir.libs/$base.o.d -      # and in $dir.libs/$base.o.d and $dir$base.o.d.  We process the -      # latter, because the former will be cleaned when $dir.libs is -      # erased. -      tmpdepfile1="$dir.libs/$base.lo.d" -      tmpdepfile2="$dir$base.o.d" -      tmpdepfile3="$dir.libs/$base.d" +      # With Tru64 cc, shared objects can also be used to make a +      # 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 $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 +      # automatically cleaned when .libs/ is deleted, while ignoring +      # the former would cause a distcleancheck panic. +      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4 +      tmpdepfile2=$dir$base.o.d          # libtool 1.5 +      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5 +      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504        "$@" -Wc,-MD     else -      tmpdepfile1="$dir$base.o.d" -      tmpdepfile2="$dir$base.d" -      tmpdepfile3="$dir$base.d" +      tmpdepfile1=$dir$base.o.d +      tmpdepfile2=$dir$base.d +      tmpdepfile3=$dir$base.d +      tmpdepfile4=$dir$base.d        "$@" -MD     fi     stat=$?     if test $stat -eq 0; then :     else -      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" +      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"        exit $stat     fi -   if test -f "$tmpdepfile1"; then -      tmpdepfile="$tmpdepfile1" -   elif test -f "$tmpdepfile2"; then -      tmpdepfile="$tmpdepfile2" -   else -      tmpdepfile="$tmpdepfile3" -   fi +   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" +   do +     test -f "$tmpdepfile" && break +   done     if test -f "$tmpdepfile"; then        sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"        # That's a tab and a space in the []. @@ -338,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 @@ -389,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" @@ -434,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 @@ -460,7 +545,8 @@ cpp)    done    "$@" -E | -    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | +    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ +       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |      sed '$ s: \\$::' > "$tmpdepfile"    rm -f "$depfile"    echo "$object : \\" > "$depfile" @@ -471,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 @@ -490,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 "$@"    ;; @@ -518,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: | 
