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