ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/depcomp
Revision: 1664
Committed: Sun Nov 18 14:33:47 2012 UTC (13 years, 8 months ago) by michael
File size: 23910 byte(s)
Log Message:
- memory.c: removed mem_frob()
- automake 1.12.5

File Contents

# User Rev Content
1 michael 912 #! /bin/sh
2     # depcomp - compile a program generating dependencies as side-effects
3    
4 michael 1504 scriptversion=2012-07-12.20; # UTC
5 michael 912
6 michael 1375 # Copyright (C) 1999-2012 Free Software Foundation, Inc.
7 michael 912
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 michael 945 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 michael 912
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     '')
30 michael 1375 echo "$0: No command. Try '$0 --help' for more information." 1>&2
31 michael 912 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.
42 michael 1375 source Source file read by 'PROGRAMS ARGS'.
43     object Object file output by 'PROGRAMS ARGS'.
44 michael 912 DEPDIR directory where to store dependencies.
45     depfile Dependency file to output.
46 michael 1257 tmpdepfile Temporary file to use when outputting dependencies.
47 michael 912 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    
59 michael 1375 # A tabulation character.
60     tab=' '
61     # A newline character.
62     nl='
63     '
64    
65 michael 912 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    
77 michael 1664 # Avoid interferences from the environment.
78     gccflag= dashmflag=
79    
80 michael 912 # 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 michael 945 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
101 michael 1257 cygpath_u='sed s,\\\\,/,g'
102 michael 945 depmode=msvisualcpp
103     fi
104    
105 michael 1257 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    
113 michael 1375 if test "$depmode" = xlc; then
114 michael 1664 # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
115 michael 1375 gccflag=-qmakedep=gcc,-MF
116     depmode=gcc
117     fi
118    
119 michael 912 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)
148 michael 1664 ## 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).
151 michael 912 ## 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
157 michael 1664 ## -MM, not -M (despite what the docs say). Also, it might not be
158     ## supported by the other compilers which use the 'gcc' depmode.
159 michael 912 ## - 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"
177 michael 1375 ## This next piece of magic avoids the "deleted header file" problem.
178 michael 912 ## 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.
183 michael 1375 tr ' ' "$nl" < "$tmpdepfile" |
184     ## Some versions of gcc put a space before the ':'. On the theory
185 michael 912 ## that the space means something, we add a space to the output as
186 michael 1257 ## 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.
188 michael 912 ## Some versions of the HPUX 10.20 sed can't process this invocation
189     ## correctly. Breaking it into two sed invocations is a workaround.
190 michael 1257 sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
191     | sed -e 's/$/ :/' >> "$depfile"
192 michael 912 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;
223 michael 1375 # the IRIX cc adds comments like '#:fec' to the end of the
224 michael 912 # dependency line.
225 michael 1375 tr ' ' "$nl" < "$tmpdepfile" \
226 michael 912 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
227 michael 1375 tr "$nl" ' ' >> "$depfile"
228 michael 945 echo >> "$depfile"
229 michael 912
230     # The second pass generates a dummy entry for each header file.
231 michael 1375 tr ' ' "$nl" < "$tmpdepfile" \
232 michael 912 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
233 michael 945 >> "$depfile"
234 michael 912 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    
243 michael 1375 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    
250 michael 912 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
253 michael 1375 # current directory. Also, the AIX compiler puts '$object:' at the
254 michael 912 # start of each line; $object doesn't have directory information.
255     # Version 6 uses the directory in both cases.
256 michael 945 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 michael 912 if test "$libtool" = yes; then
260 michael 945 tmpdepfile1=$dir$base.u
261     tmpdepfile2=$base.u
262     tmpdepfile3=$dir.libs/$base.u
263 michael 912 "$@" -Wc,-M
264     else
265 michael 945 tmpdepfile1=$dir$base.u
266     tmpdepfile2=$dir$base.u
267     tmpdepfile3=$dir$base.u
268 michael 912 "$@" -M
269     fi
270     stat=$?
271    
272     if test $stat -eq 0; then :
273     else
274 michael 945 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
275 michael 912 exit $stat
276     fi
277    
278 michael 945 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
279     do
280     test -f "$tmpdepfile" && break
281     done
282 michael 912 if test -f "$tmpdepfile"; then
283 michael 1375 # Each line is of the form 'foo.o: dependent.h'.
284 michael 912 # Do two passes, one to just change these to
285 michael 1375 # '$object: dependent.h' and one to simply 'dependent.h:'.
286 michael 945 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
287 michael 1375 sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
288 michael 912 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)
298 michael 1375 # 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
301 michael 912 # ICC 7.0 will fill foo.d with something like
302     # foo.o: sub/foo.c
303     # foo.o: sub/foo.h
304 michael 1375 # which is wrong. We want
305 michael 912 # 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
311 michael 1375 # and will wrap long lines using '\':
312 michael 912 # foo.o: sub/foo.c ... \
313     # sub/foo.h ... \
314     # ...
315 michael 1375 # 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.
318 michael 912 "$@" -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"
326 michael 1375 # Each line is of the form 'foo.o: dependent.h',
327     # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
328 michael 912 # Do two passes, one to just change these to
329 michael 1375 # '$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 michael 912 rm -f "$tmpdepfile"
342     ;;
343    
344 michael 1504 ## 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"
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 michael 912 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"
449 michael 1375 # Add 'dependent.h:' lines.
450 michael 945 sed -ne '2,${
451     s/^ *//
452     s/ \\*$//
453     s/$/:/
454     p
455     }' "$tmpdepfile" >> "$depfile"
456 michael 912 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
464 michael 1375 # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
465 michael 912 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
466 michael 1375 # dependencies in 'foo.d' instead, so we check for that too.
467 michael 912 # 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"
512 michael 1375 sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
513 michael 912 else
514     echo "#dummy" > "$depfile"
515     fi
516     rm -f "$tmpdepfile"
517     ;;
518    
519 michael 1257 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
547 michael 1375 s/\(.*\)/'"$tab"'\1 \\/p
548 michael 1257 s/.\(.*\) \\/\1:/
549     H
550     $ {
551 michael 1375 s/.*/'"$tab"'/
552 michael 1257 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    
565 michael 912 #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 michael 945 while test "X$1" != 'X--mode=compile'; do
577 michael 912 shift
578     done
579     shift
580     fi
581    
582 michael 1375 # Remove '-o $object'.
583 michael 912 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
602 michael 1375 # Require at least two characters before searching for ':'
603 michael 912 # in the target name. This is to cope with DOS-style filenames:
604 michael 1375 # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
605 michael 912 "$@" $dashmflag |
606 michael 1375 sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
607 michael 912 rm -f "$depfile"
608     cat < "$tmpdepfile" > "$depfile"
609 michael 1375 tr ' ' "$nl" < "$tmpdepfile" | \
610 michael 912 ## 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 michael 945 while test "X$1" != 'X--mode=compile'; do
627 michael 912 shift
628     done
629     shift
630     fi
631     # X makedepend
632     shift
633 michael 945 cleared=no eat=no
634     for arg
635     do
636 michael 912 case $cleared in
637     no)
638     set ""; shift
639     cleared=yes ;;
640     esac
641 michael 945 if test $eat = yes; then
642     eat=no
643     continue
644     fi
645 michael 912 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 michael 945 -arch)
651     eat=yes ;;
652 michael 912 -*|$object)
653     ;;
654     *)
655     set fnord "$@" "$arg"; shift ;;
656     esac
657     done
658 michael 945 obj_suffix=`echo "$object" | sed 's/^.*\././'`
659 michael 912 touch "$tmpdepfile"
660     ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
661     rm -f "$depfile"
662 michael 1257 # 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"
665 michael 1375 sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
666 michael 912 ## 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 michael 945 while test "X$1" != 'X--mode=compile'; do
680 michael 912 shift
681     done
682     shift
683     fi
684    
685 michael 1375 # Remove '-o $object'.
686 michael 912 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 michael 945 # always write the preprocessed file to stdout.
718 michael 912 "$@" || exit $?
719 michael 945
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 michael 912 IFS=" "
729     for arg
730     do
731     case "$arg" in
732 michael 945 -o)
733     shift
734     ;;
735     $object)
736     shift
737     ;;
738 michael 912 "-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 michael 945 "$@" -E 2>/dev/null |
751     sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
752 michael 912 rm -f "$depfile"
753     echo "$object : \\" > "$depfile"
754 michael 1375 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
755     echo "$tab" >> "$depfile"
756 michael 945 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
757 michael 912 rm -f "$tmpdepfile"
758     ;;
759    
760 michael 945 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 michael 912 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 michael 945 # time-stamp-time-zone: "UTC"
786     # time-stamp-end: "; # UTC"
787 michael 912 # End:

Properties

Name Value
svn:eol-style native
svn:executable *