depcomp revision 86bbecbe
153354cdbSmrg#! /bin/sh
253354cdbSmrg# depcomp - compile a program generating dependencies as side-effects
353354cdbSmrg
486bbecbeSmrgscriptversion=2009-04-28.21; # UTC
553354cdbSmrg
686bbecbeSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
786bbecbeSmrg# Software Foundation, Inc.
853354cdbSmrg
953354cdbSmrg# This program is free software; you can redistribute it and/or modify
1053354cdbSmrg# it under the terms of the GNU General Public License as published by
1153354cdbSmrg# the Free Software Foundation; either version 2, or (at your option)
1253354cdbSmrg# any later version.
1353354cdbSmrg
1453354cdbSmrg# This program is distributed in the hope that it will be useful,
1553354cdbSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1653354cdbSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1753354cdbSmrg# GNU General Public License for more details.
1853354cdbSmrg
1953354cdbSmrg# You should have received a copy of the GNU General Public License
2086bbecbeSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2153354cdbSmrg
2253354cdbSmrg# As a special exception to the GNU General Public License, if you
2353354cdbSmrg# distribute this file as part of a program that contains a
2453354cdbSmrg# configuration script generated by Autoconf, you may include it under
2553354cdbSmrg# the same distribution terms that you use for the rest of that program.
2653354cdbSmrg
2753354cdbSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2853354cdbSmrg
2953354cdbSmrgcase $1 in
3053354cdbSmrg  '')
3153354cdbSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3253354cdbSmrg     exit 1;
3353354cdbSmrg     ;;
3453354cdbSmrg  -h | --h*)
3553354cdbSmrg    cat <<\EOF
3653354cdbSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3753354cdbSmrg
3853354cdbSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
3953354cdbSmrgas side-effects.
4053354cdbSmrg
4153354cdbSmrgEnvironment variables:
4253354cdbSmrg  depmode     Dependency tracking mode.
4353354cdbSmrg  source      Source file read by `PROGRAMS ARGS'.
4453354cdbSmrg  object      Object file output by `PROGRAMS ARGS'.
4553354cdbSmrg  DEPDIR      directory where to store dependencies.
4653354cdbSmrg  depfile     Dependency file to output.
4753354cdbSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
4853354cdbSmrg  libtool     Whether libtool is used (yes/no).
4953354cdbSmrg
5053354cdbSmrgReport bugs to <bug-automake@gnu.org>.
5153354cdbSmrgEOF
5253354cdbSmrg    exit $?
5353354cdbSmrg    ;;
5453354cdbSmrg  -v | --v*)
5553354cdbSmrg    echo "depcomp $scriptversion"
5653354cdbSmrg    exit $?
5753354cdbSmrg    ;;
5853354cdbSmrgesac
5953354cdbSmrg
6053354cdbSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6153354cdbSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6253354cdbSmrg  exit 1
6353354cdbSmrgfi
6453354cdbSmrg
6553354cdbSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6653354cdbSmrgdepfile=${depfile-`echo "$object" |
6753354cdbSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6853354cdbSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
6953354cdbSmrg
7053354cdbSmrgrm -f "$tmpdepfile"
7153354cdbSmrg
7253354cdbSmrg# Some modes work just like other modes, but use different flags.  We
7353354cdbSmrg# parameterize here, but still list the modes in the big case below,
7453354cdbSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7553354cdbSmrg# here, because this file can only contain one case statement.
7653354cdbSmrgif test "$depmode" = hp; then
7753354cdbSmrg  # HP compiler uses -M and no extra arg.
7853354cdbSmrg  gccflag=-M
7953354cdbSmrg  depmode=gcc
8053354cdbSmrgfi
8153354cdbSmrg
8253354cdbSmrgif test "$depmode" = dashXmstdout; then
8353354cdbSmrg   # This is just like dashmstdout with a different argument.
8453354cdbSmrg   dashmflag=-xM
8553354cdbSmrg   depmode=dashmstdout
8653354cdbSmrgfi
8753354cdbSmrg
8886bbecbeSmrgcygpath_u="cygpath -u -f -"
8986bbecbeSmrgif test "$depmode" = msvcmsys; then
9086bbecbeSmrg   # This is just like msvisualcpp but w/o cygpath translation.
9186bbecbeSmrg   # Just convert the backslash-escaped backslashes to single forward
9286bbecbeSmrg   # slashes to satisfy depend.m4
9386bbecbeSmrg   cygpath_u="sed s,\\\\\\\\,/,g"
9486bbecbeSmrg   depmode=msvisualcpp
9586bbecbeSmrgfi
9686bbecbeSmrg
9753354cdbSmrgcase "$depmode" in
9853354cdbSmrggcc3)
9953354cdbSmrg## gcc 3 implements dependency tracking that does exactly what
10053354cdbSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
10153354cdbSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
10253354cdbSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
10353354cdbSmrg## the command line argument order; so add the flags where they
10453354cdbSmrg## appear in depend2.am.  Note that the slowdown incurred here
10553354cdbSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
10653354cdbSmrg  for arg
10753354cdbSmrg  do
10853354cdbSmrg    case $arg in
10953354cdbSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
11053354cdbSmrg    *)  set fnord "$@" "$arg" ;;
11153354cdbSmrg    esac
11253354cdbSmrg    shift # fnord
11353354cdbSmrg    shift # $arg
11453354cdbSmrg  done
11553354cdbSmrg  "$@"
11653354cdbSmrg  stat=$?
11753354cdbSmrg  if test $stat -eq 0; then :
11853354cdbSmrg  else
11953354cdbSmrg    rm -f "$tmpdepfile"
12053354cdbSmrg    exit $stat
12153354cdbSmrg  fi
12253354cdbSmrg  mv "$tmpdepfile" "$depfile"
12353354cdbSmrg  ;;
12453354cdbSmrg
12553354cdbSmrggcc)
12653354cdbSmrg## There are various ways to get dependency output from gcc.  Here's
12753354cdbSmrg## why we pick this rather obscure method:
12853354cdbSmrg## - Don't want to use -MD because we'd like the dependencies to end
12953354cdbSmrg##   up in a subdir.  Having to rename by hand is ugly.
13053354cdbSmrg##   (We might end up doing this anyway to support other compilers.)
13153354cdbSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
13253354cdbSmrg##   -MM, not -M (despite what the docs say).
13353354cdbSmrg## - Using -M directly means running the compiler twice (even worse
13453354cdbSmrg##   than renaming).
13553354cdbSmrg  if test -z "$gccflag"; then
13653354cdbSmrg    gccflag=-MD,
13753354cdbSmrg  fi
13853354cdbSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
13953354cdbSmrg  stat=$?
14053354cdbSmrg  if test $stat -eq 0; then :
14153354cdbSmrg  else
14253354cdbSmrg    rm -f "$tmpdepfile"
14353354cdbSmrg    exit $stat
14453354cdbSmrg  fi
14553354cdbSmrg  rm -f "$depfile"
14653354cdbSmrg  echo "$object : \\" > "$depfile"
14753354cdbSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14853354cdbSmrg## The second -e expression handles DOS-style file names with drive letters.
14953354cdbSmrg  sed -e 's/^[^:]*: / /' \
15053354cdbSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
15153354cdbSmrg## This next piece of magic avoids the `deleted header file' problem.
15253354cdbSmrg## The problem is that when a header file which appears in a .P file
15353354cdbSmrg## is deleted, the dependency causes make to die (because there is
15453354cdbSmrg## typically no way to rebuild the header).  We avoid this by adding
15553354cdbSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
15653354cdbSmrg## this for us directly.
15753354cdbSmrg  tr ' ' '
15853354cdbSmrg' < "$tmpdepfile" |
15953354cdbSmrg## Some versions of gcc put a space before the `:'.  On the theory
16053354cdbSmrg## that the space means something, we add a space to the output as
16153354cdbSmrg## well.
16253354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
16353354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
16453354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
16553354cdbSmrg  rm -f "$tmpdepfile"
16653354cdbSmrg  ;;
16753354cdbSmrg
16853354cdbSmrghp)
16953354cdbSmrg  # This case exists only to let depend.m4 do its work.  It works by
17053354cdbSmrg  # looking at the text of this script.  This case will never be run,
17153354cdbSmrg  # since it is checked for above.
17253354cdbSmrg  exit 1
17353354cdbSmrg  ;;
17453354cdbSmrg
17553354cdbSmrgsgi)
17653354cdbSmrg  if test "$libtool" = yes; then
17753354cdbSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
17853354cdbSmrg  else
17953354cdbSmrg    "$@" -MDupdate "$tmpdepfile"
18053354cdbSmrg  fi
18153354cdbSmrg  stat=$?
18253354cdbSmrg  if test $stat -eq 0; then :
18353354cdbSmrg  else
18453354cdbSmrg    rm -f "$tmpdepfile"
18553354cdbSmrg    exit $stat
18653354cdbSmrg  fi
18753354cdbSmrg  rm -f "$depfile"
18853354cdbSmrg
18953354cdbSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
19053354cdbSmrg    echo "$object : \\" > "$depfile"
19153354cdbSmrg
19253354cdbSmrg    # Clip off the initial element (the dependent).  Don't try to be
19353354cdbSmrg    # clever and replace this with sed code, as IRIX sed won't handle
19453354cdbSmrg    # lines with more than a fixed number of characters (4096 in
19553354cdbSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
19653354cdbSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
19753354cdbSmrg    # dependency line.
19853354cdbSmrg    tr ' ' '
19953354cdbSmrg' < "$tmpdepfile" \
20053354cdbSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
20153354cdbSmrg    tr '
20286bbecbeSmrg' ' ' >> "$depfile"
20386bbecbeSmrg    echo >> "$depfile"
20453354cdbSmrg
20553354cdbSmrg    # The second pass generates a dummy entry for each header file.
20653354cdbSmrg    tr ' ' '
20753354cdbSmrg' < "$tmpdepfile" \
20853354cdbSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20986bbecbeSmrg   >> "$depfile"
21053354cdbSmrg  else
21153354cdbSmrg    # The sourcefile does not contain any dependencies, so just
21253354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
21353354cdbSmrg    # "include basename.Plo" scheme.
21453354cdbSmrg    echo "#dummy" > "$depfile"
21553354cdbSmrg  fi
21653354cdbSmrg  rm -f "$tmpdepfile"
21753354cdbSmrg  ;;
21853354cdbSmrg
21953354cdbSmrgaix)
22053354cdbSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
22153354cdbSmrg  # in a .u file.  In older versions, this file always lives in the
22253354cdbSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
22353354cdbSmrg  # start of each line; $object doesn't have directory information.
22453354cdbSmrg  # Version 6 uses the directory in both cases.
22586bbecbeSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
22686bbecbeSmrg  test "x$dir" = "x$object" && dir=
22786bbecbeSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
22853354cdbSmrg  if test "$libtool" = yes; then
22986bbecbeSmrg    tmpdepfile1=$dir$base.u
23086bbecbeSmrg    tmpdepfile2=$base.u
23186bbecbeSmrg    tmpdepfile3=$dir.libs/$base.u
23253354cdbSmrg    "$@" -Wc,-M
23353354cdbSmrg  else
23486bbecbeSmrg    tmpdepfile1=$dir$base.u
23586bbecbeSmrg    tmpdepfile2=$dir$base.u
23686bbecbeSmrg    tmpdepfile3=$dir$base.u
23753354cdbSmrg    "$@" -M
23853354cdbSmrg  fi
23953354cdbSmrg  stat=$?
24053354cdbSmrg
24153354cdbSmrg  if test $stat -eq 0; then :
24253354cdbSmrg  else
24386bbecbeSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24453354cdbSmrg    exit $stat
24553354cdbSmrg  fi
24653354cdbSmrg
24786bbecbeSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24886bbecbeSmrg  do
24986bbecbeSmrg    test -f "$tmpdepfile" && break
25086bbecbeSmrg  done
25153354cdbSmrg  if test -f "$tmpdepfile"; then
25253354cdbSmrg    # Each line is of the form `foo.o: dependent.h'.
25353354cdbSmrg    # Do two passes, one to just change these to
25453354cdbSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
25586bbecbeSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
25686bbecbeSmrg    # That's a tab and a space in the [].
25786bbecbeSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
25853354cdbSmrg  else
25953354cdbSmrg    # The sourcefile does not contain any dependencies, so just
26053354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
26153354cdbSmrg    # "include basename.Plo" scheme.
26253354cdbSmrg    echo "#dummy" > "$depfile"
26353354cdbSmrg  fi
26453354cdbSmrg  rm -f "$tmpdepfile"
26553354cdbSmrg  ;;
26653354cdbSmrg
26753354cdbSmrgicc)
26853354cdbSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
26953354cdbSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
27053354cdbSmrg  # ICC 7.0 will fill foo.d with something like
27153354cdbSmrg  #    foo.o: sub/foo.c
27253354cdbSmrg  #    foo.o: sub/foo.h
27353354cdbSmrg  # which is wrong.  We want:
27453354cdbSmrg  #    sub/foo.o: sub/foo.c
27553354cdbSmrg  #    sub/foo.o: sub/foo.h
27653354cdbSmrg  #    sub/foo.c:
27753354cdbSmrg  #    sub/foo.h:
27853354cdbSmrg  # ICC 7.1 will output
27953354cdbSmrg  #    foo.o: sub/foo.c sub/foo.h
28053354cdbSmrg  # and will wrap long lines using \ :
28153354cdbSmrg  #    foo.o: sub/foo.c ... \
28253354cdbSmrg  #     sub/foo.h ... \
28353354cdbSmrg  #     ...
28453354cdbSmrg
28553354cdbSmrg  "$@" -MD -MF "$tmpdepfile"
28653354cdbSmrg  stat=$?
28753354cdbSmrg  if test $stat -eq 0; then :
28853354cdbSmrg  else
28953354cdbSmrg    rm -f "$tmpdepfile"
29053354cdbSmrg    exit $stat
29153354cdbSmrg  fi
29253354cdbSmrg  rm -f "$depfile"
29353354cdbSmrg  # Each line is of the form `foo.o: dependent.h',
29453354cdbSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
29553354cdbSmrg  # Do two passes, one to just change these to
29653354cdbSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
29753354cdbSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
29853354cdbSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
29953354cdbSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
30053354cdbSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
30153354cdbSmrg    sed -e 's/$/ :/' >> "$depfile"
30253354cdbSmrg  rm -f "$tmpdepfile"
30353354cdbSmrg  ;;
30453354cdbSmrg
30553354cdbSmrghp2)
30653354cdbSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
30753354cdbSmrg  # compilers, which have integrated preprocessors.  The correct option
30853354cdbSmrg  # to use with these is +Maked; it writes dependencies to a file named
30953354cdbSmrg  # 'foo.d', which lands next to the object file, wherever that
31053354cdbSmrg  # happens to be.
31153354cdbSmrg  # Much of this is similar to the tru64 case; see comments there.
31253354cdbSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
31353354cdbSmrg  test "x$dir" = "x$object" && dir=
31453354cdbSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
31553354cdbSmrg  if test "$libtool" = yes; then
31653354cdbSmrg    tmpdepfile1=$dir$base.d
31753354cdbSmrg    tmpdepfile2=$dir.libs/$base.d
31853354cdbSmrg    "$@" -Wc,+Maked
31953354cdbSmrg  else
32053354cdbSmrg    tmpdepfile1=$dir$base.d
32153354cdbSmrg    tmpdepfile2=$dir$base.d
32253354cdbSmrg    "$@" +Maked
32353354cdbSmrg  fi
32453354cdbSmrg  stat=$?
32553354cdbSmrg  if test $stat -eq 0; then :
32653354cdbSmrg  else
32753354cdbSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
32853354cdbSmrg     exit $stat
32953354cdbSmrg  fi
33053354cdbSmrg
33153354cdbSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
33253354cdbSmrg  do
33353354cdbSmrg    test -f "$tmpdepfile" && break
33453354cdbSmrg  done
33553354cdbSmrg  if test -f "$tmpdepfile"; then
33653354cdbSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
33753354cdbSmrg    # Add `dependent.h:' lines.
33886bbecbeSmrg    sed -ne '2,${
33986bbecbeSmrg	       s/^ *//
34086bbecbeSmrg	       s/ \\*$//
34186bbecbeSmrg	       s/$/:/
34286bbecbeSmrg	       p
34386bbecbeSmrg	     }' "$tmpdepfile" >> "$depfile"
34453354cdbSmrg  else
34553354cdbSmrg    echo "#dummy" > "$depfile"
34653354cdbSmrg  fi
34753354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
34853354cdbSmrg  ;;
34953354cdbSmrg
35053354cdbSmrgtru64)
35153354cdbSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
35253354cdbSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
35353354cdbSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
35453354cdbSmrg   # dependencies in `foo.d' instead, so we check for that too.
35553354cdbSmrg   # Subdirectories are respected.
35653354cdbSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
35753354cdbSmrg   test "x$dir" = "x$object" && dir=
35853354cdbSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
35953354cdbSmrg
36053354cdbSmrg   if test "$libtool" = yes; then
36153354cdbSmrg      # With Tru64 cc, shared objects can also be used to make a
36253354cdbSmrg      # static library.  This mechanism is used in libtool 1.4 series to
36353354cdbSmrg      # handle both shared and static libraries in a single compilation.
36453354cdbSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
36553354cdbSmrg      #
36653354cdbSmrg      # With libtool 1.5 this exception was removed, and libtool now
36753354cdbSmrg      # generates 2 separate objects for the 2 libraries.  These two
36853354cdbSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
36953354cdbSmrg      # in $dir$base.o.d.  We have to check for both files, because
37053354cdbSmrg      # one of the two compilations can be disabled.  We should prefer
37153354cdbSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
37253354cdbSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
37353354cdbSmrg      # the former would cause a distcleancheck panic.
37453354cdbSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
37553354cdbSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
37653354cdbSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
37753354cdbSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
37853354cdbSmrg      "$@" -Wc,-MD
37953354cdbSmrg   else
38053354cdbSmrg      tmpdepfile1=$dir$base.o.d
38153354cdbSmrg      tmpdepfile2=$dir$base.d
38253354cdbSmrg      tmpdepfile3=$dir$base.d
38353354cdbSmrg      tmpdepfile4=$dir$base.d
38453354cdbSmrg      "$@" -MD
38553354cdbSmrg   fi
38653354cdbSmrg
38753354cdbSmrg   stat=$?
38853354cdbSmrg   if test $stat -eq 0; then :
38953354cdbSmrg   else
39053354cdbSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39153354cdbSmrg      exit $stat
39253354cdbSmrg   fi
39353354cdbSmrg
39453354cdbSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39553354cdbSmrg   do
39653354cdbSmrg     test -f "$tmpdepfile" && break
39753354cdbSmrg   done
39853354cdbSmrg   if test -f "$tmpdepfile"; then
39953354cdbSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
40053354cdbSmrg      # That's a tab and a space in the [].
40153354cdbSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
40253354cdbSmrg   else
40353354cdbSmrg      echo "#dummy" > "$depfile"
40453354cdbSmrg   fi
40553354cdbSmrg   rm -f "$tmpdepfile"
40653354cdbSmrg   ;;
40753354cdbSmrg
40853354cdbSmrg#nosideeffect)
40953354cdbSmrg  # This comment above is used by automake to tell side-effect
41053354cdbSmrg  # dependency tracking mechanisms from slower ones.
41153354cdbSmrg
41253354cdbSmrgdashmstdout)
41353354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
41453354cdbSmrg  # always write the preprocessed file to stdout, regardless of -o.
41553354cdbSmrg  "$@" || exit $?
41653354cdbSmrg
41753354cdbSmrg  # Remove the call to Libtool.
41853354cdbSmrg  if test "$libtool" = yes; then
41986bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
42053354cdbSmrg      shift
42153354cdbSmrg    done
42253354cdbSmrg    shift
42353354cdbSmrg  fi
42453354cdbSmrg
42553354cdbSmrg  # Remove `-o $object'.
42653354cdbSmrg  IFS=" "
42753354cdbSmrg  for arg
42853354cdbSmrg  do
42953354cdbSmrg    case $arg in
43053354cdbSmrg    -o)
43153354cdbSmrg      shift
43253354cdbSmrg      ;;
43353354cdbSmrg    $object)
43453354cdbSmrg      shift
43553354cdbSmrg      ;;
43653354cdbSmrg    *)
43753354cdbSmrg      set fnord "$@" "$arg"
43853354cdbSmrg      shift # fnord
43953354cdbSmrg      shift # $arg
44053354cdbSmrg      ;;
44153354cdbSmrg    esac
44253354cdbSmrg  done
44353354cdbSmrg
44453354cdbSmrg  test -z "$dashmflag" && dashmflag=-M
44553354cdbSmrg  # Require at least two characters before searching for `:'
44653354cdbSmrg  # in the target name.  This is to cope with DOS-style filenames:
44753354cdbSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
44853354cdbSmrg  "$@" $dashmflag |
44953354cdbSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
45053354cdbSmrg  rm -f "$depfile"
45153354cdbSmrg  cat < "$tmpdepfile" > "$depfile"
45253354cdbSmrg  tr ' ' '
45353354cdbSmrg' < "$tmpdepfile" | \
45453354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
45553354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
45653354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
45753354cdbSmrg  rm -f "$tmpdepfile"
45853354cdbSmrg  ;;
45953354cdbSmrg
46053354cdbSmrgdashXmstdout)
46153354cdbSmrg  # This case only exists to satisfy depend.m4.  It is never actually
46253354cdbSmrg  # run, as this mode is specially recognized in the preamble.
46353354cdbSmrg  exit 1
46453354cdbSmrg  ;;
46553354cdbSmrg
46653354cdbSmrgmakedepend)
46753354cdbSmrg  "$@" || exit $?
46853354cdbSmrg  # Remove any Libtool call
46953354cdbSmrg  if test "$libtool" = yes; then
47086bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
47153354cdbSmrg      shift
47253354cdbSmrg    done
47353354cdbSmrg    shift
47453354cdbSmrg  fi
47553354cdbSmrg  # X makedepend
47653354cdbSmrg  shift
47786bbecbeSmrg  cleared=no eat=no
47886bbecbeSmrg  for arg
47986bbecbeSmrg  do
48053354cdbSmrg    case $cleared in
48153354cdbSmrg    no)
48253354cdbSmrg      set ""; shift
48353354cdbSmrg      cleared=yes ;;
48453354cdbSmrg    esac
48586bbecbeSmrg    if test $eat = yes; then
48686bbecbeSmrg      eat=no
48786bbecbeSmrg      continue
48886bbecbeSmrg    fi
48953354cdbSmrg    case "$arg" in
49053354cdbSmrg    -D*|-I*)
49153354cdbSmrg      set fnord "$@" "$arg"; shift ;;
49253354cdbSmrg    # Strip any option that makedepend may not understand.  Remove
49353354cdbSmrg    # the object too, otherwise makedepend will parse it as a source file.
49486bbecbeSmrg    -arch)
49586bbecbeSmrg      eat=yes ;;
49653354cdbSmrg    -*|$object)
49753354cdbSmrg      ;;
49853354cdbSmrg    *)
49953354cdbSmrg      set fnord "$@" "$arg"; shift ;;
50053354cdbSmrg    esac
50153354cdbSmrg  done
50286bbecbeSmrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
50353354cdbSmrg  touch "$tmpdepfile"
50453354cdbSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
50553354cdbSmrg  rm -f "$depfile"
50653354cdbSmrg  cat < "$tmpdepfile" > "$depfile"
50753354cdbSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
50853354cdbSmrg' | \
50953354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
51053354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
51153354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
51253354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
51353354cdbSmrg  ;;
51453354cdbSmrg
51553354cdbSmrgcpp)
51653354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
51753354cdbSmrg  # always write the preprocessed file to stdout.
51853354cdbSmrg  "$@" || exit $?
51953354cdbSmrg
52053354cdbSmrg  # Remove the call to Libtool.
52153354cdbSmrg  if test "$libtool" = yes; then
52286bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
52353354cdbSmrg      shift
52453354cdbSmrg    done
52553354cdbSmrg    shift
52653354cdbSmrg  fi
52753354cdbSmrg
52853354cdbSmrg  # Remove `-o $object'.
52953354cdbSmrg  IFS=" "
53053354cdbSmrg  for arg
53153354cdbSmrg  do
53253354cdbSmrg    case $arg in
53353354cdbSmrg    -o)
53453354cdbSmrg      shift
53553354cdbSmrg      ;;
53653354cdbSmrg    $object)
53753354cdbSmrg      shift
53853354cdbSmrg      ;;
53953354cdbSmrg    *)
54053354cdbSmrg      set fnord "$@" "$arg"
54153354cdbSmrg      shift # fnord
54253354cdbSmrg      shift # $arg
54353354cdbSmrg      ;;
54453354cdbSmrg    esac
54553354cdbSmrg  done
54653354cdbSmrg
54753354cdbSmrg  "$@" -E |
54853354cdbSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
54953354cdbSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
55053354cdbSmrg    sed '$ s: \\$::' > "$tmpdepfile"
55153354cdbSmrg  rm -f "$depfile"
55253354cdbSmrg  echo "$object : \\" > "$depfile"
55353354cdbSmrg  cat < "$tmpdepfile" >> "$depfile"
55453354cdbSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
55553354cdbSmrg  rm -f "$tmpdepfile"
55653354cdbSmrg  ;;
55753354cdbSmrg
55853354cdbSmrgmsvisualcpp)
55953354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
56086bbecbeSmrg  # always write the preprocessed file to stdout.
56153354cdbSmrg  "$@" || exit $?
56286bbecbeSmrg
56386bbecbeSmrg  # Remove the call to Libtool.
56486bbecbeSmrg  if test "$libtool" = yes; then
56586bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
56686bbecbeSmrg      shift
56786bbecbeSmrg    done
56886bbecbeSmrg    shift
56986bbecbeSmrg  fi
57086bbecbeSmrg
57153354cdbSmrg  IFS=" "
57253354cdbSmrg  for arg
57353354cdbSmrg  do
57453354cdbSmrg    case "$arg" in
57586bbecbeSmrg    -o)
57686bbecbeSmrg      shift
57786bbecbeSmrg      ;;
57886bbecbeSmrg    $object)
57986bbecbeSmrg      shift
58086bbecbeSmrg      ;;
58153354cdbSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
58253354cdbSmrg	set fnord "$@"
58353354cdbSmrg	shift
58453354cdbSmrg	shift
58553354cdbSmrg	;;
58653354cdbSmrg    *)
58753354cdbSmrg	set fnord "$@" "$arg"
58853354cdbSmrg	shift
58953354cdbSmrg	shift
59053354cdbSmrg	;;
59153354cdbSmrg    esac
59253354cdbSmrg  done
59386bbecbeSmrg  "$@" -E 2>/dev/null |
59486bbecbeSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
59553354cdbSmrg  rm -f "$depfile"
59653354cdbSmrg  echo "$object : \\" > "$depfile"
59786bbecbeSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
59853354cdbSmrg  echo "	" >> "$depfile"
59986bbecbeSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
60053354cdbSmrg  rm -f "$tmpdepfile"
60153354cdbSmrg  ;;
60253354cdbSmrg
60386bbecbeSmrgmsvcmsys)
60486bbecbeSmrg  # This case exists only to let depend.m4 do its work.  It works by
60586bbecbeSmrg  # looking at the text of this script.  This case will never be run,
60686bbecbeSmrg  # since it is checked for above.
60786bbecbeSmrg  exit 1
60886bbecbeSmrg  ;;
60986bbecbeSmrg
61053354cdbSmrgnone)
61153354cdbSmrg  exec "$@"
61253354cdbSmrg  ;;
61353354cdbSmrg
61453354cdbSmrg*)
61553354cdbSmrg  echo "Unknown depmode $depmode" 1>&2
61653354cdbSmrg  exit 1
61753354cdbSmrg  ;;
61853354cdbSmrgesac
61953354cdbSmrg
62053354cdbSmrgexit 0
62153354cdbSmrg
62253354cdbSmrg# Local Variables:
62353354cdbSmrg# mode: shell-script
62453354cdbSmrg# sh-indentation: 2
62553354cdbSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
62653354cdbSmrg# time-stamp-start: "scriptversion="
62753354cdbSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
62886bbecbeSmrg# time-stamp-time-zone: "UTC"
62986bbecbeSmrg# time-stamp-end: "; # UTC"
63053354cdbSmrg# End:
631