171d7fec4Smrg#! /bin/sh
271d7fec4Smrg# depcomp - compile a program generating dependencies as side-effects
371d7fec4Smrg
471d7fec4Smrgscriptversion=2005-07-09.11
571d7fec4Smrg
671d7fec4Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
771d7fec4Smrg
871d7fec4Smrg# This program is free software; you can redistribute it and/or modify
971d7fec4Smrg# it under the terms of the GNU General Public License as published by
1071d7fec4Smrg# the Free Software Foundation; either version 2, or (at your option)
1171d7fec4Smrg# any later version.
1271d7fec4Smrg
1371d7fec4Smrg# This program is distributed in the hope that it will be useful,
1471d7fec4Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1571d7fec4Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1671d7fec4Smrg# GNU General Public License for more details.
1771d7fec4Smrg
1871d7fec4Smrg# You should have received a copy of the GNU General Public License
1971d7fec4Smrg# along with this program; if not, write to the Free Software
2071d7fec4Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2171d7fec4Smrg# 02110-1301, USA.
2271d7fec4Smrg
2371d7fec4Smrg# As a special exception to the GNU General Public License, if you
2471d7fec4Smrg# distribute this file as part of a program that contains a
2571d7fec4Smrg# configuration script generated by Autoconf, you may include it under
2671d7fec4Smrg# the same distribution terms that you use for the rest of that program.
2771d7fec4Smrg
2871d7fec4Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2971d7fec4Smrg
3071d7fec4Smrgcase $1 in
3171d7fec4Smrg  '')
3271d7fec4Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3371d7fec4Smrg     exit 1;
3471d7fec4Smrg     ;;
3571d7fec4Smrg  -h | --h*)
3671d7fec4Smrg    cat <<\EOF
3771d7fec4SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3871d7fec4Smrg
3971d7fec4SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4071d7fec4Smrgas side-effects.
4171d7fec4Smrg
4271d7fec4SmrgEnvironment variables:
4371d7fec4Smrg  depmode     Dependency tracking mode.
4471d7fec4Smrg  source      Source file read by `PROGRAMS ARGS'.
4571d7fec4Smrg  object      Object file output by `PROGRAMS ARGS'.
4671d7fec4Smrg  DEPDIR      directory where to store dependencies.
4771d7fec4Smrg  depfile     Dependency file to output.
4871d7fec4Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
4971d7fec4Smrg  libtool     Whether libtool is used (yes/no).
5071d7fec4Smrg
5171d7fec4SmrgReport bugs to <bug-automake@gnu.org>.
5271d7fec4SmrgEOF
5371d7fec4Smrg    exit $?
5471d7fec4Smrg    ;;
5571d7fec4Smrg  -v | --v*)
5671d7fec4Smrg    echo "depcomp $scriptversion"
5771d7fec4Smrg    exit $?
5871d7fec4Smrg    ;;
5971d7fec4Smrgesac
6071d7fec4Smrg
6171d7fec4Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6271d7fec4Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6371d7fec4Smrg  exit 1
6471d7fec4Smrgfi
6571d7fec4Smrg
6671d7fec4Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6771d7fec4Smrgdepfile=${depfile-`echo "$object" |
6871d7fec4Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6971d7fec4Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7071d7fec4Smrg
7171d7fec4Smrgrm -f "$tmpdepfile"
7271d7fec4Smrg
7371d7fec4Smrg# Some modes work just like other modes, but use different flags.  We
7471d7fec4Smrg# parameterize here, but still list the modes in the big case below,
7571d7fec4Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7671d7fec4Smrg# here, because this file can only contain one case statement.
7771d7fec4Smrgif test "$depmode" = hp; then
7871d7fec4Smrg  # HP compiler uses -M and no extra arg.
7971d7fec4Smrg  gccflag=-M
8071d7fec4Smrg  depmode=gcc
8171d7fec4Smrgfi
8271d7fec4Smrg
8371d7fec4Smrgif test "$depmode" = dashXmstdout; then
8471d7fec4Smrg   # This is just like dashmstdout with a different argument.
8571d7fec4Smrg   dashmflag=-xM
8671d7fec4Smrg   depmode=dashmstdout
8771d7fec4Smrgfi
8871d7fec4Smrg
8971d7fec4Smrgcase "$depmode" in
9071d7fec4Smrggcc3)
9171d7fec4Smrg## gcc 3 implements dependency tracking that does exactly what
9271d7fec4Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9371d7fec4Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9471d7fec4Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
9571d7fec4Smrg  stat=$?
9671d7fec4Smrg  if test $stat -eq 0; then :
9771d7fec4Smrg  else
9871d7fec4Smrg    rm -f "$tmpdepfile"
9971d7fec4Smrg    exit $stat
10071d7fec4Smrg  fi
10171d7fec4Smrg  mv "$tmpdepfile" "$depfile"
10271d7fec4Smrg  ;;
10371d7fec4Smrg
10471d7fec4Smrggcc)
10571d7fec4Smrg## There are various ways to get dependency output from gcc.  Here's
10671d7fec4Smrg## why we pick this rather obscure method:
10771d7fec4Smrg## - Don't want to use -MD because we'd like the dependencies to end
10871d7fec4Smrg##   up in a subdir.  Having to rename by hand is ugly.
10971d7fec4Smrg##   (We might end up doing this anyway to support other compilers.)
11071d7fec4Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
11171d7fec4Smrg##   -MM, not -M (despite what the docs say).
11271d7fec4Smrg## - Using -M directly means running the compiler twice (even worse
11371d7fec4Smrg##   than renaming).
11471d7fec4Smrg  if test -z "$gccflag"; then
11571d7fec4Smrg    gccflag=-MD,
11671d7fec4Smrg  fi
11771d7fec4Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
11871d7fec4Smrg  stat=$?
11971d7fec4Smrg  if test $stat -eq 0; then :
12071d7fec4Smrg  else
12171d7fec4Smrg    rm -f "$tmpdepfile"
12271d7fec4Smrg    exit $stat
12371d7fec4Smrg  fi
12471d7fec4Smrg  rm -f "$depfile"
12571d7fec4Smrg  echo "$object : \\" > "$depfile"
12671d7fec4Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
12771d7fec4Smrg## The second -e expression handles DOS-style file names with drive letters.
12871d7fec4Smrg  sed -e 's/^[^:]*: / /' \
12971d7fec4Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
13071d7fec4Smrg## This next piece of magic avoids the `deleted header file' problem.
13171d7fec4Smrg## The problem is that when a header file which appears in a .P file
13271d7fec4Smrg## is deleted, the dependency causes make to die (because there is
13371d7fec4Smrg## typically no way to rebuild the header).  We avoid this by adding
13471d7fec4Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
13571d7fec4Smrg## this for us directly.
13671d7fec4Smrg  tr ' ' '
13771d7fec4Smrg' < "$tmpdepfile" |
13871d7fec4Smrg## Some versions of gcc put a space before the `:'.  On the theory
13971d7fec4Smrg## that the space means something, we add a space to the output as
14071d7fec4Smrg## well.
14171d7fec4Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
14271d7fec4Smrg## correctly.  Breaking it into two sed invocations is a workaround.
14371d7fec4Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
14471d7fec4Smrg  rm -f "$tmpdepfile"
14571d7fec4Smrg  ;;
14671d7fec4Smrg
14771d7fec4Smrghp)
14871d7fec4Smrg  # This case exists only to let depend.m4 do its work.  It works by
14971d7fec4Smrg  # looking at the text of this script.  This case will never be run,
15071d7fec4Smrg  # since it is checked for above.
15171d7fec4Smrg  exit 1
15271d7fec4Smrg  ;;
15371d7fec4Smrg
15471d7fec4Smrgsgi)
15571d7fec4Smrg  if test "$libtool" = yes; then
15671d7fec4Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
15771d7fec4Smrg  else
15871d7fec4Smrg    "$@" -MDupdate "$tmpdepfile"
15971d7fec4Smrg  fi
16071d7fec4Smrg  stat=$?
16171d7fec4Smrg  if test $stat -eq 0; then :
16271d7fec4Smrg  else
16371d7fec4Smrg    rm -f "$tmpdepfile"
16471d7fec4Smrg    exit $stat
16571d7fec4Smrg  fi
16671d7fec4Smrg  rm -f "$depfile"
16771d7fec4Smrg
16871d7fec4Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
16971d7fec4Smrg    echo "$object : \\" > "$depfile"
17071d7fec4Smrg
17171d7fec4Smrg    # Clip off the initial element (the dependent).  Don't try to be
17271d7fec4Smrg    # clever and replace this with sed code, as IRIX sed won't handle
17371d7fec4Smrg    # lines with more than a fixed number of characters (4096 in
17471d7fec4Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
17571d7fec4Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
17671d7fec4Smrg    # dependency line.
17771d7fec4Smrg    tr ' ' '
17871d7fec4Smrg' < "$tmpdepfile" \
17971d7fec4Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
18071d7fec4Smrg    tr '
18171d7fec4Smrg' ' ' >> $depfile
18271d7fec4Smrg    echo >> $depfile
18371d7fec4Smrg
18471d7fec4Smrg    # The second pass generates a dummy entry for each header file.
18571d7fec4Smrg    tr ' ' '
18671d7fec4Smrg' < "$tmpdepfile" \
18771d7fec4Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
18871d7fec4Smrg   >> $depfile
18971d7fec4Smrg  else
19071d7fec4Smrg    # The sourcefile does not contain any dependencies, so just
19171d7fec4Smrg    # store a dummy comment line, to avoid errors with the Makefile
19271d7fec4Smrg    # "include basename.Plo" scheme.
19371d7fec4Smrg    echo "#dummy" > "$depfile"
19471d7fec4Smrg  fi
19571d7fec4Smrg  rm -f "$tmpdepfile"
19671d7fec4Smrg  ;;
19771d7fec4Smrg
19871d7fec4Smrgaix)
19971d7fec4Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
20071d7fec4Smrg  # in a .u file.  In older versions, this file always lives in the
20171d7fec4Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
20271d7fec4Smrg  # start of each line; $object doesn't have directory information.
20371d7fec4Smrg  # Version 6 uses the directory in both cases.
20471d7fec4Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
20571d7fec4Smrg  tmpdepfile="$stripped.u"
20671d7fec4Smrg  if test "$libtool" = yes; then
20771d7fec4Smrg    "$@" -Wc,-M
20871d7fec4Smrg  else
20971d7fec4Smrg    "$@" -M
21071d7fec4Smrg  fi
21171d7fec4Smrg  stat=$?
21271d7fec4Smrg
21371d7fec4Smrg  if test -f "$tmpdepfile"; then :
21471d7fec4Smrg  else
21571d7fec4Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
21671d7fec4Smrg    tmpdepfile="$stripped.u"
21771d7fec4Smrg  fi
21871d7fec4Smrg
21971d7fec4Smrg  if test $stat -eq 0; then :
22071d7fec4Smrg  else
22171d7fec4Smrg    rm -f "$tmpdepfile"
22271d7fec4Smrg    exit $stat
22371d7fec4Smrg  fi
22471d7fec4Smrg
22571d7fec4Smrg  if test -f "$tmpdepfile"; then
22671d7fec4Smrg    outname="$stripped.o"
22771d7fec4Smrg    # Each line is of the form `foo.o: dependent.h'.
22871d7fec4Smrg    # Do two passes, one to just change these to
22971d7fec4Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
23071d7fec4Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
23171d7fec4Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
23271d7fec4Smrg  else
23371d7fec4Smrg    # The sourcefile does not contain any dependencies, so just
23471d7fec4Smrg    # store a dummy comment line, to avoid errors with the Makefile
23571d7fec4Smrg    # "include basename.Plo" scheme.
23671d7fec4Smrg    echo "#dummy" > "$depfile"
23771d7fec4Smrg  fi
23871d7fec4Smrg  rm -f "$tmpdepfile"
23971d7fec4Smrg  ;;
24071d7fec4Smrg
24171d7fec4Smrgicc)
24271d7fec4Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
24371d7fec4Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
24471d7fec4Smrg  # ICC 7.0 will fill foo.d with something like
24571d7fec4Smrg  #    foo.o: sub/foo.c
24671d7fec4Smrg  #    foo.o: sub/foo.h
24771d7fec4Smrg  # which is wrong.  We want:
24871d7fec4Smrg  #    sub/foo.o: sub/foo.c
24971d7fec4Smrg  #    sub/foo.o: sub/foo.h
25071d7fec4Smrg  #    sub/foo.c:
25171d7fec4Smrg  #    sub/foo.h:
25271d7fec4Smrg  # ICC 7.1 will output
25371d7fec4Smrg  #    foo.o: sub/foo.c sub/foo.h
25471d7fec4Smrg  # and will wrap long lines using \ :
25571d7fec4Smrg  #    foo.o: sub/foo.c ... \
25671d7fec4Smrg  #     sub/foo.h ... \
25771d7fec4Smrg  #     ...
25871d7fec4Smrg
25971d7fec4Smrg  "$@" -MD -MF "$tmpdepfile"
26071d7fec4Smrg  stat=$?
26171d7fec4Smrg  if test $stat -eq 0; then :
26271d7fec4Smrg  else
26371d7fec4Smrg    rm -f "$tmpdepfile"
26471d7fec4Smrg    exit $stat
26571d7fec4Smrg  fi
26671d7fec4Smrg  rm -f "$depfile"
26771d7fec4Smrg  # Each line is of the form `foo.o: dependent.h',
26871d7fec4Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
26971d7fec4Smrg  # Do two passes, one to just change these to
27071d7fec4Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
27171d7fec4Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
27271d7fec4Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
27371d7fec4Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
27471d7fec4Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
27571d7fec4Smrg    sed -e 's/$/ :/' >> "$depfile"
27671d7fec4Smrg  rm -f "$tmpdepfile"
27771d7fec4Smrg  ;;
27871d7fec4Smrg
27971d7fec4Smrgtru64)
28071d7fec4Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
28171d7fec4Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
28271d7fec4Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
28371d7fec4Smrg   # dependencies in `foo.d' instead, so we check for that too.
28471d7fec4Smrg   # Subdirectories are respected.
28571d7fec4Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
28671d7fec4Smrg   test "x$dir" = "x$object" && dir=
28771d7fec4Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
28871d7fec4Smrg
28971d7fec4Smrg   if test "$libtool" = yes; then
29071d7fec4Smrg      # With Tru64 cc, shared objects can also be used to make a
29171d7fec4Smrg      # static library.  This mecanism is used in libtool 1.4 series to
29271d7fec4Smrg      # handle both shared and static libraries in a single compilation.
29371d7fec4Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
29471d7fec4Smrg      #
29571d7fec4Smrg      # With libtool 1.5 this exception was removed, and libtool now
29671d7fec4Smrg      # generates 2 separate objects for the 2 libraries.  These two
29771d7fec4Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
29871d7fec4Smrg      # in $dir$base.o.d.  We have to check for both files, because
29971d7fec4Smrg      # one of the two compilations can be disabled.  We should prefer
30071d7fec4Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
30171d7fec4Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
30271d7fec4Smrg      # the former would cause a distcleancheck panic.
30371d7fec4Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
30471d7fec4Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
30571d7fec4Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
30671d7fec4Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
30771d7fec4Smrg      "$@" -Wc,-MD
30871d7fec4Smrg   else
30971d7fec4Smrg      tmpdepfile1=$dir$base.o.d
31071d7fec4Smrg      tmpdepfile2=$dir$base.d
31171d7fec4Smrg      tmpdepfile3=$dir$base.d
31271d7fec4Smrg      tmpdepfile4=$dir$base.d
31371d7fec4Smrg      "$@" -MD
31471d7fec4Smrg   fi
31571d7fec4Smrg
31671d7fec4Smrg   stat=$?
31771d7fec4Smrg   if test $stat -eq 0; then :
31871d7fec4Smrg   else
31971d7fec4Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32071d7fec4Smrg      exit $stat
32171d7fec4Smrg   fi
32271d7fec4Smrg
32371d7fec4Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32471d7fec4Smrg   do
32571d7fec4Smrg     test -f "$tmpdepfile" && break
32671d7fec4Smrg   done
32771d7fec4Smrg   if test -f "$tmpdepfile"; then
32871d7fec4Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
32971d7fec4Smrg      # That's a tab and a space in the [].
33071d7fec4Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
33171d7fec4Smrg   else
33271d7fec4Smrg      echo "#dummy" > "$depfile"
33371d7fec4Smrg   fi
33471d7fec4Smrg   rm -f "$tmpdepfile"
33571d7fec4Smrg   ;;
33671d7fec4Smrg
33771d7fec4Smrg#nosideeffect)
33871d7fec4Smrg  # This comment above is used by automake to tell side-effect
33971d7fec4Smrg  # dependency tracking mechanisms from slower ones.
34071d7fec4Smrg
34171d7fec4Smrgdashmstdout)
34271d7fec4Smrg  # Important note: in order to support this mode, a compiler *must*
34371d7fec4Smrg  # always write the preprocessed file to stdout, regardless of -o.
34471d7fec4Smrg  "$@" || exit $?
34571d7fec4Smrg
34671d7fec4Smrg  # Remove the call to Libtool.
34771d7fec4Smrg  if test "$libtool" = yes; then
34871d7fec4Smrg    while test $1 != '--mode=compile'; do
34971d7fec4Smrg      shift
35071d7fec4Smrg    done
35171d7fec4Smrg    shift
35271d7fec4Smrg  fi
35371d7fec4Smrg
35471d7fec4Smrg  # Remove `-o $object'.
35571d7fec4Smrg  IFS=" "
35671d7fec4Smrg  for arg
35771d7fec4Smrg  do
35871d7fec4Smrg    case $arg in
35971d7fec4Smrg    -o)
36071d7fec4Smrg      shift
36171d7fec4Smrg      ;;
36271d7fec4Smrg    $object)
36371d7fec4Smrg      shift
36471d7fec4Smrg      ;;
36571d7fec4Smrg    *)
36671d7fec4Smrg      set fnord "$@" "$arg"
36771d7fec4Smrg      shift # fnord
36871d7fec4Smrg      shift # $arg
36971d7fec4Smrg      ;;
37071d7fec4Smrg    esac
37171d7fec4Smrg  done
37271d7fec4Smrg
37371d7fec4Smrg  test -z "$dashmflag" && dashmflag=-M
37471d7fec4Smrg  # Require at least two characters before searching for `:'
37571d7fec4Smrg  # in the target name.  This is to cope with DOS-style filenames:
37671d7fec4Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
37771d7fec4Smrg  "$@" $dashmflag |
37871d7fec4Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
37971d7fec4Smrg  rm -f "$depfile"
38071d7fec4Smrg  cat < "$tmpdepfile" > "$depfile"
38171d7fec4Smrg  tr ' ' '
38271d7fec4Smrg' < "$tmpdepfile" | \
38371d7fec4Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
38471d7fec4Smrg## correctly.  Breaking it into two sed invocations is a workaround.
38571d7fec4Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
38671d7fec4Smrg  rm -f "$tmpdepfile"
38771d7fec4Smrg  ;;
38871d7fec4Smrg
38971d7fec4SmrgdashXmstdout)
39071d7fec4Smrg  # This case only exists to satisfy depend.m4.  It is never actually
39171d7fec4Smrg  # run, as this mode is specially recognized in the preamble.
39271d7fec4Smrg  exit 1
39371d7fec4Smrg  ;;
39471d7fec4Smrg
39571d7fec4Smrgmakedepend)
39671d7fec4Smrg  "$@" || exit $?
39771d7fec4Smrg  # Remove any Libtool call
39871d7fec4Smrg  if test "$libtool" = yes; then
39971d7fec4Smrg    while test $1 != '--mode=compile'; do
40071d7fec4Smrg      shift
40171d7fec4Smrg    done
40271d7fec4Smrg    shift
40371d7fec4Smrg  fi
40471d7fec4Smrg  # X makedepend
40571d7fec4Smrg  shift
40671d7fec4Smrg  cleared=no
40771d7fec4Smrg  for arg in "$@"; do
40871d7fec4Smrg    case $cleared in
40971d7fec4Smrg    no)
41071d7fec4Smrg      set ""; shift
41171d7fec4Smrg      cleared=yes ;;
41271d7fec4Smrg    esac
41371d7fec4Smrg    case "$arg" in
41471d7fec4Smrg    -D*|-I*)
41571d7fec4Smrg      set fnord "$@" "$arg"; shift ;;
41671d7fec4Smrg    # Strip any option that makedepend may not understand.  Remove
41771d7fec4Smrg    # the object too, otherwise makedepend will parse it as a source file.
41871d7fec4Smrg    -*|$object)
41971d7fec4Smrg      ;;
42071d7fec4Smrg    *)
42171d7fec4Smrg      set fnord "$@" "$arg"; shift ;;
42271d7fec4Smrg    esac
42371d7fec4Smrg  done
42471d7fec4Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
42571d7fec4Smrg  touch "$tmpdepfile"
42671d7fec4Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
42771d7fec4Smrg  rm -f "$depfile"
42871d7fec4Smrg  cat < "$tmpdepfile" > "$depfile"
42971d7fec4Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
43071d7fec4Smrg' | \
43171d7fec4Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
43271d7fec4Smrg## correctly.  Breaking it into two sed invocations is a workaround.
43371d7fec4Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
43471d7fec4Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
43571d7fec4Smrg  ;;
43671d7fec4Smrg
43771d7fec4Smrgcpp)
43871d7fec4Smrg  # Important note: in order to support this mode, a compiler *must*
43971d7fec4Smrg  # always write the preprocessed file to stdout.
44071d7fec4Smrg  "$@" || exit $?
44171d7fec4Smrg
44271d7fec4Smrg  # Remove the call to Libtool.
44371d7fec4Smrg  if test "$libtool" = yes; then
44471d7fec4Smrg    while test $1 != '--mode=compile'; do
44571d7fec4Smrg      shift
44671d7fec4Smrg    done
44771d7fec4Smrg    shift
44871d7fec4Smrg  fi
44971d7fec4Smrg
45071d7fec4Smrg  # Remove `-o $object'.
45171d7fec4Smrg  IFS=" "
45271d7fec4Smrg  for arg
45371d7fec4Smrg  do
45471d7fec4Smrg    case $arg in
45571d7fec4Smrg    -o)
45671d7fec4Smrg      shift
45771d7fec4Smrg      ;;
45871d7fec4Smrg    $object)
45971d7fec4Smrg      shift
46071d7fec4Smrg      ;;
46171d7fec4Smrg    *)
46271d7fec4Smrg      set fnord "$@" "$arg"
46371d7fec4Smrg      shift # fnord
46471d7fec4Smrg      shift # $arg
46571d7fec4Smrg      ;;
46671d7fec4Smrg    esac
46771d7fec4Smrg  done
46871d7fec4Smrg
46971d7fec4Smrg  "$@" -E |
47071d7fec4Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
47171d7fec4Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
47271d7fec4Smrg    sed '$ s: \\$::' > "$tmpdepfile"
47371d7fec4Smrg  rm -f "$depfile"
47471d7fec4Smrg  echo "$object : \\" > "$depfile"
47571d7fec4Smrg  cat < "$tmpdepfile" >> "$depfile"
47671d7fec4Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
47771d7fec4Smrg  rm -f "$tmpdepfile"
47871d7fec4Smrg  ;;
47971d7fec4Smrg
48071d7fec4Smrgmsvisualcpp)
48171d7fec4Smrg  # Important note: in order to support this mode, a compiler *must*
48271d7fec4Smrg  # always write the preprocessed file to stdout, regardless of -o,
48371d7fec4Smrg  # because we must use -o when running libtool.
48471d7fec4Smrg  "$@" || exit $?
48571d7fec4Smrg  IFS=" "
48671d7fec4Smrg  for arg
48771d7fec4Smrg  do
48871d7fec4Smrg    case "$arg" in
48971d7fec4Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
49071d7fec4Smrg	set fnord "$@"
49171d7fec4Smrg	shift
49271d7fec4Smrg	shift
49371d7fec4Smrg	;;
49471d7fec4Smrg    *)
49571d7fec4Smrg	set fnord "$@" "$arg"
49671d7fec4Smrg	shift
49771d7fec4Smrg	shift
49871d7fec4Smrg	;;
49971d7fec4Smrg    esac
50071d7fec4Smrg  done
50171d7fec4Smrg  "$@" -E |
50271d7fec4Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
50371d7fec4Smrg  rm -f "$depfile"
50471d7fec4Smrg  echo "$object : \\" > "$depfile"
50571d7fec4Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
50671d7fec4Smrg  echo "	" >> "$depfile"
50771d7fec4Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
50871d7fec4Smrg  rm -f "$tmpdepfile"
50971d7fec4Smrg  ;;
51071d7fec4Smrg
51171d7fec4Smrgnone)
51271d7fec4Smrg  exec "$@"
51371d7fec4Smrg  ;;
51471d7fec4Smrg
51571d7fec4Smrg*)
51671d7fec4Smrg  echo "Unknown depmode $depmode" 1>&2
51771d7fec4Smrg  exit 1
51871d7fec4Smrg  ;;
51971d7fec4Smrgesac
52071d7fec4Smrg
52171d7fec4Smrgexit 0
52271d7fec4Smrg
52371d7fec4Smrg# Local Variables:
52471d7fec4Smrg# mode: shell-script
52571d7fec4Smrg# sh-indentation: 2
52671d7fec4Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
52771d7fec4Smrg# time-stamp-start: "scriptversion="
52871d7fec4Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
52971d7fec4Smrg# time-stamp-end: "$"
53071d7fec4Smrg# End:
531