depcomp revision 66fe65f6
166fe65f6Smrg#! /bin/sh
266fe65f6Smrg# depcomp - compile a program generating dependencies as side-effects
366fe65f6Smrg
466fe65f6Smrgscriptversion=2005-07-09.11
566fe65f6Smrg
666fe65f6Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
766fe65f6Smrg
866fe65f6Smrg# This program is free software; you can redistribute it and/or modify
966fe65f6Smrg# it under the terms of the GNU General Public License as published by
1066fe65f6Smrg# the Free Software Foundation; either version 2, or (at your option)
1166fe65f6Smrg# any later version.
1266fe65f6Smrg
1366fe65f6Smrg# This program is distributed in the hope that it will be useful,
1466fe65f6Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1566fe65f6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1666fe65f6Smrg# GNU General Public License for more details.
1766fe65f6Smrg
1866fe65f6Smrg# You should have received a copy of the GNU General Public License
1966fe65f6Smrg# along with this program; if not, write to the Free Software
2066fe65f6Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2166fe65f6Smrg# 02110-1301, USA.
2266fe65f6Smrg
2366fe65f6Smrg# As a special exception to the GNU General Public License, if you
2466fe65f6Smrg# distribute this file as part of a program that contains a
2566fe65f6Smrg# configuration script generated by Autoconf, you may include it under
2666fe65f6Smrg# the same distribution terms that you use for the rest of that program.
2766fe65f6Smrg
2866fe65f6Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2966fe65f6Smrg
3066fe65f6Smrgcase $1 in
3166fe65f6Smrg  '')
3266fe65f6Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3366fe65f6Smrg     exit 1;
3466fe65f6Smrg     ;;
3566fe65f6Smrg  -h | --h*)
3666fe65f6Smrg    cat <<\EOF
3766fe65f6SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3866fe65f6Smrg
3966fe65f6SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4066fe65f6Smrgas side-effects.
4166fe65f6Smrg
4266fe65f6SmrgEnvironment variables:
4366fe65f6Smrg  depmode     Dependency tracking mode.
4466fe65f6Smrg  source      Source file read by `PROGRAMS ARGS'.
4566fe65f6Smrg  object      Object file output by `PROGRAMS ARGS'.
4666fe65f6Smrg  DEPDIR      directory where to store dependencies.
4766fe65f6Smrg  depfile     Dependency file to output.
4866fe65f6Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
4966fe65f6Smrg  libtool     Whether libtool is used (yes/no).
5066fe65f6Smrg
5166fe65f6SmrgReport bugs to <bug-automake@gnu.org>.
5266fe65f6SmrgEOF
5366fe65f6Smrg    exit $?
5466fe65f6Smrg    ;;
5566fe65f6Smrg  -v | --v*)
5666fe65f6Smrg    echo "depcomp $scriptversion"
5766fe65f6Smrg    exit $?
5866fe65f6Smrg    ;;
5966fe65f6Smrgesac
6066fe65f6Smrg
6166fe65f6Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6266fe65f6Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6366fe65f6Smrg  exit 1
6466fe65f6Smrgfi
6566fe65f6Smrg
6666fe65f6Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6766fe65f6Smrgdepfile=${depfile-`echo "$object" |
6866fe65f6Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6966fe65f6Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7066fe65f6Smrg
7166fe65f6Smrgrm -f "$tmpdepfile"
7266fe65f6Smrg
7366fe65f6Smrg# Some modes work just like other modes, but use different flags.  We
7466fe65f6Smrg# parameterize here, but still list the modes in the big case below,
7566fe65f6Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7666fe65f6Smrg# here, because this file can only contain one case statement.
7766fe65f6Smrgif test "$depmode" = hp; then
7866fe65f6Smrg  # HP compiler uses -M and no extra arg.
7966fe65f6Smrg  gccflag=-M
8066fe65f6Smrg  depmode=gcc
8166fe65f6Smrgfi
8266fe65f6Smrg
8366fe65f6Smrgif test "$depmode" = dashXmstdout; then
8466fe65f6Smrg   # This is just like dashmstdout with a different argument.
8566fe65f6Smrg   dashmflag=-xM
8666fe65f6Smrg   depmode=dashmstdout
8766fe65f6Smrgfi
8866fe65f6Smrg
8966fe65f6Smrgcase "$depmode" in
9066fe65f6Smrggcc3)
9166fe65f6Smrg## gcc 3 implements dependency tracking that does exactly what
9266fe65f6Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9366fe65f6Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9466fe65f6Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
9566fe65f6Smrg  stat=$?
9666fe65f6Smrg  if test $stat -eq 0; then :
9766fe65f6Smrg  else
9866fe65f6Smrg    rm -f "$tmpdepfile"
9966fe65f6Smrg    exit $stat
10066fe65f6Smrg  fi
10166fe65f6Smrg  mv "$tmpdepfile" "$depfile"
10266fe65f6Smrg  ;;
10366fe65f6Smrg
10466fe65f6Smrggcc)
10566fe65f6Smrg## There are various ways to get dependency output from gcc.  Here's
10666fe65f6Smrg## why we pick this rather obscure method:
10766fe65f6Smrg## - Don't want to use -MD because we'd like the dependencies to end
10866fe65f6Smrg##   up in a subdir.  Having to rename by hand is ugly.
10966fe65f6Smrg##   (We might end up doing this anyway to support other compilers.)
11066fe65f6Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
11166fe65f6Smrg##   -MM, not -M (despite what the docs say).
11266fe65f6Smrg## - Using -M directly means running the compiler twice (even worse
11366fe65f6Smrg##   than renaming).
11466fe65f6Smrg  if test -z "$gccflag"; then
11566fe65f6Smrg    gccflag=-MD,
11666fe65f6Smrg  fi
11766fe65f6Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
11866fe65f6Smrg  stat=$?
11966fe65f6Smrg  if test $stat -eq 0; then :
12066fe65f6Smrg  else
12166fe65f6Smrg    rm -f "$tmpdepfile"
12266fe65f6Smrg    exit $stat
12366fe65f6Smrg  fi
12466fe65f6Smrg  rm -f "$depfile"
12566fe65f6Smrg  echo "$object : \\" > "$depfile"
12666fe65f6Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
12766fe65f6Smrg## The second -e expression handles DOS-style file names with drive letters.
12866fe65f6Smrg  sed -e 's/^[^:]*: / /' \
12966fe65f6Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
13066fe65f6Smrg## This next piece of magic avoids the `deleted header file' problem.
13166fe65f6Smrg## The problem is that when a header file which appears in a .P file
13266fe65f6Smrg## is deleted, the dependency causes make to die (because there is
13366fe65f6Smrg## typically no way to rebuild the header).  We avoid this by adding
13466fe65f6Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
13566fe65f6Smrg## this for us directly.
13666fe65f6Smrg  tr ' ' '
13766fe65f6Smrg' < "$tmpdepfile" |
13866fe65f6Smrg## Some versions of gcc put a space before the `:'.  On the theory
13966fe65f6Smrg## that the space means something, we add a space to the output as
14066fe65f6Smrg## well.
14166fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
14266fe65f6Smrg## correctly.  Breaking it into two sed invocations is a workaround.
14366fe65f6Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
14466fe65f6Smrg  rm -f "$tmpdepfile"
14566fe65f6Smrg  ;;
14666fe65f6Smrg
14766fe65f6Smrghp)
14866fe65f6Smrg  # This case exists only to let depend.m4 do its work.  It works by
14966fe65f6Smrg  # looking at the text of this script.  This case will never be run,
15066fe65f6Smrg  # since it is checked for above.
15166fe65f6Smrg  exit 1
15266fe65f6Smrg  ;;
15366fe65f6Smrg
15466fe65f6Smrgsgi)
15566fe65f6Smrg  if test "$libtool" = yes; then
15666fe65f6Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
15766fe65f6Smrg  else
15866fe65f6Smrg    "$@" -MDupdate "$tmpdepfile"
15966fe65f6Smrg  fi
16066fe65f6Smrg  stat=$?
16166fe65f6Smrg  if test $stat -eq 0; then :
16266fe65f6Smrg  else
16366fe65f6Smrg    rm -f "$tmpdepfile"
16466fe65f6Smrg    exit $stat
16566fe65f6Smrg  fi
16666fe65f6Smrg  rm -f "$depfile"
16766fe65f6Smrg
16866fe65f6Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
16966fe65f6Smrg    echo "$object : \\" > "$depfile"
17066fe65f6Smrg
17166fe65f6Smrg    # Clip off the initial element (the dependent).  Don't try to be
17266fe65f6Smrg    # clever and replace this with sed code, as IRIX sed won't handle
17366fe65f6Smrg    # lines with more than a fixed number of characters (4096 in
17466fe65f6Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
17566fe65f6Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
17666fe65f6Smrg    # dependency line.
17766fe65f6Smrg    tr ' ' '
17866fe65f6Smrg' < "$tmpdepfile" \
17966fe65f6Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
18066fe65f6Smrg    tr '
18166fe65f6Smrg' ' ' >> $depfile
18266fe65f6Smrg    echo >> $depfile
18366fe65f6Smrg
18466fe65f6Smrg    # The second pass generates a dummy entry for each header file.
18566fe65f6Smrg    tr ' ' '
18666fe65f6Smrg' < "$tmpdepfile" \
18766fe65f6Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
18866fe65f6Smrg   >> $depfile
18966fe65f6Smrg  else
19066fe65f6Smrg    # The sourcefile does not contain any dependencies, so just
19166fe65f6Smrg    # store a dummy comment line, to avoid errors with the Makefile
19266fe65f6Smrg    # "include basename.Plo" scheme.
19366fe65f6Smrg    echo "#dummy" > "$depfile"
19466fe65f6Smrg  fi
19566fe65f6Smrg  rm -f "$tmpdepfile"
19666fe65f6Smrg  ;;
19766fe65f6Smrg
19866fe65f6Smrgaix)
19966fe65f6Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
20066fe65f6Smrg  # in a .u file.  In older versions, this file always lives in the
20166fe65f6Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
20266fe65f6Smrg  # start of each line; $object doesn't have directory information.
20366fe65f6Smrg  # Version 6 uses the directory in both cases.
20466fe65f6Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
20566fe65f6Smrg  tmpdepfile="$stripped.u"
20666fe65f6Smrg  if test "$libtool" = yes; then
20766fe65f6Smrg    "$@" -Wc,-M
20866fe65f6Smrg  else
20966fe65f6Smrg    "$@" -M
21066fe65f6Smrg  fi
21166fe65f6Smrg  stat=$?
21266fe65f6Smrg
21366fe65f6Smrg  if test -f "$tmpdepfile"; then :
21466fe65f6Smrg  else
21566fe65f6Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
21666fe65f6Smrg    tmpdepfile="$stripped.u"
21766fe65f6Smrg  fi
21866fe65f6Smrg
21966fe65f6Smrg  if test $stat -eq 0; then :
22066fe65f6Smrg  else
22166fe65f6Smrg    rm -f "$tmpdepfile"
22266fe65f6Smrg    exit $stat
22366fe65f6Smrg  fi
22466fe65f6Smrg
22566fe65f6Smrg  if test -f "$tmpdepfile"; then
22666fe65f6Smrg    outname="$stripped.o"
22766fe65f6Smrg    # Each line is of the form `foo.o: dependent.h'.
22866fe65f6Smrg    # Do two passes, one to just change these to
22966fe65f6Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
23066fe65f6Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
23166fe65f6Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
23266fe65f6Smrg  else
23366fe65f6Smrg    # The sourcefile does not contain any dependencies, so just
23466fe65f6Smrg    # store a dummy comment line, to avoid errors with the Makefile
23566fe65f6Smrg    # "include basename.Plo" scheme.
23666fe65f6Smrg    echo "#dummy" > "$depfile"
23766fe65f6Smrg  fi
23866fe65f6Smrg  rm -f "$tmpdepfile"
23966fe65f6Smrg  ;;
24066fe65f6Smrg
24166fe65f6Smrgicc)
24266fe65f6Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
24366fe65f6Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
24466fe65f6Smrg  # ICC 7.0 will fill foo.d with something like
24566fe65f6Smrg  #    foo.o: sub/foo.c
24666fe65f6Smrg  #    foo.o: sub/foo.h
24766fe65f6Smrg  # which is wrong.  We want:
24866fe65f6Smrg  #    sub/foo.o: sub/foo.c
24966fe65f6Smrg  #    sub/foo.o: sub/foo.h
25066fe65f6Smrg  #    sub/foo.c:
25166fe65f6Smrg  #    sub/foo.h:
25266fe65f6Smrg  # ICC 7.1 will output
25366fe65f6Smrg  #    foo.o: sub/foo.c sub/foo.h
25466fe65f6Smrg  # and will wrap long lines using \ :
25566fe65f6Smrg  #    foo.o: sub/foo.c ... \
25666fe65f6Smrg  #     sub/foo.h ... \
25766fe65f6Smrg  #     ...
25866fe65f6Smrg
25966fe65f6Smrg  "$@" -MD -MF "$tmpdepfile"
26066fe65f6Smrg  stat=$?
26166fe65f6Smrg  if test $stat -eq 0; then :
26266fe65f6Smrg  else
26366fe65f6Smrg    rm -f "$tmpdepfile"
26466fe65f6Smrg    exit $stat
26566fe65f6Smrg  fi
26666fe65f6Smrg  rm -f "$depfile"
26766fe65f6Smrg  # Each line is of the form `foo.o: dependent.h',
26866fe65f6Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
26966fe65f6Smrg  # Do two passes, one to just change these to
27066fe65f6Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
27166fe65f6Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
27266fe65f6Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
27366fe65f6Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
27466fe65f6Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
27566fe65f6Smrg    sed -e 's/$/ :/' >> "$depfile"
27666fe65f6Smrg  rm -f "$tmpdepfile"
27766fe65f6Smrg  ;;
27866fe65f6Smrg
27966fe65f6Smrgtru64)
28066fe65f6Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
28166fe65f6Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
28266fe65f6Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
28366fe65f6Smrg   # dependencies in `foo.d' instead, so we check for that too.
28466fe65f6Smrg   # Subdirectories are respected.
28566fe65f6Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
28666fe65f6Smrg   test "x$dir" = "x$object" && dir=
28766fe65f6Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
28866fe65f6Smrg
28966fe65f6Smrg   if test "$libtool" = yes; then
29066fe65f6Smrg      # With Tru64 cc, shared objects can also be used to make a
29166fe65f6Smrg      # static library.  This mecanism is used in libtool 1.4 series to
29266fe65f6Smrg      # handle both shared and static libraries in a single compilation.
29366fe65f6Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
29466fe65f6Smrg      #
29566fe65f6Smrg      # With libtool 1.5 this exception was removed, and libtool now
29666fe65f6Smrg      # generates 2 separate objects for the 2 libraries.  These two
29766fe65f6Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
29866fe65f6Smrg      # in $dir$base.o.d.  We have to check for both files, because
29966fe65f6Smrg      # one of the two compilations can be disabled.  We should prefer
30066fe65f6Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
30166fe65f6Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
30266fe65f6Smrg      # the former would cause a distcleancheck panic.
30366fe65f6Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
30466fe65f6Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
30566fe65f6Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
30666fe65f6Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
30766fe65f6Smrg      "$@" -Wc,-MD
30866fe65f6Smrg   else
30966fe65f6Smrg      tmpdepfile1=$dir$base.o.d
31066fe65f6Smrg      tmpdepfile2=$dir$base.d
31166fe65f6Smrg      tmpdepfile3=$dir$base.d
31266fe65f6Smrg      tmpdepfile4=$dir$base.d
31366fe65f6Smrg      "$@" -MD
31466fe65f6Smrg   fi
31566fe65f6Smrg
31666fe65f6Smrg   stat=$?
31766fe65f6Smrg   if test $stat -eq 0; then :
31866fe65f6Smrg   else
31966fe65f6Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32066fe65f6Smrg      exit $stat
32166fe65f6Smrg   fi
32266fe65f6Smrg
32366fe65f6Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32466fe65f6Smrg   do
32566fe65f6Smrg     test -f "$tmpdepfile" && break
32666fe65f6Smrg   done
32766fe65f6Smrg   if test -f "$tmpdepfile"; then
32866fe65f6Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
32966fe65f6Smrg      # That's a tab and a space in the [].
33066fe65f6Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
33166fe65f6Smrg   else
33266fe65f6Smrg      echo "#dummy" > "$depfile"
33366fe65f6Smrg   fi
33466fe65f6Smrg   rm -f "$tmpdepfile"
33566fe65f6Smrg   ;;
33666fe65f6Smrg
33766fe65f6Smrg#nosideeffect)
33866fe65f6Smrg  # This comment above is used by automake to tell side-effect
33966fe65f6Smrg  # dependency tracking mechanisms from slower ones.
34066fe65f6Smrg
34166fe65f6Smrgdashmstdout)
34266fe65f6Smrg  # Important note: in order to support this mode, a compiler *must*
34366fe65f6Smrg  # always write the preprocessed file to stdout, regardless of -o.
34466fe65f6Smrg  "$@" || exit $?
34566fe65f6Smrg
34666fe65f6Smrg  # Remove the call to Libtool.
34766fe65f6Smrg  if test "$libtool" = yes; then
34866fe65f6Smrg    while test $1 != '--mode=compile'; do
34966fe65f6Smrg      shift
35066fe65f6Smrg    done
35166fe65f6Smrg    shift
35266fe65f6Smrg  fi
35366fe65f6Smrg
35466fe65f6Smrg  # Remove `-o $object'.
35566fe65f6Smrg  IFS=" "
35666fe65f6Smrg  for arg
35766fe65f6Smrg  do
35866fe65f6Smrg    case $arg in
35966fe65f6Smrg    -o)
36066fe65f6Smrg      shift
36166fe65f6Smrg      ;;
36266fe65f6Smrg    $object)
36366fe65f6Smrg      shift
36466fe65f6Smrg      ;;
36566fe65f6Smrg    *)
36666fe65f6Smrg      set fnord "$@" "$arg"
36766fe65f6Smrg      shift # fnord
36866fe65f6Smrg      shift # $arg
36966fe65f6Smrg      ;;
37066fe65f6Smrg    esac
37166fe65f6Smrg  done
37266fe65f6Smrg
37366fe65f6Smrg  test -z "$dashmflag" && dashmflag=-M
37466fe65f6Smrg  # Require at least two characters before searching for `:'
37566fe65f6Smrg  # in the target name.  This is to cope with DOS-style filenames:
37666fe65f6Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
37766fe65f6Smrg  "$@" $dashmflag |
37866fe65f6Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
37966fe65f6Smrg  rm -f "$depfile"
38066fe65f6Smrg  cat < "$tmpdepfile" > "$depfile"
38166fe65f6Smrg  tr ' ' '
38266fe65f6Smrg' < "$tmpdepfile" | \
38366fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
38466fe65f6Smrg## correctly.  Breaking it into two sed invocations is a workaround.
38566fe65f6Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
38666fe65f6Smrg  rm -f "$tmpdepfile"
38766fe65f6Smrg  ;;
38866fe65f6Smrg
38966fe65f6SmrgdashXmstdout)
39066fe65f6Smrg  # This case only exists to satisfy depend.m4.  It is never actually
39166fe65f6Smrg  # run, as this mode is specially recognized in the preamble.
39266fe65f6Smrg  exit 1
39366fe65f6Smrg  ;;
39466fe65f6Smrg
39566fe65f6Smrgmakedepend)
39666fe65f6Smrg  "$@" || exit $?
39766fe65f6Smrg  # Remove any Libtool call
39866fe65f6Smrg  if test "$libtool" = yes; then
39966fe65f6Smrg    while test $1 != '--mode=compile'; do
40066fe65f6Smrg      shift
40166fe65f6Smrg    done
40266fe65f6Smrg    shift
40366fe65f6Smrg  fi
40466fe65f6Smrg  # X makedepend
40566fe65f6Smrg  shift
40666fe65f6Smrg  cleared=no
40766fe65f6Smrg  for arg in "$@"; do
40866fe65f6Smrg    case $cleared in
40966fe65f6Smrg    no)
41066fe65f6Smrg      set ""; shift
41166fe65f6Smrg      cleared=yes ;;
41266fe65f6Smrg    esac
41366fe65f6Smrg    case "$arg" in
41466fe65f6Smrg    -D*|-I*)
41566fe65f6Smrg      set fnord "$@" "$arg"; shift ;;
41666fe65f6Smrg    # Strip any option that makedepend may not understand.  Remove
41766fe65f6Smrg    # the object too, otherwise makedepend will parse it as a source file.
41866fe65f6Smrg    -*|$object)
41966fe65f6Smrg      ;;
42066fe65f6Smrg    *)
42166fe65f6Smrg      set fnord "$@" "$arg"; shift ;;
42266fe65f6Smrg    esac
42366fe65f6Smrg  done
42466fe65f6Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
42566fe65f6Smrg  touch "$tmpdepfile"
42666fe65f6Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
42766fe65f6Smrg  rm -f "$depfile"
42866fe65f6Smrg  cat < "$tmpdepfile" > "$depfile"
42966fe65f6Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
43066fe65f6Smrg' | \
43166fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
43266fe65f6Smrg## correctly.  Breaking it into two sed invocations is a workaround.
43366fe65f6Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
43466fe65f6Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
43566fe65f6Smrg  ;;
43666fe65f6Smrg
43766fe65f6Smrgcpp)
43866fe65f6Smrg  # Important note: in order to support this mode, a compiler *must*
43966fe65f6Smrg  # always write the preprocessed file to stdout.
44066fe65f6Smrg  "$@" || exit $?
44166fe65f6Smrg
44266fe65f6Smrg  # Remove the call to Libtool.
44366fe65f6Smrg  if test "$libtool" = yes; then
44466fe65f6Smrg    while test $1 != '--mode=compile'; do
44566fe65f6Smrg      shift
44666fe65f6Smrg    done
44766fe65f6Smrg    shift
44866fe65f6Smrg  fi
44966fe65f6Smrg
45066fe65f6Smrg  # Remove `-o $object'.
45166fe65f6Smrg  IFS=" "
45266fe65f6Smrg  for arg
45366fe65f6Smrg  do
45466fe65f6Smrg    case $arg in
45566fe65f6Smrg    -o)
45666fe65f6Smrg      shift
45766fe65f6Smrg      ;;
45866fe65f6Smrg    $object)
45966fe65f6Smrg      shift
46066fe65f6Smrg      ;;
46166fe65f6Smrg    *)
46266fe65f6Smrg      set fnord "$@" "$arg"
46366fe65f6Smrg      shift # fnord
46466fe65f6Smrg      shift # $arg
46566fe65f6Smrg      ;;
46666fe65f6Smrg    esac
46766fe65f6Smrg  done
46866fe65f6Smrg
46966fe65f6Smrg  "$@" -E |
47066fe65f6Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
47166fe65f6Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
47266fe65f6Smrg    sed '$ s: \\$::' > "$tmpdepfile"
47366fe65f6Smrg  rm -f "$depfile"
47466fe65f6Smrg  echo "$object : \\" > "$depfile"
47566fe65f6Smrg  cat < "$tmpdepfile" >> "$depfile"
47666fe65f6Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
47766fe65f6Smrg  rm -f "$tmpdepfile"
47866fe65f6Smrg  ;;
47966fe65f6Smrg
48066fe65f6Smrgmsvisualcpp)
48166fe65f6Smrg  # Important note: in order to support this mode, a compiler *must*
48266fe65f6Smrg  # always write the preprocessed file to stdout, regardless of -o,
48366fe65f6Smrg  # because we must use -o when running libtool.
48466fe65f6Smrg  "$@" || exit $?
48566fe65f6Smrg  IFS=" "
48666fe65f6Smrg  for arg
48766fe65f6Smrg  do
48866fe65f6Smrg    case "$arg" in
48966fe65f6Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
49066fe65f6Smrg	set fnord "$@"
49166fe65f6Smrg	shift
49266fe65f6Smrg	shift
49366fe65f6Smrg	;;
49466fe65f6Smrg    *)
49566fe65f6Smrg	set fnord "$@" "$arg"
49666fe65f6Smrg	shift
49766fe65f6Smrg	shift
49866fe65f6Smrg	;;
49966fe65f6Smrg    esac
50066fe65f6Smrg  done
50166fe65f6Smrg  "$@" -E |
50266fe65f6Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
50366fe65f6Smrg  rm -f "$depfile"
50466fe65f6Smrg  echo "$object : \\" > "$depfile"
50566fe65f6Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
50666fe65f6Smrg  echo "	" >> "$depfile"
50766fe65f6Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
50866fe65f6Smrg  rm -f "$tmpdepfile"
50966fe65f6Smrg  ;;
51066fe65f6Smrg
51166fe65f6Smrgnone)
51266fe65f6Smrg  exec "$@"
51366fe65f6Smrg  ;;
51466fe65f6Smrg
51566fe65f6Smrg*)
51666fe65f6Smrg  echo "Unknown depmode $depmode" 1>&2
51766fe65f6Smrg  exit 1
51866fe65f6Smrg  ;;
51966fe65f6Smrgesac
52066fe65f6Smrg
52166fe65f6Smrgexit 0
52266fe65f6Smrg
52366fe65f6Smrg# Local Variables:
52466fe65f6Smrg# mode: shell-script
52566fe65f6Smrg# sh-indentation: 2
52666fe65f6Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
52766fe65f6Smrg# time-stamp-start: "scriptversion="
52866fe65f6Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
52966fe65f6Smrg# time-stamp-end: "$"
53066fe65f6Smrg# End:
531