Annotation of embedaddon/arping/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=2012-03-27.16; # UTC
1.1 misho 5:
1.1.1.2 ! misho 6: # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
! 7: # 2011, 2012 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
1.1.1.2 ! misho 20: # along with this program. If not, see <http://www.gnu.org/licenses/>.
1.1 misho 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: '')
1.1.1.2 ! misho 31: echo "$0: No command. Try '$0 --help' for more information." 1>&2
1.1 misho 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.
1.1.1.2 ! misho 43: source Source file read by 'PROGRAMS ARGS'.
! 44: object Object file output by 'PROGRAMS ARGS'.
1.1 misho 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:
1.1.1.2 ! misho 60: # A tabulation character.
! 61: tab=' '
! 62: # A newline character.
! 63: nl='
! 64: '
! 65:
1.1 misho 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:
1.1.1.2 ! misho 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:
1.1 misho 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"
1.1.1.2 ! misho 171: ## This next piece of magic avoids the "deleted header file" problem.
1.1 misho 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.
1.1.1.2 ! misho 177: tr ' ' "$nl" < "$tmpdepfile" |
! 178: ## Some versions of gcc put a space before the ':'. On the theory
1.1 misho 179: ## that the space means something, we add a space to the output as
1.1.1.2 ! misho 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.
1.1 misho 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.
1.1.1.2 ! misho 184: sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
! 185: | sed -e 's/$/ :/' >> "$depfile"
1.1 misho 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;
1.1.1.2 ! misho 217: # the IRIX cc adds comments like '#:fec' to the end of the
1.1 misho 218: # dependency line.
1.1.1.2 ! misho 219: tr ' ' "$nl" < "$tmpdepfile" \
1.1 misho 220: | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1.1.1.2 ! misho 221: tr "$nl" ' ' >> "$depfile"
! 222: echo >> "$depfile"
1.1 misho 223:
224: # The second pass generates a dummy entry for each header file.
1.1.1.2 ! misho 225: tr ' ' "$nl" < "$tmpdepfile" \
1.1 misho 226: | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1.1.1.2 ! misho 227: >> "$depfile"
1.1 misho 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:
1.1.1.2 ! misho 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:
1.1 misho 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
1.1.1.2 ! misho 247: # current directory. Also, the AIX compiler puts '$object:' at the
1.1 misho 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
1.1.1.2 ! misho 277: # Each line is of the form 'foo.o: dependent.h'.
1.1 misho 278: # Do two passes, one to just change these to
1.1.1.2 ! misho 279: # '$object: dependent.h' and one to simply 'dependent.h:'.
1.1 misho 280: sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
1.1.1.2 ! misho 281: sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
1.1 misho 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)
1.1.1.2 ! misho 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
1.1 misho 295: # ICC 7.0 will fill foo.d with something like
296: # foo.o: sub/foo.c
297: # foo.o: sub/foo.h
1.1.1.2 ! misho 298: # which is wrong. We want
1.1 misho 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
1.1.1.2 ! misho 305: # and will wrap long lines using '\':
1.1 misho 306: # foo.o: sub/foo.c ... \
307: # sub/foo.h ... \
308: # ...
1.1.1.2 ! misho 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.
1.1 misho 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"
1.1.1.2 ! misho 320: # Each line is of the form 'foo.o: dependent.h',
! 321: # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
1.1 misho 322: # Do two passes, one to just change these to
1.1.1.2 ! misho 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"
1.1 misho 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"
1.1.1.2 ! misho 370: # Add 'dependent.h:' lines.
! 371: sed -ne '2,${
! 372: s/^ *//
! 373: s/ \\*$//
! 374: s/$/:/
! 375: p
! 376: }' "$tmpdepfile" >> "$depfile"
1.1 misho 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
1.1.1.2 ! misho 385: # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
1.1 misho 386: # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
1.1.1.2 ! misho 387: # dependencies in 'foo.d' instead, so we check for that too.
1.1 misho 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"
1.1.1.2 ! misho 433: sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
1.1 misho 434: else
435: echo "#dummy" > "$depfile"
436: fi
437: rm -f "$tmpdepfile"
438: ;;
439:
1.1.1.2 ! misho 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:
1.1 misho 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
1.1.1.2 ! misho 497: while test "X$1" != 'X--mode=compile'; do
1.1 misho 498: shift
499: done
500: shift
501: fi
502:
1.1.1.2 ! misho 503: # Remove '-o $object'.
1.1 misho 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
1.1.1.2 ! misho 523: # Require at least two characters before searching for ':'
1.1 misho 524: # in the target name. This is to cope with DOS-style filenames:
1.1.1.2 ! misho 525: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
1.1 misho 526: "$@" $dashmflag |
1.1.1.2 ! misho 527: sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
1.1 misho 528: rm -f "$depfile"
529: cat < "$tmpdepfile" > "$depfile"
1.1.1.2 ! misho 530: tr ' ' "$nl" < "$tmpdepfile" | \
1.1 misho 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
1.1.1.2 ! misho 547: while test "X$1" != 'X--mode=compile'; do
1.1 misho 548: shift
549: done
550: shift
551: fi
552: # X makedepend
553: shift
1.1.1.2 ! misho 554: cleared=no eat=no
! 555: for arg
! 556: do
1.1 misho 557: case $cleared in
558: no)
559: set ""; shift
560: cleared=yes ;;
561: esac
1.1.1.2 ! misho 562: if test $eat = yes; then
! 563: eat=no
! 564: continue
! 565: fi
1.1 misho 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.
1.1.1.2 ! misho 571: -arch)
! 572: eat=yes ;;
1.1 misho 573: -*|$object)
574: ;;
575: *)
576: set fnord "$@" "$arg"; shift ;;
577: esac
578: done
1.1.1.2 ! misho 579: obj_suffix=`echo "$object" | sed 's/^.*\././'`
1.1 misho 580: touch "$tmpdepfile"
581: ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
582: rm -f "$depfile"
1.1.1.2 ! misho 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" | \
1.1 misho 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
1.1.1.2 ! misho 600: while test "X$1" != 'X--mode=compile'; do
1.1 misho 601: shift
602: done
603: shift
604: fi
605:
1.1.1.2 ! misho 606: # Remove '-o $object'.
1.1 misho 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*
1.1.1.2 ! misho 638: # always write the preprocessed file to stdout.
1.1 misho 639: "$@" || exit $?
1.1.1.2 ! misho 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:
1.1 misho 649: IFS=" "
650: for arg
651: do
652: case "$arg" in
1.1.1.2 ! misho 653: -o)
! 654: shift
! 655: ;;
! 656: $object)
! 657: shift
! 658: ;;
1.1 misho 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
1.1.1.2 ! misho 671: "$@" -E 2>/dev/null |
! 672: sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
1.1 misho 673: rm -f "$depfile"
674: echo "$object : \\" > "$depfile"
1.1.1.2 ! misho 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"
1.1 misho 678: rm -f "$tmpdepfile"
679: ;;
680:
1.1.1.2 ! misho 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:
1.1 misho 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"
1.1.1.2 ! misho 706: # time-stamp-time-zone: "UTC"
! 707: # time-stamp-end: "; # UTC"
1.1 misho 708: # End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>