Blame depcomp

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