depcomp revision c06b6b69
1c06b6b69Smrg#! /bin/sh
2c06b6b69Smrg# depcomp - compile a program generating dependencies as side-effects
3c06b6b69Smrg
4c06b6b69Smrgscriptversion=2005-07-09.11
5c06b6b69Smrg
6c06b6b69Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
7c06b6b69Smrg
8c06b6b69Smrg# This program is free software; you can redistribute it and/or modify
9c06b6b69Smrg# it under the terms of the GNU General Public License as published by
10c06b6b69Smrg# the Free Software Foundation; either version 2, or (at your option)
11c06b6b69Smrg# any later version.
12c06b6b69Smrg
13c06b6b69Smrg# This program is distributed in the hope that it will be useful,
14c06b6b69Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
15c06b6b69Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16c06b6b69Smrg# GNU General Public License for more details.
17c06b6b69Smrg
18c06b6b69Smrg# You should have received a copy of the GNU General Public License
19c06b6b69Smrg# along with this program; if not, write to the Free Software
20c06b6b69Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21c06b6b69Smrg# 02110-1301, USA.
22c06b6b69Smrg
23c06b6b69Smrg# As a special exception to the GNU General Public License, if you
24c06b6b69Smrg# distribute this file as part of a program that contains a
25c06b6b69Smrg# configuration script generated by Autoconf, you may include it under
26c06b6b69Smrg# the same distribution terms that you use for the rest of that program.
27c06b6b69Smrg
28c06b6b69Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29c06b6b69Smrg
30c06b6b69Smrgcase $1 in
31c06b6b69Smrg  '')
32c06b6b69Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33c06b6b69Smrg     exit 1;
34c06b6b69Smrg     ;;
35c06b6b69Smrg  -h | --h*)
36c06b6b69Smrg    cat <<\EOF
37c06b6b69SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
38c06b6b69Smrg
39c06b6b69SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
40c06b6b69Smrgas side-effects.
41c06b6b69Smrg
42c06b6b69SmrgEnvironment variables:
43c06b6b69Smrg  depmode     Dependency tracking mode.
44c06b6b69Smrg  source      Source file read by `PROGRAMS ARGS'.
45c06b6b69Smrg  object      Object file output by `PROGRAMS ARGS'.
46c06b6b69Smrg  DEPDIR      directory where to store dependencies.
47c06b6b69Smrg  depfile     Dependency file to output.
48c06b6b69Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
49c06b6b69Smrg  libtool     Whether libtool is used (yes/no).
50c06b6b69Smrg
51c06b6b69SmrgReport bugs to <bug-automake@gnu.org>.
52c06b6b69SmrgEOF
53c06b6b69Smrg    exit $?
54c06b6b69Smrg    ;;
55c06b6b69Smrg  -v | --v*)
56c06b6b69Smrg    echo "depcomp $scriptversion"
57c06b6b69Smrg    exit $?
58c06b6b69Smrg    ;;
59c06b6b69Smrgesac
60c06b6b69Smrg
61c06b6b69Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
62c06b6b69Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63c06b6b69Smrg  exit 1
64c06b6b69Smrgfi
65c06b6b69Smrg
66c06b6b69Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67c06b6b69Smrgdepfile=${depfile-`echo "$object" |
68c06b6b69Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
69c06b6b69Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70c06b6b69Smrg
71c06b6b69Smrgrm -f "$tmpdepfile"
72c06b6b69Smrg
73c06b6b69Smrg# Some modes work just like other modes, but use different flags.  We
74c06b6b69Smrg# parameterize here, but still list the modes in the big case below,
75c06b6b69Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
76c06b6b69Smrg# here, because this file can only contain one case statement.
77c06b6b69Smrgif test "$depmode" = hp; then
78c06b6b69Smrg  # HP compiler uses -M and no extra arg.
79c06b6b69Smrg  gccflag=-M
80c06b6b69Smrg  depmode=gcc
81c06b6b69Smrgfi
82c06b6b69Smrg
83c06b6b69Smrgif test "$depmode" = dashXmstdout; then
84c06b6b69Smrg   # This is just like dashmstdout with a different argument.
85c06b6b69Smrg   dashmflag=-xM
86c06b6b69Smrg   depmode=dashmstdout
87c06b6b69Smrgfi
88c06b6b69Smrg
89c06b6b69Smrgcase "$depmode" in
90c06b6b69Smrggcc3)
91c06b6b69Smrg## gcc 3 implements dependency tracking that does exactly what
92c06b6b69Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93c06b6b69Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
94c06b6b69Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
95c06b6b69Smrg  stat=$?
96c06b6b69Smrg  if test $stat -eq 0; then :
97c06b6b69Smrg  else
98c06b6b69Smrg    rm -f "$tmpdepfile"
99c06b6b69Smrg    exit $stat
100c06b6b69Smrg  fi
101c06b6b69Smrg  mv "$tmpdepfile" "$depfile"
102c06b6b69Smrg  ;;
103c06b6b69Smrg
104c06b6b69Smrggcc)
105c06b6b69Smrg## There are various ways to get dependency output from gcc.  Here's
106c06b6b69Smrg## why we pick this rather obscure method:
107c06b6b69Smrg## - Don't want to use -MD because we'd like the dependencies to end
108c06b6b69Smrg##   up in a subdir.  Having to rename by hand is ugly.
109c06b6b69Smrg##   (We might end up doing this anyway to support other compilers.)
110c06b6b69Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
111c06b6b69Smrg##   -MM, not -M (despite what the docs say).
112c06b6b69Smrg## - Using -M directly means running the compiler twice (even worse
113c06b6b69Smrg##   than renaming).
114c06b6b69Smrg  if test -z "$gccflag"; then
115c06b6b69Smrg    gccflag=-MD,
116c06b6b69Smrg  fi
117c06b6b69Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
118c06b6b69Smrg  stat=$?
119c06b6b69Smrg  if test $stat -eq 0; then :
120c06b6b69Smrg  else
121c06b6b69Smrg    rm -f "$tmpdepfile"
122c06b6b69Smrg    exit $stat
123c06b6b69Smrg  fi
124c06b6b69Smrg  rm -f "$depfile"
125c06b6b69Smrg  echo "$object : \\" > "$depfile"
126c06b6b69Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
127c06b6b69Smrg## The second -e expression handles DOS-style file names with drive letters.
128c06b6b69Smrg  sed -e 's/^[^:]*: / /' \
129c06b6b69Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
130c06b6b69Smrg## This next piece of magic avoids the `deleted header file' problem.
131c06b6b69Smrg## The problem is that when a header file which appears in a .P file
132c06b6b69Smrg## is deleted, the dependency causes make to die (because there is
133c06b6b69Smrg## typically no way to rebuild the header).  We avoid this by adding
134c06b6b69Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
135c06b6b69Smrg## this for us directly.
136c06b6b69Smrg  tr ' ' '
137c06b6b69Smrg' < "$tmpdepfile" |
138c06b6b69Smrg## Some versions of gcc put a space before the `:'.  On the theory
139c06b6b69Smrg## that the space means something, we add a space to the output as
140c06b6b69Smrg## well.
141c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
142c06b6b69Smrg## correctly.  Breaking it into two sed invocations is a workaround.
143c06b6b69Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
144c06b6b69Smrg  rm -f "$tmpdepfile"
145c06b6b69Smrg  ;;
146c06b6b69Smrg
147c06b6b69Smrghp)
148c06b6b69Smrg  # This case exists only to let depend.m4 do its work.  It works by
149c06b6b69Smrg  # looking at the text of this script.  This case will never be run,
150c06b6b69Smrg  # since it is checked for above.
151c06b6b69Smrg  exit 1
152c06b6b69Smrg  ;;
153c06b6b69Smrg
154c06b6b69Smrgsgi)
155c06b6b69Smrg  if test "$libtool" = yes; then
156c06b6b69Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
157c06b6b69Smrg  else
158c06b6b69Smrg    "$@" -MDupdate "$tmpdepfile"
159c06b6b69Smrg  fi
160c06b6b69Smrg  stat=$?
161c06b6b69Smrg  if test $stat -eq 0; then :
162c06b6b69Smrg  else
163c06b6b69Smrg    rm -f "$tmpdepfile"
164c06b6b69Smrg    exit $stat
165c06b6b69Smrg  fi
166c06b6b69Smrg  rm -f "$depfile"
167c06b6b69Smrg
168c06b6b69Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
169c06b6b69Smrg    echo "$object : \\" > "$depfile"
170c06b6b69Smrg
171c06b6b69Smrg    # Clip off the initial element (the dependent).  Don't try to be
172c06b6b69Smrg    # clever and replace this with sed code, as IRIX sed won't handle
173c06b6b69Smrg    # lines with more than a fixed number of characters (4096 in
174c06b6b69Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
175c06b6b69Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
176c06b6b69Smrg    # dependency line.
177c06b6b69Smrg    tr ' ' '
178c06b6b69Smrg' < "$tmpdepfile" \
179c06b6b69Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
180c06b6b69Smrg    tr '
181c06b6b69Smrg' ' ' >> $depfile
182c06b6b69Smrg    echo >> $depfile
183c06b6b69Smrg
184c06b6b69Smrg    # The second pass generates a dummy entry for each header file.
185c06b6b69Smrg    tr ' ' '
186c06b6b69Smrg' < "$tmpdepfile" \
187c06b6b69Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
188c06b6b69Smrg   >> $depfile
189c06b6b69Smrg  else
190c06b6b69Smrg    # The sourcefile does not contain any dependencies, so just
191c06b6b69Smrg    # store a dummy comment line, to avoid errors with the Makefile
192c06b6b69Smrg    # "include basename.Plo" scheme.
193c06b6b69Smrg    echo "#dummy" > "$depfile"
194c06b6b69Smrg  fi
195c06b6b69Smrg  rm -f "$tmpdepfile"
196c06b6b69Smrg  ;;
197c06b6b69Smrg
198c06b6b69Smrgaix)
199c06b6b69Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
200c06b6b69Smrg  # in a .u file.  In older versions, this file always lives in the
201c06b6b69Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
202c06b6b69Smrg  # start of each line; $object doesn't have directory information.
203c06b6b69Smrg  # Version 6 uses the directory in both cases.
204c06b6b69Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
205c06b6b69Smrg  tmpdepfile="$stripped.u"
206c06b6b69Smrg  if test "$libtool" = yes; then
207c06b6b69Smrg    "$@" -Wc,-M
208c06b6b69Smrg  else
209c06b6b69Smrg    "$@" -M
210c06b6b69Smrg  fi
211c06b6b69Smrg  stat=$?
212c06b6b69Smrg
213c06b6b69Smrg  if test -f "$tmpdepfile"; then :
214c06b6b69Smrg  else
215c06b6b69Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216c06b6b69Smrg    tmpdepfile="$stripped.u"
217c06b6b69Smrg  fi
218c06b6b69Smrg
219c06b6b69Smrg  if test $stat -eq 0; then :
220c06b6b69Smrg  else
221c06b6b69Smrg    rm -f "$tmpdepfile"
222c06b6b69Smrg    exit $stat
223c06b6b69Smrg  fi
224c06b6b69Smrg
225c06b6b69Smrg  if test -f "$tmpdepfile"; then
226c06b6b69Smrg    outname="$stripped.o"
227c06b6b69Smrg    # Each line is of the form `foo.o: dependent.h'.
228c06b6b69Smrg    # Do two passes, one to just change these to
229c06b6b69Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
230c06b6b69Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
231c06b6b69Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
232c06b6b69Smrg  else
233c06b6b69Smrg    # The sourcefile does not contain any dependencies, so just
234c06b6b69Smrg    # store a dummy comment line, to avoid errors with the Makefile
235c06b6b69Smrg    # "include basename.Plo" scheme.
236c06b6b69Smrg    echo "#dummy" > "$depfile"
237c06b6b69Smrg  fi
238c06b6b69Smrg  rm -f "$tmpdepfile"
239c06b6b69Smrg  ;;
240c06b6b69Smrg
241c06b6b69Smrgicc)
242c06b6b69Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
243c06b6b69Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244c06b6b69Smrg  # ICC 7.0 will fill foo.d with something like
245c06b6b69Smrg  #    foo.o: sub/foo.c
246c06b6b69Smrg  #    foo.o: sub/foo.h
247c06b6b69Smrg  # which is wrong.  We want:
248c06b6b69Smrg  #    sub/foo.o: sub/foo.c
249c06b6b69Smrg  #    sub/foo.o: sub/foo.h
250c06b6b69Smrg  #    sub/foo.c:
251c06b6b69Smrg  #    sub/foo.h:
252c06b6b69Smrg  # ICC 7.1 will output
253c06b6b69Smrg  #    foo.o: sub/foo.c sub/foo.h
254c06b6b69Smrg  # and will wrap long lines using \ :
255c06b6b69Smrg  #    foo.o: sub/foo.c ... \
256c06b6b69Smrg  #     sub/foo.h ... \
257c06b6b69Smrg  #     ...
258c06b6b69Smrg
259c06b6b69Smrg  "$@" -MD -MF "$tmpdepfile"
260c06b6b69Smrg  stat=$?
261c06b6b69Smrg  if test $stat -eq 0; then :
262c06b6b69Smrg  else
263c06b6b69Smrg    rm -f "$tmpdepfile"
264c06b6b69Smrg    exit $stat
265c06b6b69Smrg  fi
266c06b6b69Smrg  rm -f "$depfile"
267c06b6b69Smrg  # Each line is of the form `foo.o: dependent.h',
268c06b6b69Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269c06b6b69Smrg  # Do two passes, one to just change these to
270c06b6b69Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
271c06b6b69Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272c06b6b69Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
273c06b6b69Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
274c06b6b69Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275c06b6b69Smrg    sed -e 's/$/ :/' >> "$depfile"
276c06b6b69Smrg  rm -f "$tmpdepfile"
277c06b6b69Smrg  ;;
278c06b6b69Smrg
279c06b6b69Smrgtru64)
280c06b6b69Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
281c06b6b69Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282c06b6b69Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
283c06b6b69Smrg   # dependencies in `foo.d' instead, so we check for that too.
284c06b6b69Smrg   # Subdirectories are respected.
285c06b6b69Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286c06b6b69Smrg   test "x$dir" = "x$object" && dir=
287c06b6b69Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288c06b6b69Smrg
289c06b6b69Smrg   if test "$libtool" = yes; then
290c06b6b69Smrg      # With Tru64 cc, shared objects can also be used to make a
291c06b6b69Smrg      # static library.  This mecanism is used in libtool 1.4 series to
292c06b6b69Smrg      # handle both shared and static libraries in a single compilation.
293c06b6b69Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294c06b6b69Smrg      #
295c06b6b69Smrg      # With libtool 1.5 this exception was removed, and libtool now
296c06b6b69Smrg      # generates 2 separate objects for the 2 libraries.  These two
297c06b6b69Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
298c06b6b69Smrg      # in $dir$base.o.d.  We have to check for both files, because
299c06b6b69Smrg      # one of the two compilations can be disabled.  We should prefer
300c06b6b69Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301c06b6b69Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
302c06b6b69Smrg      # the former would cause a distcleancheck panic.
303c06b6b69Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304c06b6b69Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305c06b6b69Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306c06b6b69Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307c06b6b69Smrg      "$@" -Wc,-MD
308c06b6b69Smrg   else
309c06b6b69Smrg      tmpdepfile1=$dir$base.o.d
310c06b6b69Smrg      tmpdepfile2=$dir$base.d
311c06b6b69Smrg      tmpdepfile3=$dir$base.d
312c06b6b69Smrg      tmpdepfile4=$dir$base.d
313c06b6b69Smrg      "$@" -MD
314c06b6b69Smrg   fi
315c06b6b69Smrg
316c06b6b69Smrg   stat=$?
317c06b6b69Smrg   if test $stat -eq 0; then :
318c06b6b69Smrg   else
319c06b6b69Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
320c06b6b69Smrg      exit $stat
321c06b6b69Smrg   fi
322c06b6b69Smrg
323c06b6b69Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324c06b6b69Smrg   do
325c06b6b69Smrg     test -f "$tmpdepfile" && break
326c06b6b69Smrg   done
327c06b6b69Smrg   if test -f "$tmpdepfile"; then
328c06b6b69Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329c06b6b69Smrg      # That's a tab and a space in the [].
330c06b6b69Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331c06b6b69Smrg   else
332c06b6b69Smrg      echo "#dummy" > "$depfile"
333c06b6b69Smrg   fi
334c06b6b69Smrg   rm -f "$tmpdepfile"
335c06b6b69Smrg   ;;
336c06b6b69Smrg
337c06b6b69Smrg#nosideeffect)
338c06b6b69Smrg  # This comment above is used by automake to tell side-effect
339c06b6b69Smrg  # dependency tracking mechanisms from slower ones.
340c06b6b69Smrg
341c06b6b69Smrgdashmstdout)
342c06b6b69Smrg  # Important note: in order to support this mode, a compiler *must*
343c06b6b69Smrg  # always write the preprocessed file to stdout, regardless of -o.
344c06b6b69Smrg  "$@" || exit $?
345c06b6b69Smrg
346c06b6b69Smrg  # Remove the call to Libtool.
347c06b6b69Smrg  if test "$libtool" = yes; then
348c06b6b69Smrg    while test $1 != '--mode=compile'; do
349c06b6b69Smrg      shift
350c06b6b69Smrg    done
351c06b6b69Smrg    shift
352c06b6b69Smrg  fi
353c06b6b69Smrg
354c06b6b69Smrg  # Remove `-o $object'.
355c06b6b69Smrg  IFS=" "
356c06b6b69Smrg  for arg
357c06b6b69Smrg  do
358c06b6b69Smrg    case $arg in
359c06b6b69Smrg    -o)
360c06b6b69Smrg      shift
361c06b6b69Smrg      ;;
362c06b6b69Smrg    $object)
363c06b6b69Smrg      shift
364c06b6b69Smrg      ;;
365c06b6b69Smrg    *)
366c06b6b69Smrg      set fnord "$@" "$arg"
367c06b6b69Smrg      shift # fnord
368c06b6b69Smrg      shift # $arg
369c06b6b69Smrg      ;;
370c06b6b69Smrg    esac
371c06b6b69Smrg  done
372c06b6b69Smrg
373c06b6b69Smrg  test -z "$dashmflag" && dashmflag=-M
374c06b6b69Smrg  # Require at least two characters before searching for `:'
375c06b6b69Smrg  # in the target name.  This is to cope with DOS-style filenames:
376c06b6b69Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377c06b6b69Smrg  "$@" $dashmflag |
378c06b6b69Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
379c06b6b69Smrg  rm -f "$depfile"
380c06b6b69Smrg  cat < "$tmpdepfile" > "$depfile"
381c06b6b69Smrg  tr ' ' '
382c06b6b69Smrg' < "$tmpdepfile" | \
383c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
384c06b6b69Smrg## correctly.  Breaking it into two sed invocations is a workaround.
385c06b6b69Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
386c06b6b69Smrg  rm -f "$tmpdepfile"
387c06b6b69Smrg  ;;
388c06b6b69Smrg
389c06b6b69SmrgdashXmstdout)
390c06b6b69Smrg  # This case only exists to satisfy depend.m4.  It is never actually
391c06b6b69Smrg  # run, as this mode is specially recognized in the preamble.
392c06b6b69Smrg  exit 1
393c06b6b69Smrg  ;;
394c06b6b69Smrg
395c06b6b69Smrgmakedepend)
396c06b6b69Smrg  "$@" || exit $?
397c06b6b69Smrg  # Remove any Libtool call
398c06b6b69Smrg  if test "$libtool" = yes; then
399c06b6b69Smrg    while test $1 != '--mode=compile'; do
400c06b6b69Smrg      shift
401c06b6b69Smrg    done
402c06b6b69Smrg    shift
403c06b6b69Smrg  fi
404c06b6b69Smrg  # X makedepend
405c06b6b69Smrg  shift
406c06b6b69Smrg  cleared=no
407c06b6b69Smrg  for arg in "$@"; do
408c06b6b69Smrg    case $cleared in
409c06b6b69Smrg    no)
410c06b6b69Smrg      set ""; shift
411c06b6b69Smrg      cleared=yes ;;
412c06b6b69Smrg    esac
413c06b6b69Smrg    case "$arg" in
414c06b6b69Smrg    -D*|-I*)
415c06b6b69Smrg      set fnord "$@" "$arg"; shift ;;
416c06b6b69Smrg    # Strip any option that makedepend may not understand.  Remove
417c06b6b69Smrg    # the object too, otherwise makedepend will parse it as a source file.
418c06b6b69Smrg    -*|$object)
419c06b6b69Smrg      ;;
420c06b6b69Smrg    *)
421c06b6b69Smrg      set fnord "$@" "$arg"; shift ;;
422c06b6b69Smrg    esac
423c06b6b69Smrg  done
424c06b6b69Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
425c06b6b69Smrg  touch "$tmpdepfile"
426c06b6b69Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
427c06b6b69Smrg  rm -f "$depfile"
428c06b6b69Smrg  cat < "$tmpdepfile" > "$depfile"
429c06b6b69Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
430c06b6b69Smrg' | \
431c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
432c06b6b69Smrg## correctly.  Breaking it into two sed invocations is a workaround.
433c06b6b69Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
434c06b6b69Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
435c06b6b69Smrg  ;;
436c06b6b69Smrg
437c06b6b69Smrgcpp)
438c06b6b69Smrg  # Important note: in order to support this mode, a compiler *must*
439c06b6b69Smrg  # always write the preprocessed file to stdout.
440c06b6b69Smrg  "$@" || exit $?
441c06b6b69Smrg
442c06b6b69Smrg  # Remove the call to Libtool.
443c06b6b69Smrg  if test "$libtool" = yes; then
444c06b6b69Smrg    while test $1 != '--mode=compile'; do
445c06b6b69Smrg      shift
446c06b6b69Smrg    done
447c06b6b69Smrg    shift
448c06b6b69Smrg  fi
449c06b6b69Smrg
450c06b6b69Smrg  # Remove `-o $object'.
451c06b6b69Smrg  IFS=" "
452c06b6b69Smrg  for arg
453c06b6b69Smrg  do
454c06b6b69Smrg    case $arg in
455c06b6b69Smrg    -o)
456c06b6b69Smrg      shift
457c06b6b69Smrg      ;;
458c06b6b69Smrg    $object)
459c06b6b69Smrg      shift
460c06b6b69Smrg      ;;
461c06b6b69Smrg    *)
462c06b6b69Smrg      set fnord "$@" "$arg"
463c06b6b69Smrg      shift # fnord
464c06b6b69Smrg      shift # $arg
465c06b6b69Smrg      ;;
466c06b6b69Smrg    esac
467c06b6b69Smrg  done
468c06b6b69Smrg
469c06b6b69Smrg  "$@" -E |
470c06b6b69Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471c06b6b69Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472c06b6b69Smrg    sed '$ s: \\$::' > "$tmpdepfile"
473c06b6b69Smrg  rm -f "$depfile"
474c06b6b69Smrg  echo "$object : \\" > "$depfile"
475c06b6b69Smrg  cat < "$tmpdepfile" >> "$depfile"
476c06b6b69Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
477c06b6b69Smrg  rm -f "$tmpdepfile"
478c06b6b69Smrg  ;;
479c06b6b69Smrg
480c06b6b69Smrgmsvisualcpp)
481c06b6b69Smrg  # Important note: in order to support this mode, a compiler *must*
482c06b6b69Smrg  # always write the preprocessed file to stdout, regardless of -o,
483c06b6b69Smrg  # because we must use -o when running libtool.
484c06b6b69Smrg  "$@" || exit $?
485c06b6b69Smrg  IFS=" "
486c06b6b69Smrg  for arg
487c06b6b69Smrg  do
488c06b6b69Smrg    case "$arg" in
489c06b6b69Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490c06b6b69Smrg	set fnord "$@"
491c06b6b69Smrg	shift
492c06b6b69Smrg	shift
493c06b6b69Smrg	;;
494c06b6b69Smrg    *)
495c06b6b69Smrg	set fnord "$@" "$arg"
496c06b6b69Smrg	shift
497c06b6b69Smrg	shift
498c06b6b69Smrg	;;
499c06b6b69Smrg    esac
500c06b6b69Smrg  done
501c06b6b69Smrg  "$@" -E |
502c06b6b69Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
503c06b6b69Smrg  rm -f "$depfile"
504c06b6b69Smrg  echo "$object : \\" > "$depfile"
505c06b6b69Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
506c06b6b69Smrg  echo "	" >> "$depfile"
507c06b6b69Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
508c06b6b69Smrg  rm -f "$tmpdepfile"
509c06b6b69Smrg  ;;
510c06b6b69Smrg
511c06b6b69Smrgnone)
512c06b6b69Smrg  exec "$@"
513c06b6b69Smrg  ;;
514c06b6b69Smrg
515c06b6b69Smrg*)
516c06b6b69Smrg  echo "Unknown depmode $depmode" 1>&2
517c06b6b69Smrg  exit 1
518c06b6b69Smrg  ;;
519c06b6b69Smrgesac
520c06b6b69Smrg
521c06b6b69Smrgexit 0
522c06b6b69Smrg
523c06b6b69Smrg# Local Variables:
524c06b6b69Smrg# mode: shell-script
525c06b6b69Smrg# sh-indentation: 2
526c06b6b69Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
527c06b6b69Smrg# time-stamp-start: "scriptversion="
528c06b6b69Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
529c06b6b69Smrg# time-stamp-end: "$"
530c06b6b69Smrg# End:
531