1209ff23fSmrg#! /bin/sh
2209ff23fSmrg# depcomp - compile a program generating dependencies as side-effects
3209ff23fSmrg
443df4709Smrgscriptversion=2009-04-28.21; # UTC
5209ff23fSmrg
643df4709Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
743df4709Smrg# Software Foundation, Inc.
8209ff23fSmrg
9209ff23fSmrg# This program is free software; you can redistribute it and/or modify
10209ff23fSmrg# it under the terms of the GNU General Public License as published by
11209ff23fSmrg# the Free Software Foundation; either version 2, or (at your option)
12209ff23fSmrg# any later version.
13209ff23fSmrg
14209ff23fSmrg# This program is distributed in the hope that it will be useful,
15209ff23fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16209ff23fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17209ff23fSmrg# GNU General Public License for more details.
18209ff23fSmrg
19209ff23fSmrg# You should have received a copy of the GNU General Public License
202f39173dSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21209ff23fSmrg
22209ff23fSmrg# As a special exception to the GNU General Public License, if you
23209ff23fSmrg# distribute this file as part of a program that contains a
24209ff23fSmrg# configuration script generated by Autoconf, you may include it under
25209ff23fSmrg# the same distribution terms that you use for the rest of that program.
26209ff23fSmrg
27209ff23fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28209ff23fSmrg
29209ff23fSmrgcase $1 in
30209ff23fSmrg  '')
3143df4709Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3243df4709Smrg     exit 1;
3343df4709Smrg     ;;
34209ff23fSmrg  -h | --h*)
35209ff23fSmrg    cat <<\EOF
36209ff23fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37209ff23fSmrg
38209ff23fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39209ff23fSmrgas side-effects.
40209ff23fSmrg
41209ff23fSmrgEnvironment variables:
42209ff23fSmrg  depmode     Dependency tracking mode.
4343df4709Smrg  source      Source file read by `PROGRAMS ARGS'.
4443df4709Smrg  object      Object file output by `PROGRAMS ARGS'.
45209ff23fSmrg  DEPDIR      directory where to store dependencies.
46209ff23fSmrg  depfile     Dependency file to output.
4743df4709Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
48209ff23fSmrg  libtool     Whether libtool is used (yes/no).
49209ff23fSmrg
50209ff23fSmrgReport bugs to <bug-automake@gnu.org>.
51209ff23fSmrgEOF
52209ff23fSmrg    exit $?
53209ff23fSmrg    ;;
54209ff23fSmrg  -v | --v*)
55209ff23fSmrg    echo "depcomp $scriptversion"
56209ff23fSmrg    exit $?
57209ff23fSmrg    ;;
58209ff23fSmrgesac
59209ff23fSmrg
60209ff23fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61209ff23fSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62209ff23fSmrg  exit 1
63209ff23fSmrgfi
64209ff23fSmrg
65209ff23fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66209ff23fSmrgdepfile=${depfile-`echo "$object" |
67209ff23fSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68209ff23fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69209ff23fSmrg
70209ff23fSmrgrm -f "$tmpdepfile"
71209ff23fSmrg
72209ff23fSmrg# Some modes work just like other modes, but use different flags.  We
73209ff23fSmrg# parameterize here, but still list the modes in the big case below,
74209ff23fSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75209ff23fSmrg# here, because this file can only contain one case statement.
76209ff23fSmrgif test "$depmode" = hp; then
77209ff23fSmrg  # HP compiler uses -M and no extra arg.
78209ff23fSmrg  gccflag=-M
79209ff23fSmrg  depmode=gcc
80209ff23fSmrgfi
81209ff23fSmrg
82209ff23fSmrgif test "$depmode" = dashXmstdout; then
8343df4709Smrg   # This is just like dashmstdout with a different argument.
8443df4709Smrg   dashmflag=-xM
8543df4709Smrg   depmode=dashmstdout
86209ff23fSmrgfi
87209ff23fSmrg
882f39173dSmrgcygpath_u="cygpath -u -f -"
892f39173dSmrgif test "$depmode" = msvcmsys; then
9043df4709Smrg   # This is just like msvisualcpp but w/o cygpath translation.
9143df4709Smrg   # Just convert the backslash-escaped backslashes to single forward
9243df4709Smrg   # slashes to satisfy depend.m4
9343df4709Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
9443df4709Smrg   depmode=msvisualcpp
952f39173dSmrgfi
962f39173dSmrg
97209ff23fSmrgcase "$depmode" in
98209ff23fSmrggcc3)
99209ff23fSmrg## gcc 3 implements dependency tracking that does exactly what
100209ff23fSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101209ff23fSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
102209ff23fSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103209ff23fSmrg## the command line argument order; so add the flags where they
104209ff23fSmrg## appear in depend2.am.  Note that the slowdown incurred here
105209ff23fSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106209ff23fSmrg  for arg
107209ff23fSmrg  do
108209ff23fSmrg    case $arg in
109209ff23fSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110209ff23fSmrg    *)  set fnord "$@" "$arg" ;;
111209ff23fSmrg    esac
112209ff23fSmrg    shift # fnord
113209ff23fSmrg    shift # $arg
114209ff23fSmrg  done
115209ff23fSmrg  "$@"
116209ff23fSmrg  stat=$?
11743df4709Smrg  if test $stat -eq 0; then :
11843df4709Smrg  else
119209ff23fSmrg    rm -f "$tmpdepfile"
120209ff23fSmrg    exit $stat
121209ff23fSmrg  fi
122209ff23fSmrg  mv "$tmpdepfile" "$depfile"
123209ff23fSmrg  ;;
124209ff23fSmrg
125209ff23fSmrggcc)
126209ff23fSmrg## There are various ways to get dependency output from gcc.  Here's
127209ff23fSmrg## why we pick this rather obscure method:
128209ff23fSmrg## - Don't want to use -MD because we'd like the dependencies to end
129209ff23fSmrg##   up in a subdir.  Having to rename by hand is ugly.
130209ff23fSmrg##   (We might end up doing this anyway to support other compilers.)
131209ff23fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
13243df4709Smrg##   -MM, not -M (despite what the docs say).
133209ff23fSmrg## - Using -M directly means running the compiler twice (even worse
134209ff23fSmrg##   than renaming).
135209ff23fSmrg  if test -z "$gccflag"; then
136209ff23fSmrg    gccflag=-MD,
137209ff23fSmrg  fi
138209ff23fSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
139209ff23fSmrg  stat=$?
14043df4709Smrg  if test $stat -eq 0; then :
14143df4709Smrg  else
142209ff23fSmrg    rm -f "$tmpdepfile"
143209ff23fSmrg    exit $stat
144209ff23fSmrg  fi
145209ff23fSmrg  rm -f "$depfile"
146209ff23fSmrg  echo "$object : \\" > "$depfile"
14743df4709Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14843df4709Smrg## The second -e expression handles DOS-style file names with drive letters.
149209ff23fSmrg  sed -e 's/^[^:]*: / /' \
150209ff23fSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
15143df4709Smrg## This next piece of magic avoids the `deleted header file' problem.
152209ff23fSmrg## The problem is that when a header file which appears in a .P file
153209ff23fSmrg## is deleted, the dependency causes make to die (because there is
154209ff23fSmrg## typically no way to rebuild the header).  We avoid this by adding
155209ff23fSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156209ff23fSmrg## this for us directly.
15743df4709Smrg  tr ' ' '
15843df4709Smrg' < "$tmpdepfile" |
15943df4709Smrg## Some versions of gcc put a space before the `:'.  On the theory
160209ff23fSmrg## that the space means something, we add a space to the output as
16143df4709Smrg## well.
162209ff23fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
163209ff23fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
16443df4709Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165209ff23fSmrg  rm -f "$tmpdepfile"
166209ff23fSmrg  ;;
167209ff23fSmrg
168209ff23fSmrghp)
169209ff23fSmrg  # This case exists only to let depend.m4 do its work.  It works by
170209ff23fSmrg  # looking at the text of this script.  This case will never be run,
171209ff23fSmrg  # since it is checked for above.
172209ff23fSmrg  exit 1
173209ff23fSmrg  ;;
174209ff23fSmrg
175209ff23fSmrgsgi)
176209ff23fSmrg  if test "$libtool" = yes; then
177209ff23fSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178209ff23fSmrg  else
179209ff23fSmrg    "$@" -MDupdate "$tmpdepfile"
180209ff23fSmrg  fi
181209ff23fSmrg  stat=$?
18243df4709Smrg  if test $stat -eq 0; then :
18343df4709Smrg  else
184209ff23fSmrg    rm -f "$tmpdepfile"
185209ff23fSmrg    exit $stat
186209ff23fSmrg  fi
187209ff23fSmrg  rm -f "$depfile"
188209ff23fSmrg
189209ff23fSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190209ff23fSmrg    echo "$object : \\" > "$depfile"
19143df4709Smrg
192209ff23fSmrg    # Clip off the initial element (the dependent).  Don't try to be
193209ff23fSmrg    # clever and replace this with sed code, as IRIX sed won't handle
194209ff23fSmrg    # lines with more than a fixed number of characters (4096 in
195209ff23fSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
19643df4709Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
197209ff23fSmrg    # dependency line.
19843df4709Smrg    tr ' ' '
19943df4709Smrg' < "$tmpdepfile" \
20043df4709Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
20143df4709Smrg    tr '
20243df4709Smrg' ' ' >> "$depfile"
2032f39173dSmrg    echo >> "$depfile"
20443df4709Smrg
205209ff23fSmrg    # The second pass generates a dummy entry for each header file.
20643df4709Smrg    tr ' ' '
20743df4709Smrg' < "$tmpdepfile" \
20843df4709Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20943df4709Smrg   >> "$depfile"
210209ff23fSmrg  else
21143df4709Smrg    # The sourcefile does not contain any dependencies, so just
21243df4709Smrg    # store a dummy comment line, to avoid errors with the Makefile
21343df4709Smrg    # "include basename.Plo" scheme.
21443df4709Smrg    echo "#dummy" > "$depfile"
215209ff23fSmrg  fi
216209ff23fSmrg  rm -f "$tmpdepfile"
217209ff23fSmrg  ;;
218209ff23fSmrg
219209ff23fSmrgaix)
220209ff23fSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
221209ff23fSmrg  # in a .u file.  In older versions, this file always lives in the
22243df4709Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223209ff23fSmrg  # start of each line; $object doesn't have directory information.
224209ff23fSmrg  # Version 6 uses the directory in both cases.
22543df4709Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
22643df4709Smrg  test "x$dir" = "x$object" && dir=
22743df4709Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228209ff23fSmrg  if test "$libtool" = yes; then
229c503f109Smrg    tmpdepfile1=$dir$base.u
230c503f109Smrg    tmpdepfile2=$base.u
231c503f109Smrg    tmpdepfile3=$dir.libs/$base.u
232209ff23fSmrg    "$@" -Wc,-M
233209ff23fSmrg  else
234c503f109Smrg    tmpdepfile1=$dir$base.u
235c503f109Smrg    tmpdepfile2=$dir$base.u
236c503f109Smrg    tmpdepfile3=$dir$base.u
237209ff23fSmrg    "$@" -M
238209ff23fSmrg  fi
239209ff23fSmrg  stat=$?
24043df4709Smrg
24143df4709Smrg  if test $stat -eq 0; then :
24243df4709Smrg  else
243c503f109Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244209ff23fSmrg    exit $stat
245209ff23fSmrg  fi
246209ff23fSmrg
247c503f109Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248c503f109Smrg  do
249c503f109Smrg    test -f "$tmpdepfile" && break
250c503f109Smrg  done
25143df4709Smrg  if test -f "$tmpdepfile"; then
25243df4709Smrg    # Each line is of the form `foo.o: dependent.h'.
25343df4709Smrg    # Do two passes, one to just change these to
25443df4709Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
25543df4709Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
25643df4709Smrg    # That's a tab and a space in the [].
25743df4709Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
25843df4709Smrg  else
25943df4709Smrg    # The sourcefile does not contain any dependencies, so just
26043df4709Smrg    # store a dummy comment line, to avoid errors with the Makefile
26143df4709Smrg    # "include basename.Plo" scheme.
26243df4709Smrg    echo "#dummy" > "$depfile"
263209ff23fSmrg  fi
264209ff23fSmrg  rm -f "$tmpdepfile"
265209ff23fSmrg  ;;
266209ff23fSmrg
26743df4709Smrgicc)
26843df4709Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
26943df4709Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
27043df4709Smrg  # ICC 7.0 will fill foo.d with something like
27143df4709Smrg  #    foo.o: sub/foo.c
27243df4709Smrg  #    foo.o: sub/foo.h
27343df4709Smrg  # which is wrong.  We want:
27443df4709Smrg  #    sub/foo.o: sub/foo.c
27543df4709Smrg  #    sub/foo.o: sub/foo.h
27643df4709Smrg  #    sub/foo.c:
27743df4709Smrg  #    sub/foo.h:
27843df4709Smrg  # ICC 7.1 will output
279209ff23fSmrg  #    foo.o: sub/foo.c sub/foo.h
28043df4709Smrg  # and will wrap long lines using \ :
281209ff23fSmrg  #    foo.o: sub/foo.c ... \
282209ff23fSmrg  #     sub/foo.h ... \
283209ff23fSmrg  #     ...
284209ff23fSmrg
28543df4709Smrg  "$@" -MD -MF "$tmpdepfile"
28643df4709Smrg  stat=$?
28743df4709Smrg  if test $stat -eq 0; then :
28843df4709Smrg  else
289209ff23fSmrg    rm -f "$tmpdepfile"
290209ff23fSmrg    exit $stat
291209ff23fSmrg  fi
292209ff23fSmrg  rm -f "$depfile"
293209ff23fSmrg  # Each line is of the form `foo.o: dependent.h',
294209ff23fSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295209ff23fSmrg  # Do two passes, one to just change these to
296209ff23fSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297209ff23fSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298209ff23fSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299209ff23fSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
30043df4709Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
30143df4709Smrg    sed -e 's/$/ :/' >> "$depfile"
302209ff23fSmrg  rm -f "$tmpdepfile"
303209ff23fSmrg  ;;
304209ff23fSmrg
305209ff23fSmrghp2)
306209ff23fSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307209ff23fSmrg  # compilers, which have integrated preprocessors.  The correct option
308209ff23fSmrg  # to use with these is +Maked; it writes dependencies to a file named
309209ff23fSmrg  # 'foo.d', which lands next to the object file, wherever that
310209ff23fSmrg  # happens to be.
311209ff23fSmrg  # Much of this is similar to the tru64 case; see comments there.
31243df4709Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
31343df4709Smrg  test "x$dir" = "x$object" && dir=
31443df4709Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315209ff23fSmrg  if test "$libtool" = yes; then
316209ff23fSmrg    tmpdepfile1=$dir$base.d
317209ff23fSmrg    tmpdepfile2=$dir.libs/$base.d
318209ff23fSmrg    "$@" -Wc,+Maked
319209ff23fSmrg  else
320209ff23fSmrg    tmpdepfile1=$dir$base.d
321209ff23fSmrg    tmpdepfile2=$dir$base.d
322209ff23fSmrg    "$@" +Maked
323209ff23fSmrg  fi
324209ff23fSmrg  stat=$?
32543df4709Smrg  if test $stat -eq 0; then :
32643df4709Smrg  else
327209ff23fSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328209ff23fSmrg     exit $stat
329209ff23fSmrg  fi
330209ff23fSmrg
331209ff23fSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332209ff23fSmrg  do
333209ff23fSmrg    test -f "$tmpdepfile" && break
334209ff23fSmrg  done
335209ff23fSmrg  if test -f "$tmpdepfile"; then
33643df4709Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
33743df4709Smrg    # Add `dependent.h:' lines.
3382f39173dSmrg    sed -ne '2,${
33943df4709Smrg	       s/^ *//
34043df4709Smrg	       s/ \\*$//
34143df4709Smrg	       s/$/:/
34243df4709Smrg	       p
34343df4709Smrg	     }' "$tmpdepfile" >> "$depfile"
344209ff23fSmrg  else
34543df4709Smrg    echo "#dummy" > "$depfile"
346209ff23fSmrg  fi
347209ff23fSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348209ff23fSmrg  ;;
349209ff23fSmrg
350209ff23fSmrgtru64)
35143df4709Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
35243df4709Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
35343df4709Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
35443df4709Smrg   # dependencies in `foo.d' instead, so we check for that too.
35543df4709Smrg   # Subdirectories are respected.
35643df4709Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
35743df4709Smrg   test "x$dir" = "x$object" && dir=
35843df4709Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
35943df4709Smrg
36043df4709Smrg   if test "$libtool" = yes; then
36143df4709Smrg      # With Tru64 cc, shared objects can also be used to make a
36243df4709Smrg      # static library.  This mechanism is used in libtool 1.4 series to
36343df4709Smrg      # handle both shared and static libraries in a single compilation.
36443df4709Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
36543df4709Smrg      #
36643df4709Smrg      # With libtool 1.5 this exception was removed, and libtool now
36743df4709Smrg      # generates 2 separate objects for the 2 libraries.  These two
36843df4709Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
36943df4709Smrg      # in $dir$base.o.d.  We have to check for both files, because
37043df4709Smrg      # one of the two compilations can be disabled.  We should prefer
37143df4709Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
37243df4709Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
37343df4709Smrg      # the former would cause a distcleancheck panic.
37443df4709Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
37543df4709Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
37643df4709Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
37743df4709Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
37843df4709Smrg      "$@" -Wc,-MD
37943df4709Smrg   else
38043df4709Smrg      tmpdepfile1=$dir$base.o.d
38143df4709Smrg      tmpdepfile2=$dir$base.d
38243df4709Smrg      tmpdepfile3=$dir$base.d
38343df4709Smrg      tmpdepfile4=$dir$base.d
38443df4709Smrg      "$@" -MD
38543df4709Smrg   fi
38643df4709Smrg
38743df4709Smrg   stat=$?
38843df4709Smrg   if test $stat -eq 0; then :
38943df4709Smrg   else
39043df4709Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39143df4709Smrg      exit $stat
39243df4709Smrg   fi
39343df4709Smrg
39443df4709Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39543df4709Smrg   do
39643df4709Smrg     test -f "$tmpdepfile" && break
39743df4709Smrg   done
39843df4709Smrg   if test -f "$tmpdepfile"; then
39943df4709Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
40043df4709Smrg      # That's a tab and a space in the [].
40143df4709Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
40243df4709Smrg   else
40343df4709Smrg      echo "#dummy" > "$depfile"
40443df4709Smrg   fi
40543df4709Smrg   rm -f "$tmpdepfile"
40643df4709Smrg   ;;
407209ff23fSmrg
408209ff23fSmrg#nosideeffect)
409209ff23fSmrg  # This comment above is used by automake to tell side-effect
410209ff23fSmrg  # dependency tracking mechanisms from slower ones.
411209ff23fSmrg
412209ff23fSmrgdashmstdout)
413209ff23fSmrg  # Important note: in order to support this mode, a compiler *must*
414209ff23fSmrg  # always write the preprocessed file to stdout, regardless of -o.
415209ff23fSmrg  "$@" || exit $?
416209ff23fSmrg
417209ff23fSmrg  # Remove the call to Libtool.
418209ff23fSmrg  if test "$libtool" = yes; then
4192f39173dSmrg    while test "X$1" != 'X--mode=compile'; do
420209ff23fSmrg      shift
421209ff23fSmrg    done
422209ff23fSmrg    shift
423209ff23fSmrg  fi
424209ff23fSmrg
42543df4709Smrg  # Remove `-o $object'.
426209ff23fSmrg  IFS=" "
427209ff23fSmrg  for arg
428209ff23fSmrg  do
429209ff23fSmrg    case $arg in
430209ff23fSmrg    -o)
431209ff23fSmrg      shift
432209ff23fSmrg      ;;
433209ff23fSmrg    $object)
434209ff23fSmrg      shift
435209ff23fSmrg      ;;
436209ff23fSmrg    *)
437209ff23fSmrg      set fnord "$@" "$arg"
438209ff23fSmrg      shift # fnord
439209ff23fSmrg      shift # $arg
440209ff23fSmrg      ;;
441209ff23fSmrg    esac
442209ff23fSmrg  done
443209ff23fSmrg
444209ff23fSmrg  test -z "$dashmflag" && dashmflag=-M
44543df4709Smrg  # Require at least two characters before searching for `:'
446209ff23fSmrg  # in the target name.  This is to cope with DOS-style filenames:
44743df4709Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448209ff23fSmrg  "$@" $dashmflag |
44943df4709Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450209ff23fSmrg  rm -f "$depfile"
451209ff23fSmrg  cat < "$tmpdepfile" > "$depfile"
45243df4709Smrg  tr ' ' '
45343df4709Smrg' < "$tmpdepfile" | \
45443df4709Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
45543df4709Smrg## correctly.  Breaking it into two sed invocations is a workaround.
45643df4709Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457209ff23fSmrg  rm -f "$tmpdepfile"
458209ff23fSmrg  ;;
459209ff23fSmrg
460209ff23fSmrgdashXmstdout)
461209ff23fSmrg  # This case only exists to satisfy depend.m4.  It is never actually
462209ff23fSmrg  # run, as this mode is specially recognized in the preamble.
463209ff23fSmrg  exit 1
464209ff23fSmrg  ;;
465209ff23fSmrg
466209ff23fSmrgmakedepend)
467209ff23fSmrg  "$@" || exit $?
468209ff23fSmrg  # Remove any Libtool call
469209ff23fSmrg  if test "$libtool" = yes; then
4702f39173dSmrg    while test "X$1" != 'X--mode=compile'; do
471209ff23fSmrg      shift
472209ff23fSmrg    done
473209ff23fSmrg    shift
474209ff23fSmrg  fi
475209ff23fSmrg  # X makedepend
476209ff23fSmrg  shift
4772f39173dSmrg  cleared=no eat=no
4782f39173dSmrg  for arg
4792f39173dSmrg  do
480209ff23fSmrg    case $cleared in
481209ff23fSmrg    no)
482209ff23fSmrg      set ""; shift
483209ff23fSmrg      cleared=yes ;;
484209ff23fSmrg    esac
4852f39173dSmrg    if test $eat = yes; then
4862f39173dSmrg      eat=no
4872f39173dSmrg      continue
4882f39173dSmrg    fi
489209ff23fSmrg    case "$arg" in
490209ff23fSmrg    -D*|-I*)
491209ff23fSmrg      set fnord "$@" "$arg"; shift ;;
492209ff23fSmrg    # Strip any option that makedepend may not understand.  Remove
493209ff23fSmrg    # the object too, otherwise makedepend will parse it as a source file.
4942f39173dSmrg    -arch)
4952f39173dSmrg      eat=yes ;;
496209ff23fSmrg    -*|$object)
497209ff23fSmrg      ;;
498209ff23fSmrg    *)
499209ff23fSmrg      set fnord "$@" "$arg"; shift ;;
500209ff23fSmrg    esac
501209ff23fSmrg  done
5022f39173dSmrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503209ff23fSmrg  touch "$tmpdepfile"
504209ff23fSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505209ff23fSmrg  rm -f "$depfile"
50643df4709Smrg  cat < "$tmpdepfile" > "$depfile"
50743df4709Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
50843df4709Smrg' | \
50943df4709Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
51043df4709Smrg## correctly.  Breaking it into two sed invocations is a workaround.
51143df4709Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512209ff23fSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513209ff23fSmrg  ;;
514209ff23fSmrg
515209ff23fSmrgcpp)
516209ff23fSmrg  # Important note: in order to support this mode, a compiler *must*
517209ff23fSmrg  # always write the preprocessed file to stdout.
518209ff23fSmrg  "$@" || exit $?
519209ff23fSmrg
520209ff23fSmrg  # Remove the call to Libtool.
521209ff23fSmrg  if test "$libtool" = yes; then
5222f39173dSmrg    while test "X$1" != 'X--mode=compile'; do
523209ff23fSmrg      shift
524209ff23fSmrg    done
525209ff23fSmrg    shift
526209ff23fSmrg  fi
527209ff23fSmrg
52843df4709Smrg  # Remove `-o $object'.
529209ff23fSmrg  IFS=" "
530209ff23fSmrg  for arg
531209ff23fSmrg  do
532209ff23fSmrg    case $arg in
533209ff23fSmrg    -o)
534209ff23fSmrg      shift
535209ff23fSmrg      ;;
536209ff23fSmrg    $object)
537209ff23fSmrg      shift
538209ff23fSmrg      ;;
539209ff23fSmrg    *)
540209ff23fSmrg      set fnord "$@" "$arg"
541209ff23fSmrg      shift # fnord
542209ff23fSmrg      shift # $arg
543209ff23fSmrg      ;;
544209ff23fSmrg    esac
545209ff23fSmrg  done
546209ff23fSmrg
54743df4709Smrg  "$@" -E |
54843df4709Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
54943df4709Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
55043df4709Smrg    sed '$ s: \\$::' > "$tmpdepfile"
551209ff23fSmrg  rm -f "$depfile"
552209ff23fSmrg  echo "$object : \\" > "$depfile"
553209ff23fSmrg  cat < "$tmpdepfile" >> "$depfile"
554209ff23fSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555209ff23fSmrg  rm -f "$tmpdepfile"
556209ff23fSmrg  ;;
557209ff23fSmrg
558209ff23fSmrgmsvisualcpp)
559209ff23fSmrg  # Important note: in order to support this mode, a compiler *must*
5602f39173dSmrg  # always write the preprocessed file to stdout.
561209ff23fSmrg  "$@" || exit $?
5622f39173dSmrg
5632f39173dSmrg  # Remove the call to Libtool.
5642f39173dSmrg  if test "$libtool" = yes; then
5652f39173dSmrg    while test "X$1" != 'X--mode=compile'; do
5662f39173dSmrg      shift
5672f39173dSmrg    done
5682f39173dSmrg    shift
5692f39173dSmrg  fi
5702f39173dSmrg
571209ff23fSmrg  IFS=" "
572209ff23fSmrg  for arg
573209ff23fSmrg  do
574209ff23fSmrg    case "$arg" in
5752f39173dSmrg    -o)
5762f39173dSmrg      shift
5772f39173dSmrg      ;;
5782f39173dSmrg    $object)
5792f39173dSmrg      shift
5802f39173dSmrg      ;;
581209ff23fSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
58243df4709Smrg	set fnord "$@"
58343df4709Smrg	shift
58443df4709Smrg	shift
58543df4709Smrg	;;
586209ff23fSmrg    *)
58743df4709Smrg	set fnord "$@" "$arg"
58843df4709Smrg	shift
58943df4709Smrg	shift
59043df4709Smrg	;;
591209ff23fSmrg    esac
592209ff23fSmrg  done
5932f39173dSmrg  "$@" -E 2>/dev/null |
5942f39173dSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595209ff23fSmrg  rm -f "$depfile"
596209ff23fSmrg  echo "$object : \\" > "$depfile"
59743df4709Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
59843df4709Smrg  echo "	" >> "$depfile"
5992f39173dSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600209ff23fSmrg  rm -f "$tmpdepfile"
601209ff23fSmrg  ;;
602209ff23fSmrg
6032f39173dSmrgmsvcmsys)
6042f39173dSmrg  # This case exists only to let depend.m4 do its work.  It works by
6052f39173dSmrg  # looking at the text of this script.  This case will never be run,
6062f39173dSmrg  # since it is checked for above.
6072f39173dSmrg  exit 1
6082f39173dSmrg  ;;
6092f39173dSmrg
610209ff23fSmrgnone)
611209ff23fSmrg  exec "$@"
612209ff23fSmrg  ;;
613209ff23fSmrg
614209ff23fSmrg*)
615209ff23fSmrg  echo "Unknown depmode $depmode" 1>&2
616209ff23fSmrg  exit 1
617209ff23fSmrg  ;;
618209ff23fSmrgesac
619209ff23fSmrg
620209ff23fSmrgexit 0
621209ff23fSmrg
622209ff23fSmrg# Local Variables:
623209ff23fSmrg# mode: shell-script
624209ff23fSmrg# sh-indentation: 2
625209ff23fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626209ff23fSmrg# time-stamp-start: "scriptversion="
627209ff23fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
6282f39173dSmrg# time-stamp-time-zone: "UTC"
6292f39173dSmrg# time-stamp-end: "; # UTC"
630209ff23fSmrg# End:
631