depcomp revision 191cded7
1191cded7Smrg#! /bin/sh
2191cded7Smrg# depcomp - compile a program generating dependencies as side-effects
3191cded7Smrg
4191cded7Smrgscriptversion=2005-07-09.11
5191cded7Smrg
6191cded7Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
7191cded7Smrg
8191cded7Smrg# This program is free software; you can redistribute it and/or modify
9191cded7Smrg# it under the terms of the GNU General Public License as published by
10191cded7Smrg# the Free Software Foundation; either version 2, or (at your option)
11191cded7Smrg# any later version.
12191cded7Smrg
13191cded7Smrg# This program is distributed in the hope that it will be useful,
14191cded7Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
15191cded7Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16191cded7Smrg# GNU General Public License for more details.
17191cded7Smrg
18191cded7Smrg# You should have received a copy of the GNU General Public License
19191cded7Smrg# along with this program; if not, write to the Free Software
20191cded7Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21191cded7Smrg# 02110-1301, USA.
22191cded7Smrg
23191cded7Smrg# As a special exception to the GNU General Public License, if you
24191cded7Smrg# distribute this file as part of a program that contains a
25191cded7Smrg# configuration script generated by Autoconf, you may include it under
26191cded7Smrg# the same distribution terms that you use for the rest of that program.
27191cded7Smrg
28191cded7Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29191cded7Smrg
30191cded7Smrgcase $1 in
31191cded7Smrg  '')
32191cded7Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33191cded7Smrg     exit 1;
34191cded7Smrg     ;;
35191cded7Smrg  -h | --h*)
36191cded7Smrg    cat <<\EOF
37191cded7SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
38191cded7Smrg
39191cded7SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
40191cded7Smrgas side-effects.
41191cded7Smrg
42191cded7SmrgEnvironment variables:
43191cded7Smrg  depmode     Dependency tracking mode.
44191cded7Smrg  source      Source file read by `PROGRAMS ARGS'.
45191cded7Smrg  object      Object file output by `PROGRAMS ARGS'.
46191cded7Smrg  DEPDIR      directory where to store dependencies.
47191cded7Smrg  depfile     Dependency file to output.
48191cded7Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
49191cded7Smrg  libtool     Whether libtool is used (yes/no).
50191cded7Smrg
51191cded7SmrgReport bugs to <bug-automake@gnu.org>.
52191cded7SmrgEOF
53191cded7Smrg    exit $?
54191cded7Smrg    ;;
55191cded7Smrg  -v | --v*)
56191cded7Smrg    echo "depcomp $scriptversion"
57191cded7Smrg    exit $?
58191cded7Smrg    ;;
59191cded7Smrgesac
60191cded7Smrg
61191cded7Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
62191cded7Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63191cded7Smrg  exit 1
64191cded7Smrgfi
65191cded7Smrg
66191cded7Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67191cded7Smrgdepfile=${depfile-`echo "$object" |
68191cded7Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
69191cded7Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70191cded7Smrg
71191cded7Smrgrm -f "$tmpdepfile"
72191cded7Smrg
73191cded7Smrg# Some modes work just like other modes, but use different flags.  We
74191cded7Smrg# parameterize here, but still list the modes in the big case below,
75191cded7Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
76191cded7Smrg# here, because this file can only contain one case statement.
77191cded7Smrgif test "$depmode" = hp; then
78191cded7Smrg  # HP compiler uses -M and no extra arg.
79191cded7Smrg  gccflag=-M
80191cded7Smrg  depmode=gcc
81191cded7Smrgfi
82191cded7Smrg
83191cded7Smrgif test "$depmode" = dashXmstdout; then
84191cded7Smrg   # This is just like dashmstdout with a different argument.
85191cded7Smrg   dashmflag=-xM
86191cded7Smrg   depmode=dashmstdout
87191cded7Smrgfi
88191cded7Smrg
89191cded7Smrgcase "$depmode" in
90191cded7Smrggcc3)
91191cded7Smrg## gcc 3 implements dependency tracking that does exactly what
92191cded7Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93191cded7Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
94191cded7Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
95191cded7Smrg  stat=$?
96191cded7Smrg  if test $stat -eq 0; then :
97191cded7Smrg  else
98191cded7Smrg    rm -f "$tmpdepfile"
99191cded7Smrg    exit $stat
100191cded7Smrg  fi
101191cded7Smrg  mv "$tmpdepfile" "$depfile"
102191cded7Smrg  ;;
103191cded7Smrg
104191cded7Smrggcc)
105191cded7Smrg## There are various ways to get dependency output from gcc.  Here's
106191cded7Smrg## why we pick this rather obscure method:
107191cded7Smrg## - Don't want to use -MD because we'd like the dependencies to end
108191cded7Smrg##   up in a subdir.  Having to rename by hand is ugly.
109191cded7Smrg##   (We might end up doing this anyway to support other compilers.)
110191cded7Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
111191cded7Smrg##   -MM, not -M (despite what the docs say).
112191cded7Smrg## - Using -M directly means running the compiler twice (even worse
113191cded7Smrg##   than renaming).
114191cded7Smrg  if test -z "$gccflag"; then
115191cded7Smrg    gccflag=-MD,
116191cded7Smrg  fi
117191cded7Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
118191cded7Smrg  stat=$?
119191cded7Smrg  if test $stat -eq 0; then :
120191cded7Smrg  else
121191cded7Smrg    rm -f "$tmpdepfile"
122191cded7Smrg    exit $stat
123191cded7Smrg  fi
124191cded7Smrg  rm -f "$depfile"
125191cded7Smrg  echo "$object : \\" > "$depfile"
126191cded7Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
127191cded7Smrg## The second -e expression handles DOS-style file names with drive letters.
128191cded7Smrg  sed -e 's/^[^:]*: / /' \
129191cded7Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
130191cded7Smrg## This next piece of magic avoids the `deleted header file' problem.
131191cded7Smrg## The problem is that when a header file which appears in a .P file
132191cded7Smrg## is deleted, the dependency causes make to die (because there is
133191cded7Smrg## typically no way to rebuild the header).  We avoid this by adding
134191cded7Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
135191cded7Smrg## this for us directly.
136191cded7Smrg  tr ' ' '
137191cded7Smrg' < "$tmpdepfile" |
138191cded7Smrg## Some versions of gcc put a space before the `:'.  On the theory
139191cded7Smrg## that the space means something, we add a space to the output as
140191cded7Smrg## well.
141191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
142191cded7Smrg## correctly.  Breaking it into two sed invocations is a workaround.
143191cded7Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
144191cded7Smrg  rm -f "$tmpdepfile"
145191cded7Smrg  ;;
146191cded7Smrg
147191cded7Smrghp)
148191cded7Smrg  # This case exists only to let depend.m4 do its work.  It works by
149191cded7Smrg  # looking at the text of this script.  This case will never be run,
150191cded7Smrg  # since it is checked for above.
151191cded7Smrg  exit 1
152191cded7Smrg  ;;
153191cded7Smrg
154191cded7Smrgsgi)
155191cded7Smrg  if test "$libtool" = yes; then
156191cded7Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
157191cded7Smrg  else
158191cded7Smrg    "$@" -MDupdate "$tmpdepfile"
159191cded7Smrg  fi
160191cded7Smrg  stat=$?
161191cded7Smrg  if test $stat -eq 0; then :
162191cded7Smrg  else
163191cded7Smrg    rm -f "$tmpdepfile"
164191cded7Smrg    exit $stat
165191cded7Smrg  fi
166191cded7Smrg  rm -f "$depfile"
167191cded7Smrg
168191cded7Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
169191cded7Smrg    echo "$object : \\" > "$depfile"
170191cded7Smrg
171191cded7Smrg    # Clip off the initial element (the dependent).  Don't try to be
172191cded7Smrg    # clever and replace this with sed code, as IRIX sed won't handle
173191cded7Smrg    # lines with more than a fixed number of characters (4096 in
174191cded7Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
175191cded7Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
176191cded7Smrg    # dependency line.
177191cded7Smrg    tr ' ' '
178191cded7Smrg' < "$tmpdepfile" \
179191cded7Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
180191cded7Smrg    tr '
181191cded7Smrg' ' ' >> $depfile
182191cded7Smrg    echo >> $depfile
183191cded7Smrg
184191cded7Smrg    # The second pass generates a dummy entry for each header file.
185191cded7Smrg    tr ' ' '
186191cded7Smrg' < "$tmpdepfile" \
187191cded7Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
188191cded7Smrg   >> $depfile
189191cded7Smrg  else
190191cded7Smrg    # The sourcefile does not contain any dependencies, so just
191191cded7Smrg    # store a dummy comment line, to avoid errors with the Makefile
192191cded7Smrg    # "include basename.Plo" scheme.
193191cded7Smrg    echo "#dummy" > "$depfile"
194191cded7Smrg  fi
195191cded7Smrg  rm -f "$tmpdepfile"
196191cded7Smrg  ;;
197191cded7Smrg
198191cded7Smrgaix)
199191cded7Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
200191cded7Smrg  # in a .u file.  In older versions, this file always lives in the
201191cded7Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
202191cded7Smrg  # start of each line; $object doesn't have directory information.
203191cded7Smrg  # Version 6 uses the directory in both cases.
204191cded7Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
205191cded7Smrg  tmpdepfile="$stripped.u"
206191cded7Smrg  if test "$libtool" = yes; then
207191cded7Smrg    "$@" -Wc,-M
208191cded7Smrg  else
209191cded7Smrg    "$@" -M
210191cded7Smrg  fi
211191cded7Smrg  stat=$?
212191cded7Smrg
213191cded7Smrg  if test -f "$tmpdepfile"; then :
214191cded7Smrg  else
215191cded7Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216191cded7Smrg    tmpdepfile="$stripped.u"
217191cded7Smrg  fi
218191cded7Smrg
219191cded7Smrg  if test $stat -eq 0; then :
220191cded7Smrg  else
221191cded7Smrg    rm -f "$tmpdepfile"
222191cded7Smrg    exit $stat
223191cded7Smrg  fi
224191cded7Smrg
225191cded7Smrg  if test -f "$tmpdepfile"; then
226191cded7Smrg    outname="$stripped.o"
227191cded7Smrg    # Each line is of the form `foo.o: dependent.h'.
228191cded7Smrg    # Do two passes, one to just change these to
229191cded7Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
230191cded7Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
231191cded7Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
232191cded7Smrg  else
233191cded7Smrg    # The sourcefile does not contain any dependencies, so just
234191cded7Smrg    # store a dummy comment line, to avoid errors with the Makefile
235191cded7Smrg    # "include basename.Plo" scheme.
236191cded7Smrg    echo "#dummy" > "$depfile"
237191cded7Smrg  fi
238191cded7Smrg  rm -f "$tmpdepfile"
239191cded7Smrg  ;;
240191cded7Smrg
241191cded7Smrgicc)
242191cded7Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
243191cded7Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244191cded7Smrg  # ICC 7.0 will fill foo.d with something like
245191cded7Smrg  #    foo.o: sub/foo.c
246191cded7Smrg  #    foo.o: sub/foo.h
247191cded7Smrg  # which is wrong.  We want:
248191cded7Smrg  #    sub/foo.o: sub/foo.c
249191cded7Smrg  #    sub/foo.o: sub/foo.h
250191cded7Smrg  #    sub/foo.c:
251191cded7Smrg  #    sub/foo.h:
252191cded7Smrg  # ICC 7.1 will output
253191cded7Smrg  #    foo.o: sub/foo.c sub/foo.h
254191cded7Smrg  # and will wrap long lines using \ :
255191cded7Smrg  #    foo.o: sub/foo.c ... \
256191cded7Smrg  #     sub/foo.h ... \
257191cded7Smrg  #     ...
258191cded7Smrg
259191cded7Smrg  "$@" -MD -MF "$tmpdepfile"
260191cded7Smrg  stat=$?
261191cded7Smrg  if test $stat -eq 0; then :
262191cded7Smrg  else
263191cded7Smrg    rm -f "$tmpdepfile"
264191cded7Smrg    exit $stat
265191cded7Smrg  fi
266191cded7Smrg  rm -f "$depfile"
267191cded7Smrg  # Each line is of the form `foo.o: dependent.h',
268191cded7Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269191cded7Smrg  # Do two passes, one to just change these to
270191cded7Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
271191cded7Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272191cded7Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
273191cded7Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
274191cded7Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275191cded7Smrg    sed -e 's/$/ :/' >> "$depfile"
276191cded7Smrg  rm -f "$tmpdepfile"
277191cded7Smrg  ;;
278191cded7Smrg
279191cded7Smrgtru64)
280191cded7Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
281191cded7Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282191cded7Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
283191cded7Smrg   # dependencies in `foo.d' instead, so we check for that too.
284191cded7Smrg   # Subdirectories are respected.
285191cded7Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286191cded7Smrg   test "x$dir" = "x$object" && dir=
287191cded7Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288191cded7Smrg
289191cded7Smrg   if test "$libtool" = yes; then
290191cded7Smrg      # With Tru64 cc, shared objects can also be used to make a
291191cded7Smrg      # static library.  This mecanism is used in libtool 1.4 series to
292191cded7Smrg      # handle both shared and static libraries in a single compilation.
293191cded7Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294191cded7Smrg      #
295191cded7Smrg      # With libtool 1.5 this exception was removed, and libtool now
296191cded7Smrg      # generates 2 separate objects for the 2 libraries.  These two
297191cded7Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
298191cded7Smrg      # in $dir$base.o.d.  We have to check for both files, because
299191cded7Smrg      # one of the two compilations can be disabled.  We should prefer
300191cded7Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301191cded7Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
302191cded7Smrg      # the former would cause a distcleancheck panic.
303191cded7Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304191cded7Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305191cded7Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306191cded7Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307191cded7Smrg      "$@" -Wc,-MD
308191cded7Smrg   else
309191cded7Smrg      tmpdepfile1=$dir$base.o.d
310191cded7Smrg      tmpdepfile2=$dir$base.d
311191cded7Smrg      tmpdepfile3=$dir$base.d
312191cded7Smrg      tmpdepfile4=$dir$base.d
313191cded7Smrg      "$@" -MD
314191cded7Smrg   fi
315191cded7Smrg
316191cded7Smrg   stat=$?
317191cded7Smrg   if test $stat -eq 0; then :
318191cded7Smrg   else
319191cded7Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
320191cded7Smrg      exit $stat
321191cded7Smrg   fi
322191cded7Smrg
323191cded7Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324191cded7Smrg   do
325191cded7Smrg     test -f "$tmpdepfile" && break
326191cded7Smrg   done
327191cded7Smrg   if test -f "$tmpdepfile"; then
328191cded7Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329191cded7Smrg      # That's a tab and a space in the [].
330191cded7Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331191cded7Smrg   else
332191cded7Smrg      echo "#dummy" > "$depfile"
333191cded7Smrg   fi
334191cded7Smrg   rm -f "$tmpdepfile"
335191cded7Smrg   ;;
336191cded7Smrg
337191cded7Smrg#nosideeffect)
338191cded7Smrg  # This comment above is used by automake to tell side-effect
339191cded7Smrg  # dependency tracking mechanisms from slower ones.
340191cded7Smrg
341191cded7Smrgdashmstdout)
342191cded7Smrg  # Important note: in order to support this mode, a compiler *must*
343191cded7Smrg  # always write the preprocessed file to stdout, regardless of -o.
344191cded7Smrg  "$@" || exit $?
345191cded7Smrg
346191cded7Smrg  # Remove the call to Libtool.
347191cded7Smrg  if test "$libtool" = yes; then
348191cded7Smrg    while test $1 != '--mode=compile'; do
349191cded7Smrg      shift
350191cded7Smrg    done
351191cded7Smrg    shift
352191cded7Smrg  fi
353191cded7Smrg
354191cded7Smrg  # Remove `-o $object'.
355191cded7Smrg  IFS=" "
356191cded7Smrg  for arg
357191cded7Smrg  do
358191cded7Smrg    case $arg in
359191cded7Smrg    -o)
360191cded7Smrg      shift
361191cded7Smrg      ;;
362191cded7Smrg    $object)
363191cded7Smrg      shift
364191cded7Smrg      ;;
365191cded7Smrg    *)
366191cded7Smrg      set fnord "$@" "$arg"
367191cded7Smrg      shift # fnord
368191cded7Smrg      shift # $arg
369191cded7Smrg      ;;
370191cded7Smrg    esac
371191cded7Smrg  done
372191cded7Smrg
373191cded7Smrg  test -z "$dashmflag" && dashmflag=-M
374191cded7Smrg  # Require at least two characters before searching for `:'
375191cded7Smrg  # in the target name.  This is to cope with DOS-style filenames:
376191cded7Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377191cded7Smrg  "$@" $dashmflag |
378191cded7Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
379191cded7Smrg  rm -f "$depfile"
380191cded7Smrg  cat < "$tmpdepfile" > "$depfile"
381191cded7Smrg  tr ' ' '
382191cded7Smrg' < "$tmpdepfile" | \
383191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
384191cded7Smrg## correctly.  Breaking it into two sed invocations is a workaround.
385191cded7Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
386191cded7Smrg  rm -f "$tmpdepfile"
387191cded7Smrg  ;;
388191cded7Smrg
389191cded7SmrgdashXmstdout)
390191cded7Smrg  # This case only exists to satisfy depend.m4.  It is never actually
391191cded7Smrg  # run, as this mode is specially recognized in the preamble.
392191cded7Smrg  exit 1
393191cded7Smrg  ;;
394191cded7Smrg
395191cded7Smrgmakedepend)
396191cded7Smrg  "$@" || exit $?
397191cded7Smrg  # Remove any Libtool call
398191cded7Smrg  if test "$libtool" = yes; then
399191cded7Smrg    while test $1 != '--mode=compile'; do
400191cded7Smrg      shift
401191cded7Smrg    done
402191cded7Smrg    shift
403191cded7Smrg  fi
404191cded7Smrg  # X makedepend
405191cded7Smrg  shift
406191cded7Smrg  cleared=no
407191cded7Smrg  for arg in "$@"; do
408191cded7Smrg    case $cleared in
409191cded7Smrg    no)
410191cded7Smrg      set ""; shift
411191cded7Smrg      cleared=yes ;;
412191cded7Smrg    esac
413191cded7Smrg    case "$arg" in
414191cded7Smrg    -D*|-I*)
415191cded7Smrg      set fnord "$@" "$arg"; shift ;;
416191cded7Smrg    # Strip any option that makedepend may not understand.  Remove
417191cded7Smrg    # the object too, otherwise makedepend will parse it as a source file.
418191cded7Smrg    -*|$object)
419191cded7Smrg      ;;
420191cded7Smrg    *)
421191cded7Smrg      set fnord "$@" "$arg"; shift ;;
422191cded7Smrg    esac
423191cded7Smrg  done
424191cded7Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
425191cded7Smrg  touch "$tmpdepfile"
426191cded7Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
427191cded7Smrg  rm -f "$depfile"
428191cded7Smrg  cat < "$tmpdepfile" > "$depfile"
429191cded7Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
430191cded7Smrg' | \
431191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
432191cded7Smrg## correctly.  Breaking it into two sed invocations is a workaround.
433191cded7Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
434191cded7Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
435191cded7Smrg  ;;
436191cded7Smrg
437191cded7Smrgcpp)
438191cded7Smrg  # Important note: in order to support this mode, a compiler *must*
439191cded7Smrg  # always write the preprocessed file to stdout.
440191cded7Smrg  "$@" || exit $?
441191cded7Smrg
442191cded7Smrg  # Remove the call to Libtool.
443191cded7Smrg  if test "$libtool" = yes; then
444191cded7Smrg    while test $1 != '--mode=compile'; do
445191cded7Smrg      shift
446191cded7Smrg    done
447191cded7Smrg    shift
448191cded7Smrg  fi
449191cded7Smrg
450191cded7Smrg  # Remove `-o $object'.
451191cded7Smrg  IFS=" "
452191cded7Smrg  for arg
453191cded7Smrg  do
454191cded7Smrg    case $arg in
455191cded7Smrg    -o)
456191cded7Smrg      shift
457191cded7Smrg      ;;
458191cded7Smrg    $object)
459191cded7Smrg      shift
460191cded7Smrg      ;;
461191cded7Smrg    *)
462191cded7Smrg      set fnord "$@" "$arg"
463191cded7Smrg      shift # fnord
464191cded7Smrg      shift # $arg
465191cded7Smrg      ;;
466191cded7Smrg    esac
467191cded7Smrg  done
468191cded7Smrg
469191cded7Smrg  "$@" -E |
470191cded7Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471191cded7Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472191cded7Smrg    sed '$ s: \\$::' > "$tmpdepfile"
473191cded7Smrg  rm -f "$depfile"
474191cded7Smrg  echo "$object : \\" > "$depfile"
475191cded7Smrg  cat < "$tmpdepfile" >> "$depfile"
476191cded7Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
477191cded7Smrg  rm -f "$tmpdepfile"
478191cded7Smrg  ;;
479191cded7Smrg
480191cded7Smrgmsvisualcpp)
481191cded7Smrg  # Important note: in order to support this mode, a compiler *must*
482191cded7Smrg  # always write the preprocessed file to stdout, regardless of -o,
483191cded7Smrg  # because we must use -o when running libtool.
484191cded7Smrg  "$@" || exit $?
485191cded7Smrg  IFS=" "
486191cded7Smrg  for arg
487191cded7Smrg  do
488191cded7Smrg    case "$arg" in
489191cded7Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490191cded7Smrg	set fnord "$@"
491191cded7Smrg	shift
492191cded7Smrg	shift
493191cded7Smrg	;;
494191cded7Smrg    *)
495191cded7Smrg	set fnord "$@" "$arg"
496191cded7Smrg	shift
497191cded7Smrg	shift
498191cded7Smrg	;;
499191cded7Smrg    esac
500191cded7Smrg  done
501191cded7Smrg  "$@" -E |
502191cded7Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
503191cded7Smrg  rm -f "$depfile"
504191cded7Smrg  echo "$object : \\" > "$depfile"
505191cded7Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
506191cded7Smrg  echo "	" >> "$depfile"
507191cded7Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
508191cded7Smrg  rm -f "$tmpdepfile"
509191cded7Smrg  ;;
510191cded7Smrg
511191cded7Smrgnone)
512191cded7Smrg  exec "$@"
513191cded7Smrg  ;;
514191cded7Smrg
515191cded7Smrg*)
516191cded7Smrg  echo "Unknown depmode $depmode" 1>&2
517191cded7Smrg  exit 1
518191cded7Smrg  ;;
519191cded7Smrgesac
520191cded7Smrg
521191cded7Smrgexit 0
522191cded7Smrg
523191cded7Smrg# Local Variables:
524191cded7Smrg# mode: shell-script
525191cded7Smrg# sh-indentation: 2
526191cded7Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
527191cded7Smrg# time-stamp-start: "scriptversion="
528191cded7Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
529191cded7Smrg# time-stamp-end: "$"
530191cded7Smrg# End:
531