25a39e6cd5c82d7276f6ccc62ef5e7ba1cc9776f
[debian/mailtextbody.git] / depcomp
1 #! /bin/sh
2 # depcomp - compile a program generating dependencies as side-effects
3
4 scriptversion=2012-03-27.16; # UTC
5
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
7 # 2011, 2012 Free Software Foundation, Inc.
8
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2, or (at your option)
12 # any later version.
13
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
18
19 # You should have received a copy of the GNU General Public License
20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
22 # As a special exception to the GNU General Public License, if you
23 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under
25 # the same distribution terms that you use for the rest of that program.
26
27 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28
29 case $1 in
30   '')
31      echo "$0: No command.  Try '$0 --help' for more information." 1>&2
32      exit 1;
33      ;;
34   -h | --h*)
35     cat <<\EOF
36 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
37
38 Run PROGRAMS ARGS to compile a file, generating dependencies
39 as side-effects.
40
41 Environment variables:
42   depmode     Dependency tracking mode.
43   source      Source file read by 'PROGRAMS ARGS'.
44   object      Object file output by 'PROGRAMS ARGS'.
45   DEPDIR      directory where to store dependencies.
46   depfile     Dependency file to output.
47   tmpdepfile  Temporary file to use when outputting dependencies.
48   libtool     Whether libtool is used (yes/no).
49
50 Report bugs to <bug-automake@gnu.org>.
51 EOF
52     exit $?
53     ;;
54   -v | --v*)
55     echo "depcomp $scriptversion"
56     exit $?
57     ;;
58 esac
59
60 # A tabulation character.
61 tab='   '
62 # A newline character.
63 nl='
64 '
65
66 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
67   echo "depcomp: Variables source, object and depmode must be set" 1>&2
68   exit 1
69 fi
70
71 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
72 depfile=${depfile-`echo "$object" |
73   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
74 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
75
76 rm -f "$tmpdepfile"
77
78 # Some modes work just like other modes, but use different flags.  We
79 # parameterize here, but still list the modes in the big case below,
80 # to make depend.m4 easier to write.  Note that we *cannot* use a case
81 # here, because this file can only contain one case statement.
82 if test "$depmode" = hp; then
83   # HP compiler uses -M and no extra arg.
84   gccflag=-M
85   depmode=gcc
86 fi
87
88 if test "$depmode" = dashXmstdout; then
89    # This is just like dashmstdout with a different argument.
90    dashmflag=-xM
91    depmode=dashmstdout
92 fi
93
94 cygpath_u="cygpath -u -f -"
95 if test "$depmode" = msvcmsys; then
96    # This is just like msvisualcpp but w/o cygpath translation.
97    # Just convert the backslash-escaped backslashes to single forward
98    # slashes to satisfy depend.m4
99    cygpath_u='sed s,\\\\,/,g'
100    depmode=msvisualcpp
101 fi
102
103 if test "$depmode" = msvc7msys; then
104    # This is just like msvc7 but w/o cygpath translation.
105    # Just convert the backslash-escaped backslashes to single forward
106    # slashes to satisfy depend.m4
107    cygpath_u='sed s,\\\\,/,g'
108    depmode=msvc7
109 fi
110
111 if test "$depmode" = xlc; then
112    # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
113    gccflag=-qmakedep=gcc,-MF
114    depmode=gcc
115 fi
116
117 case "$depmode" in
118 gcc3)
119 ## gcc 3 implements dependency tracking that does exactly what
120 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
121 ## it if -MD -MP comes after the -MF stuff.  Hmm.
122 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
123 ## the command line argument order; so add the flags where they
124 ## appear in depend2.am.  Note that the slowdown incurred here
125 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
126   for arg
127   do
128     case $arg in
129     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
130     *)  set fnord "$@" "$arg" ;;
131     esac
132     shift # fnord
133     shift # $arg
134   done
135   "$@"
136   stat=$?
137   if test $stat -eq 0; then :
138   else
139     rm -f "$tmpdepfile"
140     exit $stat
141   fi
142   mv "$tmpdepfile" "$depfile"
143   ;;
144
145 gcc)
146 ## There are various ways to get dependency output from gcc.  Here's
147 ## why we pick this rather obscure method:
148 ## - Don't want to use -MD because we'd like the dependencies to end
149 ##   up in a subdir.  Having to rename by hand is ugly.
150 ##   (We might end up doing this anyway to support other compilers.)
151 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
152 ##   -MM, not -M (despite what the docs say).
153 ## - Using -M directly means running the compiler twice (even worse
154 ##   than renaming).
155   if test -z "$gccflag"; then
156     gccflag=-MD,
157   fi
158   "$@" -Wp,"$gccflag$tmpdepfile"
159   stat=$?
160   if test $stat -eq 0; then :
161   else
162     rm -f "$tmpdepfile"
163     exit $stat
164   fi
165   rm -f "$depfile"
166   echo "$object : \\" > "$depfile"
167   alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
168 ## The second -e expression handles DOS-style file names with drive letters.
169   sed -e 's/^[^:]*: / /' \
170       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
171 ## This next piece of magic avoids the "deleted header file" problem.
172 ## The problem is that when a header file which appears in a .P file
173 ## is deleted, the dependency causes make to die (because there is
174 ## typically no way to rebuild the header).  We avoid this by adding
175 ## dummy dependencies for each header file.  Too bad gcc doesn't do
176 ## this for us directly.
177   tr ' ' "$nl" < "$tmpdepfile" |
178 ## Some versions of gcc put a space before the ':'.  On the theory
179 ## that the space means something, we add a space to the output as
180 ## well.  hp depmode also adds that space, but also prefixes the VPATH
181 ## to the object.  Take care to not repeat it in the output.
182 ## Some versions of the HPUX 10.20 sed can't process this invocation
183 ## correctly.  Breaking it into two sed invocations is a workaround.
184     sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
185       | sed -e 's/$/ :/' >> "$depfile"
186   rm -f "$tmpdepfile"
187   ;;
188
189 hp)
190   # This case exists only to let depend.m4 do its work.  It works by
191   # looking at the text of this script.  This case will never be run,
192   # since it is checked for above.
193   exit 1
194   ;;
195
196 sgi)
197   if test "$libtool" = yes; then
198     "$@" "-Wp,-MDupdate,$tmpdepfile"
199   else
200     "$@" -MDupdate "$tmpdepfile"
201   fi
202   stat=$?
203   if test $stat -eq 0; then :
204   else
205     rm -f "$tmpdepfile"
206     exit $stat
207   fi
208   rm -f "$depfile"
209
210   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
211     echo "$object : \\" > "$depfile"
212
213     # Clip off the initial element (the dependent).  Don't try to be
214     # clever and replace this with sed code, as IRIX sed won't handle
215     # lines with more than a fixed number of characters (4096 in
216     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
217     # the IRIX cc adds comments like '#:fec' to the end of the
218     # dependency line.
219     tr ' ' "$nl" < "$tmpdepfile" \
220     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
221     tr "$nl" ' ' >> "$depfile"
222     echo >> "$depfile"
223
224     # The second pass generates a dummy entry for each header file.
225     tr ' ' "$nl" < "$tmpdepfile" \
226    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
227    >> "$depfile"
228   else
229     # The sourcefile does not contain any dependencies, so just
230     # store a dummy comment line, to avoid errors with the Makefile
231     # "include basename.Plo" scheme.
232     echo "#dummy" > "$depfile"
233   fi
234   rm -f "$tmpdepfile"
235   ;;
236
237 xlc)
238   # This case exists only to let depend.m4 do its work.  It works by
239   # looking at the text of this script.  This case will never be run,
240   # since it is checked for above.
241   exit 1
242   ;;
243
244 aix)
245   # The C for AIX Compiler uses -M and outputs the dependencies
246   # in a .u file.  In older versions, this file always lives in the
247   # current directory.  Also, the AIX compiler puts '$object:' at the
248   # start of each line; $object doesn't have directory information.
249   # Version 6 uses the directory in both cases.
250   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
251   test "x$dir" = "x$object" && dir=
252   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
253   if test "$libtool" = yes; then
254     tmpdepfile1=$dir$base.u
255     tmpdepfile2=$base.u
256     tmpdepfile3=$dir.libs/$base.u
257     "$@" -Wc,-M
258   else
259     tmpdepfile1=$dir$base.u
260     tmpdepfile2=$dir$base.u
261     tmpdepfile3=$dir$base.u
262     "$@" -M
263   fi
264   stat=$?
265
266   if test $stat -eq 0; then :
267   else
268     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
269     exit $stat
270   fi
271
272   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
273   do
274     test -f "$tmpdepfile" && break
275   done
276   if test -f "$tmpdepfile"; then
277     # Each line is of the form 'foo.o: dependent.h'.
278     # Do two passes, one to just change these to
279     # '$object: dependent.h' and one to simply 'dependent.h:'.
280     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
281     sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
282   else
283     # The sourcefile does not contain any dependencies, so just
284     # store a dummy comment line, to avoid errors with the Makefile
285     # "include basename.Plo" scheme.
286     echo "#dummy" > "$depfile"
287   fi
288   rm -f "$tmpdepfile"
289   ;;
290
291 icc)
292   # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
293   # However on
294   #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
295   # ICC 7.0 will fill foo.d with something like
296   #    foo.o: sub/foo.c
297   #    foo.o: sub/foo.h
298   # which is wrong.  We want
299   #    sub/foo.o: sub/foo.c
300   #    sub/foo.o: sub/foo.h
301   #    sub/foo.c:
302   #    sub/foo.h:
303   # ICC 7.1 will output
304   #    foo.o: sub/foo.c sub/foo.h
305   # and will wrap long lines using '\':
306   #    foo.o: sub/foo.c ... \
307   #     sub/foo.h ... \
308   #     ...
309   # tcc 0.9.26 (FIXME still under development at the moment of writing)
310   # will emit a similar output, but also prepend the continuation lines
311   # with horizontal tabulation characters.
312   "$@" -MD -MF "$tmpdepfile"
313   stat=$?
314   if test $stat -eq 0; then :
315   else
316     rm -f "$tmpdepfile"
317     exit $stat
318   fi
319   rm -f "$depfile"
320   # Each line is of the form 'foo.o: dependent.h',
321   # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
322   # Do two passes, one to just change these to
323   # '$object: dependent.h' and one to simply 'dependent.h:'.
324   sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
325     < "$tmpdepfile" > "$depfile"
326   sed '
327     s/[ '"$tab"'][ '"$tab"']*/ /g
328     s/^ *//
329     s/ *\\*$//
330     s/^[^:]*: *//
331     /^$/d
332     /:$/d
333     s/$/ :/
334   ' < "$tmpdepfile" >> "$depfile"
335   rm -f "$tmpdepfile"
336   ;;
337
338 hp2)
339   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
340   # compilers, which have integrated preprocessors.  The correct option
341   # to use with these is +Maked; it writes dependencies to a file named
342   # 'foo.d', which lands next to the object file, wherever that
343   # happens to be.
344   # Much of this is similar to the tru64 case; see comments there.
345   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
346   test "x$dir" = "x$object" && dir=
347   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
348   if test "$libtool" = yes; then
349     tmpdepfile1=$dir$base.d
350     tmpdepfile2=$dir.libs/$base.d
351     "$@" -Wc,+Maked
352   else
353     tmpdepfile1=$dir$base.d
354     tmpdepfile2=$dir$base.d
355     "$@" +Maked
356   fi
357   stat=$?
358   if test $stat -eq 0; then :
359   else
360      rm -f "$tmpdepfile1" "$tmpdepfile2"
361      exit $stat
362   fi
363
364   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
365   do
366     test -f "$tmpdepfile" && break
367   done
368   if test -f "$tmpdepfile"; then
369     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
370     # Add 'dependent.h:' lines.
371     sed -ne '2,${
372                s/^ *//
373                s/ \\*$//
374                s/$/:/
375                p
376              }' "$tmpdepfile" >> "$depfile"
377   else
378     echo "#dummy" > "$depfile"
379   fi
380   rm -f "$tmpdepfile" "$tmpdepfile2"
381   ;;
382
383 tru64)
384    # The Tru64 compiler uses -MD to generate dependencies as a side
385    # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
386    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
387    # dependencies in 'foo.d' instead, so we check for that too.
388    # Subdirectories are respected.
389    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
390    test "x$dir" = "x$object" && dir=
391    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
392
393    if test "$libtool" = yes; then
394       # With Tru64 cc, shared objects can also be used to make a
395       # static library.  This mechanism is used in libtool 1.4 series to
396       # handle both shared and static libraries in a single compilation.
397       # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
398       #
399       # With libtool 1.5 this exception was removed, and libtool now
400       # generates 2 separate objects for the 2 libraries.  These two
401       # compilations output dependencies in $dir.libs/$base.o.d and
402       # in $dir$base.o.d.  We have to check for both files, because
403       # one of the two compilations can be disabled.  We should prefer
404       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
405       # automatically cleaned when .libs/ is deleted, while ignoring
406       # the former would cause a distcleancheck panic.
407       tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
408       tmpdepfile2=$dir$base.o.d          # libtool 1.5
409       tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
410       tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
411       "$@" -Wc,-MD
412    else
413       tmpdepfile1=$dir$base.o.d
414       tmpdepfile2=$dir$base.d
415       tmpdepfile3=$dir$base.d
416       tmpdepfile4=$dir$base.d
417       "$@" -MD
418    fi
419
420    stat=$?
421    if test $stat -eq 0; then :
422    else
423       rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
424       exit $stat
425    fi
426
427    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
428    do
429      test -f "$tmpdepfile" && break
430    done
431    if test -f "$tmpdepfile"; then
432       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
433       sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
434    else
435       echo "#dummy" > "$depfile"
436    fi
437    rm -f "$tmpdepfile"
438    ;;
439
440 msvc7)
441   if test "$libtool" = yes; then
442     showIncludes=-Wc,-showIncludes
443   else
444     showIncludes=-showIncludes
445   fi
446   "$@" $showIncludes > "$tmpdepfile"
447   stat=$?
448   grep -v '^Note: including file: ' "$tmpdepfile"
449   if test "$stat" = 0; then :
450   else
451     rm -f "$tmpdepfile"
452     exit $stat
453   fi
454   rm -f "$depfile"
455   echo "$object : \\" > "$depfile"
456   # The first sed program below extracts the file names and escapes
457   # backslashes for cygpath.  The second sed program outputs the file
458   # name when reading, but also accumulates all include files in the
459   # hold buffer in order to output them again at the end.  This only
460   # works with sed implementations that can handle large buffers.
461   sed < "$tmpdepfile" -n '
462 /^Note: including file:  *\(.*\)/ {
463   s//\1/
464   s/\\/\\\\/g
465   p
466 }' | $cygpath_u | sort -u | sed -n '
467 s/ /\\ /g
468 s/\(.*\)/'"$tab"'\1 \\/p
469 s/.\(.*\) \\/\1:/
470 H
471 $ {
472   s/.*/'"$tab"'/
473   G
474   p
475 }' >> "$depfile"
476   rm -f "$tmpdepfile"
477   ;;
478
479 msvc7msys)
480   # This case exists only to let depend.m4 do its work.  It works by
481   # looking at the text of this script.  This case will never be run,
482   # since it is checked for above.
483   exit 1
484   ;;
485
486 #nosideeffect)
487   # This comment above is used by automake to tell side-effect
488   # dependency tracking mechanisms from slower ones.
489
490 dashmstdout)
491   # Important note: in order to support this mode, a compiler *must*
492   # always write the preprocessed file to stdout, regardless of -o.
493   "$@" || exit $?
494
495   # Remove the call to Libtool.
496   if test "$libtool" = yes; then
497     while test "X$1" != 'X--mode=compile'; do
498       shift
499     done
500     shift
501   fi
502
503   # Remove '-o $object'.
504   IFS=" "
505   for arg
506   do
507     case $arg in
508     -o)
509       shift
510       ;;
511     $object)
512       shift
513       ;;
514     *)
515       set fnord "$@" "$arg"
516       shift # fnord
517       shift # $arg
518       ;;
519     esac
520   done
521
522   test -z "$dashmflag" && dashmflag=-M
523   # Require at least two characters before searching for ':'
524   # in the target name.  This is to cope with DOS-style filenames:
525   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
526   "$@" $dashmflag |
527     sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
528   rm -f "$depfile"
529   cat < "$tmpdepfile" > "$depfile"
530   tr ' ' "$nl" < "$tmpdepfile" | \
531 ## Some versions of the HPUX 10.20 sed can't process this invocation
532 ## correctly.  Breaking it into two sed invocations is a workaround.
533     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
534   rm -f "$tmpdepfile"
535   ;;
536
537 dashXmstdout)
538   # This case only exists to satisfy depend.m4.  It is never actually
539   # run, as this mode is specially recognized in the preamble.
540   exit 1
541   ;;
542
543 makedepend)
544   "$@" || exit $?
545   # Remove any Libtool call
546   if test "$libtool" = yes; then
547     while test "X$1" != 'X--mode=compile'; do
548       shift
549     done
550     shift
551   fi
552   # X makedepend
553   shift
554   cleared=no eat=no
555   for arg
556   do
557     case $cleared in
558     no)
559       set ""; shift
560       cleared=yes ;;
561     esac
562     if test $eat = yes; then
563       eat=no
564       continue
565     fi
566     case "$arg" in
567     -D*|-I*)
568       set fnord "$@" "$arg"; shift ;;
569     # Strip any option that makedepend may not understand.  Remove
570     # the object too, otherwise makedepend will parse it as a source file.
571     -arch)
572       eat=yes ;;
573     -*|$object)
574       ;;
575     *)
576       set fnord "$@" "$arg"; shift ;;
577     esac
578   done
579   obj_suffix=`echo "$object" | sed 's/^.*\././'`
580   touch "$tmpdepfile"
581   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
582   rm -f "$depfile"
583   # makedepend may prepend the VPATH from the source file name to the object.
584   # No need to regex-escape $object, excess matching of '.' is harmless.
585   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
586   sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
587 ## Some versions of the HPUX 10.20 sed can't process this invocation
588 ## correctly.  Breaking it into two sed invocations is a workaround.
589     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
590   rm -f "$tmpdepfile" "$tmpdepfile".bak
591   ;;
592
593 cpp)
594   # Important note: in order to support this mode, a compiler *must*
595   # always write the preprocessed file to stdout.
596   "$@" || exit $?
597
598   # Remove the call to Libtool.
599   if test "$libtool" = yes; then
600     while test "X$1" != 'X--mode=compile'; do
601       shift
602     done
603     shift
604   fi
605
606   # Remove '-o $object'.
607   IFS=" "
608   for arg
609   do
610     case $arg in
611     -o)
612       shift
613       ;;
614     $object)
615       shift
616       ;;
617     *)
618       set fnord "$@" "$arg"
619       shift # fnord
620       shift # $arg
621       ;;
622     esac
623   done
624
625   "$@" -E |
626     sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
627        -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
628     sed '$ s: \\$::' > "$tmpdepfile"
629   rm -f "$depfile"
630   echo "$object : \\" > "$depfile"
631   cat < "$tmpdepfile" >> "$depfile"
632   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
633   rm -f "$tmpdepfile"
634   ;;
635
636 msvisualcpp)
637   # Important note: in order to support this mode, a compiler *must*
638   # always write the preprocessed file to stdout.
639   "$@" || exit $?
640
641   # Remove the call to Libtool.
642   if test "$libtool" = yes; then
643     while test "X$1" != 'X--mode=compile'; do
644       shift
645     done
646     shift
647   fi
648
649   IFS=" "
650   for arg
651   do
652     case "$arg" in
653     -o)
654       shift
655       ;;
656     $object)
657       shift
658       ;;
659     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
660         set fnord "$@"
661         shift
662         shift
663         ;;
664     *)
665         set fnord "$@" "$arg"
666         shift
667         shift
668         ;;
669     esac
670   done
671   "$@" -E 2>/dev/null |
672   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
673   rm -f "$depfile"
674   echo "$object : \\" > "$depfile"
675   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
676   echo "$tab" >> "$depfile"
677   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
678   rm -f "$tmpdepfile"
679   ;;
680
681 msvcmsys)
682   # This case exists only to let depend.m4 do its work.  It works by
683   # looking at the text of this script.  This case will never be run,
684   # since it is checked for above.
685   exit 1
686   ;;
687
688 none)
689   exec "$@"
690   ;;
691
692 *)
693   echo "Unknown depmode $depmode" 1>&2
694   exit 1
695   ;;
696 esac
697
698 exit 0
699
700 # Local Variables:
701 # mode: shell-script
702 # sh-indentation: 2
703 # eval: (add-hook 'write-file-hooks 'time-stamp)
704 # time-stamp-start: "scriptversion="
705 # time-stamp-format: "%:y-%02m-%02d.%02H"
706 # time-stamp-time-zone: "UTC"
707 # time-stamp-end: "; # UTC"
708 # End: