Blame depcomp

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