Blame depcomp

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