Blame depcomp

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