Blame depcomp

Packit db3073
#! /bin/sh
Packit db3073
# depcomp - compile a program generating dependencies as side-effects
Packit db3073
Packit db3073
scriptversion=2012-03-27.16; # UTC
Packit db3073
Packit db3073
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
Packit db3073
# 2011, 2012 Free Software Foundation, Inc.
Packit db3073
Packit db3073
# This program is free software; you can redistribute it and/or modify
Packit db3073
# it under the terms of the GNU General Public License as published by
Packit db3073
# the Free Software Foundation; either version 2, or (at your option)
Packit db3073
# any later version.
Packit db3073
Packit db3073
# This program is distributed in the hope that it will be useful,
Packit db3073
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit db3073
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit db3073
# GNU General Public License for more details.
Packit db3073
Packit db3073
# You should have received a copy of the GNU General Public License
Packit db3073
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit db3073
Packit db3073
# As a special exception to the GNU General Public License, if you
Packit db3073
# distribute this file as part of a program that contains a
Packit db3073
# configuration script generated by Autoconf, you may include it under
Packit db3073
# the same distribution terms that you use for the rest of that program.
Packit db3073
Packit db3073
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
Packit db3073
Packit db3073
case $1 in
Packit db3073
  '')
Packit db3073
     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
Packit db3073
     exit 1;
Packit db3073
     ;;
Packit db3073
  -h | --h*)
Packit db3073
    cat <<\EOF
Packit db3073
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Packit db3073
Packit db3073
Run PROGRAMS ARGS to compile a file, generating dependencies
Packit db3073
as side-effects.
Packit db3073
Packit db3073
Environment variables:
Packit db3073
  depmode     Dependency tracking mode.
Packit db3073
  source      Source file read by 'PROGRAMS ARGS'.
Packit db3073
  object      Object file output by 'PROGRAMS ARGS'.
Packit db3073
  DEPDIR      directory where to store dependencies.
Packit db3073
  depfile     Dependency file to output.
Packit db3073
  tmpdepfile  Temporary file to use when outputting dependencies.
Packit db3073
  libtool     Whether libtool is used (yes/no).
Packit db3073
Packit db3073
Report bugs to <bug-automake@gnu.org>.
Packit db3073
EOF
Packit db3073
    exit $?
Packit db3073
    ;;
Packit db3073
  -v | --v*)
Packit db3073
    echo "depcomp $scriptversion"
Packit db3073
    exit $?
Packit db3073
    ;;
Packit db3073
esac
Packit db3073
Packit db3073
# A tabulation character.
Packit db3073
tab='	'
Packit db3073
# A newline character.
Packit db3073
nl='
Packit db3073
'
Packit db3073
Packit db3073
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
Packit db3073
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
Packit db3073
  exit 1
