depcomp revision 2ae83157
1444c061aSmrg#! /bin/sh
2444c061aSmrg# depcomp - compile a program generating dependencies as side-effects
3444c061aSmrg
42ae83157Smrgscriptversion=2009-04-28.21; # UTC
5444c061aSmrg
62ae83157Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
72ae83157Smrg# Software Foundation, Inc.
8444c061aSmrg
9444c061aSmrg# This program is free software; you can redistribute it and/or modify
10444c061aSmrg# it under the terms of the GNU General Public License as published by
11444c061aSmrg# the Free Software Foundation; either version 2, or (at your option)
12444c061aSmrg# any later version.
13444c061aSmrg
14444c061aSmrg# This program is distributed in the hope that it will be useful,
15444c061aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16444c061aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17444c061aSmrg# GNU General Public License for more details.
18444c061aSmrg
19444c061aSmrg# You should have received a copy of the GNU General Public License
202ae83157Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21444c061aSmrg
22444c061aSmrg# As a special exception to the GNU General Public License, if you
23444c061aSmrg# distribute this file as part of a program that contains a
24444c061aSmrg# configuration script generated by Autoconf, you may include it under
25444c061aSmrg# the same distribution terms that you use for the rest of that program.
26444c061aSmrg
27444c061aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28444c061aSmrg
29444c061aSmrgcase $1 in
30444c061aSmrg  '')
31444c061aSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32444c061aSmrg     exit 1;
33444c061aSmrg     ;;
34444c061aSmrg  -h | --h*)
35444c061aSmrg    cat <<\EOF
36444c061aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37444c061aSmrg
38444c061aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39444c061aSmrgas side-effects.
40444c061aSmrg
41444c061aSmrgEnvironment variables:
42444c061aSmrg  depmode     Dependency tracking mode.
43444c061aSmrg  source      Source file read by `PROGRAMS ARGS'.
44444c061aSmrg  object      Object file output by `PROGRAMS ARGS'.
45444c061aSmrg  DEPDIR      directory where to store dependencies.
46444c061aSmrg  depfile     Dependency file to output.
47444c061aSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
48444c061aSmrg  libtool     Whether libtool is used (yes/no).
49444c061aSmrg
50444c061aSmrgReport bugs to <bug-automake@gnu.org>.
51444c061aSmrgEOF
52444c061aSmrg    exit $?
53444c061aSmrg    ;;
54444c061aSmrg  -v | --v*)
55444c061aSmrg    echo "depcomp $scriptversion"
56444c061aSmrg    exit $?
57444c061aSmrg    ;;
58444c061aSmrgesac
59444c061aSmrg
60444c061aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61444c061aSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62444c061aSmrg  exit 1
63444c061aSmrgfi
64444c061aSmrg
65444c061aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66444c061aSmrgdepfile=${depfile-`echo "$object" |
67444c061aSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68444c061aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69444c061aSmrg
70444c061aSmrgrm -f "$tmpdepfile"
71444c061aSmrg
72444c061aSmrg# Some modes work just like other modes, but use different flags.  We
73444c061aSmrg# parameterize here, but still list the modes in the big case below,
74444c061aSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75444c061aSmrg# here, because this file can only contain one case statement.
76444c061aSmrgif test "$depmode" = hp; then
77444c061aSmrg  # HP compiler uses -M and no extra arg.
78444c061aSmrg  gccflag=-M
79444c061aSmrg  depmode=gcc
80444c061aSmrgfi
81444c061aSmrg
82444c061aSmrgif test "$depmode" = dashXmstdout; then
83444c061aSmrg   # This is just like dashmstdout with a different argument.
84444c061aSmrg   dashmflag=-xM
85444c061aSmrg   depmode=dashmstdout
86444c061aSmrgfi
87444c061aSmrg
882ae83157Smrgcygpath_u="cygpath -u -f -"
892ae83157Smrgif test "$depmode" = msvcmsys; then
902ae83157Smrg   # This is just like msvisualcpp but w/o cygpath translation.
912ae83157Smrg   # Just convert the backslash-escaped backslashes to single forward
922ae83157Smrg   # slashes to satisfy depend.m4
932ae83157Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
942ae83157Smrg   depmode=msvisualcpp
952ae83157Smrgfi
962ae83157Smrg
97444c061aSmrgcase "$depmode" in
98444c061aSmrggcc3)
99444c061aSmrg## gcc 3 implements dependency tracking that does exactly what
100444c061aSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101444c061aSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1022265a131Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1032265a131Smrg## the command line argument order; so add the flags where they
1042265a131Smrg## appear in depend2.am.  Note that the slowdown incurred here
1052265a131Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1062265a131Smrg  for arg
1072265a131Smrg  do
1082265a131Smrg    case $arg in
1092265a131Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1102265a131Smrg    *)  set fnord "$@" "$arg" ;;
1112265a131Smrg    esac
1122265a131Smrg    shift # fnord
1132265a131Smrg    shift # $arg
1142265a131Smrg  done
1152265a131Smrg  "$@"
116444c061aSmrg  stat=$?
117444c061aSmrg  if test $stat -eq 0; then :
118444c061aSmrg  else
119444c061aSmrg    rm -f "$tmpdepfile"
120444c061aSmrg    exit $stat
121444c061aSmrg  fi
122444c061aSmrg  mv "$tmpdepfile" "$depfile"
123444c061aSmrg  ;;
124444c061aSmrg
125444c061aSmrggcc)
126444c061aSmrg## There are various ways to get dependency output from gcc.  Here's
127444c061aSmrg## why we pick this rather obscure method:
128444c061aSmrg## - Don't want to use -MD because we'd like the dependencies to end
129444c061aSmrg##   up in a subdir.  Having to rename by hand is ugly.
130444c061aSmrg##   (We might end up doing this anyway to support other compilers.)
131444c061aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132444c061aSmrg##   -MM, not -M (despite what the docs say).
133444c061aSmrg## - Using -M directly means running the compiler twice (even worse
134444c061aSmrg##   than renaming).
135444c061aSmrg  if test -z "$gccflag"; then
136444c061aSmrg    gccflag=-MD,
137444c061aSmrg  fi
138444c061aSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
139444c061aSmrg  stat=$?
140444c061aSmrg  if test $stat -eq 0; then :
141444c061aSmrg  else
142444c061aSmrg    rm -f "$tmpdepfile"
143444c061aSmrg    exit $stat
144444c061aSmrg  fi
145444c061aSmrg  rm -f "$depfile"
146444c061aSmrg  echo "$object : \\" > "$depfile"
147444c061aSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148444c061aSmrg## The second -e expression handles DOS-style file names with drive letters.
149444c061aSmrg  sed -e 's/^[^:]*: / /' \
150444c061aSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151444c061aSmrg## This next piece of magic avoids the `deleted header file' problem.
152444c061aSmrg## The problem is that when a header file which appears in a .P file
153444c061aSmrg## is deleted, the dependency causes make to die (because there is
154444c061aSmrg## typically no way to rebuild the header).  We avoid this by adding
155444c061aSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156444c061aSmrg## this for us directly.
157444c061aSmrg  tr ' ' '
158444c061aSmrg' < "$tmpdepfile" |
159444c061aSmrg## Some versions of gcc put a space before the `:'.  On the theory
160444c061aSmrg## that the space means something, we add a space to the output as
161444c061aSmrg## well.
162444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
163444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
164444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165444c061aSmrg  rm -f "$tmpdepfile"
166444c061aSmrg  ;;
167444c061aSmrg
168444c061aSmrghp)
169444c061aSmrg  # This case exists only to let depend.m4 do its work.  It works by
170444c061aSmrg  # looking at the text of this script.  This case will never be run,
171444c061aSmrg  # since it is checked for above.
172444c061aSmrg  exit 1
173444c061aSmrg  ;;
174444c061aSmrg
175444c061aSmrgsgi)
176444c061aSmrg  if test "$libtool" = yes; then
177444c061aSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178444c061aSmrg  else
179444c061aSmrg    "$@" -MDupdate "$tmpdepfile"
180444c061aSmrg  fi
181444c061aSmrg  stat=$?
182444c061aSmrg  if test $stat -eq 0; then :
183444c061aSmrg  else
184444c061aSmrg    rm -f "$tmpdepfile"
185444c061aSmrg    exit $stat
186444c061aSmrg  fi
187444c061aSmrg  rm -f "$depfile"
188444c061aSmrg
189444c061aSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190444c061aSmrg    echo "$object : \\" > "$depfile"
191444c061aSmrg
192444c061aSmrg    # Clip off the initial element (the dependent).  Don't try to be
193444c061aSmrg    # clever and replace this with sed code, as IRIX sed won't handle
194444c061aSmrg    # lines with more than a fixed number of characters (4096 in
195444c061aSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
196444c061aSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
197444c061aSmrg    # dependency line.
198444c061aSmrg    tr ' ' '
199444c061aSmrg' < "$tmpdepfile" \
200444c061aSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201444c061aSmrg    tr '
2022ae83157Smrg' ' ' >> "$depfile"
2032ae83157Smrg    echo >> "$depfile"
204444c061aSmrg
205444c061aSmrg    # The second pass generates a dummy entry for each header file.
206444c061aSmrg    tr ' ' '
207444c061aSmrg' < "$tmpdepfile" \
208444c061aSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2092ae83157Smrg   >> "$depfile"
210444c061aSmrg  else
211444c061aSmrg    # The sourcefile does not contain any dependencies, so just
212444c061aSmrg    # store a dummy comment line, to avoid errors with the Makefile
213444c061aSmrg    # "include basename.Plo" scheme.
214444c061aSmrg    echo "#dummy" > "$depfile"
215444c061aSmrg  fi
216444c061aSmrg  rm -f "$tmpdepfile"
217444c061aSmrg  ;;
218444c061aSmrg
219444c061aSmrgaix)
220444c061aSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
221444c061aSmrg  # in a .u file.  In older versions, this file always lives in the
222444c061aSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223444c061aSmrg  # start of each line; $object doesn't have directory information.
224444c061aSmrg  # Version 6 uses the directory in both cases.
2252265a131Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2262265a131Smrg  test "x$dir" = "x$object" && dir=
2272265a131Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228444c061aSmrg  if test "$libtool" = yes; then
2292265a131Smrg    tmpdepfile1=$dir$base.u
2302265a131Smrg    tmpdepfile2=$base.u
2312265a131Smrg    tmpdepfile3=$dir.libs/$base.u
232444c061aSmrg    "$@" -Wc,-M
233444c061aSmrg  else
2342265a131Smrg    tmpdepfile1=$dir$base.u
2352265a131Smrg    tmpdepfile2=$dir$base.u
2362265a131Smrg    tmpdepfile3=$dir$base.u
237444c061aSmrg    "$@" -M
238444c061aSmrg  fi
239444c061aSmrg  stat=$?
240444c061aSmrg
241444c061aSmrg  if test $stat -eq 0; then :
242444c061aSmrg  else
2432265a131Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244444c061aSmrg    exit $stat
245444c061aSmrg  fi
246444c061aSmrg
2472265a131Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2482265a131Smrg  do
2492265a131Smrg    test -f "$tmpdepfile" && break
2502265a131Smrg  done
251444c061aSmrg  if test -f "$tmpdepfile"; then
252444c061aSmrg    # Each line is of the form `foo.o: dependent.h'.
253444c061aSmrg    # Do two passes, one to just change these to
254444c061aSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2552265a131Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
2562265a131Smrg    # That's a tab and a space in the [].
2572265a131Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258444c061aSmrg  else
259444c061aSmrg    # The sourcefile does not contain any dependencies, so just
260444c061aSmrg    # store a dummy comment line, to avoid errors with the Makefile
261444c061aSmrg    # "include basename.Plo" scheme.
262444c061aSmrg    echo "#dummy" > "$depfile"
263444c061aSmrg  fi
264444c061aSmrg  rm -f "$tmpdepfile"
265444c061aSmrg  ;;
266444c061aSmrg
267444c061aSmrgicc)
268444c061aSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
269444c061aSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270444c061aSmrg  # ICC 7.0 will fill foo.d with something like
271444c061aSmrg  #    foo.o: sub/foo.c
272444c061aSmrg  #    foo.o: sub/foo.h
273444c061aSmrg  # which is wrong.  We want:
274444c061aSmrg  #    sub/foo.o: sub/foo.c
275444c061aSmrg  #    sub/foo.o: sub/foo.h
276444c061aSmrg  #    sub/foo.c:
277444c061aSmrg  #    sub/foo.h:
278444c061aSmrg  # ICC 7.1 will output
279444c061aSmrg  #    foo.o: sub/foo.c sub/foo.h
280444c061aSmrg  # and will wrap long lines using \ :
281444c061aSmrg  #    foo.o: sub/foo.c ... \
282444c061aSmrg  #     sub/foo.h ... \
283444c061aSmrg  #     ...
284444c061aSmrg
285444c061aSmrg  "$@" -MD -MF "$tmpdepfile"
286444c061aSmrg  stat=$?
287444c061aSmrg  if test $stat -eq 0; then :
288444c061aSmrg  else
289444c061aSmrg    rm -f "$tmpdepfile"
290444c061aSmrg    exit $stat
291444c061aSmrg  fi
292444c061aSmrg  rm -f "$depfile"
293444c061aSmrg  # Each line is of the form `foo.o: dependent.h',
294444c061aSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295444c061aSmrg  # Do two passes, one to just change these to
296444c061aSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297444c061aSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298444c061aSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299444c061aSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
300444c061aSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301444c061aSmrg    sed -e 's/$/ :/' >> "$depfile"
302444c061aSmrg  rm -f "$tmpdepfile"
303444c061aSmrg  ;;
304444c061aSmrg
3052265a131Smrghp2)
3062265a131Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3072265a131Smrg  # compilers, which have integrated preprocessors.  The correct option
3082265a131Smrg  # to use with these is +Maked; it writes dependencies to a file named
3092265a131Smrg  # 'foo.d', which lands next to the object file, wherever that
3102265a131Smrg  # happens to be.
3112265a131Smrg  # Much of this is similar to the tru64 case; see comments there.
3122265a131Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3132265a131Smrg  test "x$dir" = "x$object" && dir=
3142265a131Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3152265a131Smrg  if test "$libtool" = yes; then
3162265a131Smrg    tmpdepfile1=$dir$base.d
3172265a131Smrg    tmpdepfile2=$dir.libs/$base.d
3182265a131Smrg    "$@" -Wc,+Maked
3192265a131Smrg  else
3202265a131Smrg    tmpdepfile1=$dir$base.d
3212265a131Smrg    tmpdepfile2=$dir$base.d
3222265a131Smrg    "$@" +Maked
3232265a131Smrg  fi
3242265a131Smrg  stat=$?
3252265a131Smrg  if test $stat -eq 0; then :
3262265a131Smrg  else
3272265a131Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3282265a131Smrg     exit $stat
3292265a131Smrg  fi
3302265a131Smrg
3312265a131Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3322265a131Smrg  do
3332265a131Smrg    test -f "$tmpdepfile" && break
3342265a131Smrg  done
3352265a131Smrg  if test -f "$tmpdepfile"; then
3362265a131Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3372265a131Smrg    # Add `dependent.h:' lines.
3382ae83157Smrg    sed -ne '2,${
3392ae83157Smrg	       s/^ *//
3402ae83157Smrg	       s/ \\*$//
3412ae83157Smrg	       s/$/:/
3422ae83157Smrg	       p
3432ae83157Smrg	     }' "$tmpdepfile" >> "$depfile"
3442265a131Smrg  else
3452265a131Smrg    echo "#dummy" > "$depfile"
3462265a131Smrg  fi
3472265a131Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3482265a131Smrg  ;;
3492265a131Smrg
350444c061aSmrgtru64)
351444c061aSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
352444c061aSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353444c061aSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354444c061aSmrg   # dependencies in `foo.d' instead, so we check for that too.
355444c061aSmrg   # Subdirectories are respected.
356444c061aSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357444c061aSmrg   test "x$dir" = "x$object" && dir=
358444c061aSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359444c061aSmrg
360444c061aSmrg   if test "$libtool" = yes; then
361444c061aSmrg      # With Tru64 cc, shared objects can also be used to make a
3622265a131Smrg      # static library.  This mechanism is used in libtool 1.4 series to
363444c061aSmrg      # handle both shared and static libraries in a single compilation.
364444c061aSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365444c061aSmrg      #
366444c061aSmrg      # With libtool 1.5 this exception was removed, and libtool now
367444c061aSmrg      # generates 2 separate objects for the 2 libraries.  These two
3682265a131Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
369444c061aSmrg      # in $dir$base.o.d.  We have to check for both files, because
370444c061aSmrg      # one of the two compilations can be disabled.  We should prefer
371444c061aSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372444c061aSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
373444c061aSmrg      # the former would cause a distcleancheck panic.
374444c061aSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
375444c061aSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
376444c061aSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
377444c061aSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
378444c061aSmrg      "$@" -Wc,-MD
379444c061aSmrg   else
380444c061aSmrg      tmpdepfile1=$dir$base.o.d
381444c061aSmrg      tmpdepfile2=$dir$base.d
382444c061aSmrg      tmpdepfile3=$dir$base.d
383444c061aSmrg      tmpdepfile4=$dir$base.d
384444c061aSmrg      "$@" -MD
385444c061aSmrg   fi
386444c061aSmrg
387444c061aSmrg   stat=$?
388444c061aSmrg   if test $stat -eq 0; then :
389444c061aSmrg   else
390444c061aSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391444c061aSmrg      exit $stat
392444c061aSmrg   fi
393444c061aSmrg
394444c061aSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395444c061aSmrg   do
396444c061aSmrg     test -f "$tmpdepfile" && break
397444c061aSmrg   done
398444c061aSmrg   if test -f "$tmpdepfile"; then
399444c061aSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400444c061aSmrg      # That's a tab and a space in the [].
401444c061aSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402444c061aSmrg   else
403444c061aSmrg      echo "#dummy" > "$depfile"
404444c061aSmrg   fi
405444c061aSmrg   rm -f "$tmpdepfile"
406444c061aSmrg   ;;
407444c061aSmrg
408444c061aSmrg#nosideeffect)
409444c061aSmrg  # This comment above is used by automake to tell side-effect
410444c061aSmrg  # dependency tracking mechanisms from slower ones.
411444c061aSmrg
412444c061aSmrgdashmstdout)
413444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
414444c061aSmrg  # always write the preprocessed file to stdout, regardless of -o.
415444c061aSmrg  "$@" || exit $?
416444c061aSmrg
417444c061aSmrg  # Remove the call to Libtool.
418444c061aSmrg  if test "$libtool" = yes; then
4192ae83157Smrg    while test "X$1" != 'X--mode=compile'; do
420444c061aSmrg      shift
421444c061aSmrg    done
422444c061aSmrg    shift
423444c061aSmrg  fi
424444c061aSmrg
425444c061aSmrg  # Remove `-o $object'.
426444c061aSmrg  IFS=" "
427444c061aSmrg  for arg
428444c061aSmrg  do
429444c061aSmrg    case $arg in
430444c061aSmrg    -o)
431444c061aSmrg      shift
432444c061aSmrg      ;;
433444c061aSmrg    $object)
434444c061aSmrg      shift
435444c061aSmrg      ;;
436444c061aSmrg    *)
437444c061aSmrg      set fnord "$@" "$arg"
438444c061aSmrg      shift # fnord
439444c061aSmrg      shift # $arg
440444c061aSmrg      ;;
441444c061aSmrg    esac
442444c061aSmrg  done
443444c061aSmrg
444444c061aSmrg  test -z "$dashmflag" && dashmflag=-M
445444c061aSmrg  # Require at least two characters before searching for `:'
446444c061aSmrg  # in the target name.  This is to cope with DOS-style filenames:
447444c061aSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448444c061aSmrg  "$@" $dashmflag |
449444c061aSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450444c061aSmrg  rm -f "$depfile"
451444c061aSmrg  cat < "$tmpdepfile" > "$depfile"
452444c061aSmrg  tr ' ' '
453444c061aSmrg' < "$tmpdepfile" | \
454444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
455444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
456444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457444c061aSmrg  rm -f "$tmpdepfile"
458444c061aSmrg  ;;
459444c061aSmrg
460444c061aSmrgdashXmstdout)
461444c061aSmrg  # This case only exists to satisfy depend.m4.  It is never actually
462444c061aSmrg  # run, as this mode is specially recognized in the preamble.
463444c061aSmrg  exit 1
464444c061aSmrg  ;;
465444c061aSmrg
466444c061aSmrgmakedepend)
467444c061aSmrg  "$@" || exit $?
468444c061aSmrg  # Remove any Libtool call
469444c061aSmrg  if test "$libtool" = yes; then
4702ae83157Smrg    while test "X$1" != 'X--mode=compile'; do
471444c061aSmrg      shift
472444c061aSmrg    done
473444c061aSmrg    shift
474444c061aSmrg  fi
475444c061aSmrg  # X makedepend
476444c061aSmrg  shift
4772ae83157Smrg  cleared=no eat=no
4782ae83157Smrg  for arg
4792ae83157Smrg  do
480444c061aSmrg    case $cleared in
481444c061aSmrg    no)
482444c061aSmrg      set ""; shift
483444c061aSmrg      cleared=yes ;;
484444c061aSmrg    esac
4852ae83157Smrg    if test $eat = yes; then
4862ae83157Smrg      eat=no
4872ae83157Smrg      continue
4882ae83157Smrg    fi
489444c061aSmrg    case "$arg" in
490444c061aSmrg    -D*|-I*)
491444c061aSmrg      set fnord "$@" "$arg"; shift ;;
492444c061aSmrg    # Strip any option that makedepend may not understand.  Remove
493444c061aSmrg    # the object too, otherwise makedepend will parse it as a source file.
4942ae83157Smrg    -arch)
4952ae83157Smrg      eat=yes ;;
496444c061aSmrg    -*|$object)
497444c061aSmrg      ;;
498444c061aSmrg    *)
499444c061aSmrg      set fnord "$@" "$arg"; shift ;;
500444c061aSmrg    esac
501444c061aSmrg  done
5022ae83157Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503444c061aSmrg  touch "$tmpdepfile"
504444c061aSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505444c061aSmrg  rm -f "$depfile"
506444c061aSmrg  cat < "$tmpdepfile" > "$depfile"
507444c061aSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
508444c061aSmrg' | \
509444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
510444c061aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
511444c061aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512444c061aSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513444c061aSmrg  ;;
514444c061aSmrg
515444c061aSmrgcpp)
516444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
517444c061aSmrg  # always write the preprocessed file to stdout.
518444c061aSmrg  "$@" || exit $?
519444c061aSmrg
520444c061aSmrg  # Remove the call to Libtool.
521444c061aSmrg  if test "$libtool" = yes; then
5222ae83157Smrg    while test "X$1" != 'X--mode=compile'; do
523444c061aSmrg      shift
524444c061aSmrg    done
525444c061aSmrg    shift
526444c061aSmrg  fi
527444c061aSmrg
528444c061aSmrg  # Remove `-o $object'.
529444c061aSmrg  IFS=" "
530444c061aSmrg  for arg
531444c061aSmrg  do
532444c061aSmrg    case $arg in
533444c061aSmrg    -o)
534444c061aSmrg      shift
535444c061aSmrg      ;;
536444c061aSmrg    $object)
537444c061aSmrg      shift
538444c061aSmrg      ;;
539444c061aSmrg    *)
540444c061aSmrg      set fnord "$@" "$arg"
541444c061aSmrg      shift # fnord
542444c061aSmrg      shift # $arg
543444c061aSmrg      ;;
544444c061aSmrg    esac
545444c061aSmrg  done
546444c061aSmrg
547444c061aSmrg  "$@" -E |
548444c061aSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549444c061aSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550444c061aSmrg    sed '$ s: \\$::' > "$tmpdepfile"
551444c061aSmrg  rm -f "$depfile"
552444c061aSmrg  echo "$object : \\" > "$depfile"
553444c061aSmrg  cat < "$tmpdepfile" >> "$depfile"
554444c061aSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555444c061aSmrg  rm -f "$tmpdepfile"
556444c061aSmrg  ;;
557444c061aSmrg
558444c061aSmrgmsvisualcpp)
559444c061aSmrg  # Important note: in order to support this mode, a compiler *must*
5602ae83157Smrg  # always write the preprocessed file to stdout.
561444c061aSmrg  "$@" || exit $?
5622ae83157Smrg
5632ae83157Smrg  # Remove the call to Libtool.
5642ae83157Smrg  if test "$libtool" = yes; then
5652ae83157Smrg    while test "X$1" != 'X--mode=compile'; do
5662ae83157Smrg      shift
5672ae83157Smrg    done
5682ae83157Smrg    shift
5692ae83157Smrg  fi
5702ae83157Smrg
571444c061aSmrg  IFS=" "
572444c061aSmrg  for arg
573444c061aSmrg  do
574444c061aSmrg    case "$arg" in
5752ae83157Smrg    -o)
5762ae83157Smrg      shift
5772ae83157Smrg      ;;
5782ae83157Smrg    $object)
5792ae83157Smrg      shift
5802ae83157Smrg      ;;
581444c061aSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582444c061aSmrg	set fnord "$@"
583444c061aSmrg	shift
584444c061aSmrg	shift
585444c061aSmrg	;;
586444c061aSmrg    *)
587444c061aSmrg	set fnord "$@" "$arg"
588444c061aSmrg	shift
589444c061aSmrg	shift
590444c061aSmrg	;;
591444c061aSmrg    esac
592444c061aSmrg  done
5932ae83157Smrg  "$@" -E 2>/dev/null |
5942ae83157Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595444c061aSmrg  rm -f "$depfile"
596444c061aSmrg  echo "$object : \\" > "$depfile"
5972ae83157Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
598444c061aSmrg  echo "	" >> "$depfile"
5992ae83157Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600444c061aSmrg  rm -f "$tmpdepfile"
601444c061aSmrg  ;;
602444c061aSmrg
6032ae83157Smrgmsvcmsys)
6042ae83157Smrg  # This case exists only to let depend.m4 do its work.  It works by
6052ae83157Smrg  # looking at the text of this script.  This case will never be run,
6062ae83157Smrg  # since it is checked for above.
6072ae83157Smrg  exit 1
6082ae83157Smrg  ;;
6092ae83157Smrg
610444c061aSmrgnone)
611444c061aSmrg  exec "$@"
612444c061aSmrg  ;;
613444c061aSmrg
614444c061aSmrg*)
615444c061aSmrg  echo "Unknown depmode $depmode" 1>&2
616444c061aSmrg  exit 1
617444c061aSmrg  ;;
618444c061aSmrgesac
619444c061aSmrg
620444c061aSmrgexit 0
621444c061aSmrg
622444c061aSmrg# Local Variables:
623444c061aSmrg# mode: shell-script
624444c061aSmrg# sh-indentation: 2
625444c061aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626444c061aSmrg# time-stamp-start: "scriptversion="
627444c061aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
6282ae83157Smrg# time-stamp-time-zone: "UTC"
6292ae83157Smrg# time-stamp-end: "; # UTC"
630444c061aSmrg# End:
631