depcomp revision 1d54945d
11d54945dSmrg#! /bin/sh
21d54945dSmrg# depcomp - compile a program generating dependencies as side-effects
31d54945dSmrg
41d54945dSmrgscriptversion=2005-07-09.11
51d54945dSmrg
61d54945dSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
71d54945dSmrg
81d54945dSmrg# This program is free software; you can redistribute it and/or modify
91d54945dSmrg# it under the terms of the GNU General Public License as published by
101d54945dSmrg# the Free Software Foundation; either version 2, or (at your option)
111d54945dSmrg# any later version.
121d54945dSmrg
131d54945dSmrg# This program is distributed in the hope that it will be useful,
141d54945dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
151d54945dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
161d54945dSmrg# GNU General Public License for more details.
171d54945dSmrg
181d54945dSmrg# You should have received a copy of the GNU General Public License
191d54945dSmrg# along with this program; if not, write to the Free Software
201d54945dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
211d54945dSmrg# 02110-1301, USA.
221d54945dSmrg
231d54945dSmrg# As a special exception to the GNU General Public License, if you
241d54945dSmrg# distribute this file as part of a program that contains a
251d54945dSmrg# configuration script generated by Autoconf, you may include it under
261d54945dSmrg# the same distribution terms that you use for the rest of that program.
271d54945dSmrg
281d54945dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
291d54945dSmrg
301d54945dSmrgcase $1 in
311d54945dSmrg  '')
321d54945dSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
331d54945dSmrg     exit 1;
341d54945dSmrg     ;;
351d54945dSmrg  -h | --h*)
361d54945dSmrg    cat <<\EOF
371d54945dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
381d54945dSmrg
391d54945dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
401d54945dSmrgas side-effects.
411d54945dSmrg
421d54945dSmrgEnvironment variables:
431d54945dSmrg  depmode     Dependency tracking mode.
441d54945dSmrg  source      Source file read by `PROGRAMS ARGS'.
451d54945dSmrg  object      Object file output by `PROGRAMS ARGS'.
461d54945dSmrg  DEPDIR      directory where to store dependencies.
471d54945dSmrg  depfile     Dependency file to output.
481d54945dSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
491d54945dSmrg  libtool     Whether libtool is used (yes/no).
501d54945dSmrg
511d54945dSmrgReport bugs to <bug-automake@gnu.org>.
521d54945dSmrgEOF
531d54945dSmrg    exit $?
541d54945dSmrg    ;;
551d54945dSmrg  -v | --v*)
561d54945dSmrg    echo "depcomp $scriptversion"
571d54945dSmrg    exit $?
581d54945dSmrg    ;;
591d54945dSmrgesac
601d54945dSmrg
611d54945dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
621d54945dSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
631d54945dSmrg  exit 1
641d54945dSmrgfi
651d54945dSmrg
661d54945dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
671d54945dSmrgdepfile=${depfile-`echo "$object" |
681d54945dSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
691d54945dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
701d54945dSmrg
711d54945dSmrgrm -f "$tmpdepfile"
721d54945dSmrg
731d54945dSmrg# Some modes work just like other modes, but use different flags.  We
741d54945dSmrg# parameterize here, but still list the modes in the big case below,
751d54945dSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
761d54945dSmrg# here, because this file can only contain one case statement.
771d54945dSmrgif test "$depmode" = hp; then
781d54945dSmrg  # HP compiler uses -M and no extra arg.
791d54945dSmrg  gccflag=-M
801d54945dSmrg  depmode=gcc
811d54945dSmrgfi
821d54945dSmrg
831d54945dSmrgif test "$depmode" = dashXmstdout; then
841d54945dSmrg   # This is just like dashmstdout with a different argument.
851d54945dSmrg   dashmflag=-xM
861d54945dSmrg   depmode=dashmstdout
871d54945dSmrgfi
881d54945dSmrg
891d54945dSmrgcase "$depmode" in
901d54945dSmrggcc3)
911d54945dSmrg## gcc 3 implements dependency tracking that does exactly what
921d54945dSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
931d54945dSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
941d54945dSmrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
951d54945dSmrg  stat=$?
961d54945dSmrg  if test $stat -eq 0; then :
971d54945dSmrg  else
981d54945dSmrg    rm -f "$tmpdepfile"
991d54945dSmrg    exit $stat
1001d54945dSmrg  fi
1011d54945dSmrg  mv "$tmpdepfile" "$depfile"
1021d54945dSmrg  ;;
1031d54945dSmrg
1041d54945dSmrggcc)
1051d54945dSmrg## There are various ways to get dependency output from gcc.  Here's
1061d54945dSmrg## why we pick this rather obscure method:
1071d54945dSmrg## - Don't want to use -MD because we'd like the dependencies to end
1081d54945dSmrg##   up in a subdir.  Having to rename by hand is ugly.
1091d54945dSmrg##   (We might end up doing this anyway to support other compilers.)
1101d54945dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1111d54945dSmrg##   -MM, not -M (despite what the docs say).
1121d54945dSmrg## - Using -M directly means running the compiler twice (even worse
1131d54945dSmrg##   than renaming).
1141d54945dSmrg  if test -z "$gccflag"; then
1151d54945dSmrg    gccflag=-MD,
1161d54945dSmrg  fi
1171d54945dSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1181d54945dSmrg  stat=$?
1191d54945dSmrg  if test $stat -eq 0; then :
1201d54945dSmrg  else
1211d54945dSmrg    rm -f "$tmpdepfile"
1221d54945dSmrg    exit $stat
1231d54945dSmrg  fi
1241d54945dSmrg  rm -f "$depfile"
1251d54945dSmrg  echo "$object : \\" > "$depfile"
1261d54945dSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1271d54945dSmrg## The second -e expression handles DOS-style file names with drive letters.
1281d54945dSmrg  sed -e 's/^[^:]*: / /' \
1291d54945dSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1301d54945dSmrg## This next piece of magic avoids the `deleted header file' problem.
1311d54945dSmrg## The problem is that when a header file which appears in a .P file
1321d54945dSmrg## is deleted, the dependency causes make to die (because there is
1331d54945dSmrg## typically no way to rebuild the header).  We avoid this by adding
1341d54945dSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1351d54945dSmrg## this for us directly.
1361d54945dSmrg  tr ' ' '
1371d54945dSmrg' < "$tmpdepfile" |
1381d54945dSmrg## Some versions of gcc put a space before the `:'.  On the theory
1391d54945dSmrg## that the space means something, we add a space to the output as
1401d54945dSmrg## well.
1411d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1421d54945dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1431d54945dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1441d54945dSmrg  rm -f "$tmpdepfile"
1451d54945dSmrg  ;;
1461d54945dSmrg
1471d54945dSmrghp)
1481d54945dSmrg  # This case exists only to let depend.m4 do its work.  It works by
1491d54945dSmrg  # looking at the text of this script.  This case will never be run,
1501d54945dSmrg  # since it is checked for above.
1511d54945dSmrg  exit 1
1521d54945dSmrg  ;;
1531d54945dSmrg
1541d54945dSmrgsgi)
1551d54945dSmrg  if test "$libtool" = yes; then
1561d54945dSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1571d54945dSmrg  else
1581d54945dSmrg    "$@" -MDupdate "$tmpdepfile"
1591d54945dSmrg  fi
1601d54945dSmrg  stat=$?
1611d54945dSmrg  if test $stat -eq 0; then :
1621d54945dSmrg  else
1631d54945dSmrg    rm -f "$tmpdepfile"
1641d54945dSmrg    exit $stat
1651d54945dSmrg  fi
1661d54945dSmrg  rm -f "$depfile"
1671d54945dSmrg
1681d54945dSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1691d54945dSmrg    echo "$object : \\" > "$depfile"
1701d54945dSmrg
1711d54945dSmrg    # Clip off the initial element (the dependent).  Don't try to be
1721d54945dSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1731d54945dSmrg    # lines with more than a fixed number of characters (4096 in
1741d54945dSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1751d54945dSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1761d54945dSmrg    # dependency line.
1771d54945dSmrg    tr ' ' '
1781d54945dSmrg' < "$tmpdepfile" \
1791d54945dSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1801d54945dSmrg    tr '
1811d54945dSmrg' ' ' >> $depfile
1821d54945dSmrg    echo >> $depfile
1831d54945dSmrg
1841d54945dSmrg    # The second pass generates a dummy entry for each header file.
1851d54945dSmrg    tr ' ' '
1861d54945dSmrg' < "$tmpdepfile" \
1871d54945dSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1881d54945dSmrg   >> $depfile
1891d54945dSmrg  else
1901d54945dSmrg    # The sourcefile does not contain any dependencies, so just
1911d54945dSmrg    # store a dummy comment line, to avoid errors with the Makefile
1921d54945dSmrg    # "include basename.Plo" scheme.
1931d54945dSmrg    echo "#dummy" > "$depfile"
1941d54945dSmrg  fi
1951d54945dSmrg  rm -f "$tmpdepfile"
1961d54945dSmrg  ;;
1971d54945dSmrg
1981d54945dSmrgaix)
1991d54945dSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2001d54945dSmrg  # in a .u file.  In older versions, this file always lives in the
2011d54945dSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2021d54945dSmrg  # start of each line; $object doesn't have directory information.
2031d54945dSmrg  # Version 6 uses the directory in both cases.
2041d54945dSmrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2051d54945dSmrg  tmpdepfile="$stripped.u"
2061d54945dSmrg  if test "$libtool" = yes; then
2071d54945dSmrg    "$@" -Wc,-M
2081d54945dSmrg  else
2091d54945dSmrg    "$@" -M
2101d54945dSmrg  fi
2111d54945dSmrg  stat=$?
2121d54945dSmrg
2131d54945dSmrg  if test -f "$tmpdepfile"; then :
2141d54945dSmrg  else
2151d54945dSmrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2161d54945dSmrg    tmpdepfile="$stripped.u"
2171d54945dSmrg  fi
2181d54945dSmrg
2191d54945dSmrg  if test $stat -eq 0; then :
2201d54945dSmrg  else
2211d54945dSmrg    rm -f "$tmpdepfile"
2221d54945dSmrg    exit $stat
2231d54945dSmrg  fi
2241d54945dSmrg
2251d54945dSmrg  if test -f "$tmpdepfile"; then
2261d54945dSmrg    outname="$stripped.o"
2271d54945dSmrg    # Each line is of the form `foo.o: dependent.h'.
2281d54945dSmrg    # Do two passes, one to just change these to
2291d54945dSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2301d54945dSmrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2311d54945dSmrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2321d54945dSmrg  else
2331d54945dSmrg    # The sourcefile does not contain any dependencies, so just
2341d54945dSmrg    # store a dummy comment line, to avoid errors with the Makefile
2351d54945dSmrg    # "include basename.Plo" scheme.
2361d54945dSmrg    echo "#dummy" > "$depfile"
2371d54945dSmrg  fi
2381d54945dSmrg  rm -f "$tmpdepfile"
2391d54945dSmrg  ;;
2401d54945dSmrg
2411d54945dSmrgicc)
2421d54945dSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2431d54945dSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2441d54945dSmrg  # ICC 7.0 will fill foo.d with something like
2451d54945dSmrg  #    foo.o: sub/foo.c
2461d54945dSmrg  #    foo.o: sub/foo.h
2471d54945dSmrg  # which is wrong.  We want:
2481d54945dSmrg  #    sub/foo.o: sub/foo.c
2491d54945dSmrg  #    sub/foo.o: sub/foo.h
2501d54945dSmrg  #    sub/foo.c:
2511d54945dSmrg  #    sub/foo.h:
2521d54945dSmrg  # ICC 7.1 will output
2531d54945dSmrg  #    foo.o: sub/foo.c sub/foo.h
2541d54945dSmrg  # and will wrap long lines using \ :
2551d54945dSmrg  #    foo.o: sub/foo.c ... \
2561d54945dSmrg  #     sub/foo.h ... \
2571d54945dSmrg  #     ...
2581d54945dSmrg
2591d54945dSmrg  "$@" -MD -MF "$tmpdepfile"
2601d54945dSmrg  stat=$?
2611d54945dSmrg  if test $stat -eq 0; then :
2621d54945dSmrg  else
2631d54945dSmrg    rm -f "$tmpdepfile"
2641d54945dSmrg    exit $stat
2651d54945dSmrg  fi
2661d54945dSmrg  rm -f "$depfile"
2671d54945dSmrg  # Each line is of the form `foo.o: dependent.h',
2681d54945dSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2691d54945dSmrg  # Do two passes, one to just change these to
2701d54945dSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2711d54945dSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2721d54945dSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2731d54945dSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
2741d54945dSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2751d54945dSmrg    sed -e 's/$/ :/' >> "$depfile"
2761d54945dSmrg  rm -f "$tmpdepfile"
2771d54945dSmrg  ;;
2781d54945dSmrg
2791d54945dSmrgtru64)
2801d54945dSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
2811d54945dSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2821d54945dSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2831d54945dSmrg   # dependencies in `foo.d' instead, so we check for that too.
2841d54945dSmrg   # Subdirectories are respected.
2851d54945dSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2861d54945dSmrg   test "x$dir" = "x$object" && dir=
2871d54945dSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2881d54945dSmrg
2891d54945dSmrg   if test "$libtool" = yes; then
2901d54945dSmrg      # With Tru64 cc, shared objects can also be used to make a
2911d54945dSmrg      # static library.  This mecanism is used in libtool 1.4 series to
2921d54945dSmrg      # handle both shared and static libraries in a single compilation.
2931d54945dSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2941d54945dSmrg      #
2951d54945dSmrg      # With libtool 1.5 this exception was removed, and libtool now
2961d54945dSmrg      # generates 2 separate objects for the 2 libraries.  These two
2971d54945dSmrg      # compilations output dependencies in in $dir.libs/$base.o.d and
2981d54945dSmrg      # in $dir$base.o.d.  We have to check for both files, because
2991d54945dSmrg      # one of the two compilations can be disabled.  We should prefer
3001d54945dSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3011d54945dSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3021d54945dSmrg      # the former would cause a distcleancheck panic.
3031d54945dSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3041d54945dSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3051d54945dSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3061d54945dSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3071d54945dSmrg      "$@" -Wc,-MD
3081d54945dSmrg   else
3091d54945dSmrg      tmpdepfile1=$dir$base.o.d
3101d54945dSmrg      tmpdepfile2=$dir$base.d
3111d54945dSmrg      tmpdepfile3=$dir$base.d
3121d54945dSmrg      tmpdepfile4=$dir$base.d
3131d54945dSmrg      "$@" -MD
3141d54945dSmrg   fi
3151d54945dSmrg
3161d54945dSmrg   stat=$?
3171d54945dSmrg   if test $stat -eq 0; then :
3181d54945dSmrg   else
3191d54945dSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3201d54945dSmrg      exit $stat
3211d54945dSmrg   fi
3221d54945dSmrg
3231d54945dSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3241d54945dSmrg   do
3251d54945dSmrg     test -f "$tmpdepfile" && break
3261d54945dSmrg   done
3271d54945dSmrg   if test -f "$tmpdepfile"; then
3281d54945dSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3291d54945dSmrg      # That's a tab and a space in the [].
3301d54945dSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3311d54945dSmrg   else
3321d54945dSmrg      echo "#dummy" > "$depfile"
3331d54945dSmrg   fi
3341d54945dSmrg   rm -f "$tmpdepfile"
3351d54945dSmrg   ;;
3361d54945dSmrg
3371d54945dSmrg#nosideeffect)
3381d54945dSmrg  # This comment above is used by automake to tell side-effect
3391d54945dSmrg  # dependency tracking mechanisms from slower ones.
3401d54945dSmrg
3411d54945dSmrgdashmstdout)
3421d54945dSmrg  # Important note: in order to support this mode, a compiler *must*
3431d54945dSmrg  # always write the preprocessed file to stdout, regardless of -o.
3441d54945dSmrg  "$@" || exit $?
3451d54945dSmrg
3461d54945dSmrg  # Remove the call to Libtool.
3471d54945dSmrg  if test "$libtool" = yes; then
3481d54945dSmrg    while test $1 != '--mode=compile'; do
3491d54945dSmrg      shift
3501d54945dSmrg    done
3511d54945dSmrg    shift
3521d54945dSmrg  fi
3531d54945dSmrg
3541d54945dSmrg  # Remove `-o $object'.
3551d54945dSmrg  IFS=" "
3561d54945dSmrg  for arg
3571d54945dSmrg  do
3581d54945dSmrg    case $arg in
3591d54945dSmrg    -o)
3601d54945dSmrg      shift
3611d54945dSmrg      ;;
3621d54945dSmrg    $object)
3631d54945dSmrg      shift
3641d54945dSmrg      ;;
3651d54945dSmrg    *)
3661d54945dSmrg      set fnord "$@" "$arg"
3671d54945dSmrg      shift # fnord
3681d54945dSmrg      shift # $arg
3691d54945dSmrg      ;;
3701d54945dSmrg    esac
3711d54945dSmrg  done
3721d54945dSmrg
3731d54945dSmrg  test -z "$dashmflag" && dashmflag=-M
3741d54945dSmrg  # Require at least two characters before searching for `:'
3751d54945dSmrg  # in the target name.  This is to cope with DOS-style filenames:
3761d54945dSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3771d54945dSmrg  "$@" $dashmflag |
3781d54945dSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3791d54945dSmrg  rm -f "$depfile"
3801d54945dSmrg  cat < "$tmpdepfile" > "$depfile"
3811d54945dSmrg  tr ' ' '
3821d54945dSmrg' < "$tmpdepfile" | \
3831d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
3841d54945dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
3851d54945dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3861d54945dSmrg  rm -f "$tmpdepfile"
3871d54945dSmrg  ;;
3881d54945dSmrg
3891d54945dSmrgdashXmstdout)
3901d54945dSmrg  # This case only exists to satisfy depend.m4.  It is never actually
3911d54945dSmrg  # run, as this mode is specially recognized in the preamble.
3921d54945dSmrg  exit 1
3931d54945dSmrg  ;;
3941d54945dSmrg
3951d54945dSmrgmakedepend)
3961d54945dSmrg  "$@" || exit $?
3971d54945dSmrg  # Remove any Libtool call
3981d54945dSmrg  if test "$libtool" = yes; then
3991d54945dSmrg    while test $1 != '--mode=compile'; do
4001d54945dSmrg      shift
4011d54945dSmrg    done
4021d54945dSmrg    shift
4031d54945dSmrg  fi
4041d54945dSmrg  # X makedepend
4051d54945dSmrg  shift
4061d54945dSmrg  cleared=no
4071d54945dSmrg  for arg in "$@"; do
4081d54945dSmrg    case $cleared in
4091d54945dSmrg    no)
4101d54945dSmrg      set ""; shift
4111d54945dSmrg      cleared=yes ;;
4121d54945dSmrg    esac
4131d54945dSmrg    case "$arg" in
4141d54945dSmrg    -D*|-I*)
4151d54945dSmrg      set fnord "$@" "$arg"; shift ;;
4161d54945dSmrg    # Strip any option that makedepend may not understand.  Remove
4171d54945dSmrg    # the object too, otherwise makedepend will parse it as a source file.
4181d54945dSmrg    -*|$object)
4191d54945dSmrg      ;;
4201d54945dSmrg    *)
4211d54945dSmrg      set fnord "$@" "$arg"; shift ;;
4221d54945dSmrg    esac
4231d54945dSmrg  done
4241d54945dSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4251d54945dSmrg  touch "$tmpdepfile"
4261d54945dSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4271d54945dSmrg  rm -f "$depfile"
4281d54945dSmrg  cat < "$tmpdepfile" > "$depfile"
4291d54945dSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4301d54945dSmrg' | \
4311d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4321d54945dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4331d54945dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4341d54945dSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4351d54945dSmrg  ;;
4361d54945dSmrg
4371d54945dSmrgcpp)
4381d54945dSmrg  # Important note: in order to support this mode, a compiler *must*
4391d54945dSmrg  # always write the preprocessed file to stdout.
4401d54945dSmrg  "$@" || exit $?
4411d54945dSmrg
4421d54945dSmrg  # Remove the call to Libtool.
4431d54945dSmrg  if test "$libtool" = yes; then
4441d54945dSmrg    while test $1 != '--mode=compile'; do
4451d54945dSmrg      shift
4461d54945dSmrg    done
4471d54945dSmrg    shift
4481d54945dSmrg  fi
4491d54945dSmrg
4501d54945dSmrg  # Remove `-o $object'.
4511d54945dSmrg  IFS=" "
4521d54945dSmrg  for arg
4531d54945dSmrg  do
4541d54945dSmrg    case $arg in
4551d54945dSmrg    -o)
4561d54945dSmrg      shift
4571d54945dSmrg      ;;
4581d54945dSmrg    $object)
4591d54945dSmrg      shift
4601d54945dSmrg      ;;
4611d54945dSmrg    *)
4621d54945dSmrg      set fnord "$@" "$arg"
4631d54945dSmrg      shift # fnord
4641d54945dSmrg      shift # $arg
4651d54945dSmrg      ;;
4661d54945dSmrg    esac
4671d54945dSmrg  done
4681d54945dSmrg
4691d54945dSmrg  "$@" -E |
4701d54945dSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4711d54945dSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4721d54945dSmrg    sed '$ s: \\$::' > "$tmpdepfile"
4731d54945dSmrg  rm -f "$depfile"
4741d54945dSmrg  echo "$object : \\" > "$depfile"
4751d54945dSmrg  cat < "$tmpdepfile" >> "$depfile"
4761d54945dSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4771d54945dSmrg  rm -f "$tmpdepfile"
4781d54945dSmrg  ;;
4791d54945dSmrg
4801d54945dSmrgmsvisualcpp)
4811d54945dSmrg  # Important note: in order to support this mode, a compiler *must*
4821d54945dSmrg  # always write the preprocessed file to stdout, regardless of -o,
4831d54945dSmrg  # because we must use -o when running libtool.
4841d54945dSmrg  "$@" || exit $?
4851d54945dSmrg  IFS=" "
4861d54945dSmrg  for arg
4871d54945dSmrg  do
4881d54945dSmrg    case "$arg" in
4891d54945dSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4901d54945dSmrg	set fnord "$@"
4911d54945dSmrg	shift
4921d54945dSmrg	shift
4931d54945dSmrg	;;
4941d54945dSmrg    *)
4951d54945dSmrg	set fnord "$@" "$arg"
4961d54945dSmrg	shift
4971d54945dSmrg	shift
4981d54945dSmrg	;;
4991d54945dSmrg    esac
5001d54945dSmrg  done
5011d54945dSmrg  "$@" -E |
5021d54945dSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5031d54945dSmrg  rm -f "$depfile"
5041d54945dSmrg  echo "$object : \\" > "$depfile"
5051d54945dSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5061d54945dSmrg  echo "	" >> "$depfile"
5071d54945dSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5081d54945dSmrg  rm -f "$tmpdepfile"
5091d54945dSmrg  ;;
5101d54945dSmrg
5111d54945dSmrgnone)
5121d54945dSmrg  exec "$@"
5131d54945dSmrg  ;;
5141d54945dSmrg
5151d54945dSmrg*)
5161d54945dSmrg  echo "Unknown depmode $depmode" 1>&2
5171d54945dSmrg  exit 1
5181d54945dSmrg  ;;
5191d54945dSmrgesac
5201d54945dSmrg
5211d54945dSmrgexit 0
5221d54945dSmrg
5231d54945dSmrg# Local Variables:
5241d54945dSmrg# mode: shell-script
5251d54945dSmrg# sh-indentation: 2
5261d54945dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5271d54945dSmrg# time-stamp-start: "scriptversion="
5281d54945dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5291d54945dSmrg# time-stamp-end: "$"
5301d54945dSmrg# End:
531