depcomp revision 5e695a52
1943345d3Smrg#! /bin/sh
2943345d3Smrg# depcomp - compile a program generating dependencies as side-effects
3943345d3Smrg
45e695a52Smrgscriptversion=2009-04-28.21; # UTC
5943345d3Smrg
65e695a52Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
75e695a52Smrg# Software Foundation, Inc.
8943345d3Smrg
9943345d3Smrg# This program is free software; you can redistribute it and/or modify
10943345d3Smrg# it under the terms of the GNU General Public License as published by
11943345d3Smrg# the Free Software Foundation; either version 2, or (at your option)
12943345d3Smrg# any later version.
13943345d3Smrg
14943345d3Smrg# This program is distributed in the hope that it will be useful,
15943345d3Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16943345d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17943345d3Smrg# GNU General Public License for more details.
18943345d3Smrg
19943345d3Smrg# You should have received a copy of the GNU General Public License
205e695a52Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21943345d3Smrg
22943345d3Smrg# As a special exception to the GNU General Public License, if you
23943345d3Smrg# distribute this file as part of a program that contains a
24943345d3Smrg# configuration script generated by Autoconf, you may include it under
25943345d3Smrg# the same distribution terms that you use for the rest of that program.
26943345d3Smrg
27943345d3Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28943345d3Smrg
29943345d3Smrgcase $1 in
30943345d3Smrg  '')
31943345d3Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32943345d3Smrg     exit 1;
33943345d3Smrg     ;;
34943345d3Smrg  -h | --h*)
35943345d3Smrg    cat <<\EOF
36943345d3SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37943345d3Smrg
38943345d3SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39943345d3Smrgas side-effects.
40943345d3Smrg
41943345d3SmrgEnvironment variables:
42943345d3Smrg  depmode     Dependency tracking mode.
43943345d3Smrg  source      Source file read by `PROGRAMS ARGS'.
44943345d3Smrg  object      Object file output by `PROGRAMS ARGS'.
45943345d3Smrg  DEPDIR      directory where to store dependencies.
46943345d3Smrg  depfile     Dependency file to output.
47943345d3Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
48943345d3Smrg  libtool     Whether libtool is used (yes/no).
49943345d3Smrg
50943345d3SmrgReport bugs to <bug-automake@gnu.org>.
51943345d3SmrgEOF
52943345d3Smrg    exit $?
53943345d3Smrg    ;;
54943345d3Smrg  -v | --v*)
55943345d3Smrg    echo "depcomp $scriptversion"
56943345d3Smrg    exit $?
57943345d3Smrg    ;;
58943345d3Smrgesac
59943345d3Smrg
60943345d3Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61943345d3Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62943345d3Smrg  exit 1
63943345d3Smrgfi
64943345d3Smrg
65943345d3Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66943345d3Smrgdepfile=${depfile-`echo "$object" |
67943345d3Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68943345d3Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69943345d3Smrg
70943345d3Smrgrm -f "$tmpdepfile"
71943345d3Smrg
72943345d3Smrg# Some modes work just like other modes, but use different flags.  We
73943345d3Smrg# parameterize here, but still list the modes in the big case below,
74943345d3Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75943345d3Smrg# here, because this file can only contain one case statement.
76943345d3Smrgif test "$depmode" = hp; then
77943345d3Smrg  # HP compiler uses -M and no extra arg.
78943345d3Smrg  gccflag=-M
79943345d3Smrg  depmode=gcc
80943345d3Smrgfi
81943345d3Smrg
82943345d3Smrgif test "$depmode" = dashXmstdout; then
83943345d3Smrg   # This is just like dashmstdout with a different argument.
84943345d3Smrg   dashmflag=-xM
85943345d3Smrg   depmode=dashmstdout
86943345d3Smrgfi
87943345d3Smrg
885e695a52Smrgcygpath_u="cygpath -u -f -"
895e695a52Smrgif test "$depmode" = msvcmsys; then
905e695a52Smrg   # This is just like msvisualcpp but w/o cygpath translation.
915e695a52Smrg   # Just convert the backslash-escaped backslashes to single forward
925e695a52Smrg   # slashes to satisfy depend.m4
935e695a52Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
945e695a52Smrg   depmode=msvisualcpp
955e695a52Smrgfi
965e695a52Smrg
97943345d3Smrgcase "$depmode" in
98943345d3Smrggcc3)
99943345d3Smrg## gcc 3 implements dependency tracking that does exactly what
100943345d3Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101943345d3Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
102f67b85aaSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103f67b85aaSmrg## the command line argument order; so add the flags where they
104f67b85aaSmrg## appear in depend2.am.  Note that the slowdown incurred here
105f67b85aaSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106f67b85aaSmrg  for arg
107f67b85aaSmrg  do
108f67b85aaSmrg    case $arg in
109f67b85aaSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110f67b85aaSmrg    *)  set fnord "$@" "$arg" ;;
111f67b85aaSmrg    esac
112f67b85aaSmrg    shift # fnord
113f67b85aaSmrg    shift # $arg
114f67b85aaSmrg  done
115f67b85aaSmrg  "$@"
116943345d3Smrg  stat=$?
117943345d3Smrg  if test $stat -eq 0; then :
118943345d3Smrg  else
119943345d3Smrg    rm -f "$tmpdepfile"
120943345d3Smrg    exit $stat
121943345d3Smrg  fi
122943345d3Smrg  mv "$tmpdepfile" "$depfile"
123943345d3Smrg  ;;
124943345d3Smrg
125943345d3Smrggcc)
126943345d3Smrg## There are various ways to get dependency output from gcc.  Here's
127943345d3Smrg## why we pick this rather obscure method:
128943345d3Smrg## - Don't want to use -MD because we'd like the dependencies to end
129943345d3Smrg##   up in a subdir.  Having to rename by hand is ugly.
130943345d3Smrg##   (We might end up doing this anyway to support other compilers.)
131943345d3Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132943345d3Smrg##   -MM, not -M (despite what the docs say).
133943345d3Smrg## - Using -M directly means running the compiler twice (even worse
134943345d3Smrg##   than renaming).
135943345d3Smrg  if test -z "$gccflag"; then
136943345d3Smrg    gccflag=-MD,
137943345d3Smrg  fi
138943345d3Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
139943345d3Smrg  stat=$?
140943345d3Smrg  if test $stat -eq 0; then :
141943345d3Smrg  else
142943345d3Smrg    rm -f "$tmpdepfile"
143943345d3Smrg    exit $stat
144943345d3Smrg  fi
145943345d3Smrg  rm -f "$depfile"
146943345d3Smrg  echo "$object : \\" > "$depfile"
147943345d3Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148943345d3Smrg## The second -e expression handles DOS-style file names with drive letters.
149943345d3Smrg  sed -e 's/^[^:]*: / /' \
150943345d3Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151943345d3Smrg## This next piece of magic avoids the `deleted header file' problem.
152943345d3Smrg## The problem is that when a header file which appears in a .P file
153943345d3Smrg## is deleted, the dependency causes make to die (because there is
154943345d3Smrg## typically no way to rebuild the header).  We avoid this by adding
155943345d3Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156943345d3Smrg## this for us directly.
157943345d3Smrg  tr ' ' '
158943345d3Smrg' < "$tmpdepfile" |
159943345d3Smrg## Some versions of gcc put a space before the `:'.  On the theory
160943345d3Smrg## that the space means something, we add a space to the output as
161943345d3Smrg## well.
162943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
163943345d3Smrg## correctly.  Breaking it into two sed invocations is a workaround.
164943345d3Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165943345d3Smrg  rm -f "$tmpdepfile"
166943345d3Smrg  ;;
167943345d3Smrg
168943345d3Smrghp)
169943345d3Smrg  # This case exists only to let depend.m4 do its work.  It works by
170943345d3Smrg  # looking at the text of this script.  This case will never be run,
171943345d3Smrg  # since it is checked for above.
172943345d3Smrg  exit 1
173943345d3Smrg  ;;
174943345d3Smrg
175943345d3Smrgsgi)
176943345d3Smrg  if test "$libtool" = yes; then
177943345d3Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178943345d3Smrg  else
179943345d3Smrg    "$@" -MDupdate "$tmpdepfile"
180943345d3Smrg  fi
181943345d3Smrg  stat=$?
182943345d3Smrg  if test $stat -eq 0; then :
183943345d3Smrg  else
184943345d3Smrg    rm -f "$tmpdepfile"
185943345d3Smrg    exit $stat
186943345d3Smrg  fi
187943345d3Smrg  rm -f "$depfile"
188943345d3Smrg
189943345d3Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190943345d3Smrg    echo "$object : \\" > "$depfile"
191943345d3Smrg
192943345d3Smrg    # Clip off the initial element (the dependent).  Don't try to be
193943345d3Smrg    # clever and replace this with sed code, as IRIX sed won't handle
194943345d3Smrg    # lines with more than a fixed number of characters (4096 in
195943345d3Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
196943345d3Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
197943345d3Smrg    # dependency line.
198943345d3Smrg    tr ' ' '
199943345d3Smrg' < "$tmpdepfile" \
200943345d3Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201943345d3Smrg    tr '
2025e695a52Smrg' ' ' >> "$depfile"
2035e695a52Smrg    echo >> "$depfile"
204943345d3Smrg
205943345d3Smrg    # The second pass generates a dummy entry for each header file.
206943345d3Smrg    tr ' ' '
207943345d3Smrg' < "$tmpdepfile" \
208943345d3Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2095e695a52Smrg   >> "$depfile"
210943345d3Smrg  else
211943345d3Smrg    # The sourcefile does not contain any dependencies, so just
212943345d3Smrg    # store a dummy comment line, to avoid errors with the Makefile
213943345d3Smrg    # "include basename.Plo" scheme.
214943345d3Smrg    echo "#dummy" > "$depfile"
215943345d3Smrg  fi
216943345d3Smrg  rm -f "$tmpdepfile"
217943345d3Smrg  ;;
218943345d3Smrg
219943345d3Smrgaix)
220943345d3Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
221943345d3Smrg  # in a .u file.  In older versions, this file always lives in the
222943345d3Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223943345d3Smrg  # start of each line; $object doesn't have directory information.
224943345d3Smrg  # Version 6 uses the directory in both cases.
2255e695a52Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2265e695a52Smrg  test "x$dir" = "x$object" && dir=
2275e695a52Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228943345d3Smrg  if test "$libtool" = yes; then
2295e695a52Smrg    tmpdepfile1=$dir$base.u
2305e695a52Smrg    tmpdepfile2=$base.u
2315e695a52Smrg    tmpdepfile3=$dir.libs/$base.u
232943345d3Smrg    "$@" -Wc,-M
233943345d3Smrg  else
2345e695a52Smrg    tmpdepfile1=$dir$base.u
2355e695a52Smrg    tmpdepfile2=$dir$base.u
2365e695a52Smrg    tmpdepfile3=$dir$base.u
237943345d3Smrg    "$@" -M
238943345d3Smrg  fi
239943345d3Smrg  stat=$?
240943345d3Smrg
241943345d3Smrg  if test $stat -eq 0; then :
242943345d3Smrg  else
2435e695a52Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244943345d3Smrg    exit $stat
245943345d3Smrg  fi
246943345d3Smrg
2475e695a52Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2485e695a52Smrg  do
2495e695a52Smrg    test -f "$tmpdepfile" && break
2505e695a52Smrg  done
251943345d3Smrg  if test -f "$tmpdepfile"; then
252943345d3Smrg    # Each line is of the form `foo.o: dependent.h'.
253943345d3Smrg    # Do two passes, one to just change these to
254943345d3Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2555e695a52Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
2565e695a52Smrg    # That's a tab and a space in the [].
2575e695a52Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258943345d3Smrg  else
259943345d3Smrg    # The sourcefile does not contain any dependencies, so just
260943345d3Smrg    # store a dummy comment line, to avoid errors with the Makefile
261943345d3Smrg    # "include basename.Plo" scheme.
262943345d3Smrg    echo "#dummy" > "$depfile"
263943345d3Smrg  fi
264943345d3Smrg  rm -f "$tmpdepfile"
265943345d3Smrg  ;;
266943345d3Smrg
267943345d3Smrgicc)
268943345d3Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
269943345d3Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270943345d3Smrg  # ICC 7.0 will fill foo.d with something like
271943345d3Smrg  #    foo.o: sub/foo.c
272943345d3Smrg  #    foo.o: sub/foo.h
273943345d3Smrg  # which is wrong.  We want:
274943345d3Smrg  #    sub/foo.o: sub/foo.c
275943345d3Smrg  #    sub/foo.o: sub/foo.h
276943345d3Smrg  #    sub/foo.c:
277943345d3Smrg  #    sub/foo.h:
278943345d3Smrg  # ICC 7.1 will output
279943345d3Smrg  #    foo.o: sub/foo.c sub/foo.h
280943345d3Smrg  # and will wrap long lines using \ :
281943345d3Smrg  #    foo.o: sub/foo.c ... \
282943345d3Smrg  #     sub/foo.h ... \
283943345d3Smrg  #     ...
284943345d3Smrg
285943345d3Smrg  "$@" -MD -MF "$tmpdepfile"
286943345d3Smrg  stat=$?
287943345d3Smrg  if test $stat -eq 0; then :
288943345d3Smrg  else
289943345d3Smrg    rm -f "$tmpdepfile"
290943345d3Smrg    exit $stat
291943345d3Smrg  fi
292943345d3Smrg  rm -f "$depfile"
293943345d3Smrg  # Each line is of the form `foo.o: dependent.h',
294943345d3Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295943345d3Smrg  # Do two passes, one to just change these to
296943345d3Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297943345d3Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298943345d3Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299943345d3Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
300943345d3Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301943345d3Smrg    sed -e 's/$/ :/' >> "$depfile"
302943345d3Smrg  rm -f "$tmpdepfile"
303943345d3Smrg  ;;
304943345d3Smrg
305f67b85aaSmrghp2)
306f67b85aaSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307f67b85aaSmrg  # compilers, which have integrated preprocessors.  The correct option
308f67b85aaSmrg  # to use with these is +Maked; it writes dependencies to a file named
309f67b85aaSmrg  # 'foo.d', which lands next to the object file, wherever that
310f67b85aaSmrg  # happens to be.
311f67b85aaSmrg  # Much of this is similar to the tru64 case; see comments there.
312f67b85aaSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313f67b85aaSmrg  test "x$dir" = "x$object" && dir=
314f67b85aaSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315f67b85aaSmrg  if test "$libtool" = yes; then
316f67b85aaSmrg    tmpdepfile1=$dir$base.d
317f67b85aaSmrg    tmpdepfile2=$dir.libs/$base.d
318f67b85aaSmrg    "$@" -Wc,+Maked
319f67b85aaSmrg  else
320f67b85aaSmrg    tmpdepfile1=$dir$base.d
321f67b85aaSmrg    tmpdepfile2=$dir$base.d
322f67b85aaSmrg    "$@" +Maked
323f67b85aaSmrg  fi
324f67b85aaSmrg  stat=$?
325f67b85aaSmrg  if test $stat -eq 0; then :
326f67b85aaSmrg  else
327f67b85aaSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328f67b85aaSmrg     exit $stat
329f67b85aaSmrg  fi
330f67b85aaSmrg
331f67b85aaSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332f67b85aaSmrg  do
333f67b85aaSmrg    test -f "$tmpdepfile" && break
334f67b85aaSmrg  done
335f67b85aaSmrg  if test -f "$tmpdepfile"; then
336f67b85aaSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337f67b85aaSmrg    # Add `dependent.h:' lines.
3385e695a52Smrg    sed -ne '2,${
3395e695a52Smrg	       s/^ *//
3405e695a52Smrg	       s/ \\*$//
3415e695a52Smrg	       s/$/:/
3425e695a52Smrg	       p
3435e695a52Smrg	     }' "$tmpdepfile" >> "$depfile"
344f67b85aaSmrg  else
345f67b85aaSmrg    echo "#dummy" > "$depfile"
346f67b85aaSmrg  fi
347f67b85aaSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348f67b85aaSmrg  ;;
349f67b85aaSmrg
350943345d3Smrgtru64)
351943345d3Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
352943345d3Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353943345d3Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354943345d3Smrg   # dependencies in `foo.d' instead, so we check for that too.
355943345d3Smrg   # Subdirectories are respected.
356943345d3Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357943345d3Smrg   test "x$dir" = "x$object" && dir=
358943345d3Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359943345d3Smrg
360943345d3Smrg   if test "$libtool" = yes; then
361943345d3Smrg      # With Tru64 cc, shared objects can also be used to make a
362f67b85aaSmrg      # static library.  This mechanism is used in libtool 1.4 series to
363943345d3Smrg      # handle both shared and static libraries in a single compilation.
364943345d3Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365943345d3Smrg      #
366943345d3Smrg      # With libtool 1.5 this exception was removed, and libtool now
367943345d3Smrg      # generates 2 separate objects for the 2 libraries.  These two
368f67b85aaSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
369943345d3Smrg      # in $dir$base.o.d.  We have to check for both files, because
370943345d3Smrg      # one of the two compilations can be disabled.  We should prefer
371943345d3Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372943345d3Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
373943345d3Smrg      # the former would cause a distcleancheck panic.
374943345d3Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
375943345d3Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
376943345d3Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
377943345d3Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
378943345d3Smrg      "$@" -Wc,-MD
379943345d3Smrg   else
380943345d3Smrg      tmpdepfile1=$dir$base.o.d
381943345d3Smrg      tmpdepfile2=$dir$base.d
382943345d3Smrg      tmpdepfile3=$dir$base.d
383943345d3Smrg      tmpdepfile4=$dir$base.d
384943345d3Smrg      "$@" -MD
385943345d3Smrg   fi
386943345d3Smrg
387943345d3Smrg   stat=$?
388943345d3Smrg   if test $stat -eq 0; then :
389943345d3Smrg   else
390943345d3Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391943345d3Smrg      exit $stat
392943345d3Smrg   fi
393943345d3Smrg
394943345d3Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395943345d3Smrg   do
396943345d3Smrg     test -f "$tmpdepfile" && break
397943345d3Smrg   done
398943345d3Smrg   if test -f "$tmpdepfile"; then
399943345d3Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400943345d3Smrg      # That's a tab and a space in the [].
401943345d3Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402943345d3Smrg   else
403943345d3Smrg      echo "#dummy" > "$depfile"
404943345d3Smrg   fi
405943345d3Smrg   rm -f "$tmpdepfile"
406943345d3Smrg   ;;
407943345d3Smrg
408943345d3Smrg#nosideeffect)
409943345d3Smrg  # This comment above is used by automake to tell side-effect
410943345d3Smrg  # dependency tracking mechanisms from slower ones.
411943345d3Smrg
412943345d3Smrgdashmstdout)
413943345d3Smrg  # Important note: in order to support this mode, a compiler *must*
414943345d3Smrg  # always write the preprocessed file to stdout, regardless of -o.
415943345d3Smrg  "$@" || exit $?
416943345d3Smrg
417943345d3Smrg  # Remove the call to Libtool.
418943345d3Smrg  if test "$libtool" = yes; then
4195e695a52Smrg    while test "X$1" != 'X--mode=compile'; do
420943345d3Smrg      shift
421943345d3Smrg    done
422943345d3Smrg    shift
423943345d3Smrg  fi
424943345d3Smrg
425943345d3Smrg  # Remove `-o $object'.
426943345d3Smrg  IFS=" "
427943345d3Smrg  for arg
428943345d3Smrg  do
429943345d3Smrg    case $arg in
430943345d3Smrg    -o)
431943345d3Smrg      shift
432943345d3Smrg      ;;
433943345d3Smrg    $object)
434943345d3Smrg      shift
435943345d3Smrg      ;;
436943345d3Smrg    *)
437943345d3Smrg      set fnord "$@" "$arg"
438943345d3Smrg      shift # fnord
439943345d3Smrg      shift # $arg
440943345d3Smrg      ;;
441943345d3Smrg    esac
442943345d3Smrg  done
443943345d3Smrg
444943345d3Smrg  test -z "$dashmflag" && dashmflag=-M
445943345d3Smrg  # Require at least two characters before searching for `:'
446943345d3Smrg  # in the target name.  This is to cope with DOS-style filenames:
447943345d3Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448943345d3Smrg  "$@" $dashmflag |
449943345d3Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450943345d3Smrg  rm -f "$depfile"
451943345d3Smrg  cat < "$tmpdepfile" > "$depfile"
452943345d3Smrg  tr ' ' '
453943345d3Smrg' < "$tmpdepfile" | \
454943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
455943345d3Smrg## correctly.  Breaking it into two sed invocations is a workaround.
456943345d3Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457943345d3Smrg  rm -f "$tmpdepfile"
458943345d3Smrg  ;;
459943345d3Smrg
460943345d3SmrgdashXmstdout)
461943345d3Smrg  # This case only exists to satisfy depend.m4.  It is never actually
462943345d3Smrg  # run, as this mode is specially recognized in the preamble.
463943345d3Smrg  exit 1
464943345d3Smrg  ;;
465943345d3Smrg
466943345d3Smrgmakedepend)
467943345d3Smrg  "$@" || exit $?
468943345d3Smrg  # Remove any Libtool call
469943345d3Smrg  if test "$libtool" = yes; then
4705e695a52Smrg    while test "X$1" != 'X--mode=compile'; do
471943345d3Smrg      shift
472943345d3Smrg    done
473943345d3Smrg    shift
474943345d3Smrg  fi
475943345d3Smrg  # X makedepend
476943345d3Smrg  shift
4775e695a52Smrg  cleared=no eat=no
4785e695a52Smrg  for arg
4795e695a52Smrg  do
480943345d3Smrg    case $cleared in
481943345d3Smrg    no)
482943345d3Smrg      set ""; shift
483943345d3Smrg      cleared=yes ;;
484943345d3Smrg    esac
4855e695a52Smrg    if test $eat = yes; then
4865e695a52Smrg      eat=no
4875e695a52Smrg      continue
4885e695a52Smrg    fi
489943345d3Smrg    case "$arg" in
490943345d3Smrg    -D*|-I*)
491943345d3Smrg      set fnord "$@" "$arg"; shift ;;
492943345d3Smrg    # Strip any option that makedepend may not understand.  Remove
493943345d3Smrg    # the object too, otherwise makedepend will parse it as a source file.
4945e695a52Smrg    -arch)
4955e695a52Smrg      eat=yes ;;
496943345d3Smrg    -*|$object)
497943345d3Smrg      ;;
498943345d3Smrg    *)
499943345d3Smrg      set fnord "$@" "$arg"; shift ;;
500943345d3Smrg    esac
501943345d3Smrg  done
5025e695a52Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503943345d3Smrg  touch "$tmpdepfile"
504943345d3Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505943345d3Smrg  rm -f "$depfile"
506943345d3Smrg  cat < "$tmpdepfile" > "$depfile"
507943345d3Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
508943345d3Smrg' | \
509943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
510943345d3Smrg## correctly.  Breaking it into two sed invocations is a workaround.
511943345d3Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512943345d3Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513943345d3Smrg  ;;
514943345d3Smrg
515943345d3Smrgcpp)
516943345d3Smrg  # Important note: in order to support this mode, a compiler *must*
517943345d3Smrg  # always write the preprocessed file to stdout.
518943345d3Smrg  "$@" || exit $?
519943345d3Smrg
520943345d3Smrg  # Remove the call to Libtool.
521943345d3Smrg  if test "$libtool" = yes; then
5225e695a52Smrg    while test "X$1" != 'X--mode=compile'; do
523943345d3Smrg      shift
524943345d3Smrg    done
525943345d3Smrg    shift
526943345d3Smrg  fi
527943345d3Smrg
528943345d3Smrg  # Remove `-o $object'.
529943345d3Smrg  IFS=" "
530943345d3Smrg  for arg
531943345d3Smrg  do
532943345d3Smrg    case $arg in
533943345d3Smrg    -o)
534943345d3Smrg      shift
535943345d3Smrg      ;;
536943345d3Smrg    $object)
537943345d3Smrg      shift
538943345d3Smrg      ;;
539943345d3Smrg    *)
540943345d3Smrg      set fnord "$@" "$arg"
541943345d3Smrg      shift # fnord
542943345d3Smrg      shift # $arg
543943345d3Smrg      ;;
544943345d3Smrg    esac
545943345d3Smrg  done
546943345d3Smrg
547943345d3Smrg  "$@" -E |
548943345d3Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549943345d3Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550943345d3Smrg    sed '$ s: \\$::' > "$tmpdepfile"
551943345d3Smrg  rm -f "$depfile"
552943345d3Smrg  echo "$object : \\" > "$depfile"
553943345d3Smrg  cat < "$tmpdepfile" >> "$depfile"
554943345d3Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555943345d3Smrg  rm -f "$tmpdepfile"
556943345d3Smrg  ;;
557943345d3Smrg
558943345d3Smrgmsvisualcpp)
559943345d3Smrg  # Important note: in order to support this mode, a compiler *must*
5605e695a52Smrg  # always write the preprocessed file to stdout.
561943345d3Smrg  "$@" || exit $?
5625e695a52Smrg
5635e695a52Smrg  # Remove the call to Libtool.
5645e695a52Smrg  if test "$libtool" = yes; then
5655e695a52Smrg    while test "X$1" != 'X--mode=compile'; do
5665e695a52Smrg      shift
5675e695a52Smrg    done
5685e695a52Smrg    shift
5695e695a52Smrg  fi
5705e695a52Smrg
571943345d3Smrg  IFS=" "
572943345d3Smrg  for arg
573943345d3Smrg  do
574943345d3Smrg    case "$arg" in
5755e695a52Smrg    -o)
5765e695a52Smrg      shift
5775e695a52Smrg      ;;
5785e695a52Smrg    $object)
5795e695a52Smrg      shift
5805e695a52Smrg      ;;
581943345d3Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582943345d3Smrg	set fnord "$@"
583943345d3Smrg	shift
584943345d3Smrg	shift
585943345d3Smrg	;;
586943345d3Smrg    *)
587943345d3Smrg	set fnord "$@" "$arg"
588943345d3Smrg	shift
589943345d3Smrg	shift
590943345d3Smrg	;;
591943345d3Smrg    esac
592943345d3Smrg  done
5935e695a52Smrg  "$@" -E 2>/dev/null |
5945e695a52Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595943345d3Smrg  rm -f "$depfile"
596943345d3Smrg  echo "$object : \\" > "$depfile"
5975e695a52Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
598943345d3Smrg  echo "	" >> "$depfile"
5995e695a52Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600943345d3Smrg  rm -f "$tmpdepfile"
601943345d3Smrg  ;;
602943345d3Smrg
6035e695a52Smrgmsvcmsys)
6045e695a52Smrg  # This case exists only to let depend.m4 do its work.  It works by
6055e695a52Smrg  # looking at the text of this script.  This case will never be run,
6065e695a52Smrg  # since it is checked for above.
6075e695a52Smrg  exit 1
6085e695a52Smrg  ;;
6095e695a52Smrg
610943345d3Smrgnone)
611943345d3Smrg  exec "$@"
612943345d3Smrg  ;;
613943345d3Smrg
614943345d3Smrg*)
615943345d3Smrg  echo "Unknown depmode $depmode" 1>&2
616943345d3Smrg  exit 1
617943345d3Smrg  ;;
618943345d3Smrgesac
619943345d3Smrg
620943345d3Smrgexit 0
621943345d3Smrg
622943345d3Smrg# Local Variables:
623943345d3Smrg# mode: shell-script
624943345d3Smrg# sh-indentation: 2
625943345d3Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626943345d3Smrg# time-stamp-start: "scriptversion="
627943345d3Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
6285e695a52Smrg# time-stamp-time-zone: "UTC"
6295e695a52Smrg# time-stamp-end: "; # UTC"
630943345d3Smrg# End:
631