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