Diff for /embedaddon/quagga/depcomp between versions 1.1.1.2 and 1.1.1.5

version 1.1.1.2, 2012/05/29 11:53:40 version 1.1.1.5, 2016/11/02 10:09:09
Line 1 Line 1
 #! /bin/sh  #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects  # depcomp - compile a program generating dependencies as side-effects
   
scriptversion=2011-12-04.11; # UTCscriptversion=2012-03-27.16; # UTC
   
 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,  # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
# 2011 Free Software Foundation, Inc.# 2011, 2012 Free Software Foundation, Inc.
   
 # This program is free software; you can redistribute it and/or modify  # 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  # it under the terms of the GNU General Public License as published by
Line 28  scriptversion=2011-12-04.11; # UTC Line 28  scriptversion=2011-12-04.11; # UTC
   
 case $1 in  case $1 in
   '')    '')
     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;       exit 1;
      ;;       ;;
   -h | --h*)    -h | --h*)
Line 40  as side-effects. Line 40  as side-effects.
   
 Environment variables:  Environment variables:
   depmode     Dependency tracking mode.    depmode     Dependency tracking mode.
  source      Source file read by `PROGRAMS ARGS'.  source      Source file read by 'PROGRAMS ARGS'.
  object      Object file output by `PROGRAMS ARGS'.  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.    DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.    depfile     Dependency file to output.
   tmpdepfile  Temporary file to use when outputting dependencies.    tmpdepfile  Temporary file to use when outputting dependencies.
Line 57  EOF Line 57  EOF
     ;;      ;;
 esac  esac
   
   # A tabulation character.
   tab='   '
   # A newline character.
   nl='
   '
   
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then  if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2    echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1    exit 1
Line 102  if test "$depmode" = msvc7msys; then Line 108  if test "$depmode" = msvc7msys; then
    depmode=msvc7     depmode=msvc7
 fi  fi
   
   if test "$depmode" = xlc; then
      # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
      gccflag=-qmakedep=gcc,-MF
      depmode=gcc
   fi
   
 case "$depmode" in  case "$depmode" in
 gcc3)  gcc3)
 ## gcc 3 implements dependency tracking that does exactly what  ## gcc 3 implements dependency tracking that does exactly what
Line 156  gcc) Line 168  gcc)
 ## The second -e expression handles DOS-style file names with drive letters.  ## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \    sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"        -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file  ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is  ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding  ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do  ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.  ## this for us directly.
  tr ' ' '  tr ' ' "$nl" < "$tmpdepfile" |
' < "$tmpdepfile" |## Some versions of gcc put a space before the ':'.  On the theory
## Some versions of gcc put a space before the `:'.  On the theory 
 ## that the space means something, we add a space to the output as  ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH  ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.  ## to the object.  Take care to not repeat it in the output.
Line 203  sgi) Line 214  sgi)
     # clever and replace this with sed code, as IRIX sed won't handle      # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in      # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;      # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
    # the IRIX cc adds comments like `#:fec' to the end of the    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.      # dependency line.
    tr ' ' '    tr ' ' "$nl" < "$tmpdepfile" \
' < "$tmpdepfile" \ 
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
    tr '    tr "$nl" ' ' >> "$depfile"
' ' ' >> "$depfile" 
     echo >> "$depfile"      echo >> "$depfile"
   
     # The second pass generates a dummy entry for each header file.      # The second pass generates a dummy entry for each header file.
    tr ' ' '    tr ' ' "$nl" < "$tmpdepfile" \
' < "$tmpdepfile" \ 
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    >> "$depfile"     >> "$depfile"
   else    else
Line 226  sgi) Line 234  sgi)
   rm -f "$tmpdepfile"    rm -f "$tmpdepfile"
   ;;    ;;
   
   xlc)
     # 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
     ;;
   
 aix)  aix)
   # The C for AIX Compiler uses -M and outputs the dependencies    # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the    # in a .u file.  In older versions, this file always lives in the
  # current directory.  Also, the AIX compiler puts `$object:' at the  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.    # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.    # Version 6 uses the directory in both cases.
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
Line 259  aix) Line 274  aix)
     test -f "$tmpdepfile" && break      test -f "$tmpdepfile" && break
   done    done
   if test -f "$tmpdepfile"; then    if test -f "$tmpdepfile"; then
    # Each line is of the form `foo.o: dependent.h'.    # Each line is of the form 'foo.o: dependent.h'.
     # Do two passes, one to just change these to      # Do two passes, one to just change these to
    # `$object: dependent.h' and one to simply `dependent.h:'.    # '$object: dependent.h' and one to simply 'dependent.h:'.
     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
    # That's a tab and a space in the [].    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 
   else    else
     # The sourcefile does not contain any dependencies, so just      # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile      # store a dummy comment line, to avoid errors with the Makefile
