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