Merge branch 'msvc' into maint
[platform/upstream/automake.git] / lib / depcomp
1 #! /bin/sh
2 # depcomp - compile a program generating dependencies as side-effects
3
4 scriptversion=2012-02-03.15; # 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 understands '-MD -MF file'.  However on
293   #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
294   # ICC 7.0 will fill foo.d with something like
295   #    foo.o: sub/foo.c
296   #    foo.o: sub/foo.h
297   # which is wrong.  We want:
298   #    sub/foo.o: sub/foo.c
299   #    sub/foo.o: sub/foo.h
300   #    sub/foo.c:
301   #    sub/foo.h:
302   # ICC 7.1 will output
303   #    foo.o: sub/foo.c sub/foo.h
304   # and will wrap long lines using \ :
305   #    foo.o: sub/foo.c ... \
306   #     sub/foo.h ... \
307   #     ...
308
309   "$@" -MD -MF "$tmpdepfile"
310   stat=$?
311   if test $stat -eq 0; then :
312   else
313     rm -f "$tmpdepfile"
314     exit $stat
315   fi
316   rm -f "$depfile"
317   # Each line is of the form 'foo.o: dependent.h',
318   # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
319   # Do two passes, one to just change these to
320   # '$object: dependent.h' and one to simply 'dependent.h:'.
321   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
322   # Some versions of the HPUX 10.20 sed can't process this invocation
323   # correctly.  Breaking it into two sed invocations is a workaround.
324   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
325     sed -e 's/$/ :/' >> "$depfile"
326   rm -f "$tmpdepfile"
327   ;;
328
329 hp2)
330   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
331   # compilers, which have integrated preprocessors.  The correct option
332   # to use with these is +Maked; it writes dependencies to a file named
333   # 'foo.d', which lands next to the object file, wherever that
334   # happens to be.
335   # Much of this is similar to the tru64 case; see comments there.
336   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
337   test "x$dir" = "x$object" && dir=
338   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
339   if test "$libtool" = yes; then
340     tmpdepfile1=$dir$base.d
341     tmpdepfile2=$dir.libs/$base.d
342     "$@" -Wc,+Maked
343   else
344     tmpdepfile1=$dir$base.d
345     tmpdepfile2=$dir$base.d
346     "$@" +Maked
347   fi
348   stat=$?
349   if test $stat -eq 0; then :
350   else
351      rm -f "$tmpdepfile1" "$tmpdepfile2"
352      exit $stat
353   fi
354
355   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
356   do
357     test -f "$tmpdepfile" && break
358   done
359   if test -f "$tmpdepfile"; then
360     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
361     # Add 'dependent.h:' lines.
362     sed -ne '2,${
363                s/^ *//
364                s/ \\*$//
365                s/$/:/
366                p
367              }' "$tmpdepfile" >> "$depfile"
368   else
369     echo "#dummy" > "$depfile"
370   fi
371   rm -f "$tmpdepfile" "$tmpdepfile2"
372   ;;
373
374 tru64)
375    # The Tru64 compiler uses -MD to generate dependencies as a side
376    # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
377    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
378    # dependencies in 'foo.d' instead, so we check for that too.
379    # Subdirectories are respected.
380    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
381    test "x$dir" = "x$object" && dir=
382    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
383
384    if test "$libtool" = yes; then
385       # With Tru64 cc, shared objects can also be used to make a
386       # static library.  This mechanism is used in libtool 1.4 series to
387       # handle both shared and static libraries in a single compilation.
388       # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
389       #
390       # With libtool 1.5 this exception was removed, and libtool now
391       # generates 2 separate objects for the 2 libraries.  These two
392       # compilations output dependencies in $dir.libs/$base.o.d and
393       # in $dir$base.o.d.  We have to check for both files, because
394       # one of the two compilations can be disabled.  We should prefer
395       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
396       # automatically cleaned when .libs/ is deleted, while ignoring
397       # the former would cause a distcleancheck panic.
398       tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
399       tmpdepfile2=$dir$base.o.d          # libtool 1.5
400       tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
401       tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
402       "$@" -Wc,-MD
403    else
404       tmpdepfile1=$dir$base.o.d
405       tmpdepfile2=$dir$base.d
406       tmpdepfile3=$dir$base.d
407       tmpdepfile4=$dir$base.d
408       "$@" -MD
409    fi
410
411    stat=$?
412    if test $stat -eq 0; then :
413    else
414       rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
415       exit $stat
416    fi
417
418    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
419    do
420      test -f "$tmpdepfile" && break
421    done
422    if test -f "$tmpdepfile"; then
423       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
424       sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
425    else
426       echo "#dummy" > "$depfile"
427    fi
428    rm -f "$tmpdepfile"
429    ;;
430
431 msvc7)
432   if test "$libtool" = yes; then
433     showIncludes=-Wc,-showIncludes
434   else
435     showIncludes=-showIncludes
436   fi
437   "$@" $showIncludes > "$tmpdepfile"
438   stat=$?
439   grep -v '^Note: including file: ' "$tmpdepfile"
440   if test "$stat" = 0; then :
441   else
442     rm -f "$tmpdepfile"
443     exit $stat
444   fi
445   rm -f "$depfile"
446   echo "$object : \\" > "$depfile"
447   # The first sed program below extracts the file names and escapes
448   # backslashes for cygpath.  The second sed program outputs the file
449   # name when reading, but also accumulates all include files in the
450   # hold buffer in order to output them again at the end.  This only
451   # works with sed implementations that can handle large buffers.
452   sed < "$tmpdepfile" -n '
453 /^Note: including file:  *\(.*\)/ {
454   s//\1/
455   s/\\/\\\\/g
456   p
457 }' | $cygpath_u | sort -u | sed -n '
458 s/ /\\ /g
459 s/\(.*\)/'"$tab"'\1 \\/p
460 s/.\(.*\) \\/\1:/
461 H
462 $ {
463   s/.*/'"$tab"'/
464   G
465   p
466 }' >> "$depfile"
467   rm -f "$tmpdepfile"
468   ;;
469
470 msvc7msys)
471   # This case exists only to let depend.m4 do its work.  It works by
472   # looking at the text of this script.  This case will never be run,
473   # since it is checked for above.
474   exit 1
475   ;;
476
477 #nosideeffect)
478   # This comment above is used by automake to tell side-effect
479   # dependency tracking mechanisms from slower ones.
480
481 dashmstdout)
482   # Important note: in order to support this mode, a compiler *must*
483   # always write the preprocessed file to stdout, regardless of -o.
484   "$@" || exit $?
485
486   # Remove the call to Libtool.
487   if test "$libtool" = yes; then
488     while test "X$1" != 'X--mode=compile'; do
489       shift
490     done
491     shift
492   fi
493
494   # Remove '-o $object'.
495   IFS=" "
496   for arg
497   do
498     case $arg in
499     -o)
500       shift
501       ;;
502     $object)
503       shift
504       ;;
505     *)
506       set fnord "$@" "$arg"
507       shift # fnord
508       shift # $arg
509       ;;
510     esac
511   done
512
513   test -z "$dashmflag" && dashmflag=-M
514   # Require at least two characters before searching for ':'
515   # in the target name.  This is to cope with DOS-style filenames:
516   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
517   "$@" $dashmflag |
518     sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
519   rm -f "$depfile"
520   cat < "$tmpdepfile" > "$depfile"
521   tr ' ' "$nl" < "$tmpdepfile" | \
522 ## Some versions of the HPUX 10.20 sed can't process this invocation
523 ## correctly.  Breaking it into two sed invocations is a workaround.
524     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
525   rm -f "$tmpdepfile"
526   ;;
527
528 dashXmstdout)
529   # This case only exists to satisfy depend.m4.  It is never actually
530   # run, as this mode is specially recognized in the preamble.
531   exit 1
532   ;;
533
534 makedepend)
535   "$@" || exit $?
536   # Remove any Libtool call
537   if test "$libtool" = yes; then
538     while test "X$1" != 'X--mode=compile'; do
539       shift
540     done
541     shift
542   fi
543   # X makedepend
544   shift
545   cleared=no eat=no
546   for arg
547   do
548     case $cleared in
549     no)
550       set ""; shift
551       cleared=yes ;;
552     esac
553     if test $eat = yes; then
554       eat=no
555       continue
556     fi
557     case "$arg" in
558     -D*|-I*)
559       set fnord "$@" "$arg"; shift ;;
560     # Strip any option that makedepend may not understand.  Remove
561     # the object too, otherwise makedepend will parse it as a source file.
562     -arch)
563       eat=yes ;;
564     -*|$object)
565       ;;
566     *)
567       set fnord "$@" "$arg"; shift ;;
568     esac
569   done
570   obj_suffix=`echo "$object" | sed 's/^.*\././'`
571   touch "$tmpdepfile"
572   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
573   rm -f "$depfile"
574   # makedepend may prepend the VPATH from the source file name to the object.
575   # No need to regex-escape $object, excess matching of '.' is harmless.
576   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
577   sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
578 ## Some versions of the HPUX 10.20 sed can't process this invocation
579 ## correctly.  Breaking it into two sed invocations is a workaround.
580     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
581   rm -f "$tmpdepfile" "$tmpdepfile".bak
582   ;;
583
584 cpp)
585   # Important note: in order to support this mode, a compiler *must*
586   # always write the preprocessed file to stdout.
587   "$@" || exit $?
588
589   # Remove the call to Libtool.
590   if test "$libtool" = yes; then
591     while test "X$1" != 'X--mode=compile'; do
592       shift
593     done
594     shift
595   fi
596
597   # Remove '-o $object'.
598   IFS=" "
599   for arg
600   do
601     case $arg in
602     -o)
603       shift
604       ;;
605     $object)
606       shift
607       ;;
608     *)
609       set fnord "$@" "$arg"
610       shift # fnord
611       shift # $arg
612       ;;
613     esac
614   done
615
616   "$@" -E |
617     sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
618        -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
619     sed '$ s: \\$::' > "$tmpdepfile"
620   rm -f "$depfile"
621   echo "$object : \\" > "$depfile"
622   cat < "$tmpdepfile" >> "$depfile"
623   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
624   rm -f "$tmpdepfile"
625   ;;
626
627 msvisualcpp)
628   # Important note: in order to support this mode, a compiler *must*
629   # always write the preprocessed file to stdout.
630   "$@" || exit $?
631
632   # Remove the call to Libtool.
633   if test "$libtool" = yes; then
634     while test "X$1" != 'X--mode=compile'; do
635       shift
636     done
637     shift
638   fi
639
640   IFS=" "
641   for arg
642   do
643     case "$arg" in
644     -o)
645       shift
646       ;;
647     $object)
648       shift
649       ;;
650     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
651         set fnord "$@"
652         shift
653         shift
654         ;;
655     *)
656         set fnord "$@" "$arg"
657         shift
658         shift
659         ;;
660     esac
661   done
662   "$@" -E 2>/dev/null |
663   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
664   rm -f "$depfile"
665   echo "$object : \\" > "$depfile"
666   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
667   echo "$tab" >> "$depfile"
668   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
669   rm -f "$tmpdepfile"
670   ;;
671
672 msvcmsys)
673   # This case exists only to let depend.m4 do its work.  It works by
674   # looking at the text of this script.  This case will never be run,
675   # since it is checked for above.
676   exit 1
677   ;;
678
679 none)
680   exec "$@"
681   ;;
682
683 *)
684   echo "Unknown depmode $depmode" 1>&2
685   exit 1
686   ;;
687 esac
688
689 exit 0
690
691 # Local Variables:
692 # mode: shell-script
693 # sh-indentation: 2
694 # eval: (add-hook 'write-file-hooks 'time-stamp)
695 # time-stamp-start: "scriptversion="
696 # time-stamp-format: "%:y-%02m-%02d.%02H"
697 # time-stamp-time-zone: "UTC"
698 # time-stamp-end: "; # UTC"
699 # End: