Annotation of embedaddon/smartmontools/depcomp, revision 1.1.1.2
1.1 misho 1: #! /bin/sh
2: # depcomp - compile a program generating dependencies as side-effects
3:
1.1.1.2 ! misho 4: scriptversion=2011-12-04.11; # UTC
1.1 misho 5:
1.1.1.2 ! misho 6: # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
! 7: # 2011 Free Software Foundation, Inc.
1.1 misho 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.
1.1.1.2 ! misho 47: tmpdepfile Temporary file to use when outputting dependencies.
1.1 misho 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: if 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
63: fi
64:
65: # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66: depfile=${depfile-`echo "$object" |
67: sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68: tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69:
70: rm -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.
76: if test "$depmode" = hp; then
77: # HP compiler uses -M and no extra arg.
78: gccflag=-M
79: depmode=gcc
80: fi
81:
82: if test "$depmode" = dashXmstdout; then
83: # This is just like dashmstdout with a different argument.
84: dashmflag=-xM
85: depmode=dashmstdout
86: fi
87:
88: cygpath_u="cygpath -u -f -"
89: if 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
1.1.1.2 ! misho 93: cygpath_u='sed s,\\\\,/,g'
1.1 misho 94: depmode=msvisualcpp
95: fi
96:
1.1.1.2 ! misho 97: if 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
! 103: fi
! 104:
1.1 misho 105: case "$depmode" in
106: gcc3)
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:
133: gcc)
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
1.1.1.2 ! misho 169: ## 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.
1.1 misho 171: ## Some versions of the HPUX 10.20 sed can't process this invocation
172: ## correctly. Breaking it into two sed invocations is a workaround.
1.1.1.2 ! misho 173: sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
! 174: | sed -e 's/$/ :/' >> "$depfile"
1.1 misho 175: rm -f "$tmpdepfile"
176: ;;
177:
178: hp)
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:
185: sgi)
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:
229: aix)
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:
277: icc)
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:
315: hp2)
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:
360: tru64)
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:
1.1.1.2 ! misho 418: msvc7)
! 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 '
! 445: s/ /\\ /g
! 446: s/\(.*\)/ \1 \\/p
! 447: s/.\(.*\) \\/\1:/
! 448: H
! 449: $ {
! 450: s/.*/ /
! 451: G
! 452: p
! 453: }' >> "$depfile"
! 454: rm -f "$tmpdepfile"
! 455: ;;
! 456:
! 457: msvc7msys)
! 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:
1.1 misho 464: #nosideeffect)
465: # This comment above is used by automake to tell side-effect
466: # dependency tracking mechanisms from slower ones.
467:
468: dashmstdout)
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:
516: dashXmstdout)
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:
522: makedepend)
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"
1.1.1.2 ! misho 562: # 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"
1.1 misho 565: 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:
573: cpp)
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:
616: msvisualcpp)
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:
661: msvcmsys)
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:
668: none)
669: exec "$@"
670: ;;
671:
672: *)
673: echo "Unknown depmode $depmode" 1>&2
674: exit 1
675: ;;
676: esac
677:
678: exit 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:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>