wmmixer patches
[dockapps.git] / wmweather+-2.12 / depcomp
blobaeba4e89e41c8f6dd975fa3a8f0b97733ef21f60
1 #! /bin/sh
2 # depcomp - compile a program generating dependencies as side-effects
4 scriptversion=2009-04-28.21; # UTC
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7 # Software Foundation, Inc.
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.
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.
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 # 02110-1301, USA.
24 # As a special exception to the GNU General Public License, if you
25 # distribute this file as part of a program that contains a
26 # configuration script generated by Autoconf, you may include it under
27 # the same distribution terms that you use for the rest of that program.
29 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
31 case $1 in
32 '')
33 echo "$0: No command. Try \`$0 --help' for more information." 1>&2
34 exit 1;
36 -h | --h*)
37 cat <<\EOF
38 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
40 Run PROGRAMS ARGS to compile a file, generating dependencies
41 as side-effects.
43 Environment variables:
44 depmode Dependency tracking mode.
45 source Source file read by `PROGRAMS ARGS'.
46 object Object file output by `PROGRAMS ARGS'.
47 DEPDIR directory where to store dependencies.
48 depfile Dependency file to output.
49 tmpdepfile Temporary file to use when outputing dependencies.
50 libtool Whether libtool is used (yes/no).
52 Report bugs to <bug-automake@gnu.org>.
53 EOF
54 exit $?
56 -v | --v*)
57 echo "depcomp $scriptversion"
58 exit $?
60 esac
62 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
63 echo "depcomp: Variables source, object and depmode must be set" 1>&2
64 exit 1
67 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
68 depfile=${depfile-`echo "$object" |
69 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
70 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
72 rm -f "$tmpdepfile"
74 # Some modes work just like other modes, but use different flags. We
75 # parameterize here, but still list the modes in the big case below,
76 # to make depend.m4 easier to write. Note that we *cannot* use a case
77 # here, because this file can only contain one case statement.
78 if test "$depmode" = hp; then
79 # HP compiler uses -M and no extra arg.
80 gccflag=-M
81 depmode=gcc
84 if test "$depmode" = dashXmstdout; then
85 # This is just like dashmstdout with a different argument.
86 dashmflag=-xM
87 depmode=dashmstdout
90 cygpath_u="cygpath -u -f -"
91 if test "$depmode" = msvcmsys; then
92 # This is just like msvisualcpp but w/o cygpath translation.
93 # Just convert the backslash-escaped backslashes to single forward
94 # slashes to satisfy depend.m4
95 cygpath_u="sed s,\\\\\\\\,/,g"
96 depmode=msvisualcpp
99 case "$depmode" in
100 gcc3)
101 ## gcc 3 implements dependency tracking that does exactly what
102 ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
103 ## it if -MD -MP comes after the -MF stuff. Hmm.
104 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
105 ## the command line argument order; so add the flags where they
106 ## appear in depend2.am. Note that the slowdown incurred here
107 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
108 for arg
110 case $arg in
111 -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
112 *) set fnord "$@" "$arg" ;;
113 esac
114 shift # fnord
115 shift # $arg
116 done
117 "$@"
118 stat=$?
119 if test $stat -eq 0; then :
120 else
121 rm -f "$tmpdepfile"
122 exit $stat
124 mv "$tmpdepfile" "$depfile"
127 gcc)
128 ## There are various ways to get dependency output from gcc. Here's
129 ## why we pick this rather obscure method:
130 ## - Don't want to use -MD because we'd like the dependencies to end
131 ## up in a subdir. Having to rename by hand is ugly.
132 ## (We might end up doing this anyway to support other compilers.)
133 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
134 ## -MM, not -M (despite what the docs say).
135 ## - Using -M directly means running the compiler twice (even worse
136 ## than renaming).
137 if test -z "$gccflag"; then
138 gccflag=-MD,
140 "$@" -Wp,"$gccflag$tmpdepfile"
141 stat=$?
142 if test $stat -eq 0; then :
143 else
144 rm -f "$tmpdepfile"
145 exit $stat
147 rm -f "$depfile"
148 echo "$object : \\" > "$depfile"
149 alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
150 ## The second -e expression handles DOS-style file names with drive letters.
151 sed -e 's/^[^:]*: / /' \
152 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
153 ## This next piece of magic avoids the `deleted header file' problem.
154 ## The problem is that when a header file which appears in a .P file
155 ## is deleted, the dependency causes make to die (because there is
156 ## typically no way to rebuild the header). We avoid this by adding
157 ## dummy dependencies for each header file. Too bad gcc doesn't do
158 ## this for us directly.
159 tr ' ' '
160 ' < "$tmpdepfile" |
161 ## Some versions of gcc put a space before the `:'. On the theory
162 ## that the space means something, we add a space to the output as
163 ## well.
164 ## Some versions of the HPUX 10.20 sed can't process this invocation
165 ## correctly. Breaking it into two sed invocations is a workaround.
166 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
167 rm -f "$tmpdepfile"
171 # This case exists only to let depend.m4 do its work. It works by
172 # looking at the text of this script. This case will never be run,
173 # since it is checked for above.
174 exit 1
177 sgi)
178 if test "$libtool" = yes; then
179 "$@" "-Wp,-MDupdate,$tmpdepfile"
180 else
181 "$@" -MDupdate "$tmpdepfile"
183 stat=$?
184 if test $stat -eq 0; then :
185 else
186 rm -f "$tmpdepfile"
187 exit $stat
189 rm -f "$depfile"
191 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
192 echo "$object : \\" > "$depfile"
194 # Clip off the initial element (the dependent). Don't try to be
195 # clever and replace this with sed code, as IRIX sed won't handle
196 # lines with more than a fixed number of characters (4096 in
197 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
198 # the IRIX cc adds comments like `#:fec' to the end of the
199 # dependency line.
200 tr ' ' '
201 ' < "$tmpdepfile" \
202 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
203 tr '
204 ' ' ' >> "$depfile"
205 echo >> "$depfile"
207 # The second pass generates a dummy entry for each header file.
208 tr ' ' '
209 ' < "$tmpdepfile" \
210 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
211 >> "$depfile"
212 else
213 # The sourcefile does not contain any dependencies, so just
214 # store a dummy comment line, to avoid errors with the Makefile
215 # "include basename.Plo" scheme.
216 echo "#dummy" > "$depfile"
218 rm -f "$tmpdepfile"
221 aix)
222 # The C for AIX Compiler uses -M and outputs the dependencies
223 # in a .u file. In older versions, this file always lives in the
224 # current directory. Also, the AIX compiler puts `$object:' at the
225 # start of each line; $object doesn't have directory information.
226 # Version 6 uses the directory in both cases.
227 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
228 test "x$dir" = "x$object" && dir=
229 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
230 if test "$libtool" = yes; then
231 tmpdepfile1=$dir$base.u
232 tmpdepfile2=$base.u
233 tmpdepfile3=$dir.libs/$base.u
234 "$@" -Wc,-M
235 else
236 tmpdepfile1=$dir$base.u
237 tmpdepfile2=$dir$base.u
238 tmpdepfile3=$dir$base.u
239 "$@" -M
241 stat=$?
243 if test $stat -eq 0; then :
244 else
245 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
246 exit $stat
249 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
251 test -f "$tmpdepfile" && break
252 done
253 if test -f "$tmpdepfile"; then
254 # Each line is of the form `foo.o: dependent.h'.
255 # Do two passes, one to just change these to
256 # `$object: dependent.h' and one to simply `dependent.h:'.
257 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
258 # That's a tab and a space in the [].
259 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
260 else
261 # The sourcefile does not contain any dependencies, so just
262 # store a dummy comment line, to avoid errors with the Makefile
263 # "include basename.Plo" scheme.
264 echo "#dummy" > "$depfile"
266 rm -f "$tmpdepfile"
269 icc)
270 # Intel's C compiler understands `-MD -MF file'. However on
271 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
272 # ICC 7.0 will fill foo.d with something like
273 # foo.o: sub/foo.c
274 # foo.o: sub/foo.h
275 # which is wrong. We want:
276 # sub/foo.o: sub/foo.c
277 # sub/foo.o: sub/foo.h
278 # sub/foo.c:
279 # sub/foo.h:
280 # ICC 7.1 will output
281 # foo.o: sub/foo.c sub/foo.h
282 # and will wrap long lines using \ :
283 # foo.o: sub/foo.c ... \
284 # sub/foo.h ... \
285 # ...
287 "$@" -MD -MF "$tmpdepfile"
288 stat=$?
289 if test $stat -eq 0; then :
290 else
291 rm -f "$tmpdepfile"
292 exit $stat
294 rm -f "$depfile"
295 # Each line is of the form `foo.o: dependent.h',
296 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
297 # Do two passes, one to just change these to
298 # `$object: dependent.h' and one to simply `dependent.h:'.
299 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
300 # Some versions of the HPUX 10.20 sed can't process this invocation
301 # correctly. Breaking it into two sed invocations is a workaround.
302 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
303 sed -e 's/$/ :/' >> "$depfile"
304 rm -f "$tmpdepfile"
307 hp2)
308 # The "hp" stanza above does not work with aCC (C++) and HP's ia64
309 # compilers, which have integrated preprocessors. The correct option
310 # to use with these is +Maked; it writes dependencies to a file named
311 # 'foo.d', which lands next to the object file, wherever that
312 # happens to be.
313 # Much of this is similar to the tru64 case; see comments there.
314 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
315 test "x$dir" = "x$object" && dir=
316 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
317 if test "$libtool" = yes; then
318 tmpdepfile1=$dir$base.d
319 tmpdepfile2=$dir.libs/$base.d
320 "$@" -Wc,+Maked
321 else
322 tmpdepfile1=$dir$base.d
323 tmpdepfile2=$dir$base.d
324 "$@" +Maked
326 stat=$?
327 if test $stat -eq 0; then :
328 else
329 rm -f "$tmpdepfile1" "$tmpdepfile2"
330 exit $stat
333 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
335 test -f "$tmpdepfile" && break
336 done
337 if test -f "$tmpdepfile"; then
338 sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
339 # Add `dependent.h:' lines.
340 sed -ne '2,${
341 s/^ *//
342 s/ \\*$//
343 s/$/:/
345 }' "$tmpdepfile" >> "$depfile"
346 else
347 echo "#dummy" > "$depfile"
349 rm -f "$tmpdepfile" "$tmpdepfile2"
352 tru64)
353 # The Tru64 compiler uses -MD to generate dependencies as a side
354 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
355 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
356 # dependencies in `foo.d' instead, so we check for that too.
357 # Subdirectories are respected.
358 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
359 test "x$dir" = "x$object" && dir=
360 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
362 if test "$libtool" = yes; then
363 # With Tru64 cc, shared objects can also be used to make a
364 # static library. This mechanism is used in libtool 1.4 series to
365 # handle both shared and static libraries in a single compilation.
366 # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
368 # With libtool 1.5 this exception was removed, and libtool now
369 # generates 2 separate objects for the 2 libraries. These two
370 # compilations output dependencies in $dir.libs/$base.o.d and
371 # in $dir$base.o.d. We have to check for both files, because
372 # one of the two compilations can be disabled. We should prefer
373 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
374 # automatically cleaned when .libs/ is deleted, while ignoring
375 # the former would cause a distcleancheck panic.
376 tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
377 tmpdepfile2=$dir$base.o.d # libtool 1.5
378 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
379 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
380 "$@" -Wc,-MD
381 else
382 tmpdepfile1=$dir$base.o.d
383 tmpdepfile2=$dir$base.d
384 tmpdepfile3=$dir$base.d
385 tmpdepfile4=$dir$base.d
386 "$@" -MD
389 stat=$?
390 if test $stat -eq 0; then :
391 else
392 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
393 exit $stat
396 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
398 test -f "$tmpdepfile" && break
399 done
400 if test -f "$tmpdepfile"; then
401 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
402 # That's a tab and a space in the [].
403 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
404 else
405 echo "#dummy" > "$depfile"
407 rm -f "$tmpdepfile"
410 #nosideeffect)
411 # This comment above is used by automake to tell side-effect
412 # dependency tracking mechanisms from slower ones.
414 dashmstdout)
415 # Important note: in order to support this mode, a compiler *must*
416 # always write the preprocessed file to stdout, regardless of -o.
417 "$@" || exit $?
419 # Remove the call to Libtool.
420 if test "$libtool" = yes; then
421 while test "X$1" != 'X--mode=compile'; do
422 shift
423 done
424 shift
427 # Remove `-o $object'.
428 IFS=" "
429 for arg
431 case $arg in
433 shift
435 $object)
436 shift
439 set fnord "$@" "$arg"
440 shift # fnord
441 shift # $arg
443 esac
444 done
446 test -z "$dashmflag" && dashmflag=-M
447 # Require at least two characters before searching for `:'
448 # in the target name. This is to cope with DOS-style filenames:
449 # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
450 "$@" $dashmflag |
451 sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
452 rm -f "$depfile"
453 cat < "$tmpdepfile" > "$depfile"
454 tr ' ' '
455 ' < "$tmpdepfile" | \
456 ## Some versions of the HPUX 10.20 sed can't process this invocation
457 ## correctly. Breaking it into two sed invocations is a workaround.
458 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
459 rm -f "$tmpdepfile"
462 dashXmstdout)
463 # This case only exists to satisfy depend.m4. It is never actually
464 # run, as this mode is specially recognized in the preamble.
465 exit 1
468 makedepend)
469 "$@" || exit $?
470 # Remove any Libtool call
471 if test "$libtool" = yes; then
472 while test "X$1" != 'X--mode=compile'; do
473 shift
474 done
475 shift
477 # X makedepend
478 shift
479 cleared=no eat=no
480 for arg
482 case $cleared in
484 set ""; shift
485 cleared=yes ;;
486 esac
487 if test $eat = yes; then
488 eat=no
489 continue
491 case "$arg" in
492 -D*|-I*)
493 set fnord "$@" "$arg"; shift ;;
494 # Strip any option that makedepend may not understand. Remove
495 # the object too, otherwise makedepend will parse it as a source file.
496 -arch)
497 eat=yes ;;
498 -*|$object)
501 set fnord "$@" "$arg"; shift ;;
502 esac
503 done
504 obj_suffix=`echo "$object" | sed 's/^.*\././'`
505 touch "$tmpdepfile"
506 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
507 rm -f "$depfile"
508 cat < "$tmpdepfile" > "$depfile"
509 sed '1,2d' "$tmpdepfile" | tr ' ' '
510 ' | \
511 ## Some versions of the HPUX 10.20 sed can't process this invocation
512 ## correctly. Breaking it into two sed invocations is a workaround.
513 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
514 rm -f "$tmpdepfile" "$tmpdepfile".bak
517 cpp)
518 # Important note: in order to support this mode, a compiler *must*
519 # always write the preprocessed file to stdout.
520 "$@" || exit $?
522 # Remove the call to Libtool.
523 if test "$libtool" = yes; then
524 while test "X$1" != 'X--mode=compile'; do
525 shift
526 done
527 shift
530 # Remove `-o $object'.
531 IFS=" "
532 for arg
534 case $arg in
536 shift
538 $object)
539 shift
542 set fnord "$@" "$arg"
543 shift # fnord
544 shift # $arg
546 esac
547 done
549 "$@" -E |
550 sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
551 -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
552 sed '$ s: \\$::' > "$tmpdepfile"
553 rm -f "$depfile"
554 echo "$object : \\" > "$depfile"
555 cat < "$tmpdepfile" >> "$depfile"
556 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
557 rm -f "$tmpdepfile"
560 msvisualcpp)
561 # Important note: in order to support this mode, a compiler *must*
562 # always write the preprocessed file to stdout.
563 "$@" || exit $?
565 # Remove the call to Libtool.
566 if test "$libtool" = yes; then
567 while test "X$1" != 'X--mode=compile'; do
568 shift
569 done
570 shift
573 IFS=" "
574 for arg
576 case "$arg" in
578 shift
580 $object)
581 shift
583 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
584 set fnord "$@"
585 shift
586 shift
589 set fnord "$@" "$arg"
590 shift
591 shift
593 esac
594 done
595 "$@" -E 2>/dev/null |
596 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
597 rm -f "$depfile"
598 echo "$object : \\" > "$depfile"
599 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
600 echo " " >> "$depfile"
601 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
602 rm -f "$tmpdepfile"
605 msvcmsys)
606 # This case exists only to let depend.m4 do its work. It works by
607 # looking at the text of this script. This case will never be run,
608 # since it is checked for above.
609 exit 1
612 none)
613 exec "$@"
617 echo "Unknown depmode $depmode" 1>&2
618 exit 1
620 esac
622 exit 0
624 # Local Variables:
625 # mode: shell-script
626 # sh-indentation: 2
627 # eval: (add-hook 'write-file-hooks 'time-stamp)
628 # time-stamp-start: "scriptversion="
629 # time-stamp-format: "%:y-%02m-%02d.%02H"
630 # time-stamp-time-zone: "UTC"
631 # time-stamp-end: "; # UTC"
632 # End: