depcomp revision 50806d53
150806d53Smrg#! /bin/sh
250806d53Smrg# depcomp - compile a program generating dependencies as side-effects
350806d53Smrg
450806d53Smrgscriptversion=2005-07-09.11
550806d53Smrg
650806d53Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
750806d53Smrg
850806d53Smrg# This program is free software; you can redistribute it and/or modify
950806d53Smrg# it under the terms of the GNU General Public License as published by
1050806d53Smrg# the Free Software Foundation; either version 2, or (at your option)
1150806d53Smrg# any later version.
1250806d53Smrg
1350806d53Smrg# This program is distributed in the hope that it will be useful,
1450806d53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1550806d53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1650806d53Smrg# GNU General Public License for more details.
1750806d53Smrg
1850806d53Smrg# You should have received a copy of the GNU General Public License
1950806d53Smrg# along with this program; if not, write to the Free Software
2050806d53Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2150806d53Smrg# 02110-1301, USA.
2250806d53Smrg
2350806d53Smrg# As a special exception to the GNU General Public License, if you
2450806d53Smrg# distribute this file as part of a program that contains a
2550806d53Smrg# configuration script generated by Autoconf, you may include it under
2650806d53Smrg# the same distribution terms that you use for the rest of that program.
2750806d53Smrg
2850806d53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2950806d53Smrg
3050806d53Smrgcase $1 in
3150806d53Smrg  '')
3250806d53Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3350806d53Smrg     exit 1;
3450806d53Smrg     ;;
3550806d53Smrg  -h | --h*)
3650806d53Smrg    cat <<\EOF
3750806d53SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3850806d53Smrg
3950806d53SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4050806d53Smrgas side-effects.
4150806d53Smrg
4250806d53SmrgEnvironment variables:
4350806d53Smrg  depmode     Dependency tracking mode.
4450806d53Smrg  source      Source file read by `PROGRAMS ARGS'.
4550806d53Smrg  object      Object file output by `PROGRAMS ARGS'.
4650806d53Smrg  DEPDIR      directory where to store dependencies.
4750806d53Smrg  depfile     Dependency file to output.
4850806d53Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
4950806d53Smrg  libtool     Whether libtool is used (yes/no).
5050806d53Smrg
5150806d53SmrgReport bugs to <bug-automake@gnu.org>.
5250806d53SmrgEOF
5350806d53Smrg    exit $?
5450806d53Smrg    ;;
5550806d53Smrg  -v | --v*)
5650806d53Smrg    echo "depcomp $scriptversion"
5750806d53Smrg    exit $?
5850806d53Smrg    ;;
5950806d53Smrgesac
6050806d53Smrg
6150806d53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6250806d53Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6350806d53Smrg  exit 1
6450806d53Smrgfi
6550806d53Smrg
6650806d53Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6750806d53Smrgdepfile=${depfile-`echo "$object" |
6850806d53Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6950806d53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7050806d53Smrg
7150806d53Smrgrm -f "$tmpdepfile"
7250806d53Smrg
7350806d53Smrg# Some modes work just like other modes, but use different flags.  We
7450806d53Smrg# parameterize here, but still list the modes in the big case below,
7550806d53Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7650806d53Smrg# here, because this file can only contain one case statement.
7750806d53Smrgif test "$depmode" = hp; then
7850806d53Smrg  # HP compiler uses -M and no extra arg.
7950806d53Smrg  gccflag=-M
8050806d53Smrg  depmode=gcc
8150806d53Smrgfi
8250806d53Smrg
8350806d53Smrgif test "$depmode" = dashXmstdout; then
8450806d53Smrg   # This is just like dashmstdout with a different argument.
8550806d53Smrg   dashmflag=-xM
8650806d53Smrg   depmode=dashmstdout
8750806d53Smrgfi
8850806d53Smrg
8950806d53Smrgcase "$depmode" in
9050806d53Smrggcc3)
9150806d53Smrg## gcc 3 implements dependency tracking that does exactly what
9250806d53Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9350806d53Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9450806d53Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
9550806d53Smrg  stat=$?
9650806d53Smrg  if test $stat -eq 0; then :
9750806d53Smrg  else
9850806d53Smrg    rm -f "$tmpdepfile"
9950806d53Smrg    exit $stat
10050806d53Smrg  fi
10150806d53Smrg  mv "$tmpdepfile" "$depfile"
10250806d53Smrg  ;;
10350806d53Smrg
10450806d53Smrggcc)
10550806d53Smrg## There are various ways to get dependency output from gcc.  Here's
10650806d53Smrg## why we pick this rather obscure method:
10750806d53Smrg## - Don't want to use -MD because we'd like the dependencies to end
10850806d53Smrg##   up in a subdir.  Having to rename by hand is ugly.
10950806d53Smrg##   (We might end up doing this anyway to support other compilers.)
11050806d53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
11150806d53Smrg##   -MM, not -M (despite what the docs say).
11250806d53Smrg## - Using -M directly means running the compiler twice (even worse
11350806d53Smrg##   than renaming).
11450806d53Smrg  if test -z "$gccflag"; then
11550806d53Smrg    gccflag=-MD,
11650806d53Smrg  fi
11750806d53Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
11850806d53Smrg  stat=$?
11950806d53Smrg  if test $stat -eq 0; then :
12050806d53Smrg  else
12150806d53Smrg    rm -f "$tmpdepfile"
12250806d53Smrg    exit $stat
12350806d53Smrg  fi
12450806d53Smrg  rm -f "$depfile"
12550806d53Smrg  echo "$object : \\" > "$depfile"
12650806d53Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
12750806d53Smrg## The second -e expression handles DOS-style file names with drive letters.
12850806d53Smrg  sed -e 's/^[^:]*: / /' \
12950806d53Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
13050806d53Smrg## This next piece of magic avoids the `deleted header file' problem.
13150806d53Smrg## The problem is that when a header file which appears in a .P file
13250806d53Smrg## is deleted, the dependency causes make to die (because there is
13350806d53Smrg## typically no way to rebuild the header).  We avoid this by adding
13450806d53Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
13550806d53Smrg## this for us directly.
13650806d53Smrg  tr ' ' '
13750806d53Smrg' < "$tmpdepfile" |
13850806d53Smrg## Some versions of gcc put a space before the `:'.  On the theory
13950806d53Smrg## that the space means something, we add a space to the output as
14050806d53Smrg## well.
14150806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
14250806d53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
14350806d53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
14450806d53Smrg  rm -f "$tmpdepfile"
14550806d53Smrg  ;;
14650806d53Smrg
14750806d53Smrghp)
14850806d53Smrg  # This case exists only to let depend.m4 do its work.  It works by
14950806d53Smrg  # looking at the text of this script.  This case will never be run,
15050806d53Smrg  # since it is checked for above.
15150806d53Smrg  exit 1
15250806d53Smrg  ;;
15350806d53Smrg
15450806d53Smrgsgi)
15550806d53Smrg  if test "$libtool" = yes; then
15650806d53Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
15750806d53Smrg  else
15850806d53Smrg    "$@" -MDupdate "$tmpdepfile"
15950806d53Smrg  fi
16050806d53Smrg  stat=$?
16150806d53Smrg  if test $stat -eq 0; then :
16250806d53Smrg  else
16350806d53Smrg    rm -f "$tmpdepfile"
16450806d53Smrg    exit $stat
16550806d53Smrg  fi
16650806d53Smrg  rm -f "$depfile"
16750806d53Smrg
16850806d53Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
16950806d53Smrg    echo "$object : \\" > "$depfile"
17050806d53Smrg
17150806d53Smrg    # Clip off the initial element (the dependent).  Don't try to be
17250806d53Smrg    # clever and replace this with sed code, as IRIX sed won't handle
17350806d53Smrg    # lines with more than a fixed number of characters (4096 in
17450806d53Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
17550806d53Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
17650806d53Smrg    # dependency line.
17750806d53Smrg    tr ' ' '
17850806d53Smrg' < "$tmpdepfile" \
17950806d53Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
18050806d53Smrg    tr '
18150806d53Smrg' ' ' >> $depfile
18250806d53Smrg    echo >> $depfile
18350806d53Smrg
18450806d53Smrg    # The second pass generates a dummy entry for each header file.
18550806d53Smrg    tr ' ' '
18650806d53Smrg' < "$tmpdepfile" \
18750806d53Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
18850806d53Smrg   >> $depfile
18950806d53Smrg  else
19050806d53Smrg    # The sourcefile does not contain any dependencies, so just
19150806d53Smrg    # store a dummy comment line, to avoid errors with the Makefile
19250806d53Smrg    # "include basename.Plo" scheme.
19350806d53Smrg    echo "#dummy" > "$depfile"
19450806d53Smrg  fi
19550806d53Smrg  rm -f "$tmpdepfile"
19650806d53Smrg  ;;
19750806d53Smrg
19850806d53Smrgaix)
19950806d53Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
20050806d53Smrg  # in a .u file.  In older versions, this file always lives in the
20150806d53Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
20250806d53Smrg  # start of each line; $object doesn't have directory information.
20350806d53Smrg  # Version 6 uses the directory in both cases.
20450806d53Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
20550806d53Smrg  tmpdepfile="$stripped.u"
20650806d53Smrg  if test "$libtool" = yes; then
20750806d53Smrg    "$@" -Wc,-M
20850806d53Smrg  else
20950806d53Smrg    "$@" -M
21050806d53Smrg  fi
21150806d53Smrg  stat=$?
21250806d53Smrg
21350806d53Smrg  if test -f "$tmpdepfile"; then :
21450806d53Smrg  else
21550806d53Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
21650806d53Smrg    tmpdepfile="$stripped.u"
21750806d53Smrg  fi
21850806d53Smrg
21950806d53Smrg  if test $stat -eq 0; then :
22050806d53Smrg  else
22150806d53Smrg    rm -f "$tmpdepfile"
22250806d53Smrg    exit $stat
22350806d53Smrg  fi
22450806d53Smrg
22550806d53Smrg  if test -f "$tmpdepfile"; then
22650806d53Smrg    outname="$stripped.o"
22750806d53Smrg    # Each line is of the form `foo.o: dependent.h'.
22850806d53Smrg    # Do two passes, one to just change these to
22950806d53Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
23050806d53Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
23150806d53Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
23250806d53Smrg  else
23350806d53Smrg    # The sourcefile does not contain any dependencies, so just
23450806d53Smrg    # store a dummy comment line, to avoid errors with the Makefile
23550806d53Smrg    # "include basename.Plo" scheme.
23650806d53Smrg    echo "#dummy" > "$depfile"
23750806d53Smrg  fi
23850806d53Smrg  rm -f "$tmpdepfile"
23950806d53Smrg  ;;
24050806d53Smrg
24150806d53Smrgicc)
24250806d53Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
24350806d53Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
24450806d53Smrg  # ICC 7.0 will fill foo.d with something like
24550806d53Smrg  #    foo.o: sub/foo.c
24650806d53Smrg  #    foo.o: sub/foo.h
24750806d53Smrg  # which is wrong.  We want:
24850806d53Smrg  #    sub/foo.o: sub/foo.c
24950806d53Smrg  #    sub/foo.o: sub/foo.h
25050806d53Smrg  #    sub/foo.c:
25150806d53Smrg  #    sub/foo.h:
25250806d53Smrg  # ICC 7.1 will output
25350806d53Smrg  #    foo.o: sub/foo.c sub/foo.h
25450806d53Smrg  # and will wrap long lines using \ :
25550806d53Smrg  #    foo.o: sub/foo.c ... \
25650806d53Smrg  #     sub/foo.h ... \
25750806d53Smrg  #     ...
25850806d53Smrg
25950806d53Smrg  "$@" -MD -MF "$tmpdepfile"
26050806d53Smrg  stat=$?
26150806d53Smrg  if test $stat -eq 0; then :
26250806d53Smrg  else
26350806d53Smrg    rm -f "$tmpdepfile"
26450806d53Smrg    exit $stat
26550806d53Smrg  fi
26650806d53Smrg  rm -f "$depfile"
26750806d53Smrg  # Each line is of the form `foo.o: dependent.h',
26850806d53Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
26950806d53Smrg  # Do two passes, one to just change these to
27050806d53Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
27150806d53Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
27250806d53Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
27350806d53Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
27450806d53Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
27550806d53Smrg    sed -e 's/$/ :/' >> "$depfile"
27650806d53Smrg  rm -f "$tmpdepfile"
27750806d53Smrg  ;;
27850806d53Smrg
27950806d53Smrgtru64)
28050806d53Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
28150806d53Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
28250806d53Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
28350806d53Smrg   # dependencies in `foo.d' instead, so we check for that too.
28450806d53Smrg   # Subdirectories are respected.
28550806d53Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
28650806d53Smrg   test "x$dir" = "x$object" && dir=
28750806d53Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
28850806d53Smrg
28950806d53Smrg   if test "$libtool" = yes; then
29050806d53Smrg      # With Tru64 cc, shared objects can also be used to make a
29150806d53Smrg      # static library.  This mecanism is used in libtool 1.4 series to
29250806d53Smrg      # handle both shared and static libraries in a single compilation.
29350806d53Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
29450806d53Smrg      #
29550806d53Smrg      # With libtool 1.5 this exception was removed, and libtool now
29650806d53Smrg      # generates 2 separate objects for the 2 libraries.  These two
29750806d53Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
29850806d53Smrg      # in $dir$base.o.d.  We have to check for both files, because
29950806d53Smrg      # one of the two compilations can be disabled.  We should prefer
30050806d53Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
30150806d53Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
30250806d53Smrg      # the former would cause a distcleancheck panic.
30350806d53Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
30450806d53Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
30550806d53Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
30650806d53Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
30750806d53Smrg      "$@" -Wc,-MD
30850806d53Smrg   else
30950806d53Smrg      tmpdepfile1=$dir$base.o.d
31050806d53Smrg      tmpdepfile2=$dir$base.d
31150806d53Smrg      tmpdepfile3=$dir$base.d
31250806d53Smrg      tmpdepfile4=$dir$base.d
31350806d53Smrg      "$@" -MD
31450806d53Smrg   fi
31550806d53Smrg
31650806d53Smrg   stat=$?
31750806d53Smrg   if test $stat -eq 0; then :
31850806d53Smrg   else
31950806d53Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32050806d53Smrg      exit $stat
32150806d53Smrg   fi
32250806d53Smrg
32350806d53Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32450806d53Smrg   do
32550806d53Smrg     test -f "$tmpdepfile" && break
32650806d53Smrg   done
32750806d53Smrg   if test -f "$tmpdepfile"; then
32850806d53Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
32950806d53Smrg      # That's a tab and a space in the [].
33050806d53Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
33150806d53Smrg   else
33250806d53Smrg      echo "#dummy" > "$depfile"
33350806d53Smrg   fi
33450806d53Smrg   rm -f "$tmpdepfile"
33550806d53Smrg   ;;
33650806d53Smrg
33750806d53Smrg#nosideeffect)
33850806d53Smrg  # This comment above is used by automake to tell side-effect
33950806d53Smrg  # dependency tracking mechanisms from slower ones.
34050806d53Smrg
34150806d53Smrgdashmstdout)
34250806d53Smrg  # Important note: in order to support this mode, a compiler *must*
34350806d53Smrg  # always write the preprocessed file to stdout, regardless of -o.
34450806d53Smrg  "$@" || exit $?
34550806d53Smrg
34650806d53Smrg  # Remove the call to Libtool.
34750806d53Smrg  if test "$libtool" = yes; then
34850806d53Smrg    while test $1 != '--mode=compile'; do
34950806d53Smrg      shift
35050806d53Smrg    done
35150806d53Smrg    shift
35250806d53Smrg  fi
35350806d53Smrg
35450806d53Smrg  # Remove `-o $object'.
35550806d53Smrg  IFS=" "
35650806d53Smrg  for arg
35750806d53Smrg  do
35850806d53Smrg    case $arg in
35950806d53Smrg    -o)
36050806d53Smrg      shift
36150806d53Smrg      ;;
36250806d53Smrg    $object)
36350806d53Smrg      shift
36450806d53Smrg      ;;
36550806d53Smrg    *)
36650806d53Smrg      set fnord "$@" "$arg"
36750806d53Smrg      shift # fnord
36850806d53Smrg      shift # $arg
36950806d53Smrg      ;;
37050806d53Smrg    esac
37150806d53Smrg  done
37250806d53Smrg
37350806d53Smrg  test -z "$dashmflag" && dashmflag=-M
37450806d53Smrg  # Require at least two characters before searching for `:'
37550806d53Smrg  # in the target name.  This is to cope with DOS-style filenames:
37650806d53Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
37750806d53Smrg  "$@" $dashmflag |
37850806d53Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
37950806d53Smrg  rm -f "$depfile"
38050806d53Smrg  cat < "$tmpdepfile" > "$depfile"
38150806d53Smrg  tr ' ' '
38250806d53Smrg' < "$tmpdepfile" | \
38350806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
38450806d53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
38550806d53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
38650806d53Smrg  rm -f "$tmpdepfile"
38750806d53Smrg  ;;
38850806d53Smrg
38950806d53SmrgdashXmstdout)
39050806d53Smrg  # This case only exists to satisfy depend.m4.  It is never actually
39150806d53Smrg  # run, as this mode is specially recognized in the preamble.
39250806d53Smrg  exit 1
39350806d53Smrg  ;;
39450806d53Smrg
39550806d53Smrgmakedepend)
39650806d53Smrg  "$@" || exit $?
39750806d53Smrg  # Remove any Libtool call
39850806d53Smrg  if test "$libtool" = yes; then
39950806d53Smrg    while test $1 != '--mode=compile'; do
40050806d53Smrg      shift
40150806d53Smrg    done
40250806d53Smrg    shift
40350806d53Smrg  fi
40450806d53Smrg  # X makedepend
40550806d53Smrg  shift
40650806d53Smrg  cleared=no
40750806d53Smrg  for arg in "$@"; do
40850806d53Smrg    case $cleared in
40950806d53Smrg    no)
41050806d53Smrg      set ""; shift
41150806d53Smrg      cleared=yes ;;
41250806d53Smrg    esac
41350806d53Smrg    case "$arg" in
41450806d53Smrg    -D*|-I*)
41550806d53Smrg      set fnord "$@" "$arg"; shift ;;
41650806d53Smrg    # Strip any option that makedepend may not understand.  Remove
41750806d53Smrg    # the object too, otherwise makedepend will parse it as a source file.
41850806d53Smrg    -*|$object)
41950806d53Smrg      ;;
42050806d53Smrg    *)
42150806d53Smrg      set fnord "$@" "$arg"; shift ;;
42250806d53Smrg    esac
42350806d53Smrg  done
42450806d53Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
42550806d53Smrg  touch "$tmpdepfile"
42650806d53Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
42750806d53Smrg  rm -f "$depfile"
42850806d53Smrg  cat < "$tmpdepfile" > "$depfile"
42950806d53Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
43050806d53Smrg' | \
43150806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
43250806d53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
43350806d53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
43450806d53Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
43550806d53Smrg  ;;
43650806d53Smrg
43750806d53Smrgcpp)
43850806d53Smrg  # Important note: in order to support this mode, a compiler *must*
43950806d53Smrg  # always write the preprocessed file to stdout.
44050806d53Smrg  "$@" || exit $?
44150806d53Smrg
44250806d53Smrg  # Remove the call to Libtool.
44350806d53Smrg  if test "$libtool" = yes; then
44450806d53Smrg    while test $1 != '--mode=compile'; do
44550806d53Smrg      shift
44650806d53Smrg    done
44750806d53Smrg    shift
44850806d53Smrg  fi
44950806d53Smrg
45050806d53Smrg  # Remove `-o $object'.
45150806d53Smrg  IFS=" "
45250806d53Smrg  for arg
45350806d53Smrg  do
45450806d53Smrg    case $arg in
45550806d53Smrg    -o)
45650806d53Smrg      shift
45750806d53Smrg      ;;
45850806d53Smrg    $object)
45950806d53Smrg      shift
46050806d53Smrg      ;;
46150806d53Smrg    *)
46250806d53Smrg      set fnord "$@" "$arg"
46350806d53Smrg      shift # fnord
46450806d53Smrg      shift # $arg
46550806d53Smrg      ;;
46650806d53Smrg    esac
46750806d53Smrg  done
46850806d53Smrg
46950806d53Smrg  "$@" -E |
47050806d53Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
47150806d53Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
47250806d53Smrg    sed '$ s: \\$::' > "$tmpdepfile"
47350806d53Smrg  rm -f "$depfile"
47450806d53Smrg  echo "$object : \\" > "$depfile"
47550806d53Smrg  cat < "$tmpdepfile" >> "$depfile"
47650806d53Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
47750806d53Smrg  rm -f "$tmpdepfile"
47850806d53Smrg  ;;
47950806d53Smrg
48050806d53Smrgmsvisualcpp)
48150806d53Smrg  # Important note: in order to support this mode, a compiler *must*
48250806d53Smrg  # always write the preprocessed file to stdout, regardless of -o,
48350806d53Smrg  # because we must use -o when running libtool.
48450806d53Smrg  "$@" || exit $?
48550806d53Smrg  IFS=" "
48650806d53Smrg  for arg
48750806d53Smrg  do
48850806d53Smrg    case "$arg" in
48950806d53Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
49050806d53Smrg	set fnord "$@"
49150806d53Smrg	shift
49250806d53Smrg	shift
49350806d53Smrg	;;
49450806d53Smrg    *)
49550806d53Smrg	set fnord "$@" "$arg"
49650806d53Smrg	shift
49750806d53Smrg	shift
49850806d53Smrg	;;
49950806d53Smrg    esac
50050806d53Smrg  done
50150806d53Smrg  "$@" -E |
50250806d53Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
50350806d53Smrg  rm -f "$depfile"
50450806d53Smrg  echo "$object : \\" > "$depfile"
50550806d53Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
50650806d53Smrg  echo "	" >> "$depfile"
50750806d53Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
50850806d53Smrg  rm -f "$tmpdepfile"
50950806d53Smrg  ;;
51050806d53Smrg
51150806d53Smrgnone)
51250806d53Smrg  exec "$@"
51350806d53Smrg  ;;
51450806d53Smrg
51550806d53Smrg*)
51650806d53Smrg  echo "Unknown depmode $depmode" 1>&2
51750806d53Smrg  exit 1
51850806d53Smrg  ;;
51950806d53Smrgesac
52050806d53Smrg
52150806d53Smrgexit 0
52250806d53Smrg
52350806d53Smrg# Local Variables:
52450806d53Smrg# mode: shell-script
52550806d53Smrg# sh-indentation: 2
52650806d53Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
52750806d53Smrg# time-stamp-start: "scriptversion="
52850806d53Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
52950806d53Smrg# time-stamp-end: "$"
53050806d53Smrg# End:
531