depcomp revision 2faa96e0
152f9793fSmrg#! /bin/sh
252f9793fSmrg# depcomp - compile a program generating dependencies as side-effects
352f9793fSmrg
42faa96e0Smrgscriptversion=2009-04-28.21; # UTC
552f9793fSmrg
62faa96e0Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
72faa96e0Smrg# Software Foundation, Inc.
852f9793fSmrg
952f9793fSmrg# This program is free software; you can redistribute it and/or modify
1052f9793fSmrg# it under the terms of the GNU General Public License as published by
1152f9793fSmrg# the Free Software Foundation; either version 2, or (at your option)
1252f9793fSmrg# any later version.
1352f9793fSmrg
1452f9793fSmrg# This program is distributed in the hope that it will be useful,
1552f9793fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1652f9793fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1752f9793fSmrg# GNU General Public License for more details.
1852f9793fSmrg
1952f9793fSmrg# You should have received a copy of the GNU General Public License
202faa96e0Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2152f9793fSmrg
2252f9793fSmrg# As a special exception to the GNU General Public License, if you
2352f9793fSmrg# distribute this file as part of a program that contains a
2452f9793fSmrg# configuration script generated by Autoconf, you may include it under
2552f9793fSmrg# the same distribution terms that you use for the rest of that program.
2652f9793fSmrg
2752f9793fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2852f9793fSmrg
2952f9793fSmrgcase $1 in
3052f9793fSmrg  '')
3152f9793fSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3252f9793fSmrg     exit 1;
3352f9793fSmrg     ;;
3452f9793fSmrg  -h | --h*)
3552f9793fSmrg    cat <<\EOF
3652f9793fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3752f9793fSmrg
3852f9793fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
3952f9793fSmrgas side-effects.
4052f9793fSmrg
4152f9793fSmrgEnvironment variables:
4252f9793fSmrg  depmode     Dependency tracking mode.
4352f9793fSmrg  source      Source file read by `PROGRAMS ARGS'.
4452f9793fSmrg  object      Object file output by `PROGRAMS ARGS'.
4552f9793fSmrg  DEPDIR      directory where to store dependencies.
4652f9793fSmrg  depfile     Dependency file to output.
4752f9793fSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
4852f9793fSmrg  libtool     Whether libtool is used (yes/no).
4952f9793fSmrg
5052f9793fSmrgReport bugs to <bug-automake@gnu.org>.
5152f9793fSmrgEOF
5252f9793fSmrg    exit $?
5352f9793fSmrg    ;;
5452f9793fSmrg  -v | --v*)
5552f9793fSmrg    echo "depcomp $scriptversion"
5652f9793fSmrg    exit $?
5752f9793fSmrg    ;;
5852f9793fSmrgesac
5952f9793fSmrg
6052f9793fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6152f9793fSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6252f9793fSmrg  exit 1
6352f9793fSmrgfi
6452f9793fSmrg
6552f9793fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6652f9793fSmrgdepfile=${depfile-`echo "$object" |
6752f9793fSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6852f9793fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
6952f9793fSmrg
7052f9793fSmrgrm -f "$tmpdepfile"
7152f9793fSmrg
7252f9793fSmrg# Some modes work just like other modes, but use different flags.  We
7352f9793fSmrg# parameterize here, but still list the modes in the big case below,
7452f9793fSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7552f9793fSmrg# here, because this file can only contain one case statement.
7652f9793fSmrgif test "$depmode" = hp; then
7752f9793fSmrg  # HP compiler uses -M and no extra arg.
7852f9793fSmrg  gccflag=-M
7952f9793fSmrg  depmode=gcc
8052f9793fSmrgfi
8152f9793fSmrg
8252f9793fSmrgif test "$depmode" = dashXmstdout; then
8352f9793fSmrg   # This is just like dashmstdout with a different argument.
8452f9793fSmrg   dashmflag=-xM
8552f9793fSmrg   depmode=dashmstdout
8652f9793fSmrgfi
8752f9793fSmrg
882faa96e0Smrgcygpath_u="cygpath -u -f -"
892faa96e0Smrgif test "$depmode" = msvcmsys; then
902faa96e0Smrg   # This is just like msvisualcpp but w/o cygpath translation.
912faa96e0Smrg   # Just convert the backslash-escaped backslashes to single forward
922faa96e0Smrg   # slashes to satisfy depend.m4
932faa96e0Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
942faa96e0Smrg   depmode=msvisualcpp
952faa96e0Smrgfi
962faa96e0Smrg
9752f9793fSmrgcase "$depmode" in
9852f9793fSmrggcc3)
9952f9793fSmrg## gcc 3 implements dependency tracking that does exactly what
10052f9793fSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
10152f9793fSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1022faa96e0Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1032faa96e0Smrg## the command line argument order; so add the flags where they
1042faa96e0Smrg## appear in depend2.am.  Note that the slowdown incurred here
1052faa96e0Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1062faa96e0Smrg  for arg
1072faa96e0Smrg  do
1082faa96e0Smrg    case $arg in
1092faa96e0Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1102faa96e0Smrg    *)  set fnord "$@" "$arg" ;;
1112faa96e0Smrg    esac
1122faa96e0Smrg    shift # fnord
1132faa96e0Smrg    shift # $arg
1142faa96e0Smrg  done
1152faa96e0Smrg  "$@"
11652f9793fSmrg  stat=$?
11752f9793fSmrg  if test $stat -eq 0; then :
11852f9793fSmrg  else
11952f9793fSmrg    rm -f "$tmpdepfile"
12052f9793fSmrg    exit $stat
12152f9793fSmrg  fi
12252f9793fSmrg  mv "$tmpdepfile" "$depfile"
12352f9793fSmrg  ;;
12452f9793fSmrg
12552f9793fSmrggcc)
12652f9793fSmrg## There are various ways to get dependency output from gcc.  Here's
12752f9793fSmrg## why we pick this rather obscure method:
12852f9793fSmrg## - Don't want to use -MD because we'd like the dependencies to end
12952f9793fSmrg##   up in a subdir.  Having to rename by hand is ugly.
13052f9793fSmrg##   (We might end up doing this anyway to support other compilers.)
13152f9793fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
13252f9793fSmrg##   -MM, not -M (despite what the docs say).
13352f9793fSmrg## - Using -M directly means running the compiler twice (even worse
13452f9793fSmrg##   than renaming).
13552f9793fSmrg  if test -z "$gccflag"; then
13652f9793fSmrg    gccflag=-MD,
13752f9793fSmrg  fi
13852f9793fSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
13952f9793fSmrg  stat=$?
14052f9793fSmrg  if test $stat -eq 0; then :
14152f9793fSmrg  else
14252f9793fSmrg    rm -f "$tmpdepfile"
14352f9793fSmrg    exit $stat
14452f9793fSmrg  fi
14552f9793fSmrg  rm -f "$depfile"
14652f9793fSmrg  echo "$object : \\" > "$depfile"
14752f9793fSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14852f9793fSmrg## The second -e expression handles DOS-style file names with drive letters.
14952f9793fSmrg  sed -e 's/^[^:]*: / /' \
15052f9793fSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
15152f9793fSmrg## This next piece of magic avoids the `deleted header file' problem.
15252f9793fSmrg## The problem is that when a header file which appears in a .P file
15352f9793fSmrg## is deleted, the dependency causes make to die (because there is
15452f9793fSmrg## typically no way to rebuild the header).  We avoid this by adding
15552f9793fSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
15652f9793fSmrg## this for us directly.
15752f9793fSmrg  tr ' ' '
15852f9793fSmrg' < "$tmpdepfile" |
15952f9793fSmrg## Some versions of gcc put a space before the `:'.  On the theory
16052f9793fSmrg## that the space means something, we add a space to the output as
16152f9793fSmrg## well.
16252f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
16352f9793fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
16452f9793fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
16552f9793fSmrg  rm -f "$tmpdepfile"
16652f9793fSmrg  ;;
16752f9793fSmrg
16852f9793fSmrghp)
16952f9793fSmrg  # This case exists only to let depend.m4 do its work.  It works by
17052f9793fSmrg  # looking at the text of this script.  This case will never be run,
17152f9793fSmrg  # since it is checked for above.
17252f9793fSmrg  exit 1
17352f9793fSmrg  ;;
17452f9793fSmrg
17552f9793fSmrgsgi)
17652f9793fSmrg  if test "$libtool" = yes; then
17752f9793fSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
17852f9793fSmrg  else
17952f9793fSmrg    "$@" -MDupdate "$tmpdepfile"
18052f9793fSmrg  fi
18152f9793fSmrg  stat=$?
18252f9793fSmrg  if test $stat -eq 0; then :
18352f9793fSmrg  else
18452f9793fSmrg    rm -f "$tmpdepfile"
18552f9793fSmrg    exit $stat
18652f9793fSmrg  fi
18752f9793fSmrg  rm -f "$depfile"
18852f9793fSmrg
18952f9793fSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
19052f9793fSmrg    echo "$object : \\" > "$depfile"
19152f9793fSmrg
19252f9793fSmrg    # Clip off the initial element (the dependent).  Don't try to be
19352f9793fSmrg    # clever and replace this with sed code, as IRIX sed won't handle
19452f9793fSmrg    # lines with more than a fixed number of characters (4096 in
19552f9793fSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
19652f9793fSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
19752f9793fSmrg    # dependency line.
19852f9793fSmrg    tr ' ' '
19952f9793fSmrg' < "$tmpdepfile" \
20052f9793fSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
20152f9793fSmrg    tr '
2022faa96e0Smrg' ' ' >> "$depfile"
2032faa96e0Smrg    echo >> "$depfile"
20452f9793fSmrg
20552f9793fSmrg    # The second pass generates a dummy entry for each header file.
20652f9793fSmrg    tr ' ' '
20752f9793fSmrg' < "$tmpdepfile" \
20852f9793fSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2092faa96e0Smrg   >> "$depfile"
21052f9793fSmrg  else
21152f9793fSmrg    # The sourcefile does not contain any dependencies, so just
21252f9793fSmrg    # store a dummy comment line, to avoid errors with the Makefile
21352f9793fSmrg    # "include basename.Plo" scheme.
21452f9793fSmrg    echo "#dummy" > "$depfile"
21552f9793fSmrg  fi
21652f9793fSmrg  rm -f "$tmpdepfile"
21752f9793fSmrg  ;;
21852f9793fSmrg
21952f9793fSmrgaix)
22052f9793fSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
22152f9793fSmrg  # in a .u file.  In older versions, this file always lives in the
22252f9793fSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
22352f9793fSmrg  # start of each line; $object doesn't have directory information.
22452f9793fSmrg  # Version 6 uses the directory in both cases.
2252faa96e0Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2262faa96e0Smrg  test "x$dir" = "x$object" && dir=
2272faa96e0Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
22852f9793fSmrg  if test "$libtool" = yes; then
2292faa96e0Smrg    tmpdepfile1=$dir$base.u
2302faa96e0Smrg    tmpdepfile2=$base.u
2312faa96e0Smrg    tmpdepfile3=$dir.libs/$base.u
23252f9793fSmrg    "$@" -Wc,-M
23352f9793fSmrg  else
2342faa96e0Smrg    tmpdepfile1=$dir$base.u
2352faa96e0Smrg    tmpdepfile2=$dir$base.u
2362faa96e0Smrg    tmpdepfile3=$dir$base.u
23752f9793fSmrg    "$@" -M
23852f9793fSmrg  fi
23952f9793fSmrg  stat=$?
24052f9793fSmrg
24152f9793fSmrg  if test $stat -eq 0; then :
24252f9793fSmrg  else
2432faa96e0Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24452f9793fSmrg    exit $stat
24552f9793fSmrg  fi
24652f9793fSmrg
2472faa96e0Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2482faa96e0Smrg  do
2492faa96e0Smrg    test -f "$tmpdepfile" && break
2502faa96e0Smrg  done
25152f9793fSmrg  if test -f "$tmpdepfile"; then
25252f9793fSmrg    # Each line is of the form `foo.o: dependent.h'.
25352f9793fSmrg    # Do two passes, one to just change these to
25452f9793fSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2552faa96e0Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
2562faa96e0Smrg    # That's a tab and a space in the [].
2572faa96e0Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
25852f9793fSmrg  else
25952f9793fSmrg    # The sourcefile does not contain any dependencies, so just
26052f9793fSmrg    # store a dummy comment line, to avoid errors with the Makefile
26152f9793fSmrg    # "include basename.Plo" scheme.
26252f9793fSmrg    echo "#dummy" > "$depfile"
26352f9793fSmrg  fi
26452f9793fSmrg  rm -f "$tmpdepfile"
26552f9793fSmrg  ;;
26652f9793fSmrg
26752f9793fSmrgicc)
26852f9793fSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
26952f9793fSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
27052f9793fSmrg  # ICC 7.0 will fill foo.d with something like
27152f9793fSmrg  #    foo.o: sub/foo.c
27252f9793fSmrg  #    foo.o: sub/foo.h
27352f9793fSmrg  # which is wrong.  We want:
27452f9793fSmrg  #    sub/foo.o: sub/foo.c
27552f9793fSmrg  #    sub/foo.o: sub/foo.h
27652f9793fSmrg  #    sub/foo.c:
27752f9793fSmrg  #    sub/foo.h:
27852f9793fSmrg  # ICC 7.1 will output
27952f9793fSmrg  #    foo.o: sub/foo.c sub/foo.h
28052f9793fSmrg  # and will wrap long lines using \ :
28152f9793fSmrg  #    foo.o: sub/foo.c ... \
28252f9793fSmrg  #     sub/foo.h ... \
28352f9793fSmrg  #     ...
28452f9793fSmrg
28552f9793fSmrg  "$@" -MD -MF "$tmpdepfile"
28652f9793fSmrg  stat=$?
28752f9793fSmrg  if test $stat -eq 0; then :
28852f9793fSmrg  else
28952f9793fSmrg    rm -f "$tmpdepfile"
29052f9793fSmrg    exit $stat
29152f9793fSmrg  fi
29252f9793fSmrg  rm -f "$depfile"
29352f9793fSmrg  # Each line is of the form `foo.o: dependent.h',
29452f9793fSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
29552f9793fSmrg  # Do two passes, one to just change these to
29652f9793fSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
29752f9793fSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
29852f9793fSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
29952f9793fSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
30052f9793fSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
30152f9793fSmrg    sed -e 's/$/ :/' >> "$depfile"
30252f9793fSmrg  rm -f "$tmpdepfile"
30352f9793fSmrg  ;;
30452f9793fSmrg
3052faa96e0Smrghp2)
3062faa96e0Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3072faa96e0Smrg  # compilers, which have integrated preprocessors.  The correct option
3082faa96e0Smrg  # to use with these is +Maked; it writes dependencies to a file named
3092faa96e0Smrg  # 'foo.d', which lands next to the object file, wherever that
3102faa96e0Smrg  # happens to be.
3112faa96e0Smrg  # Much of this is similar to the tru64 case; see comments there.
3122faa96e0Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3132faa96e0Smrg  test "x$dir" = "x$object" && dir=
3142faa96e0Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3152faa96e0Smrg  if test "$libtool" = yes; then
3162faa96e0Smrg    tmpdepfile1=$dir$base.d
3172faa96e0Smrg    tmpdepfile2=$dir.libs/$base.d
3182faa96e0Smrg    "$@" -Wc,+Maked
3192faa96e0Smrg  else
3202faa96e0Smrg    tmpdepfile1=$dir$base.d
3212faa96e0Smrg    tmpdepfile2=$dir$base.d
3222faa96e0Smrg    "$@" +Maked
3232faa96e0Smrg  fi
3242faa96e0Smrg  stat=$?
3252faa96e0Smrg  if test $stat -eq 0; then :
3262faa96e0Smrg  else
3272faa96e0Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3282faa96e0Smrg     exit $stat
3292faa96e0Smrg  fi
3302faa96e0Smrg
3312faa96e0Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3322faa96e0Smrg  do
3332faa96e0Smrg    test -f "$tmpdepfile" && break
3342faa96e0Smrg  done
3352faa96e0Smrg  if test -f "$tmpdepfile"; then
3362faa96e0Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3372faa96e0Smrg    # Add `dependent.h:' lines.
3382faa96e0Smrg    sed -ne '2,${
3392faa96e0Smrg	       s/^ *//
3402faa96e0Smrg	       s/ \\*$//
3412faa96e0Smrg	       s/$/:/
3422faa96e0Smrg	       p
3432faa96e0Smrg	     }' "$tmpdepfile" >> "$depfile"
3442faa96e0Smrg  else
3452faa96e0Smrg    echo "#dummy" > "$depfile"
3462faa96e0Smrg  fi
3472faa96e0Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3482faa96e0Smrg  ;;
3492faa96e0Smrg
35052f9793fSmrgtru64)
35152f9793fSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
35252f9793fSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
35352f9793fSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
35452f9793fSmrg   # dependencies in `foo.d' instead, so we check for that too.
35552f9793fSmrg   # Subdirectories are respected.
35652f9793fSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
35752f9793fSmrg   test "x$dir" = "x$object" && dir=
35852f9793fSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
35952f9793fSmrg
36052f9793fSmrg   if test "$libtool" = yes; then
36152f9793fSmrg      # With Tru64 cc, shared objects can also be used to make a
3622faa96e0Smrg      # static library.  This mechanism is used in libtool 1.4 series to
36352f9793fSmrg      # handle both shared and static libraries in a single compilation.
36452f9793fSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
36552f9793fSmrg      #
36652f9793fSmrg      # With libtool 1.5 this exception was removed, and libtool now
36752f9793fSmrg      # generates 2 separate objects for the 2 libraries.  These two
3682faa96e0Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
36952f9793fSmrg      # in $dir$base.o.d.  We have to check for both files, because
37052f9793fSmrg      # one of the two compilations can be disabled.  We should prefer
37152f9793fSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
37252f9793fSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
37352f9793fSmrg      # the former would cause a distcleancheck panic.
37452f9793fSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
37552f9793fSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
37652f9793fSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
37752f9793fSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
37852f9793fSmrg      "$@" -Wc,-MD
37952f9793fSmrg   else
38052f9793fSmrg      tmpdepfile1=$dir$base.o.d
38152f9793fSmrg      tmpdepfile2=$dir$base.d
38252f9793fSmrg      tmpdepfile3=$dir$base.d
38352f9793fSmrg      tmpdepfile4=$dir$base.d
38452f9793fSmrg      "$@" -MD
38552f9793fSmrg   fi
38652f9793fSmrg
38752f9793fSmrg   stat=$?
38852f9793fSmrg   if test $stat -eq 0; then :
38952f9793fSmrg   else
39052f9793fSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39152f9793fSmrg      exit $stat
39252f9793fSmrg   fi
39352f9793fSmrg
39452f9793fSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39552f9793fSmrg   do
39652f9793fSmrg     test -f "$tmpdepfile" && break
39752f9793fSmrg   done
39852f9793fSmrg   if test -f "$tmpdepfile"; then
39952f9793fSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
40052f9793fSmrg      # That's a tab and a space in the [].
40152f9793fSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
40252f9793fSmrg   else
40352f9793fSmrg      echo "#dummy" > "$depfile"
40452f9793fSmrg   fi
40552f9793fSmrg   rm -f "$tmpdepfile"
40652f9793fSmrg   ;;
40752f9793fSmrg
40852f9793fSmrg#nosideeffect)
40952f9793fSmrg  # This comment above is used by automake to tell side-effect
41052f9793fSmrg  # dependency tracking mechanisms from slower ones.
41152f9793fSmrg
41252f9793fSmrgdashmstdout)
41352f9793fSmrg  # Important note: in order to support this mode, a compiler *must*
41452f9793fSmrg  # always write the preprocessed file to stdout, regardless of -o.
41552f9793fSmrg  "$@" || exit $?
41652f9793fSmrg
41752f9793fSmrg  # Remove the call to Libtool.
41852f9793fSmrg  if test "$libtool" = yes; then
4192faa96e0Smrg    while test "X$1" != 'X--mode=compile'; do
42052f9793fSmrg      shift
42152f9793fSmrg    done
42252f9793fSmrg    shift
42352f9793fSmrg  fi
42452f9793fSmrg
42552f9793fSmrg  # Remove `-o $object'.
42652f9793fSmrg  IFS=" "
42752f9793fSmrg  for arg
42852f9793fSmrg  do
42952f9793fSmrg    case $arg in
43052f9793fSmrg    -o)
43152f9793fSmrg      shift
43252f9793fSmrg      ;;
43352f9793fSmrg    $object)
43452f9793fSmrg      shift
43552f9793fSmrg      ;;
43652f9793fSmrg    *)
43752f9793fSmrg      set fnord "$@" "$arg"
43852f9793fSmrg      shift # fnord
43952f9793fSmrg      shift # $arg
44052f9793fSmrg      ;;
44152f9793fSmrg    esac
44252f9793fSmrg  done
44352f9793fSmrg
44452f9793fSmrg  test -z "$dashmflag" && dashmflag=-M
44552f9793fSmrg  # Require at least two characters before searching for `:'
44652f9793fSmrg  # in the target name.  This is to cope with DOS-style filenames:
44752f9793fSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
44852f9793fSmrg  "$@" $dashmflag |
44952f9793fSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
45052f9793fSmrg  rm -f "$depfile"
45152f9793fSmrg  cat < "$tmpdepfile" > "$depfile"
45252f9793fSmrg  tr ' ' '
45352f9793fSmrg' < "$tmpdepfile" | \
45452f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
45552f9793fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
45652f9793fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
45752f9793fSmrg  rm -f "$tmpdepfile"
45852f9793fSmrg  ;;
45952f9793fSmrg
46052f9793fSmrgdashXmstdout)
46152f9793fSmrg  # This case only exists to satisfy depend.m4.  It is never actually
46252f9793fSmrg  # run, as this mode is specially recognized in the preamble.
46352f9793fSmrg  exit 1
46452f9793fSmrg  ;;
46552f9793fSmrg
46652f9793fSmrgmakedepend)
46752f9793fSmrg  "$@" || exit $?
46852f9793fSmrg  # Remove any Libtool call
46952f9793fSmrg  if test "$libtool" = yes; then
4702faa96e0Smrg    while test "X$1" != 'X--mode=compile'; do
47152f9793fSmrg      shift
47252f9793fSmrg    done
47352f9793fSmrg    shift
47452f9793fSmrg  fi
47552f9793fSmrg  # X makedepend
47652f9793fSmrg  shift
4772faa96e0Smrg  cleared=no eat=no
4782faa96e0Smrg  for arg
4792faa96e0Smrg  do
48052f9793fSmrg    case $cleared in
48152f9793fSmrg    no)
48252f9793fSmrg      set ""; shift
48352f9793fSmrg      cleared=yes ;;
48452f9793fSmrg    esac
4852faa96e0Smrg    if test $eat = yes; then
4862faa96e0Smrg      eat=no
4872faa96e0Smrg      continue
4882faa96e0Smrg    fi
48952f9793fSmrg    case "$arg" in
49052f9793fSmrg    -D*|-I*)
49152f9793fSmrg      set fnord "$@" "$arg"; shift ;;
49252f9793fSmrg    # Strip any option that makedepend may not understand.  Remove
49352f9793fSmrg    # the object too, otherwise makedepend will parse it as a source file.
4942faa96e0Smrg    -arch)
4952faa96e0Smrg      eat=yes ;;
49652f9793fSmrg    -*|$object)
49752f9793fSmrg      ;;
49852f9793fSmrg    *)
49952f9793fSmrg      set fnord "$@" "$arg"; shift ;;
50052f9793fSmrg    esac
50152f9793fSmrg  done
5022faa96e0Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
50352f9793fSmrg  touch "$tmpdepfile"
50452f9793fSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
50552f9793fSmrg  rm -f "$depfile"
50652f9793fSmrg  cat < "$tmpdepfile" > "$depfile"
50752f9793fSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
50852f9793fSmrg' | \
50952f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
51052f9793fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
51152f9793fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
51252f9793fSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
51352f9793fSmrg  ;;
51452f9793fSmrg
51552f9793fSmrgcpp)
51652f9793fSmrg  # Important note: in order to support this mode, a compiler *must*
51752f9793fSmrg  # always write the preprocessed file to stdout.
51852f9793fSmrg  "$@" || exit $?
51952f9793fSmrg
52052f9793fSmrg  # Remove the call to Libtool.
52152f9793fSmrg  if test "$libtool" = yes; then
5222faa96e0Smrg    while test "X$1" != 'X--mode=compile'; do
52352f9793fSmrg      shift
52452f9793fSmrg    done
52552f9793fSmrg    shift
52652f9793fSmrg  fi
52752f9793fSmrg
52852f9793fSmrg  # Remove `-o $object'.
52952f9793fSmrg  IFS=" "
53052f9793fSmrg  for arg
53152f9793fSmrg  do
53252f9793fSmrg    case $arg in
53352f9793fSmrg    -o)
53452f9793fSmrg      shift
53552f9793fSmrg      ;;
53652f9793fSmrg    $object)
53752f9793fSmrg      shift
53852f9793fSmrg      ;;
53952f9793fSmrg    *)
54052f9793fSmrg      set fnord "$@" "$arg"
54152f9793fSmrg      shift # fnord
54252f9793fSmrg      shift # $arg
54352f9793fSmrg      ;;
54452f9793fSmrg    esac
54552f9793fSmrg  done
54652f9793fSmrg
54752f9793fSmrg  "$@" -E |
54852f9793fSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
54952f9793fSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
55052f9793fSmrg    sed '$ s: \\$::' > "$tmpdepfile"
55152f9793fSmrg  rm -f "$depfile"
55252f9793fSmrg  echo "$object : \\" > "$depfile"
55352f9793fSmrg  cat < "$tmpdepfile" >> "$depfile"
55452f9793fSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
55552f9793fSmrg  rm -f "$tmpdepfile"
55652f9793fSmrg  ;;
55752f9793fSmrg
55852f9793fSmrgmsvisualcpp)
55952f9793fSmrg  # Important note: in order to support this mode, a compiler *must*
5602faa96e0Smrg  # always write the preprocessed file to stdout.
56152f9793fSmrg  "$@" || exit $?
5622faa96e0Smrg
5632faa96e0Smrg  # Remove the call to Libtool.
5642faa96e0Smrg  if test "$libtool" = yes; then
5652faa96e0Smrg    while test "X$1" != 'X--mode=compile'; do
5662faa96e0Smrg      shift
5672faa96e0Smrg    done
5682faa96e0Smrg    shift
5692faa96e0Smrg  fi
5702faa96e0Smrg
57152f9793fSmrg  IFS=" "
57252f9793fSmrg  for arg
57352f9793fSmrg  do
57452f9793fSmrg    case "$arg" in
5752faa96e0Smrg    -o)
5762faa96e0Smrg      shift
5772faa96e0Smrg      ;;
5782faa96e0Smrg    $object)
5792faa96e0Smrg      shift
5802faa96e0Smrg      ;;
58152f9793fSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
58252f9793fSmrg	set fnord "$@"
58352f9793fSmrg	shift
58452f9793fSmrg	shift
58552f9793fSmrg	;;
58652f9793fSmrg    *)
58752f9793fSmrg	set fnord "$@" "$arg"
58852f9793fSmrg	shift
58952f9793fSmrg	shift
59052f9793fSmrg	;;
59152f9793fSmrg    esac
59252f9793fSmrg  done
5932faa96e0Smrg  "$@" -E 2>/dev/null |
5942faa96e0Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
59552f9793fSmrg  rm -f "$depfile"
59652f9793fSmrg  echo "$object : \\" > "$depfile"
5972faa96e0Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
59852f9793fSmrg  echo "	" >> "$depfile"
5992faa96e0Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
60052f9793fSmrg  rm -f "$tmpdepfile"
60152f9793fSmrg  ;;
60252f9793fSmrg
6032faa96e0Smrgmsvcmsys)
6042faa96e0Smrg  # This case exists only to let depend.m4 do its work.  It works by
6052faa96e0Smrg  # looking at the text of this script.  This case will never be run,
6062faa96e0Smrg  # since it is checked for above.
6072faa96e0Smrg  exit 1
6082faa96e0Smrg  ;;
6092faa96e0Smrg
61052f9793fSmrgnone)
61152f9793fSmrg  exec "$@"
61252f9793fSmrg  ;;
61352f9793fSmrg
61452f9793fSmrg*)
61552f9793fSmrg  echo "Unknown depmode $depmode" 1>&2
61652f9793fSmrg  exit 1
61752f9793fSmrg  ;;
61852f9793fSmrgesac
61952f9793fSmrg
62052f9793fSmrgexit 0
62152f9793fSmrg
62252f9793fSmrg# Local Variables:
62352f9793fSmrg# mode: shell-script
62452f9793fSmrg# sh-indentation: 2
62552f9793fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
62652f9793fSmrg# time-stamp-start: "scriptversion="
62752f9793fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
6282faa96e0Smrg# time-stamp-time-zone: "UTC"
6292faa96e0Smrg# time-stamp-end: "; # UTC"
63052f9793fSmrg# End:
631