depcomp revision 444c061a
1444c061aSmrg#! /bin/sh
2444c061aSmrg# depcomp - compile a program generating dependencies as side-effects
3444c061aSmrg
4444c061aSmrgscriptversion=2005-07-09.11
5444c061aSmrg
6444c061aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
7444c061aSmrg
8444c061aSmrg# This program is free software; you can redistribute it and/or modify
9444c061aSmrg# it under the terms of the GNU General Public License as published by
10444c061aSmrg# the Free Software Foundation; either version 2, or (at your option)
11444c061aSmrg# any later version.
12444c061aSmrg
13444c061aSmrg# This program is distributed in the hope that it will be useful,
14444c061aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
15444c061aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16444c061aSmrg# GNU General Public License for more details.
17444c061aSmrg
18444c061aSmrg# You should have received a copy of the GNU General Public License
19444c061aSmrg# along with this program; if not, write to the Free Software
20444c061aSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21444c061aSmrg# 02110-1301, USA.
22444c061aSmrg
23444c061aSmrg# As a special exception to the GNU General Public License, if you
24444c061aSmrg# distribute this file as part of a program that contains a
25444c061aSmrg# configuration script generated by Autoconf, you may include it under
26444c061aSmrg# the same distribution terms that you use for the rest of that program.
27444c061aSmrg
28444c061aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29444c061aSmrg
30444c061aSmrgcase $1 in
31444c061aSmrg  '')
32444c061aSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33444c061aSmrg     exit 1;
34444c061aSmrg     ;;
35444c061aSmrg  -h | --h*)
36444c061aSmrg    cat <<\EOF
37444c061aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
38444c061aSmrg
39444c061aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
40444c061aSmrgas side-effects.
41444c061aSmrg
42444c061aSmrgEnvironment variables:
43444c061aSmrg  depmode     Dependency tracking mode.
44444c061aSmrg  source      Source file read by `PROGRAMS ARGS'.
45444c061aSmrg  object      Object file output by `PROGRAMS ARGS'.
46444c061aSmrg  DEPDIR      directory where to store dependencies.
47444c061aSmrg  depfile     Dependency file to output.
48444c061aSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
49444c061aSmrg  libtool     Whether libtool is used (yes/no).
50444c061aSmrg
51444c061aSmrgReport bugs to <bug-automake@gnu.org>.
52444c061aSmrgEOF
53444c061aSmrg    exit $?
54444c061aSmrg    ;;
55444c061aSmrg  -v | --v*)
56444c061aSmrg    echo "depcomp $scriptversion"
57444c061aSmrg    exit $?
58444c061aSmrg    ;;
59444c061aSmrgesac
60444c061aSmrg
61444c061aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
62444c061aSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63444c061aSmrg  exit 1
64444c061aSmrgfi
65444c061aSmrg
66444c061aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67444c061aSmrgdepfile=${depfile-`echo "$object" |
68444c061aSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
69444c061aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70444c061aSmrg
71444c061aSmrgrm -f "$tmpdepfile"
72444c061aSmrg
73444c061aSmrg# Some modes work just like other modes, but use different flags.  We
74444c061aSmrg# parameterize here, but still list the modes in the big case below,
75444c061aSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
76444c061aSmrg# here, because this file can only contain one case statement.
77444c061aSmrgif test "$depmode" = hp; then
78444c061aSmrg  # HP compiler uses -M and no extra arg.
79444c061aSmrg  gccflag=-M
80444c061aSmrg  depmode=gcc
81444c061aSmrgfi
82444c061aSmrg
83444c061aSmrgif test "$depmode" = dashXmstdout; then
84444c061aSmrg   # This is just like dashmstdout with a different argument.
85444c061aSmrg   dashmflag=-xM
86444c061aSmrg   depmode=dashmstdout
87444c061aSmrgfi
88444c061aSmrg
89444c061aSmrgcase "$depmode" in
90444c061aSmrggcc3)
91444c061aSmrg## gcc 3 implements dependency tracking that does exactly what
92444c061aSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93444c061aSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
94444c061aSmrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
95444c061aSmrg  stat=$?
96444c061aSmrg  if test $stat -eq 0; then :
97444c061aSmrg  else
98444c061aSmrg    rm -f "$tmpdepfile"
99444c061aSmrg    exit $stat
100444c061aSmrg  fi
101444c061aSmrg  mv "$tmpdepfile" "$depfile"
102444c061aSmrg  ;;
103444c061aSmrg
104444c061aSmrggcc)
105444c061aSmrg## There are various ways to get dependency output from gcc.  Here's
106444c061aSmrg## why we pick this rather obscure method:
107444c061aSmrg## - Don't want to use -MD because we'd like the dependencies to end
108444c061aSmrg##   up in a subdir.  Having to rename by hand is ugly.
109444c061aSmrg##   (We might end up doing this anyway to support other compilers.)
110444c061aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
111444c061aSmrg##   -MM, not -M (despite what the docs say).
112444c061aSmrg## - Using -M directly means running the compiler twice (even worse
113444c061aSmrg##   than renaming).
114444c061aSmrg  if test -z "$gccflag"; then
115444c061aSmrg    gccflag=-MD,
116444c061aSmrg  fi
117444c061aSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
118444c061aSmrg  stat=$?
119444c061aSmrg  if test $stat -eq 0; then :
120444c061aSmrg  else
121444c061aSmrg    rm -f "$tmpdepfile"
122444c061aSmrg    exit $stat
123444c061aSmrg  fi
124444c061aSmrg  rm -f "$depfile"
125444c061aSmrg  echo "$object : \\" > "$depfile"
126444c061aSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
127444c061aSmrg## The second -e expression handles DOS-style file names with drive letters.
128444c061aSmrg  sed -e 's/^[^:]*: / /' \
129444c061aSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
130444c061aSmrg## This next piece of magic avoids the `deleted header file' problem.
131444c061aSmrg## The problem is that when a header file which appears in a .P file
132444c061aSmrg## is deleted, the dependency causes make to die (because there is
133444c061aSmrg## typically no way to rebuild the header).  We avoid this by adding
134444c061aSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
135444c061aSmrg## this for us directly.
136444c061aSmrg  tr ' ' '
137444c061aSmrg' < "$tmpdepfile" |
138444c061aSmrg## Some versions of gcc put a space before the `:'.  On the theory
139444c061aSmrg## that the space means something, we add a space to the output as
140444c061aSmrg## well.
141444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
142444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
143444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
144444c061aSmrg  rm -f "$tmpdepfile"
145444c061aSmrg  ;;
146444c061aSmrg
147444c061aSmrghp)
148444c061aSmrg  # This case exists only to let depend.m4 do its work.  It works by
149444c061aSmrg  # looking at the text of this script.  This case will never be run,
150444c061aSmrg  # since it is checked for above.
151444c061aSmrg  exit 1
152444c061aSmrg  ;;
153444c061aSmrg
154444c061aSmrgsgi)
155444c061aSmrg  if test "$libtool" = yes; then
156444c061aSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
157444c061aSmrg  else
158444c061aSmrg    "$@" -MDupdate "$tmpdepfile"
159444c061aSmrg  fi
160444c061aSmrg  stat=$?
161444c061aSmrg  if test $stat -eq 0; then :
162444c061aSmrg  else
163444c061aSmrg    rm -f "$tmpdepfile"
164444c061aSmrg    exit $stat
165444c061aSmrg  fi
166444c061aSmrg  rm -f "$depfile"
167444c061aSmrg
168444c061aSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
169444c061aSmrg    echo "$object : \\" > "$depfile"
170444c061aSmrg
171444c061aSmrg    # Clip off the initial element (the dependent).  Don't try to be
172444c061aSmrg    # clever and replace this with sed code, as IRIX sed won't handle
173444c061aSmrg    # lines with more than a fixed number of characters (4096 in
174444c061aSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
175444c061aSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
176444c061aSmrg    # dependency line.
177444c061aSmrg    tr ' ' '
178444c061aSmrg' < "$tmpdepfile" \
179444c061aSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
180444c061aSmrg    tr '
181444c061aSmrg' ' ' >> $depfile
182444c061aSmrg    echo >> $depfile
183444c061aSmrg
184444c061aSmrg    # The second pass generates a dummy entry for each header file.
185444c061aSmrg    tr ' ' '
186444c061aSmrg' < "$tmpdepfile" \
187444c061aSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
188444c061aSmrg   >> $depfile
189444c061aSmrg  else
190444c061aSmrg    # The sourcefile does not contain any dependencies, so just
191444c061aSmrg    # store a dummy comment line, to avoid errors with the Makefile
192444c061aSmrg    # "include basename.Plo" scheme.
193444c061aSmrg    echo "#dummy" > "$depfile"
194444c061aSmrg  fi
195444c061aSmrg  rm -f "$tmpdepfile"
196444c061aSmrg  ;;
197444c061aSmrg
198444c061aSmrgaix)
199444c061aSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
200444c061aSmrg  # in a .u file.  In older versions, this file always lives in the
201444c061aSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
202444c061aSmrg  # start of each line; $object doesn't have directory information.
203444c061aSmrg  # Version 6 uses the directory in both cases.
204444c061aSmrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
205444c061aSmrg  tmpdepfile="$stripped.u"
206444c061aSmrg  if test "$libtool" = yes; then
207444c061aSmrg    "$@" -Wc,-M
208444c061aSmrg  else
209444c061aSmrg    "$@" -M
210444c061aSmrg  fi
211444c061aSmrg  stat=$?
212444c061aSmrg
213444c061aSmrg  if test -f "$tmpdepfile"; then :
214444c061aSmrg  else
215444c061aSmrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216444c061aSmrg    tmpdepfile="$stripped.u"
217444c061aSmrg  fi
218444c061aSmrg
219444c061aSmrg  if test $stat -eq 0; then :
220444c061aSmrg  else
221444c061aSmrg    rm -f "$tmpdepfile"
222444c061aSmrg    exit $stat
223444c061aSmrg  fi
224444c061aSmrg
225444c061aSmrg  if test -f "$tmpdepfile"; then
226444c061aSmrg    outname="$stripped.o"
227444c061aSmrg    # Each line is of the form `foo.o: dependent.h'.
228444c061aSmrg    # Do two passes, one to just change these to
229444c061aSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
230444c061aSmrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
231444c061aSmrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
232444c061aSmrg  else
233444c061aSmrg    # The sourcefile does not contain any dependencies, so just
234444c061aSmrg    # store a dummy comment line, to avoid errors with the Makefile
235444c061aSmrg    # "include basename.Plo" scheme.
236444c061aSmrg    echo "#dummy" > "$depfile"
237444c061aSmrg  fi
238444c061aSmrg  rm -f "$tmpdepfile"
239444c061aSmrg  ;;
240444c061aSmrg
241444c061aSmrgicc)
242444c061aSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
243444c061aSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244444c061aSmrg  # ICC 7.0 will fill foo.d with something like
245444c061aSmrg  #    foo.o: sub/foo.c
246444c061aSmrg  #    foo.o: sub/foo.h
247444c061aSmrg  # which is wrong.  We want:
248444c061aSmrg  #    sub/foo.o: sub/foo.c
249444c061aSmrg  #    sub/foo.o: sub/foo.h
250444c061aSmrg  #    sub/foo.c:
251444c061aSmrg  #    sub/foo.h:
252444c061aSmrg  # ICC 7.1 will output
253444c061aSmrg  #    foo.o: sub/foo.c sub/foo.h
254444c061aSmrg  # and will wrap long lines using \ :
255444c061aSmrg  #    foo.o: sub/foo.c ... \
256444c061aSmrg  #     sub/foo.h ... \
257444c061aSmrg  #     ...
258444c061aSmrg
259444c061aSmrg  "$@" -MD -MF "$tmpdepfile"
260444c061aSmrg  stat=$?
261444c061aSmrg  if test $stat -eq 0; then :
262444c061aSmrg  else
263444c061aSmrg    rm -f "$tmpdepfile"
264444c061aSmrg    exit $stat
265444c061aSmrg  fi
266444c061aSmrg  rm -f "$depfile"
267444c061aSmrg  # Each line is of the form `foo.o: dependent.h',
268444c061aSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269444c061aSmrg  # Do two passes, one to just change these to
270444c061aSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
271444c061aSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272444c061aSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
273444c061aSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
274444c061aSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275444c061aSmrg    sed -e 's/$/ :/' >> "$depfile"
276444c061aSmrg  rm -f "$tmpdepfile"
277444c061aSmrg  ;;
278444c061aSmrg
279444c061aSmrgtru64)
280444c061aSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
281444c061aSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282444c061aSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
283444c061aSmrg   # dependencies in `foo.d' instead, so we check for that too.
284444c061aSmrg   # Subdirectories are respected.
285444c061aSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286444c061aSmrg   test "x$dir" = "x$object" && dir=
287444c061aSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288444c061aSmrg
289444c061aSmrg   if test "$libtool" = yes; then
290444c061aSmrg      # With Tru64 cc, shared objects can also be used to make a
291444c061aSmrg      # static library.  This mecanism is used in libtool 1.4 series to
292444c061aSmrg      # handle both shared and static libraries in a single compilation.
293444c061aSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294444c061aSmrg      #
295444c061aSmrg      # With libtool 1.5 this exception was removed, and libtool now
296444c061aSmrg      # generates 2 separate objects for the 2 libraries.  These two
297444c061aSmrg      # compilations output dependencies in in $dir.libs/$base.o.d and
298444c061aSmrg      # in $dir$base.o.d.  We have to check for both files, because
299444c061aSmrg      # one of the two compilations can be disabled.  We should prefer
300444c061aSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301444c061aSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
302444c061aSmrg      # the former would cause a distcleancheck panic.
303444c061aSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304444c061aSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305444c061aSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306444c061aSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307444c061aSmrg      "$@" -Wc,-MD
308444c061aSmrg   else
309444c061aSmrg      tmpdepfile1=$dir$base.o.d
310444c061aSmrg      tmpdepfile2=$dir$base.d
311444c061aSmrg      tmpdepfile3=$dir$base.d
312444c061aSmrg      tmpdepfile4=$dir$base.d
313444c061aSmrg      "$@" -MD
314444c061aSmrg   fi
315444c061aSmrg
316444c061aSmrg   stat=$?
317444c061aSmrg   if test $stat -eq 0; then :
318444c061aSmrg   else
319444c061aSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
320444c061aSmrg      exit $stat
321444c061aSmrg   fi
322444c061aSmrg
323444c061aSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324444c061aSmrg   do
325444c061aSmrg     test -f "$tmpdepfile" && break
326444c061aSmrg   done
327444c061aSmrg   if test -f "$tmpdepfile"; then
328444c061aSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329444c061aSmrg      # That's a tab and a space in the [].
330444c061aSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331444c061aSmrg   else
332444c061aSmrg      echo "#dummy" > "$depfile"
333444c061aSmrg   fi
334444c061aSmrg   rm -f "$tmpdepfile"
335444c061aSmrg   ;;
336444c061aSmrg
337444c061aSmrg#nosideeffect)
338444c061aSmrg  # This comment above is used by automake to tell side-effect
339444c061aSmrg  # dependency tracking mechanisms from slower ones.
340444c061aSmrg
341444c061aSmrgdashmstdout)
342444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
343444c061aSmrg  # always write the preprocessed file to stdout, regardless of -o.
344444c061aSmrg  "$@" || exit $?
345444c061aSmrg
346444c061aSmrg  # Remove the call to Libtool.
347444c061aSmrg  if test "$libtool" = yes; then
348444c061aSmrg    while test $1 != '--mode=compile'; do
349444c061aSmrg      shift
350444c061aSmrg    done
351444c061aSmrg    shift
352444c061aSmrg  fi
353444c061aSmrg
354444c061aSmrg  # Remove `-o $object'.
355444c061aSmrg  IFS=" "
356444c061aSmrg  for arg
357444c061aSmrg  do
358444c061aSmrg    case $arg in
359444c061aSmrg    -o)
360444c061aSmrg      shift
361444c061aSmrg      ;;
362444c061aSmrg    $object)
363444c061aSmrg      shift
364444c061aSmrg      ;;
365444c061aSmrg    *)
366444c061aSmrg      set fnord "$@" "$arg"
367444c061aSmrg      shift # fnord
368444c061aSmrg      shift # $arg
369444c061aSmrg      ;;
370444c061aSmrg    esac
371444c061aSmrg  done
372444c061aSmrg
373444c061aSmrg  test -z "$dashmflag" && dashmflag=-M
374444c061aSmrg  # Require at least two characters before searching for `:'
375444c061aSmrg  # in the target name.  This is to cope with DOS-style filenames:
376444c061aSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377444c061aSmrg  "$@" $dashmflag |
378444c061aSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
379444c061aSmrg  rm -f "$depfile"
380444c061aSmrg  cat < "$tmpdepfile" > "$depfile"
381444c061aSmrg  tr ' ' '
382444c061aSmrg' < "$tmpdepfile" | \
383444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
384444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
385444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
386444c061aSmrg  rm -f "$tmpdepfile"
387444c061aSmrg  ;;
388444c061aSmrg
389444c061aSmrgdashXmstdout)
390444c061aSmrg  # This case only exists to satisfy depend.m4.  It is never actually
391444c061aSmrg  # run, as this mode is specially recognized in the preamble.
392444c061aSmrg  exit 1
393444c061aSmrg  ;;
394444c061aSmrg
395444c061aSmrgmakedepend)
396444c061aSmrg  "$@" || exit $?
397444c061aSmrg  # Remove any Libtool call
398444c061aSmrg  if test "$libtool" = yes; then
399444c061aSmrg    while test $1 != '--mode=compile'; do
400444c061aSmrg      shift
401444c061aSmrg    done
402444c061aSmrg    shift
403444c061aSmrg  fi
404444c061aSmrg  # X makedepend
405444c061aSmrg  shift
406444c061aSmrg  cleared=no
407444c061aSmrg  for arg in "$@"; do
408444c061aSmrg    case $cleared in
409444c061aSmrg    no)
410444c061aSmrg      set ""; shift
411444c061aSmrg      cleared=yes ;;
412444c061aSmrg    esac
413444c061aSmrg    case "$arg" in
414444c061aSmrg    -D*|-I*)
415444c061aSmrg      set fnord "$@" "$arg"; shift ;;
416444c061aSmrg    # Strip any option that makedepend may not understand.  Remove
417444c061aSmrg    # the object too, otherwise makedepend will parse it as a source file.
418444c061aSmrg    -*|$object)
419444c061aSmrg      ;;
420444c061aSmrg    *)
421444c061aSmrg      set fnord "$@" "$arg"; shift ;;
422444c061aSmrg    esac
423444c061aSmrg  done
424444c061aSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
425444c061aSmrg  touch "$tmpdepfile"
426444c061aSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
427444c061aSmrg  rm -f "$depfile"
428444c061aSmrg  cat < "$tmpdepfile" > "$depfile"
429444c061aSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
430444c061aSmrg' | \
431444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
432444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
433444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
434444c061aSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
435444c061aSmrg  ;;
436444c061aSmrg
437444c061aSmrgcpp)
438444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
439444c061aSmrg  # always write the preprocessed file to stdout.
440444c061aSmrg  "$@" || exit $?
441444c061aSmrg
442444c061aSmrg  # Remove the call to Libtool.
443444c061aSmrg  if test "$libtool" = yes; then
444444c061aSmrg    while test $1 != '--mode=compile'; do
445444c061aSmrg      shift
446444c061aSmrg    done
447444c061aSmrg    shift
448444c061aSmrg  fi
449444c061aSmrg
450444c061aSmrg  # Remove `-o $object'.
451444c061aSmrg  IFS=" "
452444c061aSmrg  for arg
453444c061aSmrg  do
454444c061aSmrg    case $arg in
455444c061aSmrg    -o)
456444c061aSmrg      shift
457444c061aSmrg      ;;
458444c061aSmrg    $object)
459444c061aSmrg      shift
460444c061aSmrg      ;;
461444c061aSmrg    *)
462444c061aSmrg      set fnord "$@" "$arg"
463444c061aSmrg      shift # fnord
464444c061aSmrg      shift # $arg
465444c061aSmrg      ;;
466444c061aSmrg    esac
467444c061aSmrg  done
468444c061aSmrg
469444c061aSmrg  "$@" -E |
470444c061aSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471444c061aSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472444c061aSmrg    sed '$ s: \\$::' > "$tmpdepfile"
473444c061aSmrg  rm -f "$depfile"
474444c061aSmrg  echo "$object : \\" > "$depfile"
475444c061aSmrg  cat < "$tmpdepfile" >> "$depfile"
476444c061aSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
477444c061aSmrg  rm -f "$tmpdepfile"
478444c061aSmrg  ;;
479444c061aSmrg
480444c061aSmrgmsvisualcpp)
481444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
482444c061aSmrg  # always write the preprocessed file to stdout, regardless of -o,
483444c061aSmrg  # because we must use -o when running libtool.
484444c061aSmrg  "$@" || exit $?
485444c061aSmrg  IFS=" "
486444c061aSmrg  for arg
487444c061aSmrg  do
488444c061aSmrg    case "$arg" in
489444c061aSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490444c061aSmrg	set fnord "$@"
491444c061aSmrg	shift
492444c061aSmrg	shift
493444c061aSmrg	;;
494444c061aSmrg    *)
495444c061aSmrg	set fnord "$@" "$arg"
496444c061aSmrg	shift
497444c061aSmrg	shift
498444c061aSmrg	;;
499444c061aSmrg    esac
500444c061aSmrg  done
501444c061aSmrg  "$@" -E |
502444c061aSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
503444c061aSmrg  rm -f "$depfile"
504444c061aSmrg  echo "$object : \\" > "$depfile"
505444c061aSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
506444c061aSmrg  echo "	" >> "$depfile"
507444c061aSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
508444c061aSmrg  rm -f "$tmpdepfile"
509444c061aSmrg  ;;
510444c061aSmrg
511444c061aSmrgnone)
512444c061aSmrg  exec "$@"
513444c061aSmrg  ;;
514444c061aSmrg
515444c061aSmrg*)
516444c061aSmrg  echo "Unknown depmode $depmode" 1>&2
517444c061aSmrg  exit 1
518444c061aSmrg  ;;
519444c061aSmrgesac
520444c061aSmrg
521444c061aSmrgexit 0
522444c061aSmrg
523444c061aSmrg# Local Variables:
524444c061aSmrg# mode: shell-script
525444c061aSmrg# sh-indentation: 2
526444c061aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
527444c061aSmrg# time-stamp-start: "scriptversion="
528444c061aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
529444c061aSmrg# time-stamp-end: "$"
530444c061aSmrg# End:
531