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