depcomp revision 7c5f6000
1bccedf53Smrg#! /bin/sh
2bccedf53Smrg# depcomp - compile a program generating dependencies as side-effects
37c5f6000Smrg
47c5f6000Smrgscriptversion=2009-04-28.21; # UTC
57c5f6000Smrg
67c5f6000Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
77c5f6000Smrg# Software Foundation, Inc.
8bccedf53Smrg
9bccedf53Smrg# This program is free software; you can redistribute it and/or modify
10bccedf53Smrg# it under the terms of the GNU General Public License as published by
11bccedf53Smrg# the Free Software Foundation; either version 2, or (at your option)
12bccedf53Smrg# any later version.
13bccedf53Smrg
14bccedf53Smrg# This program is distributed in the hope that it will be useful,
15bccedf53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
16bccedf53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17bccedf53Smrg# GNU General Public License for more details.
18bccedf53Smrg
19bccedf53Smrg# You should have received a copy of the GNU General Public License
207c5f6000Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21bccedf53Smrg
22bccedf53Smrg# As a special exception to the GNU General Public License, if you
23bccedf53Smrg# distribute this file as part of a program that contains a
24bccedf53Smrg# configuration script generated by Autoconf, you may include it under
25bccedf53Smrg# the same distribution terms that you use for the rest of that program.
26bccedf53Smrg
27bccedf53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28bccedf53Smrg
297c5f6000Smrgcase $1 in
307c5f6000Smrg  '')
317c5f6000Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
327c5f6000Smrg     exit 1;
337c5f6000Smrg     ;;
347c5f6000Smrg  -h | --h*)
357c5f6000Smrg    cat <<\EOF
367c5f6000SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
377c5f6000Smrg
387c5f6000SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
397c5f6000Smrgas side-effects.
407c5f6000Smrg
417c5f6000SmrgEnvironment variables:
427c5f6000Smrg  depmode     Dependency tracking mode.
437c5f6000Smrg  source      Source file read by `PROGRAMS ARGS'.
447c5f6000Smrg  object      Object file output by `PROGRAMS ARGS'.
457c5f6000Smrg  DEPDIR      directory where to store dependencies.
467c5f6000Smrg  depfile     Dependency file to output.
477c5f6000Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
487c5f6000Smrg  libtool     Whether libtool is used (yes/no).
497c5f6000Smrg
507c5f6000SmrgReport bugs to <bug-automake@gnu.org>.
517c5f6000SmrgEOF
527c5f6000Smrg    exit $?
537c5f6000Smrg    ;;
547c5f6000Smrg  -v | --v*)
557c5f6000Smrg    echo "depcomp $scriptversion"
567c5f6000Smrg    exit $?
577c5f6000Smrg    ;;
587c5f6000Smrgesac
597c5f6000Smrg
60bccedf53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
61bccedf53Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
62bccedf53Smrg  exit 1
63bccedf53Smrgfi
64bccedf53Smrg
657c5f6000Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
667c5f6000Smrgdepfile=${depfile-`echo "$object" |
677c5f6000Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68bccedf53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69bccedf53Smrg
70bccedf53Smrgrm -f "$tmpdepfile"
71bccedf53Smrg
72bccedf53Smrg# Some modes work just like other modes, but use different flags.  We
73bccedf53Smrg# parameterize here, but still list the modes in the big case below,
74bccedf53Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
75bccedf53Smrg# here, because this file can only contain one case statement.
76bccedf53Smrgif test "$depmode" = hp; then
77bccedf53Smrg  # HP compiler uses -M and no extra arg.
78bccedf53Smrg  gccflag=-M
79bccedf53Smrg  depmode=gcc
80bccedf53Smrgfi
81bccedf53Smrg
82bccedf53Smrgif test "$depmode" = dashXmstdout; then
83bccedf53Smrg   # This is just like dashmstdout with a different argument.
84bccedf53Smrg   dashmflag=-xM
85bccedf53Smrg   depmode=dashmstdout
86bccedf53Smrgfi
87bccedf53Smrg
887c5f6000Smrgcygpath_u="cygpath -u -f -"
897c5f6000Smrgif test "$depmode" = msvcmsys; then
907c5f6000Smrg   # This is just like msvisualcpp but w/o cygpath translation.
917c5f6000Smrg   # Just convert the backslash-escaped backslashes to single forward
927c5f6000Smrg   # slashes to satisfy depend.m4
937c5f6000Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
947c5f6000Smrg   depmode=msvisualcpp
957c5f6000Smrgfi
967c5f6000Smrg
97bccedf53Smrgcase "$depmode" in
98bccedf53Smrggcc3)
99bccedf53Smrg## gcc 3 implements dependency tracking that does exactly what
100bccedf53Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
101bccedf53Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1027c5f6000Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1037c5f6000Smrg## the command line argument order; so add the flags where they
1047c5f6000Smrg## appear in depend2.am.  Note that the slowdown incurred here
1057c5f6000Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1067c5f6000Smrg  for arg
1077c5f6000Smrg  do
1087c5f6000Smrg    case $arg in
1097c5f6000Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1107c5f6000Smrg    *)  set fnord "$@" "$arg" ;;
1117c5f6000Smrg    esac
1127c5f6000Smrg    shift # fnord
1137c5f6000Smrg    shift # $arg
1147c5f6000Smrg  done
1157c5f6000Smrg  "$@"
116bccedf53Smrg  stat=$?
117bccedf53Smrg  if test $stat -eq 0; then :
118bccedf53Smrg  else
119bccedf53Smrg    rm -f "$tmpdepfile"
120bccedf53Smrg    exit $stat
121bccedf53Smrg  fi
122bccedf53Smrg  mv "$tmpdepfile" "$depfile"
123bccedf53Smrg  ;;
124bccedf53Smrg
125bccedf53Smrggcc)
126bccedf53Smrg## There are various ways to get dependency output from gcc.  Here's
127bccedf53Smrg## why we pick this rather obscure method:
128bccedf53Smrg## - Don't want to use -MD because we'd like the dependencies to end
129bccedf53Smrg##   up in a subdir.  Having to rename by hand is ugly.
130bccedf53Smrg##   (We might end up doing this anyway to support other compilers.)
131bccedf53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
132bccedf53Smrg##   -MM, not -M (despite what the docs say).
133bccedf53Smrg## - Using -M directly means running the compiler twice (even worse
134bccedf53Smrg##   than renaming).
135bccedf53Smrg  if test -z "$gccflag"; then
136bccedf53Smrg    gccflag=-MD,
137bccedf53Smrg  fi
138bccedf53Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
139bccedf53Smrg  stat=$?
140bccedf53Smrg  if test $stat -eq 0; then :
141bccedf53Smrg  else
142bccedf53Smrg    rm -f "$tmpdepfile"
143bccedf53Smrg    exit $stat
144bccedf53Smrg  fi
145bccedf53Smrg  rm -f "$depfile"
146bccedf53Smrg  echo "$object : \\" > "$depfile"
147bccedf53Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
148bccedf53Smrg## The second -e expression handles DOS-style file names with drive letters.
149bccedf53Smrg  sed -e 's/^[^:]*: / /' \
150bccedf53Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
151bccedf53Smrg## This next piece of magic avoids the `deleted header file' problem.
152bccedf53Smrg## The problem is that when a header file which appears in a .P file
153bccedf53Smrg## is deleted, the dependency causes make to die (because there is
154bccedf53Smrg## typically no way to rebuild the header).  We avoid this by adding
155bccedf53Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
156bccedf53Smrg## this for us directly.
157bccedf53Smrg  tr ' ' '
158bccedf53Smrg' < "$tmpdepfile" |
159bccedf53Smrg## Some versions of gcc put a space before the `:'.  On the theory
160bccedf53Smrg## that the space means something, we add a space to the output as
161bccedf53Smrg## well.
162bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
163bccedf53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
164bccedf53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
165bccedf53Smrg  rm -f "$tmpdepfile"
166bccedf53Smrg  ;;
167bccedf53Smrg
168bccedf53Smrghp)
169bccedf53Smrg  # This case exists only to let depend.m4 do its work.  It works by
170bccedf53Smrg  # looking at the text of this script.  This case will never be run,
171bccedf53Smrg  # since it is checked for above.
172bccedf53Smrg  exit 1
173bccedf53Smrg  ;;
174bccedf53Smrg
175bccedf53Smrgsgi)
176bccedf53Smrg  if test "$libtool" = yes; then
177bccedf53Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
178bccedf53Smrg  else
179bccedf53Smrg    "$@" -MDupdate "$tmpdepfile"
180bccedf53Smrg  fi
181bccedf53Smrg  stat=$?
182bccedf53Smrg  if test $stat -eq 0; then :
183bccedf53Smrg  else
184bccedf53Smrg    rm -f "$tmpdepfile"
185bccedf53Smrg    exit $stat
186bccedf53Smrg  fi
187bccedf53Smrg  rm -f "$depfile"
188bccedf53Smrg
189bccedf53Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
190bccedf53Smrg    echo "$object : \\" > "$depfile"
191bccedf53Smrg
192bccedf53Smrg    # Clip off the initial element (the dependent).  Don't try to be
193bccedf53Smrg    # clever and replace this with sed code, as IRIX sed won't handle
194bccedf53Smrg    # lines with more than a fixed number of characters (4096 in
195bccedf53Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
196bccedf53Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
197bccedf53Smrg    # dependency line.
198bccedf53Smrg    tr ' ' '
199bccedf53Smrg' < "$tmpdepfile" \
200bccedf53Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
201bccedf53Smrg    tr '
2027c5f6000Smrg' ' ' >> "$depfile"
2037c5f6000Smrg    echo >> "$depfile"
204bccedf53Smrg
205bccedf53Smrg    # The second pass generates a dummy entry for each header file.
206bccedf53Smrg    tr ' ' '
207bccedf53Smrg' < "$tmpdepfile" \
208bccedf53Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2097c5f6000Smrg   >> "$depfile"
210bccedf53Smrg  else
211bccedf53Smrg    # The sourcefile does not contain any dependencies, so just
212bccedf53Smrg    # store a dummy comment line, to avoid errors with the Makefile
213bccedf53Smrg    # "include basename.Plo" scheme.
214bccedf53Smrg    echo "#dummy" > "$depfile"
215bccedf53Smrg  fi
216bccedf53Smrg  rm -f "$tmpdepfile"
217bccedf53Smrg  ;;
218bccedf53Smrg
219bccedf53Smrgaix)
220bccedf53Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
221bccedf53Smrg  # in a .u file.  In older versions, this file always lives in the
222bccedf53Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
223bccedf53Smrg  # start of each line; $object doesn't have directory information.
224bccedf53Smrg  # Version 6 uses the directory in both cases.
2257c5f6000Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2267c5f6000Smrg  test "x$dir" = "x$object" && dir=
2277c5f6000Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
228bccedf53Smrg  if test "$libtool" = yes; then
2297c5f6000Smrg    tmpdepfile1=$dir$base.u
2307c5f6000Smrg    tmpdepfile2=$base.u
2317c5f6000Smrg    tmpdepfile3=$dir.libs/$base.u
232bccedf53Smrg    "$@" -Wc,-M
233bccedf53Smrg  else
2347c5f6000Smrg    tmpdepfile1=$dir$base.u
2357c5f6000Smrg    tmpdepfile2=$dir$base.u
2367c5f6000Smrg    tmpdepfile3=$dir$base.u
237bccedf53Smrg    "$@" -M
238bccedf53Smrg  fi
239bccedf53Smrg  stat=$?
240bccedf53Smrg
241bccedf53Smrg  if test $stat -eq 0; then :
242bccedf53Smrg  else
2437c5f6000Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
244bccedf53Smrg    exit $stat
245bccedf53Smrg  fi
246bccedf53Smrg
2477c5f6000Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2487c5f6000Smrg  do
2497c5f6000Smrg    test -f "$tmpdepfile" && break
2507c5f6000Smrg  done
251bccedf53Smrg  if test -f "$tmpdepfile"; then
252bccedf53Smrg    # Each line is of the form `foo.o: dependent.h'.
253bccedf53Smrg    # Do two passes, one to just change these to
254bccedf53Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2557c5f6000Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
2567c5f6000Smrg    # That's a tab and a space in the [].
2577c5f6000Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
258bccedf53Smrg  else
259bccedf53Smrg    # The sourcefile does not contain any dependencies, so just
260bccedf53Smrg    # store a dummy comment line, to avoid errors with the Makefile
261bccedf53Smrg    # "include basename.Plo" scheme.
262bccedf53Smrg    echo "#dummy" > "$depfile"
263bccedf53Smrg  fi
264bccedf53Smrg  rm -f "$tmpdepfile"
265bccedf53Smrg  ;;
266bccedf53Smrg
267bccedf53Smrgicc)
268bccedf53Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
269bccedf53Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
270bccedf53Smrg  # ICC 7.0 will fill foo.d with something like
271bccedf53Smrg  #    foo.o: sub/foo.c
272bccedf53Smrg  #    foo.o: sub/foo.h
273bccedf53Smrg  # which is wrong.  We want:
274bccedf53Smrg  #    sub/foo.o: sub/foo.c
275bccedf53Smrg  #    sub/foo.o: sub/foo.h
276bccedf53Smrg  #    sub/foo.c:
277bccedf53Smrg  #    sub/foo.h:
278bccedf53Smrg  # ICC 7.1 will output
279bccedf53Smrg  #    foo.o: sub/foo.c sub/foo.h
280bccedf53Smrg  # and will wrap long lines using \ :
281bccedf53Smrg  #    foo.o: sub/foo.c ... \
282bccedf53Smrg  #     sub/foo.h ... \
283bccedf53Smrg  #     ...
284bccedf53Smrg
285bccedf53Smrg  "$@" -MD -MF "$tmpdepfile"
286bccedf53Smrg  stat=$?
287bccedf53Smrg  if test $stat -eq 0; then :
288bccedf53Smrg  else
289bccedf53Smrg    rm -f "$tmpdepfile"
290bccedf53Smrg    exit $stat
291bccedf53Smrg  fi
292bccedf53Smrg  rm -f "$depfile"
293bccedf53Smrg  # Each line is of the form `foo.o: dependent.h',
294bccedf53Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
295bccedf53Smrg  # Do two passes, one to just change these to
296bccedf53Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
297bccedf53Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
298bccedf53Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
299bccedf53Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
300bccedf53Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
301bccedf53Smrg    sed -e 's/$/ :/' >> "$depfile"
302bccedf53Smrg  rm -f "$tmpdepfile"
303bccedf53Smrg  ;;
304bccedf53Smrg
3057c5f6000Smrghp2)
3067c5f6000Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3077c5f6000Smrg  # compilers, which have integrated preprocessors.  The correct option
3087c5f6000Smrg  # to use with these is +Maked; it writes dependencies to a file named
3097c5f6000Smrg  # 'foo.d', which lands next to the object file, wherever that
3107c5f6000Smrg  # happens to be.
3117c5f6000Smrg  # Much of this is similar to the tru64 case; see comments there.
3127c5f6000Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3137c5f6000Smrg  test "x$dir" = "x$object" && dir=
3147c5f6000Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3157c5f6000Smrg  if test "$libtool" = yes; then
3167c5f6000Smrg    tmpdepfile1=$dir$base.d
3177c5f6000Smrg    tmpdepfile2=$dir.libs/$base.d
3187c5f6000Smrg    "$@" -Wc,+Maked
3197c5f6000Smrg  else
3207c5f6000Smrg    tmpdepfile1=$dir$base.d
3217c5f6000Smrg    tmpdepfile2=$dir$base.d
3227c5f6000Smrg    "$@" +Maked
3237c5f6000Smrg  fi
3247c5f6000Smrg  stat=$?
3257c5f6000Smrg  if test $stat -eq 0; then :
3267c5f6000Smrg  else
3277c5f6000Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3287c5f6000Smrg     exit $stat
3297c5f6000Smrg  fi
3307c5f6000Smrg
3317c5f6000Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3327c5f6000Smrg  do
3337c5f6000Smrg    test -f "$tmpdepfile" && break
3347c5f6000Smrg  done
3357c5f6000Smrg  if test -f "$tmpdepfile"; then
3367c5f6000Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3377c5f6000Smrg    # Add `dependent.h:' lines.
3387c5f6000Smrg    sed -ne '2,${
3397c5f6000Smrg	       s/^ *//
3407c5f6000Smrg	       s/ \\*$//
3417c5f6000Smrg	       s/$/:/
3427c5f6000Smrg	       p
3437c5f6000Smrg	     }' "$tmpdepfile" >> "$depfile"
3447c5f6000Smrg  else
3457c5f6000Smrg    echo "#dummy" > "$depfile"
3467c5f6000Smrg  fi
3477c5f6000Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3487c5f6000Smrg  ;;
3497c5f6000Smrg
350bccedf53Smrgtru64)
351bccedf53Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
352bccedf53Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
353bccedf53Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
354bccedf53Smrg   # dependencies in `foo.d' instead, so we check for that too.
355bccedf53Smrg   # Subdirectories are respected.
356bccedf53Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
357bccedf53Smrg   test "x$dir" = "x$object" && dir=
358bccedf53Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
359bccedf53Smrg
360bccedf53Smrg   if test "$libtool" = yes; then
3617c5f6000Smrg      # With Tru64 cc, shared objects can also be used to make a
3627c5f6000Smrg      # static library.  This mechanism is used in libtool 1.4 series to
3637c5f6000Smrg      # handle both shared and static libraries in a single compilation.
3647c5f6000Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3657c5f6000Smrg      #
3667c5f6000Smrg      # With libtool 1.5 this exception was removed, and libtool now
3677c5f6000Smrg      # generates 2 separate objects for the 2 libraries.  These two
3687c5f6000Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
3697c5f6000Smrg      # in $dir$base.o.d.  We have to check for both files, because
3707c5f6000Smrg      # one of the two compilations can be disabled.  We should prefer
3717c5f6000Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3727c5f6000Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
3737c5f6000Smrg      # the former would cause a distcleancheck panic.
3747c5f6000Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3757c5f6000Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3767c5f6000Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3777c5f6000Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
378bccedf53Smrg      "$@" -Wc,-MD
379bccedf53Smrg   else
3807c5f6000Smrg      tmpdepfile1=$dir$base.o.d
3817c5f6000Smrg      tmpdepfile2=$dir$base.d
3827c5f6000Smrg      tmpdepfile3=$dir$base.d
3837c5f6000Smrg      tmpdepfile4=$dir$base.d
384bccedf53Smrg      "$@" -MD
385bccedf53Smrg   fi
386bccedf53Smrg
387bccedf53Smrg   stat=$?
388bccedf53Smrg   if test $stat -eq 0; then :
389bccedf53Smrg   else
3907c5f6000Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
391bccedf53Smrg      exit $stat
392bccedf53Smrg   fi
393bccedf53Smrg
3947c5f6000Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3957c5f6000Smrg   do
3967c5f6000Smrg     test -f "$tmpdepfile" && break
3977c5f6000Smrg   done
398bccedf53Smrg   if test -f "$tmpdepfile"; then
399bccedf53Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
400bccedf53Smrg      # That's a tab and a space in the [].
401bccedf53Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
402bccedf53Smrg   else
403bccedf53Smrg      echo "#dummy" > "$depfile"
404bccedf53Smrg   fi
405bccedf53Smrg   rm -f "$tmpdepfile"
406bccedf53Smrg   ;;
407bccedf53Smrg
408bccedf53Smrg#nosideeffect)
409bccedf53Smrg  # This comment above is used by automake to tell side-effect
410bccedf53Smrg  # dependency tracking mechanisms from slower ones.
411bccedf53Smrg
412bccedf53Smrgdashmstdout)
413bccedf53Smrg  # Important note: in order to support this mode, a compiler *must*
414bccedf53Smrg  # always write the preprocessed file to stdout, regardless of -o.
415bccedf53Smrg  "$@" || exit $?
416bccedf53Smrg
417bccedf53Smrg  # Remove the call to Libtool.
418bccedf53Smrg  if test "$libtool" = yes; then
4197c5f6000Smrg    while test "X$1" != 'X--mode=compile'; do
420bccedf53Smrg      shift
421bccedf53Smrg    done
422bccedf53Smrg    shift
423bccedf53Smrg  fi
424bccedf53Smrg
425bccedf53Smrg  # Remove `-o $object'.
426bccedf53Smrg  IFS=" "
427bccedf53Smrg  for arg
428bccedf53Smrg  do
429bccedf53Smrg    case $arg in
430bccedf53Smrg    -o)
431bccedf53Smrg      shift
432bccedf53Smrg      ;;
433bccedf53Smrg    $object)
434bccedf53Smrg      shift
435bccedf53Smrg      ;;
436bccedf53Smrg    *)
437bccedf53Smrg      set fnord "$@" "$arg"
438bccedf53Smrg      shift # fnord
439bccedf53Smrg      shift # $arg
440bccedf53Smrg      ;;
441bccedf53Smrg    esac
442bccedf53Smrg  done
443bccedf53Smrg
444bccedf53Smrg  test -z "$dashmflag" && dashmflag=-M
445bccedf53Smrg  # Require at least two characters before searching for `:'
446bccedf53Smrg  # in the target name.  This is to cope with DOS-style filenames:
447bccedf53Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
448bccedf53Smrg  "$@" $dashmflag |
449bccedf53Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
450bccedf53Smrg  rm -f "$depfile"
451bccedf53Smrg  cat < "$tmpdepfile" > "$depfile"
452bccedf53Smrg  tr ' ' '
453bccedf53Smrg' < "$tmpdepfile" | \
454bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
455bccedf53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
456bccedf53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
457bccedf53Smrg  rm -f "$tmpdepfile"
458bccedf53Smrg  ;;
459bccedf53Smrg
460bccedf53SmrgdashXmstdout)
461bccedf53Smrg  # This case only exists to satisfy depend.m4.  It is never actually
462bccedf53Smrg  # run, as this mode is specially recognized in the preamble.
463bccedf53Smrg  exit 1
464bccedf53Smrg  ;;
465bccedf53Smrg
466bccedf53Smrgmakedepend)
467bccedf53Smrg  "$@" || exit $?
468bccedf53Smrg  # Remove any Libtool call
469bccedf53Smrg  if test "$libtool" = yes; then
4707c5f6000Smrg    while test "X$1" != 'X--mode=compile'; do
471bccedf53Smrg      shift
472bccedf53Smrg    done
473bccedf53Smrg    shift
474bccedf53Smrg  fi
475bccedf53Smrg  # X makedepend
476bccedf53Smrg  shift
4777c5f6000Smrg  cleared=no eat=no
4787c5f6000Smrg  for arg
4797c5f6000Smrg  do
480bccedf53Smrg    case $cleared in
481bccedf53Smrg    no)
482bccedf53Smrg      set ""; shift
483bccedf53Smrg      cleared=yes ;;
484bccedf53Smrg    esac
4857c5f6000Smrg    if test $eat = yes; then
4867c5f6000Smrg      eat=no
4877c5f6000Smrg      continue
4887c5f6000Smrg    fi
489bccedf53Smrg    case "$arg" in
490bccedf53Smrg    -D*|-I*)
491bccedf53Smrg      set fnord "$@" "$arg"; shift ;;
492bccedf53Smrg    # Strip any option that makedepend may not understand.  Remove
493bccedf53Smrg    # the object too, otherwise makedepend will parse it as a source file.
4947c5f6000Smrg    -arch)
4957c5f6000Smrg      eat=yes ;;
496bccedf53Smrg    -*|$object)
497bccedf53Smrg      ;;
498bccedf53Smrg    *)
499bccedf53Smrg      set fnord "$@" "$arg"; shift ;;
500bccedf53Smrg    esac
501bccedf53Smrg  done
5027c5f6000Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
503bccedf53Smrg  touch "$tmpdepfile"
504bccedf53Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
505bccedf53Smrg  rm -f "$depfile"
506bccedf53Smrg  cat < "$tmpdepfile" > "$depfile"
507bccedf53Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
508bccedf53Smrg' | \
509bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
510bccedf53Smrg## correctly.  Breaking it into two sed invocations is a workaround.
511bccedf53Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
512bccedf53Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
513bccedf53Smrg  ;;
514bccedf53Smrg
515bccedf53Smrgcpp)
516bccedf53Smrg  # Important note: in order to support this mode, a compiler *must*
517bccedf53Smrg  # always write the preprocessed file to stdout.
518bccedf53Smrg  "$@" || exit $?
519bccedf53Smrg
520bccedf53Smrg  # Remove the call to Libtool.
521bccedf53Smrg  if test "$libtool" = yes; then
5227c5f6000Smrg    while test "X$1" != 'X--mode=compile'; do
523bccedf53Smrg      shift
524bccedf53Smrg    done
525bccedf53Smrg    shift
526bccedf53Smrg  fi
527bccedf53Smrg
528bccedf53Smrg  # Remove `-o $object'.
529bccedf53Smrg  IFS=" "
530bccedf53Smrg  for arg
531bccedf53Smrg  do
532bccedf53Smrg    case $arg in
533bccedf53Smrg    -o)
534bccedf53Smrg      shift
535bccedf53Smrg      ;;
536bccedf53Smrg    $object)
537bccedf53Smrg      shift
538bccedf53Smrg      ;;
539bccedf53Smrg    *)
540bccedf53Smrg      set fnord "$@" "$arg"
541bccedf53Smrg      shift # fnord
542bccedf53Smrg      shift # $arg
543bccedf53Smrg      ;;
544bccedf53Smrg    esac
545bccedf53Smrg  done
546bccedf53Smrg
547bccedf53Smrg  "$@" -E |
5487c5f6000Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5497c5f6000Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
550bccedf53Smrg    sed '$ s: \\$::' > "$tmpdepfile"
551bccedf53Smrg  rm -f "$depfile"
552bccedf53Smrg  echo "$object : \\" > "$depfile"
553bccedf53Smrg  cat < "$tmpdepfile" >> "$depfile"
554bccedf53Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
555bccedf53Smrg  rm -f "$tmpdepfile"
556bccedf53Smrg  ;;
557bccedf53Smrg
558bccedf53Smrgmsvisualcpp)
559bccedf53Smrg  # Important note: in order to support this mode, a compiler *must*
5607c5f6000Smrg  # always write the preprocessed file to stdout.
561bccedf53Smrg  "$@" || exit $?
5627c5f6000Smrg
5637c5f6000Smrg  # Remove the call to Libtool.
5647c5f6000Smrg  if test "$libtool" = yes; then
5657c5f6000Smrg    while test "X$1" != 'X--mode=compile'; do
5667c5f6000Smrg      shift
5677c5f6000Smrg    done
5687c5f6000Smrg    shift
5697c5f6000Smrg  fi
5707c5f6000Smrg
571bccedf53Smrg  IFS=" "
572bccedf53Smrg  for arg
573bccedf53Smrg  do
574bccedf53Smrg    case "$arg" in
5757c5f6000Smrg    -o)
5767c5f6000Smrg      shift
5777c5f6000Smrg      ;;
5787c5f6000Smrg    $object)
5797c5f6000Smrg      shift
5807c5f6000Smrg      ;;
581bccedf53Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
582bccedf53Smrg	set fnord "$@"
583bccedf53Smrg	shift
584bccedf53Smrg	shift
585bccedf53Smrg	;;
586bccedf53Smrg    *)
587bccedf53Smrg	set fnord "$@" "$arg"
588bccedf53Smrg	shift
589bccedf53Smrg	shift
590bccedf53Smrg	;;
591bccedf53Smrg    esac
592bccedf53Smrg  done
5937c5f6000Smrg  "$@" -E 2>/dev/null |
5947c5f6000Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
595bccedf53Smrg  rm -f "$depfile"
596bccedf53Smrg  echo "$object : \\" > "$depfile"
5977c5f6000Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
598bccedf53Smrg  echo "	" >> "$depfile"
5997c5f6000Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
600bccedf53Smrg  rm -f "$tmpdepfile"
601bccedf53Smrg  ;;
602bccedf53Smrg
6037c5f6000Smrgmsvcmsys)
6047c5f6000Smrg  # This case exists only to let depend.m4 do its work.  It works by
6057c5f6000Smrg  # looking at the text of this script.  This case will never be run,
6067c5f6000Smrg  # since it is checked for above.
6077c5f6000Smrg  exit 1
6087c5f6000Smrg  ;;
6097c5f6000Smrg
610bccedf53Smrgnone)
611bccedf53Smrg  exec "$@"
612bccedf53Smrg  ;;
613bccedf53Smrg
614bccedf53Smrg*)
615bccedf53Smrg  echo "Unknown depmode $depmode" 1>&2
616bccedf53Smrg  exit 1
617bccedf53Smrg  ;;
618bccedf53Smrgesac
619bccedf53Smrg
620bccedf53Smrgexit 0
6217c5f6000Smrg
6227c5f6000Smrg# Local Variables:
6237c5f6000Smrg# mode: shell-script
6247c5f6000Smrg# sh-indentation: 2
6257c5f6000Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
6267c5f6000Smrg# time-stamp-start: "scriptversion="
6277c5f6000Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
6287c5f6000Smrg# time-stamp-time-zone: "UTC"
6297c5f6000Smrg# time-stamp-end: "; # UTC"
6307c5f6000Smrg# End:
631