depcomp revision 518bcf38
1c35d236eSmrg#! /bin/sh
2c35d236eSmrg# depcomp - compile a program generating dependencies as side-effects
3c35d236eSmrg
4518bcf38Smrgscriptversion=2009-04-28.21; # UTC
5c35d236eSmrg
6518bcf38Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7518bcf38Smrg# Software Foundation, Inc.
8c35d236eSmrg
9c35d236eSmrg# This program is free software; you can redistribute it and/or modify
10c35d236eSmrg# it under the terms of the GNU General Public License as published by
11c35d236eSmrg# the Free Software Foundation; either version 2, or (at your option)
12c35d236eSmrg# any later version.
13c35d236eSmrg
14c35d236eSmrg# This program is distributed in the hope that it will be useful,
15c35d236eSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16c35d236eSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17c35d236eSmrg# GNU General Public License for more details.
18c35d236eSmrg
19c35d236eSmrg# You should have received a copy of the GNU General Public License
20518bcf38Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21c35d236eSmrg
22c35d236eSmrg# As a special exception to the GNU General Public License, if you
23c35d236eSmrg# distribute this file as part of a program that contains a
24c35d236eSmrg# configuration script generated by Autoconf, you may include it under
25c35d236eSmrg# the same distribution terms that you use for the rest of that program.
26c35d236eSmrg
27c35d236eSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28c35d236eSmrg
29c35d236eSmrgcase $1 in
30c35d236eSmrg  '')
31c35d236eSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32c35d236eSmrg     exit 1;
33c35d236eSmrg     ;;
34c35d236eSmrg  -h | --h*)
35c35d236eSmrg    cat <<\EOF
36c35d236eSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37c35d236eSmrg
38c35d236eSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39c35d236eSmrgas side-effects.
40c35d236eSmrg
41c35d236eSmrgEnvironment variables:
42c35d236eSmrg  depmode     Dependency tracking mode.
43c35d236eSmrg  source      Source file read by `PROGRAMS ARGS'.
44c35d236eSmrg  object      Object file output by `PROGRAMS ARGS'.
45c35d236eSmrg  DEPDIR      directory where to store dependencies.
46c35d236eSmrg  depfile     Dependency file to output.
47c35d236eSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
48c35d236eSmrg  libtool     Whether libtool is used (yes/no).
49c35d236eSmrg
50c35d236eSmrgReport bugs to <bug-automake@gnu.org>.
51c35d236eSmrgEOF
52c35d236eSmrg    exit $?
53c35d236eSmrg    ;;
54c35d236eSmrg  -v | --v*)
55c35d236eSmrg    echo "depcomp $scriptversion"
56c35d236eSmrg    exit $?
57c35d236eSmrg    ;;
58c35d236eSmrgesac
59c35d236eSmrg
60c35d236eSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61c35d236eSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62c35d236eSmrg  exit 1
63c35d236eSmrgfi
64c35d236eSmrg
65c35d236eSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66c35d236eSmrgdepfile=${depfile-`echo "$object" |
67c35d236eSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68c35d236eSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69c35d236eSmrg
70c35d236eSmrgrm -f "$tmpdepfile"
71c35d236eSmrg
72c35d236eSmrg# Some modes work just like other modes, but use different flags.  We
73c35d236eSmrg# parameterize here, but still list the modes in the big case below,
74c35d236eSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75c35d236eSmrg# here, because this file can only contain one case statement.
76c35d236eSmrgif test "$depmode" = hp; then
77c35d236eSmrg  # HP compiler uses -M and no extra arg.
78c35d236eSmrg  gccflag=-M
79c35d236eSmrg  depmode=gcc
80c35d236eSmrgfi
81c35d236eSmrg
82c35d236eSmrgif test "$depmode" = dashXmstdout; then
83c35d236eSmrg   # This is just like dashmstdout with a different argument.
84c35d236eSmrg   dashmflag=-xM
85c35d236eSmrg   depmode=dashmstdout
86c35d236eSmrgfi
87c35d236eSmrg
88518bcf38Smrgcygpath_u="cygpath -u -f -"
89518bcf38Smrgif test "$depmode" = msvcmsys; then
90518bcf38Smrg   # This is just like msvisualcpp but w/o cygpath translation.
91518bcf38Smrg   # Just convert the backslash-escaped backslashes to single forward
92518bcf38Smrg   # slashes to satisfy depend.m4
93518bcf38Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
94518bcf38Smrg   depmode=msvisualcpp
95518bcf38Smrgfi
96518bcf38Smrg
97c35d236eSmrgcase "$depmode" in
98c35d236eSmrggcc3)
99c35d236eSmrg## gcc 3 implements dependency tracking that does exactly what
100c35d236eSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101c35d236eSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1024f6cd06fSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1034f6cd06fSmrg## the command line argument order; so add the flags where they
1044f6cd06fSmrg## appear in depend2.am.  Note that the slowdown incurred here
1054f6cd06fSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1064f6cd06fSmrg  for arg
1074f6cd06fSmrg  do
1084f6cd06fSmrg    case $arg in
1094f6cd06fSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1104f6cd06fSmrg    *)  set fnord "$@" "$arg" ;;
1114f6cd06fSmrg    esac
1124f6cd06fSmrg    shift # fnord
1134f6cd06fSmrg    shift # $arg
1144f6cd06fSmrg  done
1154f6cd06fSmrg  "$@"
116c35d236eSmrg  stat=$?
117c35d236eSmrg  if test $stat -eq 0; then :
118c35d236eSmrg  else
119c35d236eSmrg    rm -f "$tmpdepfile"
120c35d236eSmrg    exit $stat
121c35d236eSmrg  fi
122c35d236eSmrg  mv "$tmpdepfile" "$depfile"
123c35d236eSmrg  ;;
124c35d236eSmrg
125c35d236eSmrggcc)
126c35d236eSmrg## There are various ways to get dependency output from gcc.  Here's
127c35d236eSmrg## why we pick this rather obscure method:
128c35d236eSmrg## - Don't want to use -MD because we'd like the dependencies to end
129c35d236eSmrg##   up in a subdir.  Having to rename by hand is ugly.
130c35d236eSmrg##   (We might end up doing this anyway to support other compilers.)
131c35d236eSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132c35d236eSmrg##   -MM, not -M (despite what the docs say).
133c35d236eSmrg## - Using -M directly means running the compiler twice (even worse
134c35d236eSmrg##   than renaming).
135c35d236eSmrg  if test -z "$gccflag"; then
136c35d236eSmrg    gccflag=-MD,
137c35d236eSmrg  fi
138c35d236eSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
139c35d236eSmrg  stat=$?
140c35d236eSmrg  if test $stat -eq 0; then :
141c35d236eSmrg  else
142c35d236eSmrg    rm -f "$tmpdepfile"
143c35d236eSmrg    exit $stat
144c35d236eSmrg  fi
145c35d236eSmrg  rm -f "$depfile"
146c35d236eSmrg  echo "$object : \\" > "$depfile"
147c35d236eSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148c35d236eSmrg## The second -e expression handles DOS-style file names with drive letters.
149c35d236eSmrg  sed -e 's/^[^:]*: / /' \
150c35d236eSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151c35d236eSmrg## This next piece of magic avoids the `deleted header file' problem.
152c35d236eSmrg## The problem is that when a header file which appears in a .P file
153c35d236eSmrg## is deleted, the dependency causes make to die (because there is
154c35d236eSmrg## typically no way to rebuild the header).  We avoid this by adding
155c35d236eSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156c35d236eSmrg## this for us directly.
157c35d236eSmrg  tr ' ' '
158c35d236eSmrg' < "$tmpdepfile" |
159c35d236eSmrg## Some versions of gcc put a space before the `:'.  On the theory
160c35d236eSmrg## that the space means something, we add a space to the output as
161c35d236eSmrg## well.
162c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
163c35d236eSmrg## correctly.  Breaking it into two sed invocations is a workaround.
164c35d236eSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165c35d236eSmrg  rm -f "$tmpdepfile"
166c35d236eSmrg  ;;
167c35d236eSmrg
168c35d236eSmrghp)
169c35d236eSmrg  # This case exists only to let depend.m4 do its work.  It works by
170c35d236eSmrg  # looking at the text of this script.  This case will never be run,
171c35d236eSmrg  # since it is checked for above.
172c35d236eSmrg  exit 1
173c35d236eSmrg  ;;
174c35d236eSmrg
175c35d236eSmrgsgi)
176c35d236eSmrg  if test "$libtool" = yes; then
177c35d236eSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178c35d236eSmrg  else
179c35d236eSmrg    "$@" -MDupdate "$tmpdepfile"
180c35d236eSmrg  fi
181c35d236eSmrg  stat=$?
182c35d236eSmrg  if test $stat -eq 0; then :
183c35d236eSmrg  else
184c35d236eSmrg    rm -f "$tmpdepfile"
185c35d236eSmrg    exit $stat
186c35d236eSmrg  fi
187c35d236eSmrg  rm -f "$depfile"
188c35d236eSmrg
189c35d236eSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190c35d236eSmrg    echo "$object : \\" > "$depfile"
191c35d236eSmrg
192c35d236eSmrg    # Clip off the initial element (the dependent).  Don't try to be
193c35d236eSmrg    # clever and replace this with sed code, as IRIX sed won't handle
194c35d236eSmrg    # lines with more than a fixed number of characters (4096 in
195c35d236eSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
196c35d236eSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
197c35d236eSmrg    # dependency line.
198c35d236eSmrg    tr ' ' '
199c35d236eSmrg' < "$tmpdepfile" \
200c35d236eSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201c35d236eSmrg    tr '
202518bcf38Smrg' ' ' >> "$depfile"
203518bcf38Smrg    echo >> "$depfile"
204c35d236eSmrg
205c35d236eSmrg    # The second pass generates a dummy entry for each header file.
206c35d236eSmrg    tr ' ' '
207c35d236eSmrg' < "$tmpdepfile" \
208c35d236eSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209518bcf38Smrg   >> "$depfile"
210c35d236eSmrg  else
211c35d236eSmrg    # The sourcefile does not contain any dependencies, so just
212c35d236eSmrg    # store a dummy comment line, to avoid errors with the Makefile
213c35d236eSmrg    # "include basename.Plo" scheme.
214c35d236eSmrg    echo "#dummy" > "$depfile"
215c35d236eSmrg  fi
216c35d236eSmrg  rm -f "$tmpdepfile"
217c35d236eSmrg  ;;
218c35d236eSmrg
219c35d236eSmrgaix)
220c35d236eSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
221c35d236eSmrg  # in a .u file.  In older versions, this file always lives in the
222c35d236eSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223c35d236eSmrg  # start of each line; $object doesn't have directory information.
224c35d236eSmrg  # Version 6 uses the directory in both cases.
225f55e6a01Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226f55e6a01Smrg  test "x$dir" = "x$object" && dir=
227f55e6a01Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228c35d236eSmrg  if test "$libtool" = yes; then
229f55e6a01Smrg    tmpdepfile1=$dir$base.u
230f55e6a01Smrg    tmpdepfile2=$base.u
231f55e6a01Smrg    tmpdepfile3=$dir.libs/$base.u
232c35d236eSmrg    "$@" -Wc,-M
233c35d236eSmrg  else
234f55e6a01Smrg    tmpdepfile1=$dir$base.u
235f55e6a01Smrg    tmpdepfile2=$dir$base.u
236f55e6a01Smrg    tmpdepfile3=$dir$base.u
237c35d236eSmrg    "$@" -M
238c35d236eSmrg  fi
239c35d236eSmrg  stat=$?
240c35d236eSmrg
241c35d236eSmrg  if test $stat -eq 0; then :
242c35d236eSmrg  else
243f55e6a01Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244c35d236eSmrg    exit $stat
245c35d236eSmrg  fi
246c35d236eSmrg
247f55e6a01Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248f55e6a01Smrg  do
249f55e6a01Smrg    test -f "$tmpdepfile" && break
250f55e6a01Smrg  done
251c35d236eSmrg  if test -f "$tmpdepfile"; then
252c35d236eSmrg    # Each line is of the form `foo.o: dependent.h'.
253c35d236eSmrg    # Do two passes, one to just change these to
254c35d236eSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255f55e6a01Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256f55e6a01Smrg    # That's a tab and a space in the [].
257f55e6a01Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258c35d236eSmrg  else
259c35d236eSmrg    # The sourcefile does not contain any dependencies, so just
260c35d236eSmrg    # store a dummy comment line, to avoid errors with the Makefile
261c35d236eSmrg    # "include basename.Plo" scheme.
262c35d236eSmrg    echo "#dummy" > "$depfile"
263c35d236eSmrg  fi
264c35d236eSmrg  rm -f "$tmpdepfile"
265c35d236eSmrg  ;;
266c35d236eSmrg
267c35d236eSmrgicc)
268c35d236eSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
269c35d236eSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270c35d236eSmrg  # ICC 7.0 will fill foo.d with something like
271c35d236eSmrg  #    foo.o: sub/foo.c
272c35d236eSmrg  #    foo.o: sub/foo.h
273c35d236eSmrg  # which is wrong.  We want:
274c35d236eSmrg  #    sub/foo.o: sub/foo.c
275c35d236eSmrg  #    sub/foo.o: sub/foo.h
276c35d236eSmrg  #    sub/foo.c:
277c35d236eSmrg  #    sub/foo.h:
278c35d236eSmrg  # ICC 7.1 will output
279c35d236eSmrg  #    foo.o: sub/foo.c sub/foo.h
280c35d236eSmrg  # and will wrap long lines using \ :
281c35d236eSmrg  #    foo.o: sub/foo.c ... \
282c35d236eSmrg  #     sub/foo.h ... \
283c35d236eSmrg  #     ...
284c35d236eSmrg
285c35d236eSmrg  "$@" -MD -MF "$tmpdepfile"
286c35d236eSmrg  stat=$?
287c35d236eSmrg  if test $stat -eq 0; then :
288c35d236eSmrg  else
289c35d236eSmrg    rm -f "$tmpdepfile"
290c35d236eSmrg    exit $stat
291c35d236eSmrg  fi
292c35d236eSmrg  rm -f "$depfile"
293c35d236eSmrg  # Each line is of the form `foo.o: dependent.h',
294c35d236eSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295c35d236eSmrg  # Do two passes, one to just change these to
296c35d236eSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297c35d236eSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298c35d236eSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299c35d236eSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
300c35d236eSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301c35d236eSmrg    sed -e 's/$/ :/' >> "$depfile"
302c35d236eSmrg  rm -f "$tmpdepfile"
303c35d236eSmrg  ;;
304c35d236eSmrg
3054f6cd06fSmrghp2)
3064f6cd06fSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3074f6cd06fSmrg  # compilers, which have integrated preprocessors.  The correct option
3084f6cd06fSmrg  # to use with these is +Maked; it writes dependencies to a file named
3094f6cd06fSmrg  # 'foo.d', which lands next to the object file, wherever that
3104f6cd06fSmrg  # happens to be.
3114f6cd06fSmrg  # Much of this is similar to the tru64 case; see comments there.
3124f6cd06fSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3134f6cd06fSmrg  test "x$dir" = "x$object" && dir=
3144f6cd06fSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3154f6cd06fSmrg  if test "$libtool" = yes; then
3164f6cd06fSmrg    tmpdepfile1=$dir$base.d
3174f6cd06fSmrg    tmpdepfile2=$dir.libs/$base.d
3184f6cd06fSmrg    "$@" -Wc,+Maked
3194f6cd06fSmrg  else
3204f6cd06fSmrg    tmpdepfile1=$dir$base.d
3214f6cd06fSmrg    tmpdepfile2=$dir$base.d
3224f6cd06fSmrg    "$@" +Maked
3234f6cd06fSmrg  fi
3244f6cd06fSmrg  stat=$?
3254f6cd06fSmrg  if test $stat -eq 0; then :
3264f6cd06fSmrg  else
3274f6cd06fSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3284f6cd06fSmrg     exit $stat
3294f6cd06fSmrg  fi
3304f6cd06fSmrg
3314f6cd06fSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3324f6cd06fSmrg  do
3334f6cd06fSmrg    test -f "$tmpdepfile" && break
3344f6cd06fSmrg  done
3354f6cd06fSmrg  if test -f "$tmpdepfile"; then
3364f6cd06fSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3374f6cd06fSmrg    # Add `dependent.h:' lines.
338518bcf38Smrg    sed -ne '2,${
339518bcf38Smrg	       s/^ *//
340518bcf38Smrg	       s/ \\*$//
341518bcf38Smrg	       s/$/:/
342518bcf38Smrg	       p
343518bcf38Smrg	     }' "$tmpdepfile" >> "$depfile"
3444f6cd06fSmrg  else
3454f6cd06fSmrg    echo "#dummy" > "$depfile"
3464f6cd06fSmrg  fi
3474f6cd06fSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3484f6cd06fSmrg  ;;
3494f6cd06fSmrg
350c35d236eSmrgtru64)
351c35d236eSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
352c35d236eSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353c35d236eSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354c35d236eSmrg   # dependencies in `foo.d' instead, so we check for that too.
355c35d236eSmrg   # Subdirectories are respected.
356c35d236eSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357c35d236eSmrg   test "x$dir" = "x$object" && dir=
358c35d236eSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359c35d236eSmrg
360c35d236eSmrg   if test "$libtool" = yes; then
361c35d236eSmrg      # With Tru64 cc, shared objects can also be used to make a
3624f6cd06fSmrg      # static library.  This mechanism is used in libtool 1.4 series to
363c35d236eSmrg      # handle both shared and static libraries in a single compilation.
364c35d236eSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365c35d236eSmrg      #
366c35d236eSmrg      # With libtool 1.5 this exception was removed, and libtool now
367c35d236eSmrg      # generates 2 separate objects for the 2 libraries.  These two
3684f6cd06fSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
369c35d236eSmrg      # in $dir$base.o.d.  We have to check for both files, because
370c35d236eSmrg      # one of the two compilations can be disabled.  We should prefer
371c35d236eSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372c35d236eSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
373c35d236eSmrg      # the former would cause a distcleancheck panic.
374c35d236eSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
375c35d236eSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
376c35d236eSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
377c35d236eSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
378c35d236eSmrg      "$@" -Wc,-MD
379c35d236eSmrg   else
380c35d236eSmrg      tmpdepfile1=$dir$base.o.d
381c35d236eSmrg      tmpdepfile2=$dir$base.d
382c35d236eSmrg      tmpdepfile3=$dir$base.d
383c35d236eSmrg      tmpdepfile4=$dir$base.d
384c35d236eSmrg      "$@" -MD
385c35d236eSmrg   fi
386c35d236eSmrg
387c35d236eSmrg   stat=$?
388c35d236eSmrg   if test $stat -eq 0; then :
389c35d236eSmrg   else
390c35d236eSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391c35d236eSmrg      exit $stat
392c35d236eSmrg   fi
393c35d236eSmrg
394c35d236eSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395c35d236eSmrg   do
396c35d236eSmrg     test -f "$tmpdepfile" && break
397c35d236eSmrg   done
398c35d236eSmrg   if test -f "$tmpdepfile"; then
399c35d236eSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400c35d236eSmrg      # That's a tab and a space in the [].
401c35d236eSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402c35d236eSmrg   else
403c35d236eSmrg      echo "#dummy" > "$depfile"
404c35d236eSmrg   fi
405c35d236eSmrg   rm -f "$tmpdepfile"
406c35d236eSmrg   ;;
407c35d236eSmrg
408c35d236eSmrg#nosideeffect)
409c35d236eSmrg  # This comment above is used by automake to tell side-effect
410c35d236eSmrg  # dependency tracking mechanisms from slower ones.
411c35d236eSmrg
412c35d236eSmrgdashmstdout)
413c35d236eSmrg  # Important note: in order to support this mode, a compiler *must*
414c35d236eSmrg  # always write the preprocessed file to stdout, regardless of -o.
415c35d236eSmrg  "$@" || exit $?
416c35d236eSmrg
417c35d236eSmrg  # Remove the call to Libtool.
418c35d236eSmrg  if test "$libtool" = yes; then
419518bcf38Smrg    while test "X$1" != 'X--mode=compile'; do
420c35d236eSmrg      shift
421c35d236eSmrg    done
422c35d236eSmrg    shift
423c35d236eSmrg  fi
424c35d236eSmrg
425c35d236eSmrg  # Remove `-o $object'.
426c35d236eSmrg  IFS=" "
427c35d236eSmrg  for arg
428c35d236eSmrg  do
429c35d236eSmrg    case $arg in
430c35d236eSmrg    -o)
431c35d236eSmrg      shift
432c35d236eSmrg      ;;
433c35d236eSmrg    $object)
434c35d236eSmrg      shift
435c35d236eSmrg      ;;
436c35d236eSmrg    *)
437c35d236eSmrg      set fnord "$@" "$arg"
438c35d236eSmrg      shift # fnord
439c35d236eSmrg      shift # $arg
440c35d236eSmrg      ;;
441c35d236eSmrg    esac
442c35d236eSmrg  done
443c35d236eSmrg
444c35d236eSmrg  test -z "$dashmflag" && dashmflag=-M
445c35d236eSmrg  # Require at least two characters before searching for `:'
446c35d236eSmrg  # in the target name.  This is to cope with DOS-style filenames:
447c35d236eSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448c35d236eSmrg  "$@" $dashmflag |
449c35d236eSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450c35d236eSmrg  rm -f "$depfile"
451c35d236eSmrg  cat < "$tmpdepfile" > "$depfile"
452c35d236eSmrg  tr ' ' '
453c35d236eSmrg' < "$tmpdepfile" | \
454c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
455c35d236eSmrg## correctly.  Breaking it into two sed invocations is a workaround.
456c35d236eSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457c35d236eSmrg  rm -f "$tmpdepfile"
458c35d236eSmrg  ;;
459c35d236eSmrg
460c35d236eSmrgdashXmstdout)
461c35d236eSmrg  # This case only exists to satisfy depend.m4.  It is never actually
462c35d236eSmrg  # run, as this mode is specially recognized in the preamble.
463c35d236eSmrg  exit 1
464c35d236eSmrg  ;;
465c35d236eSmrg
466c35d236eSmrgmakedepend)
467c35d236eSmrg  "$@" || exit $?
468c35d236eSmrg  # Remove any Libtool call
469c35d236eSmrg  if test "$libtool" = yes; then
470518bcf38Smrg    while test "X$1" != 'X--mode=compile'; do
471c35d236eSmrg      shift
472c35d236eSmrg    done
473c35d236eSmrg    shift
474c35d236eSmrg  fi
475c35d236eSmrg  # X makedepend
476c35d236eSmrg  shift
477518bcf38Smrg  cleared=no eat=no
478518bcf38Smrg  for arg
479518bcf38Smrg  do
480c35d236eSmrg    case $cleared in
481c35d236eSmrg    no)
482c35d236eSmrg      set ""; shift
483c35d236eSmrg      cleared=yes ;;
484c35d236eSmrg    esac
485518bcf38Smrg    if test $eat = yes; then
486518bcf38Smrg      eat=no
487518bcf38Smrg      continue
488518bcf38Smrg    fi
489c35d236eSmrg    case "$arg" in
490c35d236eSmrg    -D*|-I*)
491c35d236eSmrg      set fnord "$@" "$arg"; shift ;;
492c35d236eSmrg    # Strip any option that makedepend may not understand.  Remove
493c35d236eSmrg    # the object too, otherwise makedepend will parse it as a source file.
494518bcf38Smrg    -arch)
495518bcf38Smrg      eat=yes ;;
496c35d236eSmrg    -*|$object)
497c35d236eSmrg      ;;
498c35d236eSmrg    *)
499c35d236eSmrg      set fnord "$@" "$arg"; shift ;;
500c35d236eSmrg    esac
501c35d236eSmrg  done
502518bcf38Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503c35d236eSmrg  touch "$tmpdepfile"
504c35d236eSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505c35d236eSmrg  rm -f "$depfile"
506c35d236eSmrg  cat < "$tmpdepfile" > "$depfile"
507c35d236eSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
508c35d236eSmrg' | \
509c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
510c35d236eSmrg## correctly.  Breaking it into two sed invocations is a workaround.
511c35d236eSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512c35d236eSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513c35d236eSmrg  ;;
514c35d236eSmrg
515c35d236eSmrgcpp)
516c35d236eSmrg  # Important note: in order to support this mode, a compiler *must*
517c35d236eSmrg  # always write the preprocessed file to stdout.
518c35d236eSmrg  "$@" || exit $?
519c35d236eSmrg
520c35d236eSmrg  # Remove the call to Libtool.
521c35d236eSmrg  if test "$libtool" = yes; then
522518bcf38Smrg    while test "X$1" != 'X--mode=compile'; do
523c35d236eSmrg      shift
524c35d236eSmrg    done
525c35d236eSmrg    shift
526c35d236eSmrg  fi
527c35d236eSmrg
528c35d236eSmrg  # Remove `-o $object'.
529c35d236eSmrg  IFS=" "
530c35d236eSmrg  for arg
531c35d236eSmrg  do
532c35d236eSmrg    case $arg in
533c35d236eSmrg    -o)
534c35d236eSmrg      shift
535c35d236eSmrg      ;;
536c35d236eSmrg    $object)
537c35d236eSmrg      shift
538c35d236eSmrg      ;;
539c35d236eSmrg    *)
540c35d236eSmrg      set fnord "$@" "$arg"
541c35d236eSmrg      shift # fnord
542c35d236eSmrg      shift # $arg
543c35d236eSmrg      ;;
544c35d236eSmrg    esac
545c35d236eSmrg  done
546c35d236eSmrg
547c35d236eSmrg  "$@" -E |
548c35d236eSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549c35d236eSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550c35d236eSmrg    sed '$ s: \\$::' > "$tmpdepfile"
551c35d236eSmrg  rm -f "$depfile"
552c35d236eSmrg  echo "$object : \\" > "$depfile"
553c35d236eSmrg  cat < "$tmpdepfile" >> "$depfile"
554c35d236eSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555c35d236eSmrg  rm -f "$tmpdepfile"
556c35d236eSmrg  ;;
557c35d236eSmrg
558c35d236eSmrgmsvisualcpp)
559c35d236eSmrg  # Important note: in order to support this mode, a compiler *must*
560518bcf38Smrg  # always write the preprocessed file to stdout.
561c35d236eSmrg  "$@" || exit $?
562518bcf38Smrg
563518bcf38Smrg  # Remove the call to Libtool.
564518bcf38Smrg  if test "$libtool" = yes; then
565518bcf38Smrg    while test "X$1" != 'X--mode=compile'; do
566518bcf38Smrg      shift
567518bcf38Smrg    done
568518bcf38Smrg    shift
569518bcf38Smrg  fi
570518bcf38Smrg
571c35d236eSmrg  IFS=" "
572c35d236eSmrg  for arg
573c35d236eSmrg  do
574c35d236eSmrg    case "$arg" in
575518bcf38Smrg    -o)
576518bcf38Smrg      shift
577518bcf38Smrg      ;;
578518bcf38Smrg    $object)
579518bcf38Smrg      shift
580518bcf38Smrg      ;;
581c35d236eSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582c35d236eSmrg	set fnord "$@"
583c35d236eSmrg	shift
584c35d236eSmrg	shift
585c35d236eSmrg	;;
586c35d236eSmrg    *)
587c35d236eSmrg	set fnord "$@" "$arg"
588c35d236eSmrg	shift
589c35d236eSmrg	shift
590c35d236eSmrg	;;
591c35d236eSmrg    esac
592c35d236eSmrg  done
593518bcf38Smrg  "$@" -E 2>/dev/null |
594518bcf38Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595c35d236eSmrg  rm -f "$depfile"
596c35d236eSmrg  echo "$object : \\" > "$depfile"
597518bcf38Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
598c35d236eSmrg  echo "	" >> "$depfile"
599518bcf38Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600c35d236eSmrg  rm -f "$tmpdepfile"
601c35d236eSmrg  ;;
602c35d236eSmrg
603518bcf38Smrgmsvcmsys)
604518bcf38Smrg  # This case exists only to let depend.m4 do its work.  It works by
605518bcf38Smrg  # looking at the text of this script.  This case will never be run,
606518bcf38Smrg  # since it is checked for above.
607518bcf38Smrg  exit 1
608518bcf38Smrg  ;;
609518bcf38Smrg
610c35d236eSmrgnone)
611c35d236eSmrg  exec "$@"
612c35d236eSmrg  ;;
613c35d236eSmrg
614c35d236eSmrg*)
615c35d236eSmrg  echo "Unknown depmode $depmode" 1>&2
616c35d236eSmrg  exit 1
617c35d236eSmrg  ;;
618c35d236eSmrgesac
619c35d236eSmrg
620c35d236eSmrgexit 0
621c35d236eSmrg
622c35d236eSmrg# Local Variables:
623c35d236eSmrg# mode: shell-script
624c35d236eSmrg# sh-indentation: 2
625c35d236eSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626c35d236eSmrg# time-stamp-start: "scriptversion="
627c35d236eSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
628518bcf38Smrg# time-stamp-time-zone: "UTC"
629518bcf38Smrg# time-stamp-end: "; # UTC"
630c35d236eSmrg# End:
631