depcomp revision 264fa531
1264fa531Smrg#! /bin/sh
2264fa531Smrg
3264fa531Smrg# depcomp - compile a program generating dependencies as side-effects
4264fa531Smrg# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
5264fa531Smrg
6264fa531Smrg# This program is free software; you can redistribute it and/or modify
7264fa531Smrg# it under the terms of the GNU General Public License as published by
8264fa531Smrg# the Free Software Foundation; either version 2, or (at your option)
9264fa531Smrg# any later version.
10264fa531Smrg
11264fa531Smrg# This program is distributed in the hope that it will be useful,
12264fa531Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
13264fa531Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14264fa531Smrg# GNU General Public License for more details.
15264fa531Smrg
16264fa531Smrg# You should have received a copy of the GNU General Public License
17264fa531Smrg# along with this program; if not, write to the Free Software
18264fa531Smrg# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19264fa531Smrg# 02111-1307, USA.
20264fa531Smrg
21264fa531Smrg# As a special exception to the GNU General Public License, if you
22264fa531Smrg# distribute this file as part of a program that contains a
23264fa531Smrg# configuration script generated by Autoconf, you may include it under
24264fa531Smrg# the same distribution terms that you use for the rest of that program.
25264fa531Smrg
26264fa531Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27264fa531Smrg
28264fa531Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
29264fa531Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
30264fa531Smrg  exit 1
31264fa531Smrgfi
32264fa531Smrg# `libtool' can also be set to `yes' or `no'.
33264fa531Smrg
34264fa531Smrgif test -z "$depfile"; then
35264fa531Smrg   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
36264fa531Smrg   dir=`echo "$object" | sed 's,/.*$,/,'`
37264fa531Smrg   if test "$dir" = "$object"; then
38264fa531Smrg      dir=
39264fa531Smrg   fi
40264fa531Smrg   # FIXME: should be _deps on DOS.
41264fa531Smrg   depfile="$dir.deps/$base"
42264fa531Smrgfi
43264fa531Smrg
44264fa531Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
45264fa531Smrg
46264fa531Smrgrm -f "$tmpdepfile"
47264fa531Smrg
48264fa531Smrg# Some modes work just like other modes, but use different flags.  We
49264fa531Smrg# parameterize here, but still list the modes in the big case below,
50264fa531Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
51264fa531Smrg# here, because this file can only contain one case statement.
52264fa531Smrgif test "$depmode" = hp; then
53264fa531Smrg  # HP compiler uses -M and no extra arg.
54264fa531Smrg  gccflag=-M
55264fa531Smrg  depmode=gcc
56264fa531Smrgfi
57264fa531Smrg
58264fa531Smrgif test "$depmode" = dashXmstdout; then
59264fa531Smrg   # This is just like dashmstdout with a different argument.
60264fa531Smrg   dashmflag=-xM
61264fa531Smrg   depmode=dashmstdout
62264fa531Smrgfi
63264fa531Smrg
64264fa531Smrgcase "$depmode" in
65264fa531Smrggcc3)
66264fa531Smrg## gcc 3 implements dependency tracking that does exactly what
67264fa531Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
68264fa531Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
69264fa531Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
70264fa531Smrg  stat=$?
71264fa531Smrg  if test $stat -eq 0; then :
72264fa531Smrg  else
73264fa531Smrg    rm -f "$tmpdepfile"
74264fa531Smrg    exit $stat
75264fa531Smrg  fi
76264fa531Smrg  mv "$tmpdepfile" "$depfile"
77264fa531Smrg  ;;
78264fa531Smrg
79264fa531Smrggcc)
80264fa531Smrg## There are various ways to get dependency output from gcc.  Here's
81264fa531Smrg## why we pick this rather obscure method:
82264fa531Smrg## - Don't want to use -MD because we'd like the dependencies to end
83264fa531Smrg##   up in a subdir.  Having to rename by hand is ugly.
84264fa531Smrg##   (We might end up doing this anyway to support other compilers.)
85264fa531Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
86264fa531Smrg##   -MM, not -M (despite what the docs say).
87264fa531Smrg## - Using -M directly means running the compiler twice (even worse
88264fa531Smrg##   than renaming).
89264fa531Smrg  if test -z "$gccflag"; then
90264fa531Smrg    gccflag=-MD,
91264fa531Smrg  fi
92264fa531Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
93264fa531Smrg  stat=$?
94264fa531Smrg  if test $stat -eq 0; then :
95264fa531Smrg  else
96264fa531Smrg    rm -f "$tmpdepfile"
97264fa531Smrg    exit $stat
98264fa531Smrg  fi
99264fa531Smrg  rm -f "$depfile"
100264fa531Smrg  echo "$object : \\" > "$depfile"
101264fa531Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
102264fa531Smrg## The second -e expression handles DOS-style file names with drive letters.
103264fa531Smrg  sed -e 's/^[^:]*: / /' \
104264fa531Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
105264fa531Smrg## This next piece of magic avoids the `deleted header file' problem.
106264fa531Smrg## The problem is that when a header file which appears in a .P file
107264fa531Smrg## is deleted, the dependency causes make to die (because there is
108264fa531Smrg## typically no way to rebuild the header).  We avoid this by adding
109264fa531Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
110264fa531Smrg## this for us directly.
111264fa531Smrg  tr ' ' '
112264fa531Smrg' < "$tmpdepfile" |
113264fa531Smrg## Some versions of gcc put a space before the `:'.  On the theory
114264fa531Smrg## that the space means something, we add a space to the output as
115264fa531Smrg## well.
116264fa531Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
117264fa531Smrg## correctly.  Breaking it into two sed invocations is a workaround.
118264fa531Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
119264fa531Smrg  rm -f "$tmpdepfile"
120264fa531Smrg  ;;
121264fa531Smrg
122264fa531Smrghp)
123264fa531Smrg  # This case exists only to let depend.m4 do its work.  It works by
124264fa531Smrg  # looking at the text of this script.  This case will never be run,
125264fa531Smrg  # since it is checked for above.
126264fa531Smrg  exit 1
127264fa531Smrg  ;;
128264fa531Smrg
129264fa531Smrgsgi)
130264fa531Smrg  if test "$libtool" = yes; then
131264fa531Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
132264fa531Smrg  else
133264fa531Smrg    "$@" -MDupdate "$tmpdepfile"
134264fa531Smrg  fi
135264fa531Smrg  stat=$?
136264fa531Smrg  if test $stat -eq 0; then :
137264fa531Smrg  else
138264fa531Smrg    rm -f "$tmpdepfile"
139264fa531Smrg    exit $stat
140264fa531Smrg  fi
141264fa531Smrg  rm -f "$depfile"
142264fa531Smrg
143264fa531Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
144264fa531Smrg    echo "$object : \\" > "$depfile"
145264fa531Smrg
146264fa531Smrg    # Clip off the initial element (the dependent).  Don't try to be
147264fa531Smrg    # clever and replace this with sed code, as IRIX sed won't handle
148264fa531Smrg    # lines with more than a fixed number of characters (4096 in
149264fa531Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
150264fa531Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
151264fa531Smrg    # dependency line.
152264fa531Smrg    tr ' ' '
153264fa531Smrg' < "$tmpdepfile" \
154264fa531Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
155264fa531Smrg    tr '
156264fa531Smrg' ' ' >> $depfile
157264fa531Smrg    echo >> $depfile
158264fa531Smrg
159264fa531Smrg    # The second pass generates a dummy entry for each header file.
160264fa531Smrg    tr ' ' '
161264fa531Smrg' < "$tmpdepfile" \
162264fa531Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
163264fa531Smrg   >> $depfile
164264fa531Smrg  else
165264fa531Smrg    # The sourcefile does not contain any dependencies, so just
166264fa531Smrg    # store a dummy comment line, to avoid errors with the Makefile
167264fa531Smrg    # "include basename.Plo" scheme.
168264fa531Smrg    echo "#dummy" > "$depfile"
169264fa531Smrg  fi
170264fa531Smrg  rm -f "$tmpdepfile"
171264fa531Smrg  ;;
172264fa531Smrg
173264fa531Smrgaix)
174264fa531Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
175264fa531Smrg  # in a .u file.  In older versions, this file always lives in the
176264fa531Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
177264fa531Smrg  # start of each line; $object doesn't have directory information.
178264fa531Smrg  # Version 6 uses the directory in both cases.
179264fa531Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
180264fa531Smrg  tmpdepfile="$stripped.u"
181264fa531Smrg  if test "$libtool" = yes; then
182264fa531Smrg    "$@" -Wc,-M
183264fa531Smrg  else
184264fa531Smrg    "$@" -M
185264fa531Smrg  fi
186264fa531Smrg  stat=$?
187264fa531Smrg
188264fa531Smrg  if test -f "$tmpdepfile"; then :
189264fa531Smrg  else
190264fa531Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
191264fa531Smrg    tmpdepfile="$stripped.u"
192264fa531Smrg  fi
193264fa531Smrg
194264fa531Smrg  if test $stat -eq 0; then :
195264fa531Smrg  else
196264fa531Smrg    rm -f "$tmpdepfile"
197264fa531Smrg    exit $stat
198264fa531Smrg  fi
199264fa531Smrg
200264fa531Smrg  if test -f "$tmpdepfile"; then
201264fa531Smrg    outname="$stripped.o"
202264fa531Smrg    # Each line is of the form `foo.o: dependent.h'.
203264fa531Smrg    # Do two passes, one to just change these to
204264fa531Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
205264fa531Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
206264fa531Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
207264fa531Smrg  else
208264fa531Smrg    # The sourcefile does not contain any dependencies, so just
209264fa531Smrg    # store a dummy comment line, to avoid errors with the Makefile
210264fa531Smrg    # "include basename.Plo" scheme.
211264fa531Smrg    echo "#dummy" > "$depfile"
212264fa531Smrg  fi
213264fa531Smrg  rm -f "$tmpdepfile"
214264fa531Smrg  ;;
215264fa531Smrg
216264fa531Smrgicc)
217264fa531Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
218264fa531Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
219264fa531Smrg  # ICC 7.0 will fill foo.d with something like
220264fa531Smrg  #    foo.o: sub/foo.c
221264fa531Smrg  #    foo.o: sub/foo.h
222264fa531Smrg  # which is wrong.  We want:
223264fa531Smrg  #    sub/foo.o: sub/foo.c
224264fa531Smrg  #    sub/foo.o: sub/foo.h
225264fa531Smrg  #    sub/foo.c:
226264fa531Smrg  #    sub/foo.h:
227264fa531Smrg  # ICC 7.1 will output
228264fa531Smrg  #    foo.o: sub/foo.c sub/foo.h
229264fa531Smrg  # and will wrap long lines using \ :
230264fa531Smrg  #    foo.o: sub/foo.c ... \
231264fa531Smrg  #     sub/foo.h ... \
232264fa531Smrg  #     ...
233264fa531Smrg
234264fa531Smrg  "$@" -MD -MF "$tmpdepfile"
235264fa531Smrg  stat=$?
236264fa531Smrg  if test $stat -eq 0; then :
237264fa531Smrg  else
238264fa531Smrg    rm -f "$tmpdepfile"
239264fa531Smrg    exit $stat
240264fa531Smrg  fi
241264fa531Smrg  rm -f "$depfile"
242264fa531Smrg  # Each line is of the form `foo.o: dependent.h',
243264fa531Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
244264fa531Smrg  # Do two passes, one to just change these to
245264fa531Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
246264fa531Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
247264fa531Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
248264fa531Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
249264fa531Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
250264fa531Smrg    sed -e 's/$/ :/' >> "$depfile"
251264fa531Smrg  rm -f "$tmpdepfile"
252264fa531Smrg  ;;
253264fa531Smrg
254264fa531Smrgtru64)
255264fa531Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
256264fa531Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
257264fa531Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
258264fa531Smrg   # dependencies in `foo.d' instead, so we check for that too.
259264fa531Smrg   # Subdirectories are respected.
260264fa531Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
261264fa531Smrg   test "x$dir" = "x$object" && dir=
262264fa531Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
263264fa531Smrg
264264fa531Smrg   if test "$libtool" = yes; then
265264fa531Smrg      tmpdepfile1="$dir.libs/$base.lo.d"
266264fa531Smrg      tmpdepfile2="$dir.libs/$base.d"
267264fa531Smrg      "$@" -Wc,-MD
268264fa531Smrg   else
269264fa531Smrg      tmpdepfile1="$dir$base.o.d"
270264fa531Smrg      tmpdepfile2="$dir$base.d"
271264fa531Smrg      "$@" -MD
272264fa531Smrg   fi
273264fa531Smrg
274264fa531Smrg   stat=$?
275264fa531Smrg   if test $stat -eq 0; then :
276264fa531Smrg   else
277264fa531Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2"
278264fa531Smrg      exit $stat
279264fa531Smrg   fi
280264fa531Smrg
281264fa531Smrg   if test -f "$tmpdepfile1"; then
282264fa531Smrg      tmpdepfile="$tmpdepfile1"
283264fa531Smrg   else
284264fa531Smrg      tmpdepfile="$tmpdepfile2"
285264fa531Smrg   fi
286264fa531Smrg   if test -f "$tmpdepfile"; then
287264fa531Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
288264fa531Smrg      # That's a tab and a space in the [].
289264fa531Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
290264fa531Smrg   else
291264fa531Smrg      echo "#dummy" > "$depfile"
292264fa531Smrg   fi
293264fa531Smrg   rm -f "$tmpdepfile"
294264fa531Smrg   ;;
295264fa531Smrg
296264fa531Smrg#nosideeffect)
297264fa531Smrg  # This comment above is used by automake to tell side-effect
298264fa531Smrg  # dependency tracking mechanisms from slower ones.
299264fa531Smrg
300264fa531Smrgdashmstdout)
301264fa531Smrg  # Important note: in order to support this mode, a compiler *must*
302264fa531Smrg  # always write the preprocessed file to stdout, regardless of -o.
303264fa531Smrg  "$@" || exit $?
304264fa531Smrg
305264fa531Smrg  # Remove the call to Libtool.
306264fa531Smrg  if test "$libtool" = yes; then
307264fa531Smrg    while test $1 != '--mode=compile'; do
308264fa531Smrg      shift
309264fa531Smrg    done
310264fa531Smrg    shift
311264fa531Smrg  fi
312264fa531Smrg
313264fa531Smrg  # Remove `-o $object'.
314264fa531Smrg  IFS=" "
315264fa531Smrg  for arg
316264fa531Smrg  do
317264fa531Smrg    case $arg in
318264fa531Smrg    -o)
319264fa531Smrg      shift
320264fa531Smrg      ;;
321264fa531Smrg    $object)
322264fa531Smrg      shift
323264fa531Smrg      ;;
324264fa531Smrg    *)
325264fa531Smrg      set fnord "$@" "$arg"
326264fa531Smrg      shift # fnord
327264fa531Smrg      shift # $arg
328264fa531Smrg      ;;
329264fa531Smrg    esac
330264fa531Smrg  done
331264fa531Smrg
332264fa531Smrg  test -z "$dashmflag" && dashmflag=-M
333264fa531Smrg  # Require at least two characters before searching for `:'
334264fa531Smrg  # in the target name.  This is to cope with DOS-style filenames:
335264fa531Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
336264fa531Smrg  "$@" $dashmflag |
337264fa531Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
338264fa531Smrg  rm -f "$depfile"
339264fa531Smrg  cat < "$tmpdepfile" > "$depfile"
340264fa531Smrg  tr ' ' '
341264fa531Smrg' < "$tmpdepfile" | \
342264fa531Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
343264fa531Smrg## correctly.  Breaking it into two sed invocations is a workaround.
344264fa531Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
345264fa531Smrg  rm -f "$tmpdepfile"
346264fa531Smrg  ;;
347264fa531Smrg
348264fa531SmrgdashXmstdout)
349264fa531Smrg  # This case only exists to satisfy depend.m4.  It is never actually
350264fa531Smrg  # run, as this mode is specially recognized in the preamble.
351264fa531Smrg  exit 1
352264fa531Smrg  ;;
353264fa531Smrg
354264fa531Smrgmakedepend)
355264fa531Smrg  "$@" || exit $?
356264fa531Smrg  # Remove any Libtool call
357264fa531Smrg  if test "$libtool" = yes; then
358264fa531Smrg    while test $1 != '--mode=compile'; do
359264fa531Smrg      shift
360264fa531Smrg    done
361264fa531Smrg    shift
362264fa531Smrg  fi
363264fa531Smrg  # X makedepend
364264fa531Smrg  shift
365264fa531Smrg  cleared=no
366264fa531Smrg  for arg in "$@"; do
367264fa531Smrg    case $cleared in
368264fa531Smrg    no)
369264fa531Smrg      set ""; shift
370264fa531Smrg      cleared=yes ;;
371264fa531Smrg    esac
372264fa531Smrg    case "$arg" in
373264fa531Smrg    -D*|-I*)
374264fa531Smrg      set fnord "$@" "$arg"; shift ;;
375264fa531Smrg    # Strip any option that makedepend may not understand.  Remove
376264fa531Smrg    # the object too, otherwise makedepend will parse it as a source file.
377264fa531Smrg    -*|$object)
378264fa531Smrg      ;;
379264fa531Smrg    *)
380264fa531Smrg      set fnord "$@" "$arg"; shift ;;
381264fa531Smrg    esac
382264fa531Smrg  done
383264fa531Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
384264fa531Smrg  touch "$tmpdepfile"
385264fa531Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
386264fa531Smrg  rm -f "$depfile"
387264fa531Smrg  cat < "$tmpdepfile" > "$depfile"
388264fa531Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
389264fa531Smrg' | \
390264fa531Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
391264fa531Smrg## correctly.  Breaking it into two sed invocations is a workaround.
392264fa531Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
393264fa531Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
394264fa531Smrg  ;;
395264fa531Smrg
396264fa531Smrgcpp)
397264fa531Smrg  # Important note: in order to support this mode, a compiler *must*
398264fa531Smrg  # always write the preprocessed file to stdout.
399264fa531Smrg  "$@" || exit $?
400264fa531Smrg
401264fa531Smrg  # Remove the call to Libtool.
402264fa531Smrg  if test "$libtool" = yes; then
403264fa531Smrg    while test $1 != '--mode=compile'; do
404264fa531Smrg      shift
405264fa531Smrg    done
406264fa531Smrg    shift
407264fa531Smrg  fi
408264fa531Smrg
409264fa531Smrg  # Remove `-o $object'.
410264fa531Smrg  IFS=" "
411264fa531Smrg  for arg
412264fa531Smrg  do
413264fa531Smrg    case $arg in
414264fa531Smrg    -o)
415264fa531Smrg      shift
416264fa531Smrg      ;;
417264fa531Smrg    $object)
418264fa531Smrg      shift
419264fa531Smrg      ;;
420264fa531Smrg    *)
421264fa531Smrg      set fnord "$@" "$arg"
422264fa531Smrg      shift # fnord
423264fa531Smrg      shift # $arg
424264fa531Smrg      ;;
425264fa531Smrg    esac
426264fa531Smrg  done
427264fa531Smrg
428264fa531Smrg  "$@" -E |
429264fa531Smrg    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
430264fa531Smrg    sed '$ s: \\$::' > "$tmpdepfile"
431264fa531Smrg  rm -f "$depfile"
432264fa531Smrg  echo "$object : \\" > "$depfile"
433264fa531Smrg  cat < "$tmpdepfile" >> "$depfile"
434264fa531Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
435264fa531Smrg  rm -f "$tmpdepfile"
436264fa531Smrg  ;;
437264fa531Smrg
438264fa531Smrgmsvisualcpp)
439264fa531Smrg  # Important note: in order to support this mode, a compiler *must*
440264fa531Smrg  # always write the preprocessed file to stdout, regardless of -o,
441264fa531Smrg  # because we must use -o when running libtool.
442264fa531Smrg  "$@" || exit $?
443264fa531Smrg  IFS=" "
444264fa531Smrg  for arg
445264fa531Smrg  do
446264fa531Smrg    case "$arg" in
447264fa531Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
448264fa531Smrg	set fnord "$@"
449264fa531Smrg	shift
450264fa531Smrg	shift
451264fa531Smrg	;;
452264fa531Smrg    *)
453264fa531Smrg	set fnord "$@" "$arg"
454264fa531Smrg	shift
455264fa531Smrg	shift
456264fa531Smrg	;;
457264fa531Smrg    esac
458264fa531Smrg  done
459264fa531Smrg  "$@" -E |
460264fa531Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
461264fa531Smrg  rm -f "$depfile"
462264fa531Smrg  echo "$object : \\" > "$depfile"
463264fa531Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
464264fa531Smrg  echo "	" >> "$depfile"
465264fa531Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
466264fa531Smrg  rm -f "$tmpdepfile"
467264fa531Smrg  ;;
468264fa531Smrg
469264fa531Smrgnone)
470264fa531Smrg  exec "$@"
471264fa531Smrg  ;;
472264fa531Smrg
473264fa531Smrg*)
474264fa531Smrg  echo "Unknown depmode $depmode" 1>&2
475264fa531Smrg  exit 1
476264fa531Smrg  ;;
477264fa531Smrgesac
478264fa531Smrg
479264fa531Smrgexit 0
480