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