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