depcomp revision b1297603
1b1297603Smrg#! /bin/sh
2b1297603Smrg# depcomp - compile a program generating dependencies as side-effects
3b1297603Smrg
4b1297603Smrgscriptversion=2005-07-09.11
5b1297603Smrg
6b1297603Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
7b1297603Smrg
8b1297603Smrg# This program is free software; you can redistribute it and/or modify
9b1297603Smrg# it under the terms of the GNU General Public License as published by
10b1297603Smrg# the Free Software Foundation; either version 2, or (at your option)
11b1297603Smrg# any later version.
12b1297603Smrg
13b1297603Smrg# This program is distributed in the hope that it will be useful,
14b1297603Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
15b1297603Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16b1297603Smrg# GNU General Public License for more details.
17b1297603Smrg
18b1297603Smrg# You should have received a copy of the GNU General Public License
19b1297603Smrg# along with this program; if not, write to the Free Software
20b1297603Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21b1297603Smrg# 02110-1301, USA.
22b1297603Smrg
23b1297603Smrg# As a special exception to the GNU General Public License, if you
24b1297603Smrg# distribute this file as part of a program that contains a
25b1297603Smrg# configuration script generated by Autoconf, you may include it under
26b1297603Smrg# the same distribution terms that you use for the rest of that program.
27b1297603Smrg
28b1297603Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29b1297603Smrg
30b1297603Smrgcase $1 in
31b1297603Smrg  '')
32b1297603Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33b1297603Smrg     exit 1;
34b1297603Smrg     ;;
35b1297603Smrg  -h | --h*)
36b1297603Smrg    cat <<\EOF
37b1297603SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
38b1297603Smrg
39b1297603SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
40b1297603Smrgas side-effects.
41b1297603Smrg
42b1297603SmrgEnvironment variables:
43b1297603Smrg  depmode     Dependency tracking mode.
44b1297603Smrg  source      Source file read by `PROGRAMS ARGS'.
45b1297603Smrg  object      Object file output by `PROGRAMS ARGS'.
46b1297603Smrg  DEPDIR      directory where to store dependencies.
47b1297603Smrg  depfile     Dependency file to output.
48b1297603Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
49b1297603Smrg  libtool     Whether libtool is used (yes/no).
50b1297603Smrg
51b1297603SmrgReport bugs to <bug-automake@gnu.org>.
52b1297603SmrgEOF
53b1297603Smrg    exit $?
54b1297603Smrg    ;;
55b1297603Smrg  -v | --v*)
56b1297603Smrg    echo "depcomp $scriptversion"
57b1297603Smrg    exit $?
58b1297603Smrg    ;;
59b1297603Smrgesac
60b1297603Smrg
61b1297603Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
62b1297603Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63b1297603Smrg  exit 1
64b1297603Smrgfi
65b1297603Smrg
66b1297603Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67b1297603Smrgdepfile=${depfile-`echo "$object" |
68b1297603Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
69b1297603Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70b1297603Smrg
71b1297603Smrgrm -f "$tmpdepfile"
72b1297603Smrg
73b1297603Smrg# Some modes work just like other modes, but use different flags.  We
74b1297603Smrg# parameterize here, but still list the modes in the big case below,
75b1297603Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
76b1297603Smrg# here, because this file can only contain one case statement.
77b1297603Smrgif test "$depmode" = hp; then
78b1297603Smrg  # HP compiler uses -M and no extra arg.
79b1297603Smrg  gccflag=-M
80b1297603Smrg  depmode=gcc
81b1297603Smrgfi
82b1297603Smrg
83b1297603Smrgif test "$depmode" = dashXmstdout; then
84b1297603Smrg   # This is just like dashmstdout with a different argument.
85b1297603Smrg   dashmflag=-xM
86b1297603Smrg   depmode=dashmstdout
87b1297603Smrgfi
88b1297603Smrg
89b1297603Smrgcase "$depmode" in
90b1297603Smrggcc3)
91b1297603Smrg## gcc 3 implements dependency tracking that does exactly what
92b1297603Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93b1297603Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
94b1297603Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
95b1297603Smrg  stat=$?
96b1297603Smrg  if test $stat -eq 0; then :
97b1297603Smrg  else
98b1297603Smrg    rm -f "$tmpdepfile"
99b1297603Smrg    exit $stat
100b1297603Smrg  fi
101b1297603Smrg  mv "$tmpdepfile" "$depfile"
102b1297603Smrg  ;;
103b1297603Smrg
104b1297603Smrggcc)
105b1297603Smrg## There are various ways to get dependency output from gcc.  Here's
106b1297603Smrg## why we pick this rather obscure method:
107b1297603Smrg## - Don't want to use -MD because we'd like the dependencies to end
108b1297603Smrg##   up in a subdir.  Having to rename by hand is ugly.
109b1297603Smrg##   (We might end up doing this anyway to support other compilers.)
110b1297603Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
111b1297603Smrg##   -MM, not -M (despite what the docs say).
112b1297603Smrg## - Using -M directly means running the compiler twice (even worse
113b1297603Smrg##   than renaming).
114b1297603Smrg  if test -z "$gccflag"; then
115b1297603Smrg    gccflag=-MD,
116b1297603Smrg  fi
117b1297603Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
118b1297603Smrg  stat=$?
119b1297603Smrg  if test $stat -eq 0; then :
120b1297603Smrg  else
121b1297603Smrg    rm -f "$tmpdepfile"
122b1297603Smrg    exit $stat
123b1297603Smrg  fi
124b1297603Smrg  rm -f "$depfile"
125b1297603Smrg  echo "$object : \\" > "$depfile"
126b1297603Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
127b1297603Smrg## The second -e expression handles DOS-style file names with drive letters.
128b1297603Smrg  sed -e 's/^[^:]*: / /' \
129b1297603Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
130b1297603Smrg## This next piece of magic avoids the `deleted header file' problem.
131b1297603Smrg## The problem is that when a header file which appears in a .P file
132b1297603Smrg## is deleted, the dependency causes make to die (because there is
133b1297603Smrg## typically no way to rebuild the header).  We avoid this by adding
134b1297603Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
135b1297603Smrg## this for us directly.
136b1297603Smrg  tr ' ' '
137b1297603Smrg' < "$tmpdepfile" |
138b1297603Smrg## Some versions of gcc put a space before the `:'.  On the theory
139b1297603Smrg## that the space means something, we add a space to the output as
140b1297603Smrg## well.
141b1297603Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
142b1297603Smrg## correctly.  Breaking it into two sed invocations is a workaround.
143b1297603Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
144b1297603Smrg  rm -f "$tmpdepfile"
145b1297603Smrg  ;;
146b1297603Smrg
147b1297603Smrghp)
148b1297603Smrg  # This case exists only to let depend.m4 do its work.  It works by
149b1297603Smrg  # looking at the text of this script.  This case will never be run,
150b1297603Smrg  # since it is checked for above.
151b1297603Smrg  exit 1
152b1297603Smrg  ;;
153b1297603Smrg
154b1297603Smrgsgi)
155b1297603Smrg  if test "$libtool" = yes; then
156b1297603Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
157b1297603Smrg  else
158b1297603Smrg    "$@" -MDupdate "$tmpdepfile"
159b1297603Smrg  fi
160b1297603Smrg  stat=$?
161b1297603Smrg  if test $stat -eq 0; then :
162b1297603Smrg  else
163b1297603Smrg    rm -f "$tmpdepfile"
164b1297603Smrg    exit $stat
165b1297603Smrg  fi
166b1297603Smrg  rm -f "$depfile"
167b1297603Smrg
168b1297603Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
169b1297603Smrg    echo "$object : \\" > "$depfile"
170b1297603Smrg
171b1297603Smrg    # Clip off the initial element (the dependent).  Don't try to be
172b1297603Smrg    # clever and replace this with sed code, as IRIX sed won't handle
173b1297603Smrg    # lines with more than a fixed number of characters (4096 in
174b1297603Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
175b1297603Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
176b1297603Smrg    # dependency line.
177b1297603Smrg    tr ' ' '
178b1297603Smrg' < "$tmpdepfile" \
179b1297603Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
180b1297603Smrg    tr '
181b1297603Smrg' ' ' >> $depfile
182b1297603Smrg    echo >> $depfile
183b1297603Smrg
184b1297603Smrg    # The second pass generates a dummy entry for each header file.
185b1297603Smrg    tr ' ' '
186b1297603Smrg' < "$tmpdepfile" \
187b1297603Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
188b1297603Smrg   >> $depfile
189b1297603Smrg  else
190b1297603Smrg    # The sourcefile does not contain any dependencies, so just
191b1297603Smrg    # store a dummy comment line, to avoid errors with the Makefile
192b1297603Smrg    # "include basename.Plo" scheme.
193b1297603Smrg    echo "#dummy" > "$depfile"
194b1297603Smrg  fi
195b1297603Smrg  rm -f "$tmpdepfile"
196b1297603Smrg  ;;
197b1297603Smrg
198b1297603Smrgaix)
199b1297603Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
200b1297603Smrg  # in a .u file.  In older versions, this file always lives in the
201b1297603Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
202b1297603Smrg  # start of each line; $object doesn't have directory information.
203b1297603Smrg  # Version 6 uses the directory in both cases.
204b1297603Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
205b1297603Smrg  tmpdepfile="$stripped.u"
206b1297603Smrg  if test "$libtool" = yes; then
207b1297603Smrg    "$@" -Wc,-M
208b1297603Smrg  else
209b1297603Smrg    "$@" -M
210b1297603Smrg  fi
211b1297603Smrg  stat=$?
212b1297603Smrg
213b1297603Smrg  if test -f "$tmpdepfile"; then :
214b1297603Smrg  else
215b1297603Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216b1297603Smrg    tmpdepfile="$stripped.u"
217b1297603Smrg  fi
218b1297603Smrg
219b1297603Smrg  if test $stat -eq 0; then :
220b1297603Smrg  else
221b1297603Smrg    rm -f "$tmpdepfile"
222b1297603Smrg    exit $stat
223b1297603Smrg  fi
224b1297603Smrg
225b1297603Smrg  if test -f "$tmpdepfile"; then
226b1297603Smrg    outname="$stripped.o"
227b1297603Smrg    # Each line is of the form `foo.o: dependent.h'.
228b1297603Smrg    # Do two passes, one to just change these to
229b1297603Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
230b1297603Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
231b1297603Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
232b1297603Smrg  else
233b1297603Smrg    # The sourcefile does not contain any dependencies, so just
234b1297603Smrg    # store a dummy comment line, to avoid errors with the Makefile
235b1297603Smrg    # "include basename.Plo" scheme.
236b1297603Smrg    echo "#dummy" > "$depfile"
237b1297603Smrg  fi
238b1297603Smrg  rm -f "$tmpdepfile"
239b1297603Smrg  ;;
240b1297603Smrg
241b1297603Smrgicc)
242b1297603Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
243b1297603Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244b1297603Smrg  # ICC 7.0 will fill foo.d with something like
245b1297603Smrg  #    foo.o: sub/foo.c
246b1297603Smrg  #    foo.o: sub/foo.h
247b1297603Smrg  # which is wrong.  We want:
248b1297603Smrg  #    sub/foo.o: sub/foo.c
249b1297603Smrg  #    sub/foo.o: sub/foo.h
250b1297603Smrg  #    sub/foo.c:
251b1297603Smrg  #    sub/foo.h:
252b1297603Smrg  # ICC 7.1 will output
253b1297603Smrg  #    foo.o: sub/foo.c sub/foo.h
254b1297603Smrg  # and will wrap long lines using \ :
255b1297603Smrg  #    foo.o: sub/foo.c ... \
256b1297603Smrg  #     sub/foo.h ... \
257b1297603Smrg  #     ...
258b1297603Smrg
259b1297603Smrg  "$@" -MD -MF "$tmpdepfile"
260b1297603Smrg  stat=$?
261b1297603Smrg  if test $stat -eq 0; then :
262b1297603Smrg  else
263b1297603Smrg    rm -f "$tmpdepfile"
264b1297603Smrg    exit $stat
265b1297603Smrg  fi
266b1297603Smrg  rm -f "$depfile"
267b1297603Smrg  # Each line is of the form `foo.o: dependent.h',
268b1297603Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269b1297603Smrg  # Do two passes, one to just change these to
270b1297603Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
271b1297603Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272b1297603Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
273b1297603Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
274b1297603Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275b1297603Smrg    sed -e 's/$/ :/' >> "$depfile"
276b1297603Smrg  rm -f "$tmpdepfile"
277b1297603Smrg  ;;
278b1297603Smrg
279b1297603Smrgtru64)
280b1297603Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
281b1297603Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282b1297603Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
283b1297603Smrg   # dependencies in `foo.d' instead, so we check for that too.
284b1297603Smrg   # Subdirectories are respected.
285b1297603Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286b1297603Smrg   test "x$dir" = "x$object" && dir=
287b1297603Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288b1297603Smrg
289b1297603Smrg   if test "$libtool" = yes; then
290b1297603Smrg      # With Tru64 cc, shared objects can also be used to make a
291b1297603Smrg      # static library.  This mecanism is used in libtool 1.4 series to
292b1297603Smrg      # handle both shared and static libraries in a single compilation.
293b1297603Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294b1297603Smrg      #
295b1297603Smrg      # With libtool 1.5 this exception was removed, and libtool now
296b1297603Smrg      # generates 2 separate objects for the 2 libraries.  These two
297b1297603Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
298b1297603Smrg      # in $dir$base.o.d.  We have to check for both files, because
299b1297603Smrg      # one of the two compilations can be disabled.  We should prefer
300b1297603Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301b1297603Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
302b1297603Smrg      # the former would cause a distcleancheck panic.
303b1297603Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304b1297603Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305b1297603Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306b1297603Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307b1297603Smrg      "$@" -Wc,-MD
308b1297603Smrg   else
309b1297603Smrg      tmpdepfile1=$dir$base.o.d
310b1297603Smrg      tmpdepfile2=$dir$base.d
311b1297603Smrg      tmpdepfile3=$dir$base.d
312b1297603Smrg      tmpdepfile4=$dir$base.d
313b1297603Smrg      "$@" -MD
314b1297603Smrg   fi
315b1297603Smrg
316b1297603Smrg   stat=$?
317b1297603Smrg   if test $stat -eq 0; then :
318b1297603Smrg   else
319b1297603Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
320b1297603Smrg      exit $stat
321b1297603Smrg   fi
322b1297603Smrg
323b1297603Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324b1297603Smrg   do
325b1297603Smrg     test -f "$tmpdepfile" && break
326b1297603Smrg   done
327b1297603Smrg   if test -f "$tmpdepfile"; then
328b1297603Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329b1297603Smrg      # That's a tab and a space in the [].
330b1297603Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331b1297603Smrg   else
332b1297603Smrg      echo "#dummy" > "$depfile"
333b1297603Smrg   fi
334b1297603Smrg   rm -f "$tmpdepfile"
335b1297603Smrg   ;;
336b1297603Smrg
337b1297603Smrg#nosideeffect)
338b1297603Smrg  # This comment above is used by automake to tell side-effect
339b1297603Smrg  # dependency tracking mechanisms from slower ones.
340b1297603Smrg
341b1297603Smrgdashmstdout)
342b1297603Smrg  # Important note: in order to support this mode, a compiler *must*
343b1297603Smrg  # always write the preprocessed file to stdout, regardless of -o.
344b1297603Smrg  "$@" || exit $?
345b1297603Smrg
346b1297603Smrg  # Remove the call to Libtool.
347b1297603Smrg  if test "$libtool" = yes; then
348b1297603Smrg    while test $1 != '--mode=compile'; do
349b1297603Smrg      shift
350b1297603Smrg    done
351b1297603Smrg    shift
352b1297603Smrg  fi
353b1297603Smrg
354b1297603Smrg  # Remove `-o $object'.
355b1297603Smrg  IFS=" "
356b1297603Smrg  for arg
357b1297603Smrg  do
358b1297603Smrg    case $arg in
359b1297603Smrg    -o)
360b1297603Smrg      shift
361b1297603Smrg      ;;
362b1297603Smrg    $object)
363b1297603Smrg      shift
364b1297603Smrg      ;;
365b1297603Smrg    *)
366b1297603Smrg      set fnord "$@" "$arg"
367b1297603Smrg      shift # fnord
368b1297603Smrg      shift # $arg
369b1297603Smrg      ;;
370b1297603Smrg    esac
371b1297603Smrg  done
372b1297603Smrg
373b1297603Smrg  test -z "$dashmflag" && dashmflag=-M
374b1297603Smrg  # Require at least two characters before searching for `:'
375b1297603Smrg  # in the target name.  This is to cope with DOS-style filenames:
376b1297603Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377b1297603Smrg  "$@" $dashmflag |
378b1297603Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
379b1297603Smrg  rm -f "$depfile"
380b1297603Smrg  cat < "$tmpdepfile" > "$depfile"
381b1297603Smrg  tr ' ' '
382b1297603Smrg' < "$tmpdepfile" | \
383b1297603Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
384b1297603Smrg## correctly.  Breaking it into two sed invocations is a workaround.
385b1297603Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
386b1297603Smrg  rm -f "$tmpdepfile"
387b1297603Smrg  ;;
388b1297603Smrg
389b1297603SmrgdashXmstdout)
390b1297603Smrg  # This case only exists to satisfy depend.m4.  It is never actually
391b1297603Smrg  # run, as this mode is specially recognized in the preamble.
392b1297603Smrg  exit 1
393b1297603Smrg  ;;
394b1297603Smrg
395b1297603Smrgmakedepend)
396b1297603Smrg  "$@" || exit $?
397b1297603Smrg  # Remove any Libtool call
398b1297603Smrg  if test "$libtool" = yes; then
399b1297603Smrg    while test $1 != '--mode=compile'; do
400b1297603Smrg      shift
401b1297603Smrg    done
402b1297603Smrg    shift
403b1297603Smrg  fi
404b1297603Smrg  # X makedepend
405b1297603Smrg  shift
406b1297603Smrg  cleared=no
407b1297603Smrg  for arg in "$@"; do
408b1297603Smrg    case $cleared in
409b1297603Smrg    no)
410b1297603Smrg      set ""; shift
411b1297603Smrg      cleared=yes ;;
412b1297603Smrg    esac
413b1297603Smrg    case "$arg" in
414b1297603Smrg    -D*|-I*)
415b1297603Smrg      set fnord "$@" "$arg"; shift ;;
416b1297603Smrg    # Strip any option that makedepend may not understand.  Remove
417b1297603Smrg    # the object too, otherwise makedepend will parse it as a source file.
418b1297603Smrg    -*|$object)
419b1297603Smrg      ;;
420b1297603Smrg    *)
421b1297603Smrg      set fnord "$@" "$arg"; shift ;;
422b1297603Smrg    esac
423b1297603Smrg  done
424b1297603Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
425b1297603Smrg  touch "$tmpdepfile"
426b1297603Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
427b1297603Smrg  rm -f "$depfile"
428b1297603Smrg  cat < "$tmpdepfile" > "$depfile"
429b1297603Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
430b1297603Smrg' | \
431b1297603Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
432b1297603Smrg## correctly.  Breaking it into two sed invocations is a workaround.
433b1297603Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
434b1297603Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
435b1297603Smrg  ;;
436b1297603Smrg
437b1297603Smrgcpp)
438b1297603Smrg  # Important note: in order to support this mode, a compiler *must*
439b1297603Smrg  # always write the preprocessed file to stdout.
440b1297603Smrg  "$@" || exit $?
441b1297603Smrg
442b1297603Smrg  # Remove the call to Libtool.
443b1297603Smrg  if test "$libtool" = yes; then
444b1297603Smrg    while test $1 != '--mode=compile'; do
445b1297603Smrg      shift
446b1297603Smrg    done
447b1297603Smrg    shift
448b1297603Smrg  fi
449b1297603Smrg
450b1297603Smrg  # Remove `-o $object'.
451b1297603Smrg  IFS=" "
452b1297603Smrg  for arg
453b1297603Smrg  do
454b1297603Smrg    case $arg in
455b1297603Smrg    -o)
456b1297603Smrg      shift
457b1297603Smrg      ;;
458b1297603Smrg    $object)
459b1297603Smrg      shift
460b1297603Smrg      ;;
461b1297603Smrg    *)
462b1297603Smrg      set fnord "$@" "$arg"
463b1297603Smrg      shift # fnord
464b1297603Smrg      shift # $arg
465b1297603Smrg      ;;
466b1297603Smrg    esac
467b1297603Smrg  done
468b1297603Smrg
469b1297603Smrg  "$@" -E |
470b1297603Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471b1297603Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472b1297603Smrg    sed '$ s: \\$::' > "$tmpdepfile"
473b1297603Smrg  rm -f "$depfile"
474b1297603Smrg  echo "$object : \\" > "$depfile"
475b1297603Smrg  cat < "$tmpdepfile" >> "$depfile"
476b1297603Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
477b1297603Smrg  rm -f "$tmpdepfile"
478b1297603Smrg  ;;
479b1297603Smrg
480b1297603Smrgmsvisualcpp)
481b1297603Smrg  # Important note: in order to support this mode, a compiler *must*
482b1297603Smrg  # always write the preprocessed file to stdout, regardless of -o,
483b1297603Smrg  # because we must use -o when running libtool.
484b1297603Smrg  "$@" || exit $?
485b1297603Smrg  IFS=" "
486b1297603Smrg  for arg
487b1297603Smrg  do
488b1297603Smrg    case "$arg" in
489b1297603Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490b1297603Smrg	set fnord "$@"
491b1297603Smrg	shift
492b1297603Smrg	shift
493b1297603Smrg	;;
494b1297603Smrg    *)
495b1297603Smrg	set fnord "$@" "$arg"
496b1297603Smrg	shift
497b1297603Smrg	shift
498b1297603Smrg	;;
499b1297603Smrg    esac
500b1297603Smrg  done
501b1297603Smrg  "$@" -E |
502b1297603Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
503b1297603Smrg  rm -f "$depfile"
504b1297603Smrg  echo "$object : \\" > "$depfile"
505b1297603Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
506b1297603Smrg  echo "	" >> "$depfile"
507b1297603Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
508b1297603Smrg  rm -f "$tmpdepfile"
509b1297603Smrg  ;;
510b1297603Smrg
511b1297603Smrgnone)
512b1297603Smrg  exec "$@"
513b1297603Smrg  ;;
514b1297603Smrg
515b1297603Smrg*)
516b1297603Smrg  echo "Unknown depmode $depmode" 1>&2
517b1297603Smrg  exit 1
518b1297603Smrg  ;;
519b1297603Smrgesac
520b1297603Smrg
521b1297603Smrgexit 0
522b1297603Smrg
523b1297603Smrg# Local Variables:
524b1297603Smrg# mode: shell-script
525b1297603Smrg# sh-indentation: 2
526b1297603Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
527b1297603Smrg# time-stamp-start: "scriptversion="
528b1297603Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
529b1297603Smrg# time-stamp-end: "$"
530b1297603Smrg# End:
531