depcomp revision d17cd367
1266e564dSmrg#! /bin/sh
2266e564dSmrg# depcomp - compile a program generating dependencies as side-effects
3266e564dSmrg
4d17cd367Smrgscriptversion=2009-04-28.21; # UTC
5266e564dSmrg
6d17cd367Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7d17cd367Smrg# Software Foundation, Inc.
8266e564dSmrg
9266e564dSmrg# This program is free software; you can redistribute it and/or modify
10266e564dSmrg# it under the terms of the GNU General Public License as published by
11266e564dSmrg# the Free Software Foundation; either version 2, or (at your option)
12266e564dSmrg# any later version.
13266e564dSmrg
14266e564dSmrg# This program is distributed in the hope that it will be useful,
15266e564dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16266e564dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17266e564dSmrg# GNU General Public License for more details.
18266e564dSmrg
19266e564dSmrg# You should have received a copy of the GNU General Public License
20d17cd367Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21266e564dSmrg
22266e564dSmrg# As a special exception to the GNU General Public License, if you
23266e564dSmrg# distribute this file as part of a program that contains a
24266e564dSmrg# configuration script generated by Autoconf, you may include it under
25266e564dSmrg# the same distribution terms that you use for the rest of that program.
26266e564dSmrg
27266e564dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28266e564dSmrg
29266e564dSmrgcase $1 in
30266e564dSmrg  '')
31266e564dSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32266e564dSmrg     exit 1;
33266e564dSmrg     ;;
34266e564dSmrg  -h | --h*)
35266e564dSmrg    cat <<\EOF
36266e564dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37266e564dSmrg
38266e564dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39266e564dSmrgas side-effects.
40266e564dSmrg
41266e564dSmrgEnvironment variables:
42266e564dSmrg  depmode     Dependency tracking mode.
43266e564dSmrg  source      Source file read by `PROGRAMS ARGS'.
44266e564dSmrg  object      Object file output by `PROGRAMS ARGS'.
45266e564dSmrg  DEPDIR      directory where to store dependencies.
46266e564dSmrg  depfile     Dependency file to output.
47266e564dSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
48266e564dSmrg  libtool     Whether libtool is used (yes/no).
49266e564dSmrg
50266e564dSmrgReport bugs to <bug-automake@gnu.org>.
51266e564dSmrgEOF
52266e564dSmrg    exit $?
53266e564dSmrg    ;;
54266e564dSmrg  -v | --v*)
55266e564dSmrg    echo "depcomp $scriptversion"
56266e564dSmrg    exit $?
57266e564dSmrg    ;;
58266e564dSmrgesac
59266e564dSmrg
60266e564dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61266e564dSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62266e564dSmrg  exit 1
63266e564dSmrgfi
64266e564dSmrg
65266e564dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66266e564dSmrgdepfile=${depfile-`echo "$object" |
67266e564dSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68266e564dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69266e564dSmrg
70266e564dSmrgrm -f "$tmpdepfile"
71266e564dSmrg
72266e564dSmrg# Some modes work just like other modes, but use different flags.  We
73266e564dSmrg# parameterize here, but still list the modes in the big case below,
74266e564dSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75266e564dSmrg# here, because this file can only contain one case statement.
76266e564dSmrgif test "$depmode" = hp; then
77266e564dSmrg  # HP compiler uses -M and no extra arg.
78266e564dSmrg  gccflag=-M
79266e564dSmrg  depmode=gcc
80266e564dSmrgfi
81266e564dSmrg
82266e564dSmrgif test "$depmode" = dashXmstdout; then
83266e564dSmrg   # This is just like dashmstdout with a different argument.
84266e564dSmrg   dashmflag=-xM
85266e564dSmrg   depmode=dashmstdout
86266e564dSmrgfi
87266e564dSmrg
88d17cd367Smrgcygpath_u="cygpath -u -f -"
89d17cd367Smrgif test "$depmode" = msvcmsys; then
90d17cd367Smrg   # This is just like msvisualcpp but w/o cygpath translation.
91d17cd367Smrg   # Just convert the backslash-escaped backslashes to single forward
92d17cd367Smrg   # slashes to satisfy depend.m4
93d17cd367Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
94d17cd367Smrg   depmode=msvisualcpp
95d17cd367Smrgfi
96d17cd367Smrg
97266e564dSmrgcase "$depmode" in
98266e564dSmrggcc3)
99266e564dSmrg## gcc 3 implements dependency tracking that does exactly what
100266e564dSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101266e564dSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
102266e564dSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103266e564dSmrg## the command line argument order; so add the flags where they
104266e564dSmrg## appear in depend2.am.  Note that the slowdown incurred here
105266e564dSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106266e564dSmrg  for arg
107266e564dSmrg  do
108266e564dSmrg    case $arg in
109266e564dSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110266e564dSmrg    *)  set fnord "$@" "$arg" ;;
111266e564dSmrg    esac
112266e564dSmrg    shift # fnord
113266e564dSmrg    shift # $arg
114266e564dSmrg  done
115266e564dSmrg  "$@"
116266e564dSmrg  stat=$?
117266e564dSmrg  if test $stat -eq 0; then :
118266e564dSmrg  else
119266e564dSmrg    rm -f "$tmpdepfile"
120266e564dSmrg    exit $stat
121266e564dSmrg  fi
122266e564dSmrg  mv "$tmpdepfile" "$depfile"
123266e564dSmrg  ;;
124266e564dSmrg
125266e564dSmrggcc)
126266e564dSmrg## There are various ways to get dependency output from gcc.  Here's
127266e564dSmrg## why we pick this rather obscure method:
128266e564dSmrg## - Don't want to use -MD because we'd like the dependencies to end
129266e564dSmrg##   up in a subdir.  Having to rename by hand is ugly.
130266e564dSmrg##   (We might end up doing this anyway to support other compilers.)
131266e564dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132266e564dSmrg##   -MM, not -M (despite what the docs say).
133266e564dSmrg## - Using -M directly means running the compiler twice (even worse
134266e564dSmrg##   than renaming).
135266e564dSmrg  if test -z "$gccflag"; then
136266e564dSmrg    gccflag=-MD,
137266e564dSmrg  fi
138266e564dSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
139266e564dSmrg  stat=$?
140266e564dSmrg  if test $stat -eq 0; then :
141266e564dSmrg  else
142266e564dSmrg    rm -f "$tmpdepfile"
143266e564dSmrg    exit $stat
144266e564dSmrg  fi
145266e564dSmrg  rm -f "$depfile"
146266e564dSmrg  echo "$object : \\" > "$depfile"
147266e564dSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148266e564dSmrg## The second -e expression handles DOS-style file names with drive letters.
149266e564dSmrg  sed -e 's/^[^:]*: / /' \
150266e564dSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151266e564dSmrg## This next piece of magic avoids the `deleted header file' problem.
152266e564dSmrg## The problem is that when a header file which appears in a .P file
153266e564dSmrg## is deleted, the dependency causes make to die (because there is
154266e564dSmrg## typically no way to rebuild the header).  We avoid this by adding
155266e564dSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156266e564dSmrg## this for us directly.
157266e564dSmrg  tr ' ' '
158266e564dSmrg' < "$tmpdepfile" |
159266e564dSmrg## Some versions of gcc put a space before the `:'.  On the theory
160266e564dSmrg## that the space means something, we add a space to the output as
161266e564dSmrg## well.
162266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
163266e564dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
164266e564dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165266e564dSmrg  rm -f "$tmpdepfile"
166266e564dSmrg  ;;
167266e564dSmrg
168266e564dSmrghp)
169266e564dSmrg  # This case exists only to let depend.m4 do its work.  It works by
170266e564dSmrg  # looking at the text of this script.  This case will never be run,
171266e564dSmrg  # since it is checked for above.
172266e564dSmrg  exit 1
173266e564dSmrg  ;;
174266e564dSmrg
175266e564dSmrgsgi)
176266e564dSmrg  if test "$libtool" = yes; then
177266e564dSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178266e564dSmrg  else
179266e564dSmrg    "$@" -MDupdate "$tmpdepfile"
180266e564dSmrg  fi
181266e564dSmrg  stat=$?
182266e564dSmrg  if test $stat -eq 0; then :
183266e564dSmrg  else
184266e564dSmrg    rm -f "$tmpdepfile"
185266e564dSmrg    exit $stat
186266e564dSmrg  fi
187266e564dSmrg  rm -f "$depfile"
188266e564dSmrg
189266e564dSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190266e564dSmrg    echo "$object : \\" > "$depfile"
191266e564dSmrg
192266e564dSmrg    # Clip off the initial element (the dependent).  Don't try to be
193266e564dSmrg    # clever and replace this with sed code, as IRIX sed won't handle
194266e564dSmrg    # lines with more than a fixed number of characters (4096 in
195266e564dSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
196266e564dSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
197266e564dSmrg    # dependency line.
198266e564dSmrg    tr ' ' '
199266e564dSmrg' < "$tmpdepfile" \
200266e564dSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201266e564dSmrg    tr '
202d17cd367Smrg' ' ' >> "$depfile"
203d17cd367Smrg    echo >> "$depfile"
204266e564dSmrg
205266e564dSmrg    # The second pass generates a dummy entry for each header file.
206266e564dSmrg    tr ' ' '
207266e564dSmrg' < "$tmpdepfile" \
208266e564dSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209d17cd367Smrg   >> "$depfile"
210266e564dSmrg  else
211266e564dSmrg    # The sourcefile does not contain any dependencies, so just
212266e564dSmrg    # store a dummy comment line, to avoid errors with the Makefile
213266e564dSmrg    # "include basename.Plo" scheme.
214266e564dSmrg    echo "#dummy" > "$depfile"
215266e564dSmrg  fi
216266e564dSmrg  rm -f "$tmpdepfile"
217266e564dSmrg  ;;
218266e564dSmrg
219266e564dSmrgaix)
220266e564dSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
221266e564dSmrg  # in a .u file.  In older versions, this file always lives in the
222266e564dSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223266e564dSmrg  # start of each line; $object doesn't have directory information.
224266e564dSmrg  # Version 6 uses the directory in both cases.
225c5629e66Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226c5629e66Smrg  test "x$dir" = "x$object" && dir=
227c5629e66Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228266e564dSmrg  if test "$libtool" = yes; then
229c5629e66Smrg    tmpdepfile1=$dir$base.u
230c5629e66Smrg    tmpdepfile2=$base.u
231c5629e66Smrg    tmpdepfile3=$dir.libs/$base.u
232266e564dSmrg    "$@" -Wc,-M
233266e564dSmrg  else
234c5629e66Smrg    tmpdepfile1=$dir$base.u
235c5629e66Smrg    tmpdepfile2=$dir$base.u
236c5629e66Smrg    tmpdepfile3=$dir$base.u
237266e564dSmrg    "$@" -M
238266e564dSmrg  fi
239266e564dSmrg  stat=$?
240266e564dSmrg
241266e564dSmrg  if test $stat -eq 0; then :
242266e564dSmrg  else
243c5629e66Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244266e564dSmrg    exit $stat
245266e564dSmrg  fi
246266e564dSmrg
247c5629e66Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248c5629e66Smrg  do
249c5629e66Smrg    test -f "$tmpdepfile" && break
250c5629e66Smrg  done
251266e564dSmrg  if test -f "$tmpdepfile"; then
252266e564dSmrg    # Each line is of the form `foo.o: dependent.h'.
253266e564dSmrg    # Do two passes, one to just change these to
254266e564dSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255c5629e66Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256c5629e66Smrg    # That's a tab and a space in the [].
257c5629e66Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258266e564dSmrg  else
259266e564dSmrg    # The sourcefile does not contain any dependencies, so just
260266e564dSmrg    # store a dummy comment line, to avoid errors with the Makefile
261266e564dSmrg    # "include basename.Plo" scheme.
262266e564dSmrg    echo "#dummy" > "$depfile"
263266e564dSmrg  fi
264266e564dSmrg  rm -f "$tmpdepfile"
265266e564dSmrg  ;;
266266e564dSmrg
267266e564dSmrgicc)
268266e564dSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
269266e564dSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270266e564dSmrg  # ICC 7.0 will fill foo.d with something like
271266e564dSmrg  #    foo.o: sub/foo.c
272266e564dSmrg  #    foo.o: sub/foo.h
273266e564dSmrg  # which is wrong.  We want:
274266e564dSmrg  #    sub/foo.o: sub/foo.c
275266e564dSmrg  #    sub/foo.o: sub/foo.h
276266e564dSmrg  #    sub/foo.c:
277266e564dSmrg  #    sub/foo.h:
278266e564dSmrg  # ICC 7.1 will output
279266e564dSmrg  #    foo.o: sub/foo.c sub/foo.h
280266e564dSmrg  # and will wrap long lines using \ :
281266e564dSmrg  #    foo.o: sub/foo.c ... \
282266e564dSmrg  #     sub/foo.h ... \
283266e564dSmrg  #     ...
284266e564dSmrg
285266e564dSmrg  "$@" -MD -MF "$tmpdepfile"
286266e564dSmrg  stat=$?
287266e564dSmrg  if test $stat -eq 0; then :
288266e564dSmrg  else
289266e564dSmrg    rm -f "$tmpdepfile"
290266e564dSmrg    exit $stat
291266e564dSmrg  fi
292266e564dSmrg  rm -f "$depfile"
293266e564dSmrg  # Each line is of the form `foo.o: dependent.h',
294266e564dSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295266e564dSmrg  # Do two passes, one to just change these to
296266e564dSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297266e564dSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298266e564dSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299266e564dSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
300266e564dSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301266e564dSmrg    sed -e 's/$/ :/' >> "$depfile"
302266e564dSmrg  rm -f "$tmpdepfile"
303266e564dSmrg  ;;
304266e564dSmrg
305266e564dSmrghp2)
306266e564dSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307266e564dSmrg  # compilers, which have integrated preprocessors.  The correct option
308266e564dSmrg  # to use with these is +Maked; it writes dependencies to a file named
309266e564dSmrg  # 'foo.d', which lands next to the object file, wherever that
310266e564dSmrg  # happens to be.
311266e564dSmrg  # Much of this is similar to the tru64 case; see comments there.
312266e564dSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313266e564dSmrg  test "x$dir" = "x$object" && dir=
314266e564dSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315266e564dSmrg  if test "$libtool" = yes; then
316266e564dSmrg    tmpdepfile1=$dir$base.d
317266e564dSmrg    tmpdepfile2=$dir.libs/$base.d
318266e564dSmrg    "$@" -Wc,+Maked
319266e564dSmrg  else
320266e564dSmrg    tmpdepfile1=$dir$base.d
321266e564dSmrg    tmpdepfile2=$dir$base.d
322266e564dSmrg    "$@" +Maked
323266e564dSmrg  fi
324266e564dSmrg  stat=$?
325266e564dSmrg  if test $stat -eq 0; then :
326266e564dSmrg  else
327266e564dSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328266e564dSmrg     exit $stat
329266e564dSmrg  fi
330266e564dSmrg
331266e564dSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332266e564dSmrg  do
333266e564dSmrg    test -f "$tmpdepfile" && break
334266e564dSmrg  done
335266e564dSmrg  if test -f "$tmpdepfile"; then
336266e564dSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337266e564dSmrg    # Add `dependent.h:' lines.
338d17cd367Smrg    sed -ne '2,${
339d17cd367Smrg	       s/^ *//
340d17cd367Smrg	       s/ \\*$//
341d17cd367Smrg	       s/$/:/
342d17cd367Smrg	       p
343d17cd367Smrg	     }' "$tmpdepfile" >> "$depfile"
344266e564dSmrg  else
345266e564dSmrg    echo "#dummy" > "$depfile"
346266e564dSmrg  fi
347266e564dSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348266e564dSmrg  ;;
349266e564dSmrg
350266e564dSmrgtru64)
351266e564dSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
352266e564dSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353266e564dSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354266e564dSmrg   # dependencies in `foo.d' instead, so we check for that too.
355266e564dSmrg   # Subdirectories are respected.
356266e564dSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357266e564dSmrg   test "x$dir" = "x$object" && dir=
358266e564dSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359266e564dSmrg
360266e564dSmrg   if test "$libtool" = yes; then
361266e564dSmrg      # With Tru64 cc, shared objects can also be used to make a
362266e564dSmrg      # static library.  This mechanism is used in libtool 1.4 series to
363266e564dSmrg      # handle both shared and static libraries in a single compilation.
364266e564dSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365266e564dSmrg      #
366266e564dSmrg      # With libtool 1.5 this exception was removed, and libtool now
367266e564dSmrg      # generates 2 separate objects for the 2 libraries.  These two
368266e564dSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
369266e564dSmrg      # in $dir$base.o.d.  We have to check for both files, because
370266e564dSmrg      # one of the two compilations can be disabled.  We should prefer
371266e564dSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372266e564dSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
373266e564dSmrg      # the former would cause a distcleancheck panic.
374266e564dSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
375266e564dSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
376266e564dSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
377266e564dSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
378266e564dSmrg      "$@" -Wc,-MD
379266e564dSmrg   else
380266e564dSmrg      tmpdepfile1=$dir$base.o.d
381266e564dSmrg      tmpdepfile2=$dir$base.d
382266e564dSmrg      tmpdepfile3=$dir$base.d
383266e564dSmrg      tmpdepfile4=$dir$base.d
384266e564dSmrg      "$@" -MD
385266e564dSmrg   fi
386266e564dSmrg
387266e564dSmrg   stat=$?
388266e564dSmrg   if test $stat -eq 0; then :
389266e564dSmrg   else
390266e564dSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391266e564dSmrg      exit $stat
392266e564dSmrg   fi
393266e564dSmrg
394266e564dSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395266e564dSmrg   do
396266e564dSmrg     test -f "$tmpdepfile" && break
397266e564dSmrg   done
398266e564dSmrg   if test -f "$tmpdepfile"; then
399266e564dSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400266e564dSmrg      # That's a tab and a space in the [].
401266e564dSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402266e564dSmrg   else
403266e564dSmrg      echo "#dummy" > "$depfile"
404266e564dSmrg   fi
405266e564dSmrg   rm -f "$tmpdepfile"
406266e564dSmrg   ;;
407266e564dSmrg
408266e564dSmrg#nosideeffect)
409266e564dSmrg  # This comment above is used by automake to tell side-effect
410266e564dSmrg  # dependency tracking mechanisms from slower ones.
411266e564dSmrg
412266e564dSmrgdashmstdout)
413266e564dSmrg  # Important note: in order to support this mode, a compiler *must*
414266e564dSmrg  # always write the preprocessed file to stdout, regardless of -o.
415266e564dSmrg  "$@" || exit $?
416266e564dSmrg
417266e564dSmrg  # Remove the call to Libtool.
418266e564dSmrg  if test "$libtool" = yes; then
419d17cd367Smrg    while test "X$1" != 'X--mode=compile'; do
420266e564dSmrg      shift
421266e564dSmrg    done
422266e564dSmrg    shift
423266e564dSmrg  fi
424266e564dSmrg
425266e564dSmrg  # Remove `-o $object'.
426266e564dSmrg  IFS=" "
427266e564dSmrg  for arg
428266e564dSmrg  do
429266e564dSmrg    case $arg in
430266e564dSmrg    -o)
431266e564dSmrg      shift
432266e564dSmrg      ;;
433266e564dSmrg    $object)
434266e564dSmrg      shift
435266e564dSmrg      ;;
436266e564dSmrg    *)
437266e564dSmrg      set fnord "$@" "$arg"
438266e564dSmrg      shift # fnord
439266e564dSmrg      shift # $arg
440266e564dSmrg      ;;
441266e564dSmrg    esac
442266e564dSmrg  done
443266e564dSmrg
444266e564dSmrg  test -z "$dashmflag" && dashmflag=-M
445266e564dSmrg  # Require at least two characters before searching for `:'
446266e564dSmrg  # in the target name.  This is to cope with DOS-style filenames:
447266e564dSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448266e564dSmrg  "$@" $dashmflag |
449266e564dSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450266e564dSmrg  rm -f "$depfile"
451266e564dSmrg  cat < "$tmpdepfile" > "$depfile"
452266e564dSmrg  tr ' ' '
453266e564dSmrg' < "$tmpdepfile" | \
454266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
455266e564dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
456266e564dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457266e564dSmrg  rm -f "$tmpdepfile"
458266e564dSmrg  ;;
459266e564dSmrg
460266e564dSmrgdashXmstdout)
461266e564dSmrg  # This case only exists to satisfy depend.m4.  It is never actually
462266e564dSmrg  # run, as this mode is specially recognized in the preamble.
463266e564dSmrg  exit 1
464266e564dSmrg  ;;
465266e564dSmrg
466266e564dSmrgmakedepend)
467266e564dSmrg  "$@" || exit $?
468266e564dSmrg  # Remove any Libtool call
469266e564dSmrg  if test "$libtool" = yes; then
470d17cd367Smrg    while test "X$1" != 'X--mode=compile'; do
471266e564dSmrg      shift
472266e564dSmrg    done
473266e564dSmrg    shift
474266e564dSmrg  fi
475266e564dSmrg  # X makedepend
476266e564dSmrg  shift
477d17cd367Smrg  cleared=no eat=no
478d17cd367Smrg  for arg
479d17cd367Smrg  do
480266e564dSmrg    case $cleared in
481266e564dSmrg    no)
482266e564dSmrg      set ""; shift
483266e564dSmrg      cleared=yes ;;
484266e564dSmrg    esac
485d17cd367Smrg    if test $eat = yes; then
486d17cd367Smrg      eat=no
487d17cd367Smrg      continue
488d17cd367Smrg    fi
489266e564dSmrg    case "$arg" in
490266e564dSmrg    -D*|-I*)
491266e564dSmrg      set fnord "$@" "$arg"; shift ;;
492266e564dSmrg    # Strip any option that makedepend may not understand.  Remove
493266e564dSmrg    # the object too, otherwise makedepend will parse it as a source file.
494d17cd367Smrg    -arch)
495d17cd367Smrg      eat=yes ;;
496266e564dSmrg    -*|$object)
497266e564dSmrg      ;;
498266e564dSmrg    *)
499266e564dSmrg      set fnord "$@" "$arg"; shift ;;
500266e564dSmrg    esac
501266e564dSmrg  done
502d17cd367Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503266e564dSmrg  touch "$tmpdepfile"
504266e564dSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505266e564dSmrg  rm -f "$depfile"
506266e564dSmrg  cat < "$tmpdepfile" > "$depfile"
507266e564dSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
508266e564dSmrg' | \
509266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
510266e564dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
511266e564dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512266e564dSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513266e564dSmrg  ;;
514266e564dSmrg
515266e564dSmrgcpp)
516266e564dSmrg  # Important note: in order to support this mode, a compiler *must*
517266e564dSmrg  # always write the preprocessed file to stdout.
518266e564dSmrg  "$@" || exit $?
519266e564dSmrg
520266e564dSmrg  # Remove the call to Libtool.
521266e564dSmrg  if test "$libtool" = yes; then
522d17cd367Smrg    while test "X$1" != 'X--mode=compile'; do
523266e564dSmrg      shift
524266e564dSmrg    done
525266e564dSmrg    shift
526266e564dSmrg  fi
527266e564dSmrg
528266e564dSmrg  # Remove `-o $object'.
529266e564dSmrg  IFS=" "
530266e564dSmrg  for arg
531266e564dSmrg  do
532266e564dSmrg    case $arg in
533266e564dSmrg    -o)
534266e564dSmrg      shift
535266e564dSmrg      ;;
536266e564dSmrg    $object)
537266e564dSmrg      shift
538266e564dSmrg      ;;
539266e564dSmrg    *)
540266e564dSmrg      set fnord "$@" "$arg"
541266e564dSmrg      shift # fnord
542266e564dSmrg      shift # $arg
543266e564dSmrg      ;;
544266e564dSmrg    esac
545266e564dSmrg  done
546266e564dSmrg
547266e564dSmrg  "$@" -E |
548266e564dSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549266e564dSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550266e564dSmrg    sed '$ s: \\$::' > "$tmpdepfile"
551266e564dSmrg  rm -f "$depfile"
552266e564dSmrg  echo "$object : \\" > "$depfile"
553266e564dSmrg  cat < "$tmpdepfile" >> "$depfile"
554266e564dSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555266e564dSmrg  rm -f "$tmpdepfile"
556266e564dSmrg  ;;
557266e564dSmrg
558266e564dSmrgmsvisualcpp)
559266e564dSmrg  # Important note: in order to support this mode, a compiler *must*
560d17cd367Smrg  # always write the preprocessed file to stdout.
561266e564dSmrg  "$@" || exit $?
562d17cd367Smrg
563d17cd367Smrg  # Remove the call to Libtool.
564d17cd367Smrg  if test "$libtool" = yes; then
565d17cd367Smrg    while test "X$1" != 'X--mode=compile'; do
566d17cd367Smrg      shift
567d17cd367Smrg    done
568d17cd367Smrg    shift
569d17cd367Smrg  fi
570d17cd367Smrg
571266e564dSmrg  IFS=" "
572266e564dSmrg  for arg
573266e564dSmrg  do
574266e564dSmrg    case "$arg" in
575d17cd367Smrg    -o)
576d17cd367Smrg      shift
577d17cd367Smrg      ;;
578d17cd367Smrg    $object)
579d17cd367Smrg      shift
580d17cd367Smrg      ;;
581266e564dSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582266e564dSmrg	set fnord "$@"
583266e564dSmrg	shift
584266e564dSmrg	shift
585266e564dSmrg	;;
586266e564dSmrg    *)
587266e564dSmrg	set fnord "$@" "$arg"
588266e564dSmrg	shift
589266e564dSmrg	shift
590266e564dSmrg	;;
591266e564dSmrg    esac
592266e564dSmrg  done
593d17cd367Smrg  "$@" -E 2>/dev/null |
594d17cd367Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595266e564dSmrg  rm -f "$depfile"
596266e564dSmrg  echo "$object : \\" > "$depfile"
597d17cd367Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
598266e564dSmrg  echo "	" >> "$depfile"
599d17cd367Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600266e564dSmrg  rm -f "$tmpdepfile"
601266e564dSmrg  ;;
602266e564dSmrg
603d17cd367Smrgmsvcmsys)
604d17cd367Smrg  # This case exists only to let depend.m4 do its work.  It works by
605d17cd367Smrg  # looking at the text of this script.  This case will never be run,
606d17cd367Smrg  # since it is checked for above.
607d17cd367Smrg  exit 1
608d17cd367Smrg  ;;
609d17cd367Smrg
610266e564dSmrgnone)
611266e564dSmrg  exec "$@"
612266e564dSmrg  ;;
613266e564dSmrg
614266e564dSmrg*)
615266e564dSmrg  echo "Unknown depmode $depmode" 1>&2
616266e564dSmrg  exit 1
617266e564dSmrg  ;;
618266e564dSmrgesac
619266e564dSmrg
620266e564dSmrgexit 0
621266e564dSmrg
622266e564dSmrg# Local Variables:
623266e564dSmrg# mode: shell-script
624266e564dSmrg# sh-indentation: 2
625266e564dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626266e564dSmrg# time-stamp-start: "scriptversion="
627266e564dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
628d17cd367Smrg# time-stamp-time-zone: "UTC"
629d17cd367Smrg# time-stamp-end: "; # UTC"
630266e564dSmrg# End:
631