Packit db3073
fi
Packit db3073
Packit db3073
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
Packit db3073
depfile=${depfile-`echo "$object" |
Packit db3073
  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
Packit db3073
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
Packit db3073
Packit db3073
rm -f "$tmpdepfile"
Packit db3073
Packit db3073
# Some modes work just like other modes, but use different flags.  We
Packit db3073
# parameterize here, but still list the modes in the big case below,
Packit db3073
# to make depend.m4 easier to write.  Note that we *cannot* use a case
Packit db3073
# here, because this file can only contain one case statement.
Packit db3073
if test "$depmode" = hp; then
Packit db3073
  # HP compiler uses -M and no extra arg.
Packit db3073
  gccflag=-M
Packit db3073
  depmode=gcc
Packit db3073
fi
Packit db3073
Packit db3073
if test "$depmode" = dashXmstdout; then
Packit db3073
   # This is just like dashmstdout with a different argument.
Packit db3073
   dashmflag=-xM
Packit db3073
   depmode=dashmstdout
Packit db3073
fi
Packit db3073
Packit db3073
cygpath_u="cygpath -u -f -"
Packit db3073
if test "$depmode" = msvcmsys; then
Packit db3073
   # This is just like msvisualcpp but w/o cygpath translation.
Packit db3073
   # Just convert the backslash-escaped backslashes to single forward
Packit db3073
   # slashes to satisfy depend.m4
Packit db3073
   cygpath_u='sed s,\\\\,/,g'
Packit db3073
   depmode=msvisualcpp
Packit db3073
fi
Packit db3073
Packit db3073
if test "$depmode" = msvc7msys; then
Packit db3073
   # This is just like msvc7 but w/o cygpath translation.
Packit db3073
   # Just convert the backslash-escaped backslashes to single forward
Packit db3073
   # slashes to satisfy depend.m4
Packit db3073
   cygpath_u='sed s,\\\\,/,g'
Packit db3073
   depmode=msvc7
Packit db3073
fi
Packit db3073
Packit db3073
if test "$depmode" = xlc; then
Packit db3073
   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
Packit db3073
   gccflag=-qmakedep=gcc,-MF
Packit db3073
   depmode=gcc
Packit db3073
fi
Packit db3073
Packit db3073
case "$depmode" in
Packit db3073
gcc3)
Packit db3073
## gcc 3 implements dependency tracking that does exactly what
Packit db3073
## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
Packit db3073
## it if -MD -MP comes after the -MF stuff.  Hmm.
Packit db3073
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
Packit db3073
## the command line argument order; so add the flags where they
Packit db3073
## appear in depend2.am.  Note that the slowdown incurred here
Packit db3073
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
Packit db3073
  for arg
Packit db3073
  do
Packit db3073
    case $arg in
Packit db3073
    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
Packit db3073
    *)  set fnord "$@" "$arg" ;;
Packit db3073
    esac
Packit db3073
    shift # fnord
Packit db3073
    shift # $arg
Packit db3073
  done
Packit db3073
  "$@"
Packit db3073
  stat=$?
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
  mv "$tmpdepfile" "$depfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
gcc)
Packit db3073
## There are various ways to get dependency output from gcc.  Here's
Packit db3073
## why we pick this rather obscure method:
Packit db3073
## - Don't want to use -MD because we'd like the dependencies to end
Packit db3073
##   up in a subdir.  Having to rename by hand is ugly.
Packit db3073
##   (We might end up doing this anyway to support other compilers.)
Packit db3073
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
Packit db3073
##   -MM, not -M (despite what the docs say).
Packit db3073
## - Using -M directly means running the compiler twice (even worse
Packit db3073
##   than renaming).
Packit db3073
  if test -z "$gccflag"; then
Packit db3073
    gccflag=-MD,
Packit db3073
  fi
Packit db3073
  "$@" -Wp,"$gccflag$tmpdepfile"
Packit db3073
  stat=$?
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
  rm -f "$depfile"
Packit db3073
  echo "$object : \\" > "$depfile"
Packit db3073
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Packit db3073
## The second -e expression handles DOS-style file names with drive letters.
Packit db3073
  sed -e 's/^[^:]*: / /' \
Packit db3073
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
Packit db3073
## This next piece of magic avoids the "deleted header file" problem.
Packit db3073
## The problem is that when a header file which appears in a .P file
Packit db3073
## is deleted, the dependency causes make to die (because there is
Packit db3073
## typically no way to rebuild the header).  We avoid this by adding
Packit db3073
## dummy dependencies for each header file.  Too bad gcc doesn't do
Packit db3073
## this for us directly.
Packit db3073
  tr ' ' "$nl" < "$tmpdepfile" |
Packit db3073
## Some versions of gcc put a space before the ':'.  On the theory
Packit db3073
## that the space means something, we add a space to the output as
Packit db3073
## well.  hp depmode also adds that space, but also prefixes the VPATH
Packit db3073
## to the object.  Take care to not repeat it in the output.
Packit db3073
## Some versions of the HPUX 10.20 sed can't process this invocation
Packit db3073
## correctly.  Breaking it into two sed invocations is a workaround.
Packit db3073
    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
Packit db3073
      | sed -e 's/$/ :/' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
hp)
Packit db3073
  # This case exists only to let depend.m4 do its work.  It works by
Packit db3073
  # looking at the text of this script.  This case will never be run,
Packit db3073
  # since it is checked for above.
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
Packit db3073
sgi)
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    "$@" "-Wp,-MDupdate,$tmpdepfile"
Packit db3073
  else
Packit db3073
    "$@" -MDupdate "$tmpdepfile"
Packit db3073
  fi
Packit db3073
  stat=$?
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
  rm -f "$depfile"
Packit db3073
Packit db3073
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
Packit db3073
    echo "$object : \\" > "$depfile"
Packit db3073
Packit db3073
    # Clip off the initial element (the dependent).  Don't try to be
Packit db3073
    # clever and replace this with sed code, as IRIX sed won't handle
Packit db3073
    # lines with more than a fixed number of characters (4096 in
Packit db3073
    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
Packit db3073
    # the IRIX cc adds comments like '#:fec' to the end of the
Packit db3073
    # dependency line.
Packit db3073
    tr ' ' "$nl" < "$tmpdepfile" \
Packit db3073
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
Packit db3073
    tr "$nl" ' ' >> "$depfile"
Packit db3073
    echo >> "$depfile"
Packit db3073
Packit db3073
    # The second pass generates a dummy entry for each header file.
Packit db3073
    tr ' ' "$nl" < "$tmpdepfile" \
Packit db3073
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
Packit db3073
   >> "$depfile"
Packit db3073
  else
Packit db3073
    # The sourcefile does not contain any dependencies, so just
Packit db3073
    # store a dummy comment line, to avoid errors with the Makefile
Packit db3073
    # "include basename.Plo" scheme.
Packit db3073
    echo "#dummy" > "$depfile"
Packit db3073
  fi
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
xlc)
Packit db3073
  # This case exists only to let depend.m4 do its work.  It works by
Packit db3073
  # looking at the text of this script.  This case will never be run,
Packit db3073
  # since it is checked for above.
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
Packit db3073
aix)
Packit db3073
  # The C for AIX Compiler uses -M and outputs the dependencies
Packit db3073
  # in a .u file.  In older versions, this file always lives in the
Packit db3073
  # current directory.  Also, the AIX compiler puts '$object:' at the
Packit db3073
  # start of each line; $object doesn't have directory information.
Packit db3073
  # Version 6 uses the directory in both cases.
Packit db3073
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
Packit db3073
  test "x$dir" = "x$object" && dir=
Packit db3073
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    tmpdepfile1=$dir$base.u
Packit db3073
    tmpdepfile2=$base.u
Packit db3073
    tmpdepfile3=$dir.libs/$base.u
Packit db3073
    "$@" -Wc,-M
Packit db3073
  else
Packit db3073
    tmpdepfile1=$dir$base.u
Packit db3073
    tmpdepfile2=$dir$base.u
Packit db3073
    tmpdepfile3=$dir$base.u
Packit db3073
    "$@" -M
Packit db3073
  fi
Packit db3073
  stat=$?
Packit db3073
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
Packit db3073
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit db3073
  do
Packit db3073
    test -f "$tmpdepfile" && break
Packit db3073
  done
Packit db3073
  if test -f "$tmpdepfile"; then
Packit db3073
    # Each line is of the form 'foo.o: dependent.h'.
Packit db3073
    # Do two passes, one to just change these to
Packit db3073
    # '$object: dependent.h' and one to simply 'dependent.h:'.
Packit db3073
    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
Packit db3073
    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
Packit db3073
  else
Packit db3073
    # The sourcefile does not contain any dependencies, so just
Packit db3073
    # store a dummy comment line, to avoid errors with the Makefile
Packit db3073
    # "include basename.Plo" scheme.
Packit db3073
    echo "#dummy" > "$depfile"
Packit db3073
  fi
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
icc)
Packit db3073
  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
Packit db3073
  # However on
Packit db3073
  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
Packit db3073
  # ICC 7.0 will fill foo.d with something like
Packit db3073
  #    foo.o: sub/foo.c
Packit db3073
  #    foo.o: sub/foo.h
Packit db3073
  # which is wrong.  We want
Packit db3073
  #    sub/foo.o: sub/foo.c
Packit db3073
  #    sub/foo.o: sub/foo.h
Packit db3073
  #    sub/foo.c:
Packit db3073
  #    sub/foo.h:
Packit db3073
  # ICC 7.1 will output
Packit db3073
  #    foo.o: sub/foo.c sub/foo.h
Packit db3073
  # and will wrap long lines using '\':
Packit db3073
  #    foo.o: sub/foo.c ... \
Packit db3073
  #     sub/foo.h ... \
Packit db3073
  #     ...
Packit db3073
  # tcc 0.9.26 (FIXME still under development at the moment of writing)
Packit db3073
  # will emit a similar output, but also prepend the continuation lines
Packit db3073
  # with horizontal tabulation characters.
Packit db3073
  "$@" -MD -MF "$tmpdepfile"
Packit db3073
  stat=$?
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
  rm -f "$depfile"
Packit db3073
  # Each line is of the form 'foo.o: dependent.h',
Packit db3073
  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
Packit db3073
  # Do two passes, one to just change these to
Packit db3073
  # '$object: dependent.h' and one to simply 'dependent.h:'.
Packit db3073
  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
Packit db3073
    < "$tmpdepfile" > "$depfile"
Packit db3073
  sed '
Packit db3073
    s/[ '"$tab"'][ '"$tab"']*/ /g
Packit db3073
    s/^ *//
Packit db3073
    s/ *\\*$//
Packit db3073
    s/^[^:]*: *//
Packit db3073
    /^$/d
Packit db3073
    /:$/d
Packit db3073
    s/$/ :/
Packit db3073
  ' < "$tmpdepfile" >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
hp2)
Packit db3073
  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
Packit db3073
  # compilers, which have integrated preprocessors.  The correct option
Packit db3073
  # to use with these is +Maked; it writes dependencies to a file named
Packit db3073
  # 'foo.d', which lands next to the object file, wherever that
Packit db3073
  # happens to be.
Packit db3073
  # Much of this is similar to the tru64 case; see comments there.
Packit db3073
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
Packit db3073
  test "x$dir" = "x$object" && dir=
Packit db3073
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    tmpdepfile1=$dir$base.d
Packit db3073
    tmpdepfile2=$dir.libs/$base.d
Packit db3073
    "$@" -Wc,+Maked
Packit db3073
  else
Packit db3073
    tmpdepfile1=$dir$base.d
Packit db3073
    tmpdepfile2=$dir$base.d
Packit db3073
    "$@" +Maked
Packit db3073
  fi
Packit db3073
  stat=$?
Packit db3073
  if test $stat -eq 0; then :
Packit db3073
  else
Packit db3073
     rm -f "$tmpdepfile1" "$tmpdepfile2"
Packit db3073
     exit $stat
Packit db3073
  fi
Packit db3073
Packit db3073
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
Packit db3073
  do
Packit db3073
    test -f "$tmpdepfile" && break
Packit db3073
  done
Packit db3073
  if test -f "$tmpdepfile"; then
Packit db3073
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
Packit db3073
    # Add 'dependent.h:' lines.
Packit db3073
    sed -ne '2,${
Packit db3073
	       s/^ *//
Packit db3073
	       s/ \\*$//
Packit db3073
	       s/$/:/
Packit db3073
	       p
Packit db3073
	     }' "$tmpdepfile" >> "$depfile"
Packit db3073
  else
Packit db3073
    echo "#dummy" > "$depfile"
Packit db3073
  fi
Packit db3073
  rm -f "$tmpdepfile" "$tmpdepfile2"
Packit db3073
  ;;
Packit db3073
Packit db3073
tru64)
Packit db3073
   # The Tru64 compiler uses -MD to generate dependencies as a side
Packit db3073
   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
Packit db3073
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
Packit db3073
   # dependencies in 'foo.d' instead, so we check for that too.
Packit db3073
   # Subdirectories are respected.
Packit db3073
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
Packit db3073
   test "x$dir" = "x$object" && dir=
Packit db3073
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
Packit db3073
Packit db3073
   if test "$libtool" = yes; then
Packit db3073
      # With Tru64 cc, shared objects can also be used to make a
Packit db3073
      # static library.  This mechanism is used in libtool 1.4 series to
Packit db3073
      # handle both shared and static libraries in a single compilation.
Packit db3073
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
Packit db3073
      #
Packit db3073
      # With libtool 1.5 this exception was removed, and libtool now
Packit db3073
      # generates 2 separate objects for the 2 libraries.  These two
Packit db3073
      # compilations output dependencies in $dir.libs/$base.o.d and
Packit db3073
      # in $dir$base.o.d.  We have to check for both files, because
Packit db3073
      # one of the two compilations can be disabled.  We should prefer
Packit db3073
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
Packit db3073
      # automatically cleaned when .libs/ is deleted, while ignoring
Packit db3073
      # the former would cause a distcleancheck panic.
Packit db3073
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
Packit db3073
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
Packit db3073
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
Packit db3073
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
Packit db3073
      "$@" -Wc,-MD
Packit db3073
   else
Packit db3073
      tmpdepfile1=$dir$base.o.d
Packit db3073
      tmpdepfile2=$dir$base.d
Packit db3073
      tmpdepfile3=$dir$base.d
Packit db3073
      tmpdepfile4=$dir$base.d
Packit db3073
      "$@" -MD
Packit db3073
   fi
Packit db3073
Packit db3073
   stat=$?
Packit db3073
   if test $stat -eq 0; then :
Packit db3073
   else
Packit db3073
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
Packit db3073
      exit $stat
Packit db3073
   fi
Packit db3073
Packit db3073
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
Packit db3073
   do
Packit db3073
     test -f "$tmpdepfile" && break
Packit db3073
   done
Packit db3073
   if test -f "$tmpdepfile"; then
Packit db3073
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
Packit db3073
      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
Packit db3073
   else
Packit db3073
      echo "#dummy" > "$depfile"
Packit db3073
   fi
Packit db3073
   rm -f "$tmpdepfile"
Packit db3073
   ;;
Packit db3073
Packit db3073
msvc7)
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    showIncludes=-Wc,-showIncludes
Packit db3073
  else
Packit db3073
    showIncludes=-showIncludes
Packit db3073
  fi
Packit db3073
  "$@" $showIncludes > "$tmpdepfile"
Packit db3073
  stat=$?
Packit db3073
  grep -v '^Note: including file: ' "$tmpdepfile"
Packit db3073
  if test "$stat" = 0; then :
Packit db3073
  else
Packit db3073
    rm -f "$tmpdepfile"
Packit db3073
    exit $stat
Packit db3073
  fi
Packit db3073
  rm -f "$depfile"
Packit db3073
  echo "$object : \\" > "$depfile"
Packit db3073
  # The first sed program below extracts the file names and escapes
Packit db3073
  # backslashes for cygpath.  The second sed program outputs the file
Packit db3073
  # name when reading, but also accumulates all include files in the
Packit db3073
  # hold buffer in order to output them again at the end.  This only
Packit db3073
  # works with sed implementations that can handle large buffers.
Packit db3073
  sed < "$tmpdepfile" -n '
Packit db3073
/^Note: including file:  *\(.*\)/ {
Packit db3073
  s//\1/
Packit db3073
  s/\\/\\\\/g
Packit db3073
  p
Packit db3073
}' | $cygpath_u | sort -u | sed -n '
Packit db3073
s/ /\\ /g
Packit db3073
s/\(.*\)/'"$tab"'\1 \\/p
Packit db3073
s/.\(.*\) \\/\1:/
Packit db3073
H
Packit db3073
$ {
Packit db3073
  s/.*/'"$tab"'/
Packit db3073
  G
Packit db3073
  p
Packit db3073
}' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
msvc7msys)
Packit db3073
  # This case exists only to let depend.m4 do its work.  It works by
Packit db3073
  # looking at the text of this script.  This case will never be run,
Packit db3073
  # since it is checked for above.
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
Packit db3073
#nosideeffect)
Packit db3073
  # This comment above is used by automake to tell side-effect
Packit db3073
  # dependency tracking mechanisms from slower ones.
Packit db3073
Packit db3073
dashmstdout)
Packit db3073
  # Important note: in order to support this mode, a compiler *must*
Packit db3073
  # always write the preprocessed file to stdout, regardless of -o.
Packit db3073
  "$@" || exit $?
Packit db3073
Packit db3073
  # Remove the call to Libtool.
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    while test "X$1" != 'X--mode=compile'; do
Packit db3073
      shift
Packit db3073
    done
Packit db3073
    shift
Packit db3073
  fi
Packit db3073
Packit db3073
  # Remove '-o $object'.
Packit db3073
  IFS=" "
Packit db3073
  for arg
Packit db3073
  do
Packit db3073
    case $arg in
Packit db3073
    -o)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    $object)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    *)
Packit db3073
      set fnord "$@" "$arg"
Packit db3073
      shift # fnord
Packit db3073
      shift # $arg
Packit db3073
      ;;
Packit db3073
    esac
Packit db3073
  done
Packit db3073
Packit db3073
  test -z "$dashmflag" && dashmflag=-M
Packit db3073
  # Require at least two characters before searching for ':'
Packit db3073
  # in the target name.  This is to cope with DOS-style filenames:
Packit db3073
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
Packit db3073
  "$@" $dashmflag |
Packit db3073
    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
Packit db3073
  rm -f "$depfile"
Packit db3073
  cat < "$tmpdepfile" > "$depfile"
Packit db3073
  tr ' ' "$nl" < "$tmpdepfile" | \
Packit db3073
## Some versions of the HPUX 10.20 sed can't process this invocation
Packit db3073
## correctly.  Breaking it into two sed invocations is a workaround.
Packit db3073
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
dashXmstdout)
Packit db3073
  # This case only exists to satisfy depend.m4.  It is never actually
Packit db3073
  # run, as this mode is specially recognized in the preamble.
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
Packit db3073
makedepend)
Packit db3073
  "$@" || exit $?
Packit db3073
  # Remove any Libtool call
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    while test "X$1" != 'X--mode=compile'; do
Packit db3073
      shift
Packit db3073
    done
Packit db3073
    shift
Packit db3073
  fi
Packit db3073
  # X makedepend
Packit db3073
  shift
Packit db3073
  cleared=no eat=no
Packit db3073
  for arg
Packit db3073
  do
Packit db3073
    case $cleared in
Packit db3073
    no)
Packit db3073
      set ""; shift
Packit db3073
      cleared=yes ;;
Packit db3073
    esac
Packit db3073
    if test $eat = yes; then
Packit db3073
      eat=no
Packit db3073
      continue
Packit db3073
    fi
Packit db3073
    case "$arg" in
Packit db3073
    -D*|-I*)
Packit db3073
      set fnord "$@" "$arg"; shift ;;
Packit db3073
    # Strip any option that makedepend may not understand.  Remove
Packit db3073
    # the object too, otherwise makedepend will parse it as a source file.
Packit db3073
    -arch)
Packit db3073
      eat=yes ;;
Packit db3073
    -*|$object)
Packit db3073
      ;;
Packit db3073
    *)
Packit db3073
      set fnord "$@" "$arg"; shift ;;
Packit db3073
    esac
Packit db3073
  done
Packit db3073
  obj_suffix=`echo "$object" | sed 's/^.*\././'`
Packit db3073
  touch "$tmpdepfile"
Packit db3073
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
Packit db3073
  rm -f "$depfile"
Packit db3073
  # makedepend may prepend the VPATH from the source file name to the object.
Packit db3073
  # No need to regex-escape $object, excess matching of '.' is harmless.
Packit db3073
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
Packit db3073
  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
Packit db3073
## Some versions of the HPUX 10.20 sed can't process this invocation
Packit db3073
## correctly.  Breaking it into two sed invocations is a workaround.
Packit db3073
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile" "$tmpdepfile".bak
Packit db3073
  ;;
Packit db3073
Packit db3073
cpp)
Packit db3073
  # Important note: in order to support this mode, a compiler *must*
Packit db3073
  # always write the preprocessed file to stdout.
Packit db3073
  "$@" || exit $?
Packit db3073
Packit db3073
  # Remove the call to Libtool.
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    while test "X$1" != 'X--mode=compile'; do
Packit db3073
      shift
Packit db3073
    done
Packit db3073
    shift
Packit db3073
  fi
Packit db3073
Packit db3073
  # Remove '-o $object'.
Packit db3073
  IFS=" "
Packit db3073
  for arg
Packit db3073
  do
Packit db3073
    case $arg in
Packit db3073
    -o)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    $object)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    *)
Packit db3073
      set fnord "$@" "$arg"
Packit db3073
      shift # fnord
Packit db3073
      shift # $arg
Packit db3073
      ;;
Packit db3073
    esac
Packit db3073
  done
Packit db3073
Packit db3073
  "$@" -E |
Packit db3073
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
Packit db3073
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
Packit db3073
    sed '$ s: \\$::' > "$tmpdepfile"
Packit db3073
  rm -f "$depfile"
Packit db3073
  echo "$object : \\" > "$depfile"
Packit db3073
  cat < "$tmpdepfile" >> "$depfile"
Packit db3073
  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
msvisualcpp)
Packit db3073
  # Important note: in order to support this mode, a compiler *must*
Packit db3073
  # always write the preprocessed file to stdout.
Packit db3073
  "$@" || exit $?
Packit db3073
Packit db3073
  # Remove the call to Libtool.
Packit db3073
  if test "$libtool" = yes; then
Packit db3073
    while test "X$1" != 'X--mode=compile'; do
Packit db3073
      shift
Packit db3073
    done
Packit db3073
    shift
Packit db3073
  fi
Packit db3073
Packit db3073
  IFS=" "
Packit db3073
  for arg
Packit db3073
  do
Packit db3073
    case "$arg" in
Packit db3073
    -o)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    $object)
Packit db3073
      shift
Packit db3073
      ;;
Packit db3073
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
Packit db3073
	set fnord "$@"
Packit db3073
	shift
Packit db3073
	shift
Packit db3073
	;;
Packit db3073
    *)
Packit db3073
	set fnord "$@" "$arg"
Packit db3073
	shift
Packit db3073
	shift
Packit db3073
	;;
Packit db3073
    esac
Packit db3073
  done
Packit db3073
  "$@" -E 2>/dev/null |
Packit db3073
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
Packit db3073
  rm -f "$depfile"
Packit db3073
  echo "$object : \\" > "$depfile"
Packit db3073
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
Packit db3073
  echo "$tab" >> "$depfile"
Packit db3073
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
Packit db3073
  rm -f "$tmpdepfile"
Packit db3073
  ;;
Packit db3073
Packit db3073
msvcmsys)
Packit db3073
  # This case exists only to let depend.m4 do its work.  It works by
Packit db3073
  # looking at the text of this script.  This case will never be run,
Packit db3073
  # since it is checked for above.
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
Packit db3073
none)
Packit db3073
  exec "$@"
Packit db3073
  ;;
Packit db3073
Packit db3073
*)
Packit db3073
  echo "Unknown depmode $depmode" 1>&2
Packit db3073
  exit 1
Packit db3073
  ;;
Packit db3073
esac
Packit db3073
Packit db3073
exit 0
Packit db3073
Packit db3073
# Local Variables:
Packit db3073
# mode: shell-script
Packit db3073
# sh-indentation: 2
Packit db3073
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit db3073
# time-stamp-start: "scriptversion="
Packit db3073
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit db3073
# time-stamp-time-zone: "UTC"
Packit db3073
# time-stamp-end: "; # UTC"
Packit db3073
# End: