depcomp revision e531b1a7
13da7aff1Smrg#! /bin/sh
23da7aff1Smrg# depcomp - compile a program generating dependencies as side-effects
3e531b1a7Smrg
4e531b1a7Smrgscriptversion=2009-04-28.21; # UTC
5e531b1a7Smrg
6e531b1a7Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7e531b1a7Smrg# Software Foundation, Inc.
83da7aff1Smrg
93da7aff1Smrg# This program is free software; you can redistribute it and/or modify
103da7aff1Smrg# it under the terms of the GNU General Public License as published by
113da7aff1Smrg# the Free Software Foundation; either version 2, or (at your option)
123da7aff1Smrg# any later version.
133da7aff1Smrg
143da7aff1Smrg# This program is distributed in the hope that it will be useful,
153da7aff1Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
163da7aff1Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
173da7aff1Smrg# GNU General Public License for more details.
183da7aff1Smrg
193da7aff1Smrg# You should have received a copy of the GNU General Public License
20e531b1a7Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
213da7aff1Smrg
223da7aff1Smrg# As a special exception to the GNU General Public License, if you
233da7aff1Smrg# distribute this file as part of a program that contains a
243da7aff1Smrg# configuration script generated by Autoconf, you may include it under
253da7aff1Smrg# the same distribution terms that you use for the rest of that program.
263da7aff1Smrg
273da7aff1Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
283da7aff1Smrg
29e531b1a7Smrgcase $1 in
30e531b1a7Smrg  '')
31e531b1a7Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32e531b1a7Smrg     exit 1;
33e531b1a7Smrg     ;;
34e531b1a7Smrg  -h | --h*)
35e531b1a7Smrg    cat <<\EOF
36e531b1a7SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
37e531b1a7Smrg
38e531b1a7SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
39e531b1a7Smrgas side-effects.
40e531b1a7Smrg
41e531b1a7SmrgEnvironment variables:
42e531b1a7Smrg  depmode     Dependency tracking mode.
43e531b1a7Smrg  source      Source file read by `PROGRAMS ARGS'.
44e531b1a7Smrg  object      Object file output by `PROGRAMS ARGS'.
45e531b1a7Smrg  DEPDIR      directory where to store dependencies.
46e531b1a7Smrg  depfile     Dependency file to output.
47e531b1a7Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
48e531b1a7Smrg  libtool     Whether libtool is used (yes/no).
49e531b1a7Smrg
50e531b1a7SmrgReport bugs to <bug-automake@gnu.org>.
51e531b1a7SmrgEOF
52e531b1a7Smrg    exit $?
53e531b1a7Smrg    ;;
54e531b1a7Smrg  -v | --v*)
55e531b1a7Smrg    echo "depcomp $scriptversion"
56e531b1a7Smrg    exit $?
57e531b1a7Smrg    ;;
58e531b1a7Smrgesac
59e531b1a7Smrg
603da7aff1Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
613da7aff1Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
623da7aff1Smrg  exit 1
633da7aff1Smrgfi
643da7aff1Smrg
65e531b1a7Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66e531b1a7Smrgdepfile=${depfile-`echo "$object" |
67e531b1a7Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
683da7aff1Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
693da7aff1Smrg
703da7aff1Smrgrm -f "$tmpdepfile"
713da7aff1Smrg
723da7aff1Smrg# Some modes work just like other modes, but use different flags.  We
733da7aff1Smrg# parameterize here, but still list the modes in the big case below,
743da7aff1Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
753da7aff1Smrg# here, because this file can only contain one case statement.
763da7aff1Smrgif test "$depmode" = hp; then
773da7aff1Smrg  # HP compiler uses -M and no extra arg.
783da7aff1Smrg  gccflag=-M
793da7aff1Smrg  depmode=gcc
803da7aff1Smrgfi
813da7aff1Smrg
823da7aff1Smrgif test "$depmode" = dashXmstdout; then
833da7aff1Smrg   # This is just like dashmstdout with a different argument.
843da7aff1Smrg   dashmflag=-xM
853da7aff1Smrg   depmode=dashmstdout
863da7aff1Smrgfi
873da7aff1Smrg
88e531b1a7Smrgcygpath_u="cygpath -u -f -"
89e531b1a7Smrgif test "$depmode" = msvcmsys; then
90e531b1a7Smrg   # This is just like msvisualcpp but w/o cygpath translation.
91e531b1a7Smrg   # Just convert the backslash-escaped backslashes to single forward
92e531b1a7Smrg   # slashes to satisfy depend.m4
93e531b1a7Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
94e531b1a7Smrg   depmode=msvisualcpp
95e531b1a7Smrgfi
96e531b1a7Smrg
973da7aff1Smrgcase "$depmode" in
983da7aff1Smrggcc3)
993da7aff1Smrg## gcc 3 implements dependency tracking that does exactly what
1003da7aff1Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
1013da7aff1Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
102e531b1a7Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103e531b1a7Smrg## the command line argument order; so add the flags where they
104e531b1a7Smrg## appear in depend2.am.  Note that the slowdown incurred here
105e531b1a7Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106e531b1a7Smrg  for arg
107e531b1a7Smrg  do
108e531b1a7Smrg    case $arg in
109e531b1a7Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110e531b1a7Smrg    *)  set fnord "$@" "$arg" ;;
111e531b1a7Smrg    esac
112e531b1a7Smrg    shift # fnord
113e531b1a7Smrg    shift # $arg
114e531b1a7Smrg  done
115e531b1a7Smrg  "$@"
1163da7aff1Smrg  stat=$?
1173da7aff1Smrg  if test $stat -eq 0; then :
1183da7aff1Smrg  else
1193da7aff1Smrg    rm -f "$tmpdepfile"
1203da7aff1Smrg    exit $stat
1213da7aff1Smrg  fi
1223da7aff1Smrg  mv "$tmpdepfile" "$depfile"
1233da7aff1Smrg  ;;
1243da7aff1Smrg
1253da7aff1Smrggcc)
1263da7aff1Smrg## There are various ways to get dependency output from gcc.  Here's
1273da7aff1Smrg## why we pick this rather obscure method:
1283da7aff1Smrg## - Don't want to use -MD because we'd like the dependencies to end
1293da7aff1Smrg##   up in a subdir.  Having to rename by hand is ugly.
1303da7aff1Smrg##   (We might end up doing this anyway to support other compilers.)
1313da7aff1Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1323da7aff1Smrg##   -MM, not -M (despite what the docs say).
1333da7aff1Smrg## - Using -M directly means running the compiler twice (even worse
1343da7aff1Smrg##   than renaming).
1353da7aff1Smrg  if test -z "$gccflag"; then
1363da7aff1Smrg    gccflag=-MD,
1373da7aff1Smrg  fi
1383da7aff1Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
1393da7aff1Smrg  stat=$?
1403da7aff1Smrg  if test $stat -eq 0; then :
1413da7aff1Smrg  else
1423da7aff1Smrg    rm -f "$tmpdepfile"
1433da7aff1Smrg    exit $stat
1443da7aff1Smrg  fi
1453da7aff1Smrg  rm -f "$depfile"
1463da7aff1Smrg  echo "$object : \\" > "$depfile"
1473da7aff1Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1483da7aff1Smrg## The second -e expression handles DOS-style file names with drive letters.
1493da7aff1Smrg  sed -e 's/^[^:]*: / /' \
1503da7aff1Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1513da7aff1Smrg## This next piece of magic avoids the `deleted header file' problem.
1523da7aff1Smrg## The problem is that when a header file which appears in a .P file
1533da7aff1Smrg## is deleted, the dependency causes make to die (because there is
1543da7aff1Smrg## typically no way to rebuild the header).  We avoid this by adding
1553da7aff1Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1563da7aff1Smrg## this for us directly.
1573da7aff1Smrg  tr ' ' '
1583da7aff1Smrg' < "$tmpdepfile" |
1593da7aff1Smrg## Some versions of gcc put a space before the `:'.  On the theory
1603da7aff1Smrg## that the space means something, we add a space to the output as
1613da7aff1Smrg## well.
1623da7aff1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
1633da7aff1Smrg## correctly.  Breaking it into two sed invocations is a workaround.
1643da7aff1Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1653da7aff1Smrg  rm -f "$tmpdepfile"
1663da7aff1Smrg  ;;
1673da7aff1Smrg
1683da7aff1Smrghp)
1693da7aff1Smrg  # This case exists only to let depend.m4 do its work.  It works by
1703da7aff1Smrg  # looking at the text of this script.  This case will never be run,
1713da7aff1Smrg  # since it is checked for above.
1723da7aff1Smrg  exit 1
1733da7aff1Smrg  ;;
1743da7aff1Smrg
1753da7aff1Smrgsgi)
1763da7aff1Smrg  if test "$libtool" = yes; then
1773da7aff1Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1783da7aff1Smrg  else
1793da7aff1Smrg    "$@" -MDupdate "$tmpdepfile"
1803da7aff1Smrg  fi
1813da7aff1Smrg  stat=$?
1823da7aff1Smrg  if test $stat -eq 0; then :
1833da7aff1Smrg  else
1843da7aff1Smrg    rm -f "$tmpdepfile"
1853da7aff1Smrg    exit $stat
1863da7aff1Smrg  fi
1873da7aff1Smrg  rm -f "$depfile"
1883da7aff1Smrg
1893da7aff1Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1903da7aff1Smrg    echo "$object : \\" > "$depfile"
1913da7aff1Smrg
1923da7aff1Smrg    # Clip off the initial element (the dependent).  Don't try to be
1933da7aff1Smrg    # clever and replace this with sed code, as IRIX sed won't handle
1943da7aff1Smrg    # lines with more than a fixed number of characters (4096 in
1953da7aff1Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1963da7aff1Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
1973da7aff1Smrg    # dependency line.
1983da7aff1Smrg    tr ' ' '
1993da7aff1Smrg' < "$tmpdepfile" \
2003da7aff1Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
2013da7aff1Smrg    tr '
202e531b1a7Smrg' ' ' >> "$depfile"
203e531b1a7Smrg    echo >> "$depfile"
2043da7aff1Smrg
2053da7aff1Smrg    # The second pass generates a dummy entry for each header file.
2063da7aff1Smrg    tr ' ' '
2073da7aff1Smrg' < "$tmpdepfile" \
2083da7aff1Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209e531b1a7Smrg   >> "$depfile"
2103da7aff1Smrg  else
2113da7aff1Smrg    # The sourcefile does not contain any dependencies, so just
2123da7aff1Smrg    # store a dummy comment line, to avoid errors with the Makefile
2133da7aff1Smrg    # "include basename.Plo" scheme.
2143da7aff1Smrg    echo "#dummy" > "$depfile"
2153da7aff1Smrg  fi
2163da7aff1Smrg  rm -f "$tmpdepfile"
2173da7aff1Smrg  ;;
2183da7aff1Smrg
2193da7aff1Smrgaix)
2203da7aff1Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
2213da7aff1Smrg  # in a .u file.  In older versions, this file always lives in the
2223da7aff1Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2233da7aff1Smrg  # start of each line; $object doesn't have directory information.
2243da7aff1Smrg  # Version 6 uses the directory in both cases.
225e531b1a7Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226e531b1a7Smrg  test "x$dir" = "x$object" && dir=
227e531b1a7Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2283da7aff1Smrg  if test "$libtool" = yes; then
229e531b1a7Smrg    tmpdepfile1=$dir$base.u
230e531b1a7Smrg    tmpdepfile2=$base.u
231e531b1a7Smrg    tmpdepfile3=$dir.libs/$base.u
2323da7aff1Smrg    "$@" -Wc,-M
2333da7aff1Smrg  else
234e531b1a7Smrg    tmpdepfile1=$dir$base.u
235e531b1a7Smrg    tmpdepfile2=$dir$base.u
236e531b1a7Smrg    tmpdepfile3=$dir$base.u
2373da7aff1Smrg    "$@" -M
2383da7aff1Smrg  fi
2393da7aff1Smrg  stat=$?
2403da7aff1Smrg
2413da7aff1Smrg  if test $stat -eq 0; then :
2423da7aff1Smrg  else
243e531b1a7Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2443da7aff1Smrg    exit $stat
2453da7aff1Smrg  fi
2463da7aff1Smrg
247e531b1a7Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248e531b1a7Smrg  do
249e531b1a7Smrg    test -f "$tmpdepfile" && break
250e531b1a7Smrg  done
2513da7aff1Smrg  if test -f "$tmpdepfile"; then
2523da7aff1Smrg    # Each line is of the form `foo.o: dependent.h'.
2533da7aff1Smrg    # Do two passes, one to just change these to
2543da7aff1Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255e531b1a7Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256e531b1a7Smrg    # That's a tab and a space in the [].
257e531b1a7Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2583da7aff1Smrg  else
2593da7aff1Smrg    # The sourcefile does not contain any dependencies, so just
2603da7aff1Smrg    # store a dummy comment line, to avoid errors with the Makefile
2613da7aff1Smrg    # "include basename.Plo" scheme.
2623da7aff1Smrg    echo "#dummy" > "$depfile"
2633da7aff1Smrg  fi
2643da7aff1Smrg  rm -f "$tmpdepfile"
2653da7aff1Smrg  ;;
2663da7aff1Smrg
2673da7aff1Smrgicc)
2683da7aff1Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
2693da7aff1Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2703da7aff1Smrg  # ICC 7.0 will fill foo.d with something like
2713da7aff1Smrg  #    foo.o: sub/foo.c
2723da7aff1Smrg  #    foo.o: sub/foo.h
2733da7aff1Smrg  # which is wrong.  We want:
2743da7aff1Smrg  #    sub/foo.o: sub/foo.c
2753da7aff1Smrg  #    sub/foo.o: sub/foo.h
2763da7aff1Smrg  #    sub/foo.c:
2773da7aff1Smrg  #    sub/foo.h:
2783da7aff1Smrg  # ICC 7.1 will output
2793da7aff1Smrg  #    foo.o: sub/foo.c sub/foo.h
2803da7aff1Smrg  # and will wrap long lines using \ :
2813da7aff1Smrg  #    foo.o: sub/foo.c ... \
2823da7aff1Smrg  #     sub/foo.h ... \
2833da7aff1Smrg  #     ...
2843da7aff1Smrg
2853da7aff1Smrg  "$@" -MD -MF "$tmpdepfile"
2863da7aff1Smrg  stat=$?
2873da7aff1Smrg  if test $stat -eq 0; then :
2883da7aff1Smrg  else
2893da7aff1Smrg    rm -f "$tmpdepfile"
2903da7aff1Smrg    exit $stat
2913da7aff1Smrg  fi
2923da7aff1Smrg  rm -f "$depfile"
2933da7aff1Smrg  # Each line is of the form `foo.o: dependent.h',
2943da7aff1Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2953da7aff1Smrg  # Do two passes, one to just change these to
2963da7aff1Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2973da7aff1Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2983da7aff1Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2993da7aff1Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
3003da7aff1Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
3013da7aff1Smrg    sed -e 's/$/ :/' >> "$depfile"
3023da7aff1Smrg  rm -f "$tmpdepfile"
3033da7aff1Smrg  ;;
3043da7aff1Smrg
305e531b1a7Smrghp2)
306e531b1a7Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307e531b1a7Smrg  # compilers, which have integrated preprocessors.  The correct option
308e531b1a7Smrg  # to use with these is +Maked; it writes dependencies to a file named
309e531b1a7Smrg  # 'foo.d', which lands next to the object file, wherever that
310e531b1a7Smrg  # happens to be.
311e531b1a7Smrg  # Much of this is similar to the tru64 case; see comments there.
312e531b1a7Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313e531b1a7Smrg  test "x$dir" = "x$object" && dir=
314e531b1a7Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315e531b1a7Smrg  if test "$libtool" = yes; then
316e531b1a7Smrg    tmpdepfile1=$dir$base.d
317e531b1a7Smrg    tmpdepfile2=$dir.libs/$base.d
318e531b1a7Smrg    "$@" -Wc,+Maked
319e531b1a7Smrg  else
320e531b1a7Smrg    tmpdepfile1=$dir$base.d
321e531b1a7Smrg    tmpdepfile2=$dir$base.d
322e531b1a7Smrg    "$@" +Maked
323e531b1a7Smrg  fi
324e531b1a7Smrg  stat=$?
325e531b1a7Smrg  if test $stat -eq 0; then :
326e531b1a7Smrg  else
327e531b1a7Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328e531b1a7Smrg     exit $stat
329e531b1a7Smrg  fi
330e531b1a7Smrg
331e531b1a7Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332e531b1a7Smrg  do
333e531b1a7Smrg    test -f "$tmpdepfile" && break
334e531b1a7Smrg  done
335e531b1a7Smrg  if test -f "$tmpdepfile"; then
336e531b1a7Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337e531b1a7Smrg    # Add `dependent.h:' lines.
338e531b1a7Smrg    sed -ne '2,${
339e531b1a7Smrg	       s/^ *//
340e531b1a7Smrg	       s/ \\*$//
341e531b1a7Smrg	       s/$/:/
342e531b1a7Smrg	       p
343e531b1a7Smrg	     }' "$tmpdepfile" >> "$depfile"
344e531b1a7Smrg  else
345e531b1a7Smrg    echo "#dummy" > "$depfile"
346e531b1a7Smrg  fi
347e531b1a7Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348e531b1a7Smrg  ;;
349e531b1a7Smrg
3503da7aff1Smrgtru64)
3513da7aff1Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3523da7aff1Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3533da7aff1Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3543da7aff1Smrg   # dependencies in `foo.d' instead, so we check for that too.
3553da7aff1Smrg   # Subdirectories are respected.
3563da7aff1Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3573da7aff1Smrg   test "x$dir" = "x$object" && dir=
3583da7aff1Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3593da7aff1Smrg
3603da7aff1Smrg   if test "$libtool" = yes; then
361e531b1a7Smrg      # With Tru64 cc, shared objects can also be used to make a
362e531b1a7Smrg      # static library.  This mechanism is used in libtool 1.4 series to
363e531b1a7Smrg      # handle both shared and static libraries in a single compilation.
364e531b1a7Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
365e531b1a7Smrg      #
366e531b1a7Smrg      # With libtool 1.5 this exception was removed, and libtool now
367e531b1a7Smrg      # generates 2 separate objects for the 2 libraries.  These two
368e531b1a7Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
369e531b1a7Smrg      # in $dir$base.o.d.  We have to check for both files, because
370e531b1a7Smrg      # one of the two compilations can be disabled.  We should prefer
371e531b1a7Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
372e531b1a7Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
373e531b1a7Smrg      # the former would cause a distcleancheck panic.
374e531b1a7Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
375e531b1a7Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
376e531b1a7Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
377e531b1a7Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3783da7aff1Smrg      "$@" -Wc,-MD
3793da7aff1Smrg   else
380e531b1a7Smrg      tmpdepfile1=$dir$base.o.d
381e531b1a7Smrg      tmpdepfile2=$dir$base.d
382e531b1a7Smrg      tmpdepfile3=$dir$base.d
383e531b1a7Smrg      tmpdepfile4=$dir$base.d
3843da7aff1Smrg      "$@" -MD
3853da7aff1Smrg   fi
3863da7aff1Smrg
3873da7aff1Smrg   stat=$?
3883da7aff1Smrg   if test $stat -eq 0; then :
3893da7aff1Smrg   else
390e531b1a7Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3913da7aff1Smrg      exit $stat
3923da7aff1Smrg   fi
3933da7aff1Smrg
394e531b1a7Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
395e531b1a7Smrg   do
396e531b1a7Smrg     test -f "$tmpdepfile" && break
397e531b1a7Smrg   done
3983da7aff1Smrg   if test -f "$tmpdepfile"; then
3993da7aff1Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4003da7aff1Smrg      # That's a tab and a space in the [].
4013da7aff1Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4023da7aff1Smrg   else
4033da7aff1Smrg      echo "#dummy" > "$depfile"
4043da7aff1Smrg   fi
4053da7aff1Smrg   rm -f "$tmpdepfile"
4063da7aff1Smrg   ;;
4073da7aff1Smrg
4083da7aff1Smrg#nosideeffect)
4093da7aff1Smrg  # This comment above is used by automake to tell side-effect
4103da7aff1Smrg  # dependency tracking mechanisms from slower ones.
4113da7aff1Smrg
4123da7aff1Smrgdashmstdout)
4133da7aff1Smrg  # Important note: in order to support this mode, a compiler *must*
4143da7aff1Smrg  # always write the preprocessed file to stdout, regardless of -o.
4153da7aff1Smrg  "$@" || exit $?
4163da7aff1Smrg
4173da7aff1Smrg  # Remove the call to Libtool.
4183da7aff1Smrg  if test "$libtool" = yes; then
419e531b1a7Smrg    while test "X$1" != 'X--mode=compile'; do
4203da7aff1Smrg      shift
4213da7aff1Smrg    done
4223da7aff1Smrg    shift
4233da7aff1Smrg  fi
4243da7aff1Smrg
4253da7aff1Smrg  # Remove `-o $object'.
4263da7aff1Smrg  IFS=" "
4273da7aff1Smrg  for arg
4283da7aff1Smrg  do
4293da7aff1Smrg    case $arg in
4303da7aff1Smrg    -o)
4313da7aff1Smrg      shift
4323da7aff1Smrg      ;;
4333da7aff1Smrg    $object)
4343da7aff1Smrg      shift
4353da7aff1Smrg      ;;
4363da7aff1Smrg    *)
4373da7aff1Smrg      set fnord "$@" "$arg"
4383da7aff1Smrg      shift # fnord
4393da7aff1Smrg      shift # $arg
4403da7aff1Smrg      ;;
4413da7aff1Smrg    esac
4423da7aff1Smrg  done
4433da7aff1Smrg
4443da7aff1Smrg  test -z "$dashmflag" && dashmflag=-M
4453da7aff1Smrg  # Require at least two characters before searching for `:'
4463da7aff1Smrg  # in the target name.  This is to cope with DOS-style filenames:
4473da7aff1Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4483da7aff1Smrg  "$@" $dashmflag |
4493da7aff1Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4503da7aff1Smrg  rm -f "$depfile"
4513da7aff1Smrg  cat < "$tmpdepfile" > "$depfile"
4523da7aff1Smrg  tr ' ' '
4533da7aff1Smrg' < "$tmpdepfile" | \
4543da7aff1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
4553da7aff1Smrg## correctly.  Breaking it into two sed invocations is a workaround.
4563da7aff1Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4573da7aff1Smrg  rm -f "$tmpdepfile"
4583da7aff1Smrg  ;;
4593da7aff1Smrg
4603da7aff1SmrgdashXmstdout)
4613da7aff1Smrg  # This case only exists to satisfy depend.m4.  It is never actually
4623da7aff1Smrg  # run, as this mode is specially recognized in the preamble.
4633da7aff1Smrg  exit 1
4643da7aff1Smrg  ;;
4653da7aff1Smrg
4663da7aff1Smrgmakedepend)
4673da7aff1Smrg  "$@" || exit $?
4683da7aff1Smrg  # Remove any Libtool call
4693da7aff1Smrg  if test "$libtool" = yes; then
470e531b1a7Smrg    while test "X$1" != 'X--mode=compile'; do
4713da7aff1Smrg      shift
4723da7aff1Smrg    done
4733da7aff1Smrg    shift
4743da7aff1Smrg  fi
4753da7aff1Smrg  # X makedepend
4763da7aff1Smrg  shift
477e531b1a7Smrg  cleared=no eat=no
478e531b1a7Smrg  for arg
479e531b1a7Smrg  do
4803da7aff1Smrg    case $cleared in
4813da7aff1Smrg    no)
4823da7aff1Smrg      set ""; shift
4833da7aff1Smrg      cleared=yes ;;
4843da7aff1Smrg    esac
485e531b1a7Smrg    if test $eat = yes; then
486e531b1a7Smrg      eat=no
487e531b1a7Smrg      continue
488e531b1a7Smrg    fi
4893da7aff1Smrg    case "$arg" in
4903da7aff1Smrg    -D*|-I*)
4913da7aff1Smrg      set fnord "$@" "$arg"; shift ;;
4923da7aff1Smrg    # Strip any option that makedepend may not understand.  Remove
4933da7aff1Smrg    # the object too, otherwise makedepend will parse it as a source file.
494e531b1a7Smrg    -arch)
495e531b1a7Smrg      eat=yes ;;
4963da7aff1Smrg    -*|$object)
4973da7aff1Smrg      ;;
4983da7aff1Smrg    *)
4993da7aff1Smrg      set fnord "$@" "$arg"; shift ;;
5003da7aff1Smrg    esac
5013da7aff1Smrg  done
502e531b1a7Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
5033da7aff1Smrg  touch "$tmpdepfile"
5043da7aff1Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
5053da7aff1Smrg  rm -f "$depfile"
5063da7aff1Smrg  cat < "$tmpdepfile" > "$depfile"
5073da7aff1Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
5083da7aff1Smrg' | \
5093da7aff1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
5103da7aff1Smrg## correctly.  Breaking it into two sed invocations is a workaround.
5113da7aff1Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
5123da7aff1Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
5133da7aff1Smrg  ;;
5143da7aff1Smrg
5153da7aff1Smrgcpp)
5163da7aff1Smrg  # Important note: in order to support this mode, a compiler *must*
5173da7aff1Smrg  # always write the preprocessed file to stdout.
5183da7aff1Smrg  "$@" || exit $?
5193da7aff1Smrg
5203da7aff1Smrg  # Remove the call to Libtool.
5213da7aff1Smrg  if test "$libtool" = yes; then
522e531b1a7Smrg    while test "X$1" != 'X--mode=compile'; do
5233da7aff1Smrg      shift
5243da7aff1Smrg    done
5253da7aff1Smrg    shift
5263da7aff1Smrg  fi
5273da7aff1Smrg
5283da7aff1Smrg  # Remove `-o $object'.
5293da7aff1Smrg  IFS=" "
5303da7aff1Smrg  for arg
5313da7aff1Smrg  do
5323da7aff1Smrg    case $arg in
5333da7aff1Smrg    -o)
5343da7aff1Smrg      shift
5353da7aff1Smrg      ;;
5363da7aff1Smrg    $object)
5373da7aff1Smrg      shift
5383da7aff1Smrg      ;;
5393da7aff1Smrg    *)
5403da7aff1Smrg      set fnord "$@" "$arg"
5413da7aff1Smrg      shift # fnord
5423da7aff1Smrg      shift # $arg
5433da7aff1Smrg      ;;
5443da7aff1Smrg    esac
5453da7aff1Smrg  done
5463da7aff1Smrg
5473da7aff1Smrg  "$@" -E |
548e531b1a7Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
549e531b1a7Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5503da7aff1Smrg    sed '$ s: \\$::' > "$tmpdepfile"
5513da7aff1Smrg  rm -f "$depfile"
5523da7aff1Smrg  echo "$object : \\" > "$depfile"
5533da7aff1Smrg  cat < "$tmpdepfile" >> "$depfile"
5543da7aff1Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5553da7aff1Smrg  rm -f "$tmpdepfile"
5563da7aff1Smrg  ;;
5573da7aff1Smrg
5583da7aff1Smrgmsvisualcpp)
5593da7aff1Smrg  # Important note: in order to support this mode, a compiler *must*
560e531b1a7Smrg  # always write the preprocessed file to stdout.
5613da7aff1Smrg  "$@" || exit $?
562e531b1a7Smrg
563e531b1a7Smrg  # Remove the call to Libtool.
564e531b1a7Smrg  if test "$libtool" = yes; then
565e531b1a7Smrg    while test "X$1" != 'X--mode=compile'; do
566e531b1a7Smrg      shift
567e531b1a7Smrg    done
568e531b1a7Smrg    shift
569e531b1a7Smrg  fi
570e531b1a7Smrg
5713da7aff1Smrg  IFS=" "
5723da7aff1Smrg  for arg
5733da7aff1Smrg  do
5743da7aff1Smrg    case "$arg" in
575e531b1a7Smrg    -o)
576e531b1a7Smrg      shift
577e531b1a7Smrg      ;;
578e531b1a7Smrg    $object)
579e531b1a7Smrg      shift
580e531b1a7Smrg      ;;
5813da7aff1Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5823da7aff1Smrg	set fnord "$@"
5833da7aff1Smrg	shift
5843da7aff1Smrg	shift
5853da7aff1Smrg	;;
5863da7aff1Smrg    *)
5873da7aff1Smrg	set fnord "$@" "$arg"
5883da7aff1Smrg	shift
5893da7aff1Smrg	shift
5903da7aff1Smrg	;;
5913da7aff1Smrg    esac
5923da7aff1Smrg  done
593e531b1a7Smrg  "$@" -E 2>/dev/null |
594e531b1a7Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
5953da7aff1Smrg  rm -f "$depfile"
5963da7aff1Smrg  echo "$object : \\" > "$depfile"
597e531b1a7Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5983da7aff1Smrg  echo "	" >> "$depfile"
599e531b1a7Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
6003da7aff1Smrg  rm -f "$tmpdepfile"
6013da7aff1Smrg  ;;
6023da7aff1Smrg
603e531b1a7Smrgmsvcmsys)
604e531b1a7Smrg  # This case exists only to let depend.m4 do its work.  It works by
605e531b1a7Smrg  # looking at the text of this script.  This case will never be run,
606e531b1a7Smrg  # since it is checked for above.
607e531b1a7Smrg  exit 1
608e531b1a7Smrg  ;;
609e531b1a7Smrg
6103da7aff1Smrgnone)
6113da7aff1Smrg  exec "$@"
6123da7aff1Smrg  ;;
6133da7aff1Smrg
6143da7aff1Smrg*)
6153da7aff1Smrg  echo "Unknown depmode $depmode" 1>&2
6163da7aff1Smrg  exit 1
6173da7aff1Smrg  ;;
6183da7aff1Smrgesac
6193da7aff1Smrg
6203da7aff1Smrgexit 0
621e531b1a7Smrg
622e531b1a7Smrg# Local Variables:
623e531b1a7Smrg# mode: shell-script
624e531b1a7Smrg# sh-indentation: 2
625e531b1a7Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
626e531b1a7Smrg# time-stamp-start: "scriptversion="
627e531b1a7Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
628e531b1a7Smrg# time-stamp-time-zone: "UTC"
629e531b1a7Smrg# time-stamp-end: "; # UTC"
630e531b1a7Smrg# End:
631