depcomp revision 02be438a
102be438aSmrg#! /bin/sh
202be438aSmrg# depcomp - compile a program generating dependencies as side-effects
302be438aSmrg
402be438aSmrgscriptversion=2005-07-09.11
502be438aSmrg
602be438aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
702be438aSmrg
802be438aSmrg# This program is free software; you can redistribute it and/or modify
902be438aSmrg# it under the terms of the GNU General Public License as published by
1002be438aSmrg# the Free Software Foundation; either version 2, or (at your option)
1102be438aSmrg# any later version.
1202be438aSmrg
1302be438aSmrg# This program is distributed in the hope that it will be useful,
1402be438aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1502be438aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1602be438aSmrg# GNU General Public License for more details.
1702be438aSmrg
1802be438aSmrg# You should have received a copy of the GNU General Public License
1902be438aSmrg# along with this program; if not, write to the Free Software
2002be438aSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2102be438aSmrg# 02110-1301, USA.
2202be438aSmrg
2302be438aSmrg# As a special exception to the GNU General Public License, if you
2402be438aSmrg# distribute this file as part of a program that contains a
2502be438aSmrg# configuration script generated by Autoconf, you may include it under
2602be438aSmrg# the same distribution terms that you use for the rest of that program.
2702be438aSmrg
2802be438aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2902be438aSmrg
3002be438aSmrgcase $1 in
3102be438aSmrg  '')
3202be438aSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3302be438aSmrg     exit 1;
3402be438aSmrg     ;;
3502be438aSmrg  -h | --h*)
3602be438aSmrg    cat <<\EOF
3702be438aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3802be438aSmrg
3902be438aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4002be438aSmrgas side-effects.
4102be438aSmrg
4202be438aSmrgEnvironment variables:
4302be438aSmrg  depmode     Dependency tracking mode.
4402be438aSmrg  source      Source file read by `PROGRAMS ARGS'.
4502be438aSmrg  object      Object file output by `PROGRAMS ARGS'.
4602be438aSmrg  DEPDIR      directory where to store dependencies.
4702be438aSmrg  depfile     Dependency file to output.
4802be438aSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
4902be438aSmrg  libtool     Whether libtool is used (yes/no).
5002be438aSmrg
5102be438aSmrgReport bugs to <bug-automake@gnu.org>.
5202be438aSmrgEOF
5302be438aSmrg    exit $?
5402be438aSmrg    ;;
5502be438aSmrg  -v | --v*)
5602be438aSmrg    echo "depcomp $scriptversion"
5702be438aSmrg    exit $?
5802be438aSmrg    ;;
5902be438aSmrgesac
6002be438aSmrg
6102be438aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6202be438aSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6302be438aSmrg  exit 1
6402be438aSmrgfi
6502be438aSmrg
6602be438aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6702be438aSmrgdepfile=${depfile-`echo "$object" |
6802be438aSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6902be438aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7002be438aSmrg
7102be438aSmrgrm -f "$tmpdepfile"
7202be438aSmrg
7302be438aSmrg# Some modes work just like other modes, but use different flags.  We
7402be438aSmrg# parameterize here, but still list the modes in the big case below,
7502be438aSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7602be438aSmrg# here, because this file can only contain one case statement.
7702be438aSmrgif test "$depmode" = hp; then
7802be438aSmrg  # HP compiler uses -M and no extra arg.
7902be438aSmrg  gccflag=-M
8002be438aSmrg  depmode=gcc
8102be438aSmrgfi
8202be438aSmrg
8302be438aSmrgif test "$depmode" = dashXmstdout; then
8402be438aSmrg   # This is just like dashmstdout with a different argument.
8502be438aSmrg   dashmflag=-xM
8602be438aSmrg   depmode=dashmstdout
8702be438aSmrgfi
8802be438aSmrg
8902be438aSmrgcase "$depmode" in
9002be438aSmrggcc3)
9102be438aSmrg## gcc 3 implements dependency tracking that does exactly what
9202be438aSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9302be438aSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9402be438aSmrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
9502be438aSmrg  stat=$?
9602be438aSmrg  if test $stat -eq 0; then :
9702be438aSmrg  else
9802be438aSmrg    rm -f "$tmpdepfile"
9902be438aSmrg    exit $stat
10002be438aSmrg  fi
10102be438aSmrg  mv "$tmpdepfile" "$depfile"
10202be438aSmrg  ;;
10302be438aSmrg
10402be438aSmrggcc)
10502be438aSmrg## There are various ways to get dependency output from gcc.  Here's
10602be438aSmrg## why we pick this rather obscure method:
10702be438aSmrg## - Don't want to use -MD because we'd like the dependencies to end
10802be438aSmrg##   up in a subdir.  Having to rename by hand is ugly.
10902be438aSmrg##   (We might end up doing this anyway to support other compilers.)
11002be438aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
11102be438aSmrg##   -MM, not -M (despite what the docs say).
11202be438aSmrg## - Using -M directly means running the compiler twice (even worse
11302be438aSmrg##   than renaming).
11402be438aSmrg  if test -z "$gccflag"; then
11502be438aSmrg    gccflag=-MD,
11602be438aSmrg  fi
11702be438aSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
11802be438aSmrg  stat=$?
11902be438aSmrg  if test $stat -eq 0; then :
12002be438aSmrg  else
12102be438aSmrg    rm -f "$tmpdepfile"
12202be438aSmrg    exit $stat
12302be438aSmrg  fi
12402be438aSmrg  rm -f "$depfile"
12502be438aSmrg  echo "$object : \\" > "$depfile"
12602be438aSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
12702be438aSmrg## The second -e expression handles DOS-style file names with drive letters.
12802be438aSmrg  sed -e 's/^[^:]*: / /' \
12902be438aSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
13002be438aSmrg## This next piece of magic avoids the `deleted header file' problem.
13102be438aSmrg## The problem is that when a header file which appears in a .P file
13202be438aSmrg## is deleted, the dependency causes make to die (because there is
13302be438aSmrg## typically no way to rebuild the header).  We avoid this by adding
13402be438aSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
13502be438aSmrg## this for us directly.
13602be438aSmrg  tr ' ' '
13702be438aSmrg' < "$tmpdepfile" |
13802be438aSmrg## Some versions of gcc put a space before the `:'.  On the theory
13902be438aSmrg## that the space means something, we add a space to the output as
14002be438aSmrg## well.
14102be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
14202be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
14302be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
14402be438aSmrg  rm -f "$tmpdepfile"
14502be438aSmrg  ;;
14602be438aSmrg
14702be438aSmrghp)
14802be438aSmrg  # This case exists only to let depend.m4 do its work.  It works by
14902be438aSmrg  # looking at the text of this script.  This case will never be run,
15002be438aSmrg  # since it is checked for above.
15102be438aSmrg  exit 1
15202be438aSmrg  ;;
15302be438aSmrg
15402be438aSmrgsgi)
15502be438aSmrg  if test "$libtool" = yes; then
15602be438aSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
15702be438aSmrg  else
15802be438aSmrg    "$@" -MDupdate "$tmpdepfile"
15902be438aSmrg  fi
16002be438aSmrg  stat=$?
16102be438aSmrg  if test $stat -eq 0; then :
16202be438aSmrg  else
16302be438aSmrg    rm -f "$tmpdepfile"
16402be438aSmrg    exit $stat
16502be438aSmrg  fi
16602be438aSmrg  rm -f "$depfile"
16702be438aSmrg
16802be438aSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
16902be438aSmrg    echo "$object : \\" > "$depfile"
17002be438aSmrg
17102be438aSmrg    # Clip off the initial element (the dependent).  Don't try to be
17202be438aSmrg    # clever and replace this with sed code, as IRIX sed won't handle
17302be438aSmrg    # lines with more than a fixed number of characters (4096 in
17402be438aSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
17502be438aSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
17602be438aSmrg    # dependency line.
17702be438aSmrg    tr ' ' '
17802be438aSmrg' < "$tmpdepfile" \
17902be438aSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
18002be438aSmrg    tr '
18102be438aSmrg' ' ' >> $depfile
18202be438aSmrg    echo >> $depfile
18302be438aSmrg
18402be438aSmrg    # The second pass generates a dummy entry for each header file.
18502be438aSmrg    tr ' ' '
18602be438aSmrg' < "$tmpdepfile" \
18702be438aSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
18802be438aSmrg   >> $depfile
18902be438aSmrg  else
19002be438aSmrg    # The sourcefile does not contain any dependencies, so just
19102be438aSmrg    # store a dummy comment line, to avoid errors with the Makefile
19202be438aSmrg    # "include basename.Plo" scheme.
19302be438aSmrg    echo "#dummy" > "$depfile"
19402be438aSmrg  fi
19502be438aSmrg  rm -f "$tmpdepfile"
19602be438aSmrg  ;;
19702be438aSmrg
19802be438aSmrgaix)
19902be438aSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
20002be438aSmrg  # in a .u file.  In older versions, this file always lives in the
20102be438aSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
20202be438aSmrg  # start of each line; $object doesn't have directory information.
20302be438aSmrg  # Version 6 uses the directory in both cases.
20402be438aSmrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
20502be438aSmrg  tmpdepfile="$stripped.u"
20602be438aSmrg  if test "$libtool" = yes; then
20702be438aSmrg    "$@" -Wc,-M
20802be438aSmrg  else
20902be438aSmrg    "$@" -M
21002be438aSmrg  fi
21102be438aSmrg  stat=$?
21202be438aSmrg
21302be438aSmrg  if test -f "$tmpdepfile"; then :
21402be438aSmrg  else
21502be438aSmrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
21602be438aSmrg    tmpdepfile="$stripped.u"
21702be438aSmrg  fi
21802be438aSmrg
21902be438aSmrg  if test $stat -eq 0; then :
22002be438aSmrg  else
22102be438aSmrg    rm -f "$tmpdepfile"
22202be438aSmrg    exit $stat
22302be438aSmrg  fi
22402be438aSmrg
22502be438aSmrg  if test -f "$tmpdepfile"; then
22602be438aSmrg    outname="$stripped.o"
22702be438aSmrg    # Each line is of the form `foo.o: dependent.h'.
22802be438aSmrg    # Do two passes, one to just change these to
22902be438aSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
23002be438aSmrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
23102be438aSmrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
23202be438aSmrg  else
23302be438aSmrg    # The sourcefile does not contain any dependencies, so just
23402be438aSmrg    # store a dummy comment line, to avoid errors with the Makefile
23502be438aSmrg    # "include basename.Plo" scheme.
23602be438aSmrg    echo "#dummy" > "$depfile"
23702be438aSmrg  fi
23802be438aSmrg  rm -f "$tmpdepfile"
23902be438aSmrg  ;;
24002be438aSmrg
24102be438aSmrgicc)
24202be438aSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
24302be438aSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
24402be438aSmrg  # ICC 7.0 will fill foo.d with something like
24502be438aSmrg  #    foo.o: sub/foo.c
24602be438aSmrg  #    foo.o: sub/foo.h
24702be438aSmrg  # which is wrong.  We want:
24802be438aSmrg  #    sub/foo.o: sub/foo.c
24902be438aSmrg  #    sub/foo.o: sub/foo.h
25002be438aSmrg  #    sub/foo.c:
25102be438aSmrg  #    sub/foo.h:
25202be438aSmrg  # ICC 7.1 will output
25302be438aSmrg  #    foo.o: sub/foo.c sub/foo.h
25402be438aSmrg  # and will wrap long lines using \ :
25502be438aSmrg  #    foo.o: sub/foo.c ... \
25602be438aSmrg  #     sub/foo.h ... \
25702be438aSmrg  #     ...
25802be438aSmrg
25902be438aSmrg  "$@" -MD -MF "$tmpdepfile"
26002be438aSmrg  stat=$?
26102be438aSmrg  if test $stat -eq 0; then :
26202be438aSmrg  else
26302be438aSmrg    rm -f "$tmpdepfile"
26402be438aSmrg    exit $stat
26502be438aSmrg  fi
26602be438aSmrg  rm -f "$depfile"
26702be438aSmrg  # Each line is of the form `foo.o: dependent.h',
26802be438aSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
26902be438aSmrg  # Do two passes, one to just change these to
27002be438aSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
27102be438aSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
27202be438aSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
27302be438aSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
27402be438aSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
27502be438aSmrg    sed -e 's/$/ :/' >> "$depfile"
27602be438aSmrg  rm -f "$tmpdepfile"
27702be438aSmrg  ;;
27802be438aSmrg
27902be438aSmrgtru64)
28002be438aSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
28102be438aSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
28202be438aSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
28302be438aSmrg   # dependencies in `foo.d' instead, so we check for that too.
28402be438aSmrg   # Subdirectories are respected.
28502be438aSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
28602be438aSmrg   test "x$dir" = "x$object" && dir=
28702be438aSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
28802be438aSmrg
28902be438aSmrg   if test "$libtool" = yes; then
29002be438aSmrg      # With Tru64 cc, shared objects can also be used to make a
29102be438aSmrg      # static library.  This mecanism is used in libtool 1.4 series to
29202be438aSmrg      # handle both shared and static libraries in a single compilation.
29302be438aSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
29402be438aSmrg      #
29502be438aSmrg      # With libtool 1.5 this exception was removed, and libtool now
29602be438aSmrg      # generates 2 separate objects for the 2 libraries.  These two
29702be438aSmrg      # compilations output dependencies in in $dir.libs/$base.o.d and
29802be438aSmrg      # in $dir$base.o.d.  We have to check for both files, because
29902be438aSmrg      # one of the two compilations can be disabled.  We should prefer
30002be438aSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
30102be438aSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
30202be438aSmrg      # the former would cause a distcleancheck panic.
30302be438aSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
30402be438aSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
30502be438aSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
30602be438aSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
30702be438aSmrg      "$@" -Wc,-MD
30802be438aSmrg   else
30902be438aSmrg      tmpdepfile1=$dir$base.o.d
31002be438aSmrg      tmpdepfile2=$dir$base.d
31102be438aSmrg      tmpdepfile3=$dir$base.d
31202be438aSmrg      tmpdepfile4=$dir$base.d
31302be438aSmrg      "$@" -MD
31402be438aSmrg   fi
31502be438aSmrg
31602be438aSmrg   stat=$?
31702be438aSmrg   if test $stat -eq 0; then :
31802be438aSmrg   else
31902be438aSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32002be438aSmrg      exit $stat
32102be438aSmrg   fi
32202be438aSmrg
32302be438aSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
32402be438aSmrg   do
32502be438aSmrg     test -f "$tmpdepfile" && break
32602be438aSmrg   done
32702be438aSmrg   if test -f "$tmpdepfile"; then
32802be438aSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
32902be438aSmrg      # That's a tab and a space in the [].
33002be438aSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
33102be438aSmrg   else
33202be438aSmrg      echo "#dummy" > "$depfile"
33302be438aSmrg   fi
33402be438aSmrg   rm -f "$tmpdepfile"
33502be438aSmrg   ;;
33602be438aSmrg
33702be438aSmrg#nosideeffect)
33802be438aSmrg  # This comment above is used by automake to tell side-effect
33902be438aSmrg  # dependency tracking mechanisms from slower ones.
34002be438aSmrg
34102be438aSmrgdashmstdout)
34202be438aSmrg  # Important note: in order to support this mode, a compiler *must*
34302be438aSmrg  # always write the preprocessed file to stdout, regardless of -o.
34402be438aSmrg  "$@" || exit $?
34502be438aSmrg
34602be438aSmrg  # Remove the call to Libtool.
34702be438aSmrg  if test "$libtool" = yes; then
34802be438aSmrg    while test $1 != '--mode=compile'; do
34902be438aSmrg      shift
35002be438aSmrg    done
35102be438aSmrg    shift
35202be438aSmrg  fi
35302be438aSmrg
35402be438aSmrg  # Remove `-o $object'.
35502be438aSmrg  IFS=" "
35602be438aSmrg  for arg
35702be438aSmrg  do
35802be438aSmrg    case $arg in
35902be438aSmrg    -o)
36002be438aSmrg      shift
36102be438aSmrg      ;;
36202be438aSmrg    $object)
36302be438aSmrg      shift
36402be438aSmrg      ;;
36502be438aSmrg    *)
36602be438aSmrg      set fnord "$@" "$arg"
36702be438aSmrg      shift # fnord
36802be438aSmrg      shift # $arg
36902be438aSmrg      ;;
37002be438aSmrg    esac
37102be438aSmrg  done
37202be438aSmrg
37302be438aSmrg  test -z "$dashmflag" && dashmflag=-M
37402be438aSmrg  # Require at least two characters before searching for `:'
37502be438aSmrg  # in the target name.  This is to cope with DOS-style filenames:
37602be438aSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
37702be438aSmrg  "$@" $dashmflag |
37802be438aSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
37902be438aSmrg  rm -f "$depfile"
38002be438aSmrg  cat < "$tmpdepfile" > "$depfile"
38102be438aSmrg  tr ' ' '
38202be438aSmrg' < "$tmpdepfile" | \
38302be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
38402be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
38502be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
38602be438aSmrg  rm -f "$tmpdepfile"
38702be438aSmrg  ;;
38802be438aSmrg
38902be438aSmrgdashXmstdout)
39002be438aSmrg  # This case only exists to satisfy depend.m4.  It is never actually
39102be438aSmrg  # run, as this mode is specially recognized in the preamble.
39202be438aSmrg  exit 1
39302be438aSmrg  ;;
39402be438aSmrg
39502be438aSmrgmakedepend)
39602be438aSmrg  "$@" || exit $?
39702be438aSmrg  # Remove any Libtool call
39802be438aSmrg  if test "$libtool" = yes; then
39902be438aSmrg    while test $1 != '--mode=compile'; do
40002be438aSmrg      shift
40102be438aSmrg    done
40202be438aSmrg    shift
40302be438aSmrg  fi
40402be438aSmrg  # X makedepend
40502be438aSmrg  shift
40602be438aSmrg  cleared=no
40702be438aSmrg  for arg in "$@"; do
40802be438aSmrg    case $cleared in
40902be438aSmrg    no)
41002be438aSmrg      set ""; shift
41102be438aSmrg      cleared=yes ;;
41202be438aSmrg    esac
41302be438aSmrg    case "$arg" in
41402be438aSmrg    -D*|-I*)
41502be438aSmrg      set fnord "$@" "$arg"; shift ;;
41602be438aSmrg    # Strip any option that makedepend may not understand.  Remove
41702be438aSmrg    # the object too, otherwise makedepend will parse it as a source file.
41802be438aSmrg    -*|$object)
41902be438aSmrg      ;;
42002be438aSmrg    *)
42102be438aSmrg      set fnord "$@" "$arg"; shift ;;
42202be438aSmrg    esac
42302be438aSmrg  done
42402be438aSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
42502be438aSmrg  touch "$tmpdepfile"
42602be438aSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
42702be438aSmrg  rm -f "$depfile"
42802be438aSmrg  cat < "$tmpdepfile" > "$depfile"
42902be438aSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
43002be438aSmrg' | \
43102be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
43202be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
43302be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
43402be438aSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
43502be438aSmrg  ;;
43602be438aSmrg
43702be438aSmrgcpp)
43802be438aSmrg  # Important note: in order to support this mode, a compiler *must*
43902be438aSmrg  # always write the preprocessed file to stdout.
44002be438aSmrg  "$@" || exit $?
44102be438aSmrg
44202be438aSmrg  # Remove the call to Libtool.
44302be438aSmrg  if test "$libtool" = yes; then
44402be438aSmrg    while test $1 != '--mode=compile'; do
44502be438aSmrg      shift
44602be438aSmrg    done
44702be438aSmrg    shift
44802be438aSmrg  fi
44902be438aSmrg
45002be438aSmrg  # Remove `-o $object'.
45102be438aSmrg  IFS=" "
45202be438aSmrg  for arg
45302be438aSmrg  do
45402be438aSmrg    case $arg in
45502be438aSmrg    -o)
45602be438aSmrg      shift
45702be438aSmrg      ;;
45802be438aSmrg    $object)
45902be438aSmrg      shift
46002be438aSmrg      ;;
46102be438aSmrg    *)
46202be438aSmrg      set fnord "$@" "$arg"
46302be438aSmrg      shift # fnord
46402be438aSmrg      shift # $arg
46502be438aSmrg      ;;
46602be438aSmrg    esac
46702be438aSmrg  done
46802be438aSmrg
46902be438aSmrg  "$@" -E |
47002be438aSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
47102be438aSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
47202be438aSmrg    sed '$ s: \\$::' > "$tmpdepfile"
47302be438aSmrg  rm -f "$depfile"
47402be438aSmrg  echo "$object : \\" > "$depfile"
47502be438aSmrg  cat < "$tmpdepfile" >> "$depfile"
47602be438aSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
47702be438aSmrg  rm -f "$tmpdepfile"
47802be438aSmrg  ;;
47902be438aSmrg
48002be438aSmrgmsvisualcpp)
48102be438aSmrg  # Important note: in order to support this mode, a compiler *must*
48202be438aSmrg  # always write the preprocessed file to stdout, regardless of -o,
48302be438aSmrg  # because we must use -o when running libtool.
48402be438aSmrg  "$@" || exit $?
48502be438aSmrg  IFS=" "
48602be438aSmrg  for arg
48702be438aSmrg  do
48802be438aSmrg    case "$arg" in
48902be438aSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
49002be438aSmrg	set fnord "$@"
49102be438aSmrg	shift
49202be438aSmrg	shift
49302be438aSmrg	;;
49402be438aSmrg    *)
49502be438aSmrg	set fnord "$@" "$arg"
49602be438aSmrg	shift
49702be438aSmrg	shift
49802be438aSmrg	;;
49902be438aSmrg    esac
50002be438aSmrg  done
50102be438aSmrg  "$@" -E |
50202be438aSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
50302be438aSmrg  rm -f "$depfile"
50402be438aSmrg  echo "$object : \\" > "$depfile"
50502be438aSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
50602be438aSmrg  echo "	" >> "$depfile"
50702be438aSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
50802be438aSmrg  rm -f "$tmpdepfile"
50902be438aSmrg  ;;
51002be438aSmrg
51102be438aSmrgnone)
51202be438aSmrg  exec "$@"
51302be438aSmrg  ;;
51402be438aSmrg
51502be438aSmrg*)
51602be438aSmrg  echo "Unknown depmode $depmode" 1>&2
51702be438aSmrg  exit 1
51802be438aSmrg  ;;
51902be438aSmrgesac
52002be438aSmrg
52102be438aSmrgexit 0
52202be438aSmrg
52302be438aSmrg# Local Variables:
52402be438aSmrg# mode: shell-script
52502be438aSmrg# sh-indentation: 2
52602be438aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
52702be438aSmrg# time-stamp-start: "scriptversion="
52802be438aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
52902be438aSmrg# time-stamp-end: "$"
53002be438aSmrg# End:
531