Line 275  aix) Line 289  aix)
   ;;    ;;
   
 icc)  icc)
  # Intel's C compiler understands `-MD -MF file'.  However on  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c  # However on
   #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
   # ICC 7.0 will fill foo.d with something like    # ICC 7.0 will fill foo.d with something like
   #    foo.o: sub/foo.c    #    foo.o: sub/foo.c
   #    foo.o: sub/foo.h    #    foo.o: sub/foo.h
  # which is wrong.  We want:  # which is wrong.  We want
   #    sub/foo.o: sub/foo.c    #    sub/foo.o: sub/foo.c
   #    sub/foo.o: sub/foo.h    #    sub/foo.o: sub/foo.h
   #    sub/foo.c:    #    sub/foo.c:
   #    sub/foo.h:    #    sub/foo.h:
   # ICC 7.1 will output    # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h    #    foo.o: sub/foo.c sub/foo.h
  # and will wrap long lines using \ :  # and will wrap long lines using '\':
   #    foo.o: sub/foo.c ... \    #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \    #     sub/foo.h ... \
   #     ...    #     ...
  # tcc 0.9.26 (FIXME still under development at the moment of writing)
   # will emit a similar output, but also prepend the continuation lines
   # with horizontal tabulation characters.
   "$@" -MD -MF "$tmpdepfile"    "$@" -MD -MF "$tmpdepfile"
   stat=$?    stat=$?
   if test $stat -eq 0; then :    if test $stat -eq 0; then :
Line 300  icc) Line 317  icc)
     exit $stat      exit $stat
   fi    fi
   rm -f "$depfile"    rm -f "$depfile"
  # Each line is of the form `foo.o: dependent.h',  # Each line is of the form 'foo.o: dependent.h',
  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
   # Do two passes, one to just change these to    # Do two passes, one to just change these to
  # `$object: dependent.h' and one to simply `dependent.h:'.  # '$object: dependent.h' and one to simply 'dependent.h:'.
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
  # Some versions of the HPUX 10.20 sed can't process this invocation    < "$tmpdepfile" > "$depfile"
  # correctly.  Breaking it into two sed invocations is a workaround.  sed '
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |    s/[ '"$tab"'][ '"$tab"']*/ /g
    sed -e 's/$/ :/' >> "$depfile"    s/^ *//
     s/ *\\*$//
     s/^[^:]*: *//
     /^$/d
     /:$/d
     s/$/ :/
   ' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"    rm -f "$tmpdepfile"
   ;;    ;;
   
Line 344  hp2) Line 367  hp2)
   done    done
   if test -f "$tmpdepfile"; then    if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"      sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
    # Add `dependent.h:' lines.    # Add 'dependent.h:' lines.
     sed -ne '2,${      sed -ne '2,${
                s/^ *//                 s/^ *//
                s/ \\*$//                 s/ \\*$//
Line 359  hp2) Line 382  hp2)
   
 tru64)  tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side     # The Tru64 compiler uses -MD to generate dependencies as a side
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put     # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
   # dependencies in `foo.d' instead, so we check for that too.   # dependencies in 'foo.d' instead, so we check for that too.
    # Subdirectories are respected.     # Subdirectories are respected.
    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`     dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    test "x$dir" = "x$object" && dir=     test "x$dir" = "x$object" && dir=
Line 407  tru64) Line 430  tru64)
    done     done
    if test -f "$tmpdepfile"; then     if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"        sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
      # That's a tab and a space in the [].      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 
    else     else
       echo "#dummy" > "$depfile"        echo "#dummy" > "$depfile"
    fi     fi
Line 443  msvc7) Line 465  msvc7)
   p    p
 }' | $cygpath_u | sort -u | sed -n '  }' | $cygpath_u | sort -u | sed -n '
 s/ /\\ /g  s/ /\\ /g
s/\(.*\)/       \1 \\/ps/\(.*\)/'"$tab"'\1 \\/p
 s/.\(.*\) \\/\1:/  s/.\(.*\) \\/\1:/
 H  H
 $ {  $ {
  s/.*/ /  s/.*/'"$tab"'/
   G    G
   p    p
 }' >> "$depfile"  }' >> "$depfile"
Line 478  dashmstdout) Line 500  dashmstdout)
     shift      shift
   fi    fi
   
  # Remove `-o $object'.  # Remove '-o $object'.
   IFS=" "    IFS=" "
   for arg    for arg
   do    do
Line 498  dashmstdout) Line 520  dashmstdout)
   done    done
   
   test -z "$dashmflag" && dashmflag=-M    test -z "$dashmflag" && dashmflag=-M
  # Require at least two characters before searching for `:'  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:    # in the target name.  This is to cope with DOS-style filenames:
  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |    "$@" $dashmflag |
    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"    rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"    cat < "$tmpdepfile" > "$depfile"
  tr ' ' '  tr ' ' "$nl" < "$tmpdepfile" | \
' < "$tmpdepfile" | \ 
 ## Some versions of the HPUX 10.20 sed can't process this invocation  ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.  ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"      sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
Line 562  makedepend) Line 583  makedepend)
   # makedepend may prepend the VPATH from the source file name to the object.    # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.    # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"    sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
  sed '1,2d' "$tmpdepfile" | tr ' ' '  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
' | \ 
 ## Some versions of the HPUX 10.20 sed can't process this invocation  ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.  ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"      sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
Line 583  cpp) Line 603  cpp)
     shift      shift
   fi    fi
   
  # Remove `-o $object'.  # Remove '-o $object'.
   IFS=" "    IFS=" "
   for arg    for arg
   do    do
Line 652  msvisualcpp) Line 672  msvisualcpp)
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"    sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"    rm -f "$depfile"
   echo "$object : \\" > "$depfile"    echo "$object : \\" > "$depfile"
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
  echo "        " >> "$depfile"  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"    sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"    rm -f "$tmpdepfile"
   ;;    ;;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>