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