depcomp revision 2c393a42
12c393a42Smrg#! /bin/sh
22c393a42Smrg# depcomp - compile a program generating dependencies as side-effects
32c393a42Smrg
42c393a42Smrgscriptversion=2005-07-09.11
52c393a42Smrg
62c393a42Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
72c393a42Smrg
82c393a42Smrg# This program is free software; you can redistribute it and/or modify
92c393a42Smrg# it under the terms of the GNU General Public License as published by
102c393a42Smrg# the Free Software Foundation; either version 2, or (at your option)
112c393a42Smrg# any later version.
122c393a42Smrg
132c393a42Smrg# This program is distributed in the hope that it will be useful,
142c393a42Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
152c393a42Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
162c393a42Smrg# GNU General Public License for more details.
172c393a42Smrg
182c393a42Smrg# You should have received a copy of the GNU General Public License
192c393a42Smrg# along with this program; if not, write to the Free Software
202c393a42Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
212c393a42Smrg# 02110-1301, USA.
222c393a42Smrg
232c393a42Smrg# As a special exception to the GNU General Public License, if you
242c393a42Smrg# distribute this file as part of a program that contains a
252c393a42Smrg# configuration script generated by Autoconf, you may include it under
262c393a42Smrg# the same distribution terms that you use for the rest of that program.
272c393a42Smrg
282c393a42Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
292c393a42Smrg
302c393a42Smrgcase $1 in
312c393a42Smrg  '')
322c393a42Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
332c393a42Smrg     exit 1;
342c393a42Smrg     ;;
352c393a42Smrg  -h | --h*)
362c393a42Smrg    cat <<\EOF
372c393a42SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
382c393a42Smrg
392c393a42SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
402c393a42Smrgas side-effects.
412c393a42Smrg
422c393a42SmrgEnvironment variables:
432c393a42Smrg  depmode     Dependency tracking mode.
442c393a42Smrg  source      Source file read by `PROGRAMS ARGS'.
452c393a42Smrg  object      Object file output by `PROGRAMS ARGS'.
462c393a42Smrg  DEPDIR      directory where to store dependencies.
472c393a42Smrg  depfile     Dependency file to output.
482c393a42Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
492c393a42Smrg  libtool     Whether libtool is used (yes/no).
502c393a42Smrg
512c393a42SmrgReport bugs to <bug-automake@gnu.org>.
522c393a42SmrgEOF
532c393a42Smrg    exit $?
542c393a42Smrg    ;;
552c393a42Smrg  -v | --v*)
562c393a42Smrg    echo "depcomp $scriptversion"
572c393a42Smrg    exit $?
582c393a42Smrg    ;;
592c393a42Smrgesac
602c393a42Smrg
612c393a42Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
622c393a42Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
632c393a42Smrg  exit 1
642c393a42Smrgfi
652c393a42Smrg
662c393a42Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
672c393a42Smrgdepfile=${depfile-`echo "$object" |
682c393a42Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
692c393a42Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
702c393a42Smrg
712c393a42Smrgrm -f "$tmpdepfile"
722c393a42Smrg
732c393a42Smrg# Some modes work just like other modes, but use different flags.  We
742c393a42Smrg# parameterize here, but still list the modes in the big case below,
752c393a42Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
762c393a42Smrg# here, because this file can only contain one case statement.
772c393a42Smrgif test "$depmode" = hp; then
782c393a42Smrg  # HP compiler uses -M and no extra arg.
792c393a42Smrg  gccflag=-M
802c393a42Smrg  depmode=gcc
812c393a42Smrgfi
822c393a42Smrg
832c393a42Smrgif test "$depmode" = dashXmstdout; then
842c393a42Smrg   # This is just like dashmstdout with a different argument.
852c393a42Smrg   dashmflag=-xM
862c393a42Smrg   depmode=dashmstdout
872c393a42Smrgfi
882c393a42Smrg
892c393a42Smrgcase "$depmode" in
902c393a42Smrggcc3)
912c393a42Smrg## gcc 3 implements dependency tracking that does exactly what
922c393a42Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
932c393a42Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
942c393a42Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
952c393a42Smrg  stat=$?
962c393a42Smrg  if test $stat -eq 0; then :
972c393a42Smrg  else
982c393a42Smrg    rm -f "$tmpdepfile"
992c393a42Smrg    exit $stat
1002c393a42Smrg  fi
1012c393a42Smrg  mv "$tmpdepfile" "$depfile"
1022c393a42Smrg  ;;
1032c393a42Smrg
1042c393a42Smrggcc)
1052c393a42Smrg## There are various ways to get dependency output from gcc.  Here's
1062c393a42Smrg## why we pick this rather obscure method:
1072c393a42Smrg## - Don't want to use -MD because we'd like the dependencies to end
1082c393a42Smrg##   up in a subdir.  Having to rename by hand is ugly.
1092c393a42Smrg##   (We might end up doing this anyway to support other compilers.)
1102c393a42Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1112c393a42Smrg##   -MM, not -M (despite what the docs say).
1122c393a42Smrg## - Using -M directly means running the compiler twice (even worse
1132c393a42Smrg##   than renaming).
1142c393a42Smrg  if test -z "$gccflag"; then
1152c393a42Smrg    gccflag=-MD,
1162c393a42Smrg  fi
1172c393a42Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
1182c393a42Smrg  stat=$?
1192c393a42Smrg  if test $stat -eq 0; then :
1202c393a42Smrg  else
1212c393a42Smrg    rm -f "$tmpdepfile"
1222c393a42Smrg    exit $stat
1232c393a42Smrg  fi
1242c393a42Smrg  rm -f "$depfile"
1252c393a42Smrg  echo "$object : \\" > "$depfile"
1262c393a42Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1272c393a42Smrg## The second -e expression handles DOS-style file names with drive letters.
1282c393a42Smrg  sed -e 's/^[^:]*: / /' \
1292c393a42Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1302c393a42Smrg## This next piece of magic avoids the `deleted header file' problem.
1312c393a42Smrg## The problem is that when a header file which appears in a .P file
1322c393a42Smrg## is deleted, the dependency causes make to die (because there is
1332c393a42Smrg## typically no way to rebuild the header).  We avoid this by adding
1342c393a42Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1352c393a42Smrg## this for us directly.
1362c393a42Smrg  tr ' ' '
1372c393a42Smrg' < "$tmpdepfile" |
1382c393a42Smrg## Some versions of gcc put a space before the `:'.  On the theory
1392c393a42Smrg## that the space means something, we add a space to the output as
1402c393a42Smrg## well.
1412c393a42Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
1422c393a42Smrg## correctly.  Breaking it into two sed invocations is a workaround.
1432c393a42Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1442c393a42Smrg  rm -f "$tmpdepfile"
1452c393a42Smrg  ;;
1462c393a42Smrg
1472c393a42Smrghp)
1482c393a42Smrg  # This case exists only to let depend.m4 do its work.  It works by
1492c393a42Smrg  # looking at the text of this script.  This case will never be run,
1502c393a42Smrg  # since it is checked for above.
1512c393a42Smrg  exit 1
1522c393a42Smrg  ;;
1532c393a42Smrg
1542c393a42Smrgsgi)
1552c393a42Smrg  if test "$libtool" = yes; then
1562c393a42Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1572c393a42Smrg  else
1582c393a42Smrg    "$@" -MDupdate "$tmpdepfile"
1592c393a42Smrg  fi
1602c393a42Smrg  stat=$?
1612c393a42Smrg  if test $stat -eq 0; then :
1622c393a42Smrg  else
1632c393a42Smrg    rm -f "$tmpdepfile"
1642c393a42Smrg    exit $stat
1652c393a42Smrg  fi
1662c393a42Smrg  rm -f "$depfile"
1672c393a42Smrg
1682c393a42Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1692c393a42Smrg    echo "$object : \\" > "$depfile"
1702c393a42Smrg
1712c393a42Smrg    # Clip off the initial element (the dependent).  Don't try to be
1722c393a42Smrg    # clever and replace this with sed code, as IRIX sed won't handle
1732c393a42Smrg    # lines with more than a fixed number of characters (4096 in
1742c393a42Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1752c393a42Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
1762c393a42Smrg    # dependency line.
1772c393a42Smrg    tr ' ' '
1782c393a42Smrg' < "$tmpdepfile" \
1792c393a42Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1802c393a42Smrg    tr '
1812c393a42Smrg' ' ' >> $depfile
1822c393a42Smrg    echo >> $depfile
1832c393a42Smrg
1842c393a42Smrg    # The second pass generates a dummy entry for each header file.
1852c393a42Smrg    tr ' ' '
1862c393a42Smrg' < "$tmpdepfile" \
1872c393a42Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1882c393a42Smrg   >> $depfile
1892c393a42Smrg  else
1902c393a42Smrg    # The sourcefile does not contain any dependencies, so just
1912c393a42Smrg    # store a dummy comment line, to avoid errors with the Makefile
1922c393a42Smrg    # "include basename.Plo" scheme.
1932c393a42Smrg    echo "#dummy" > "$depfile"
1942c393a42Smrg  fi
1952c393a42Smrg  rm -f "$tmpdepfile"
1962c393a42Smrg  ;;
1972c393a42Smrg
1982c393a42Smrgaix)
1992c393a42Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
2002c393a42Smrg  # in a .u file.  In older versions, this file always lives in the
2012c393a42Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2022c393a42Smrg  # start of each line; $object doesn't have directory information.
2032c393a42Smrg  # Version 6 uses the directory in both cases.
2042c393a42Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2052c393a42Smrg  tmpdepfile="$stripped.u"
2062c393a42Smrg  if test "$libtool" = yes; then
2072c393a42Smrg    "$@" -Wc,-M
2082c393a42Smrg  else
2092c393a42Smrg    "$@" -M
2102c393a42Smrg  fi
2112c393a42Smrg  stat=$?
2122c393a42Smrg
2132c393a42Smrg  if test -f "$tmpdepfile"; then :
2142c393a42Smrg  else
2152c393a42Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2162c393a42Smrg    tmpdepfile="$stripped.u"
2172c393a42Smrg  fi
2182c393a42Smrg
2192c393a42Smrg  if test $stat -eq 0; then :
2202c393a42Smrg  else
2212c393a42Smrg    rm -f "$tmpdepfile"
2222c393a42Smrg    exit $stat
2232c393a42Smrg  fi
2242c393a42Smrg
2252c393a42Smrg  if test -f "$tmpdepfile"; then
2262c393a42Smrg    outname="$stripped.o"
2272c393a42Smrg    # Each line is of the form `foo.o: dependent.h'.
2282c393a42Smrg    # Do two passes, one to just change these to
2292c393a42Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2302c393a42Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2312c393a42Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2322c393a42Smrg  else
2332c393a42Smrg    # The sourcefile does not contain any dependencies, so just
2342c393a42Smrg    # store a dummy comment line, to avoid errors with the Makefile
2352c393a42Smrg    # "include basename.Plo" scheme.
2362c393a42Smrg    echo "#dummy" > "$depfile"
2372c393a42Smrg  fi
2382c393a42Smrg  rm -f "$tmpdepfile"
2392c393a42Smrg  ;;
2402c393a42Smrg
2412c393a42Smrgicc)
2422c393a42Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
2432c393a42Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2442c393a42Smrg  # ICC 7.0 will fill foo.d with something like
2452c393a42Smrg  #    foo.o: sub/foo.c
2462c393a42Smrg  #    foo.o: sub/foo.h
2472c393a42Smrg  # which is wrong.  We want:
2482c393a42Smrg  #    sub/foo.o: sub/foo.c
2492c393a42Smrg  #    sub/foo.o: sub/foo.h
2502c393a42Smrg  #    sub/foo.c:
2512c393a42Smrg  #    sub/foo.h:
2522c393a42Smrg  # ICC 7.1 will output
2532c393a42Smrg  #    foo.o: sub/foo.c sub/foo.h
2542c393a42Smrg  # and will wrap long lines using \ :
2552c393a42Smrg  #    foo.o: sub/foo.c ... \
2562c393a42Smrg  #     sub/foo.h ... \
2572c393a42Smrg  #     ...
2582c393a42Smrg
2592c393a42Smrg  "$@" -MD -MF "$tmpdepfile"
2602c393a42Smrg  stat=$?
2612c393a42Smrg  if test $stat -eq 0; then :
2622c393a42Smrg  else
2632c393a42Smrg    rm -f "$tmpdepfile"
2642c393a42Smrg    exit $stat
2652c393a42Smrg  fi
2662c393a42Smrg  rm -f "$depfile"
2672c393a42Smrg  # Each line is of the form `foo.o: dependent.h',
2682c393a42Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2692c393a42Smrg  # Do two passes, one to just change these to
2702c393a42Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2712c393a42Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2722c393a42Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2732c393a42Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
2742c393a42Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2752c393a42Smrg    sed -e 's/$/ :/' >> "$depfile"
2762c393a42Smrg  rm -f "$tmpdepfile"
2772c393a42Smrg  ;;
2782c393a42Smrg
2792c393a42Smrgtru64)
2802c393a42Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
2812c393a42Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2822c393a42Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2832c393a42Smrg   # dependencies in `foo.d' instead, so we check for that too.
2842c393a42Smrg   # Subdirectories are respected.
2852c393a42Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2862c393a42Smrg   test "x$dir" = "x$object" && dir=
2872c393a42Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2882c393a42Smrg
2892c393a42Smrg   if test "$libtool" = yes; then
2902c393a42Smrg      # With Tru64 cc, shared objects can also be used to make a
2912c393a42Smrg      # static library.  This mecanism is used in libtool 1.4 series to
2922c393a42Smrg      # handle both shared and static libraries in a single compilation.
2932c393a42Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2942c393a42Smrg      #
2952c393a42Smrg      # With libtool 1.5 this exception was removed, and libtool now
2962c393a42Smrg      # generates 2 separate objects for the 2 libraries.  These two
2972c393a42Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
2982c393a42Smrg      # in $dir$base.o.d.  We have to check for both files, because
2992c393a42Smrg      # one of the two compilations can be disabled.  We should prefer
3002c393a42Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3012c393a42Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
3022c393a42Smrg      # the former would cause a distcleancheck panic.
3032c393a42Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3042c393a42Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3052c393a42Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3062c393a42Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3072c393a42Smrg      "$@" -Wc,-MD
3082c393a42Smrg   else
3092c393a42Smrg      tmpdepfile1=$dir$base.o.d
3102c393a42Smrg      tmpdepfile2=$dir$base.d
3112c393a42Smrg      tmpdepfile3=$dir$base.d
3122c393a42Smrg      tmpdepfile4=$dir$base.d
3132c393a42Smrg      "$@" -MD
3142c393a42Smrg   fi
3152c393a42Smrg
3162c393a42Smrg   stat=$?
3172c393a42Smrg   if test $stat -eq 0; then :
3182c393a42Smrg   else
3192c393a42Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3202c393a42Smrg      exit $stat
3212c393a42Smrg   fi
3222c393a42Smrg
3232c393a42Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3242c393a42Smrg   do
3252c393a42Smrg     test -f "$tmpdepfile" && break
3262c393a42Smrg   done
3272c393a42Smrg   if test -f "$tmpdepfile"; then
3282c393a42Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3292c393a42Smrg      # That's a tab and a space in the [].
3302c393a42Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3312c393a42Smrg   else
3322c393a42Smrg      echo "#dummy" > "$depfile"
3332c393a42Smrg   fi
3342c393a42Smrg   rm -f "$tmpdepfile"
3352c393a42Smrg   ;;
3362c393a42Smrg
3372c393a42Smrg#nosideeffect)
3382c393a42Smrg  # This comment above is used by automake to tell side-effect
3392c393a42Smrg  # dependency tracking mechanisms from slower ones.
3402c393a42Smrg
3412c393a42Smrgdashmstdout)
3422c393a42Smrg  # Important note: in order to support this mode, a compiler *must*
3432c393a42Smrg  # always write the preprocessed file to stdout, regardless of -o.
3442c393a42Smrg  "$@" || exit $?
3452c393a42Smrg
3462c393a42Smrg  # Remove the call to Libtool.
3472c393a42Smrg  if test "$libtool" = yes; then
3482c393a42Smrg    while test $1 != '--mode=compile'; do
3492c393a42Smrg      shift
3502c393a42Smrg    done
3512c393a42Smrg    shift
3522c393a42Smrg  fi
3532c393a42Smrg
3542c393a42Smrg  # Remove `-o $object'.
3552c393a42Smrg  IFS=" "
3562c393a42Smrg  for arg
3572c393a42Smrg  do
3582c393a42Smrg    case $arg in
3592c393a42Smrg    -o)
3602c393a42Smrg      shift
3612c393a42Smrg      ;;
3622c393a42Smrg    $object)
3632c393a42Smrg      shift
3642c393a42Smrg      ;;
3652c393a42Smrg    *)
3662c393a42Smrg      set fnord "$@" "$arg"
3672c393a42Smrg      shift # fnord
3682c393a42Smrg      shift # $arg
3692c393a42Smrg      ;;
3702c393a42Smrg    esac
3712c393a42Smrg  done
3722c393a42Smrg
3732c393a42Smrg  test -z "$dashmflag" && dashmflag=-M
3742c393a42Smrg  # Require at least two characters before searching for `:'
3752c393a42Smrg  # in the target name.  This is to cope with DOS-style filenames:
3762c393a42Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3772c393a42Smrg  "$@" $dashmflag |
3782c393a42Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3792c393a42Smrg  rm -f "$depfile"
3802c393a42Smrg  cat < "$tmpdepfile" > "$depfile"
3812c393a42Smrg  tr ' ' '
3822c393a42Smrg' < "$tmpdepfile" | \
3832c393a42Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
3842c393a42Smrg## correctly.  Breaking it into two sed invocations is a workaround.
3852c393a42Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3862c393a42Smrg  rm -f "$tmpdepfile"
3872c393a42Smrg  ;;
3882c393a42Smrg
3892c393a42SmrgdashXmstdout)
3902c393a42Smrg  # This case only exists to satisfy depend.m4.  It is never actually
3912c393a42Smrg  # run, as this mode is specially recognized in the preamble.
3922c393a42Smrg  exit 1
3932c393a42Smrg  ;;
3942c393a42Smrg
3952c393a42Smrgmakedepend)
3962c393a42Smrg  "$@" || exit $?
3972c393a42Smrg  # Remove any Libtool call
3982c393a42Smrg  if test "$libtool" = yes; then
3992c393a42Smrg    while test $1 != '--mode=compile'; do
4002c393a42Smrg      shift
4012c393a42Smrg    done
4022c393a42Smrg    shift
4032c393a42Smrg  fi
4042c393a42Smrg  # X makedepend
4052c393a42Smrg  shift
4062c393a42Smrg  cleared=no
4072c393a42Smrg  for arg in "$@"; do
4082c393a42Smrg    case $cleared in
4092c393a42Smrg    no)
4102c393a42Smrg      set ""; shift
4112c393a42Smrg      cleared=yes ;;
4122c393a42Smrg    esac
4132c393a42Smrg    case "$arg" in
4142c393a42Smrg    -D*|-I*)
4152c393a42Smrg      set fnord "$@" "$arg"; shift ;;
4162c393a42Smrg    # Strip any option that makedepend may not understand.  Remove
4172c393a42Smrg    # the object too, otherwise makedepend will parse it as a source file.
4182c393a42Smrg    -*|$object)
4192c393a42Smrg      ;;
4202c393a42Smrg    *)
4212c393a42Smrg      set fnord "$@" "$arg"; shift ;;
4222c393a42Smrg    esac
4232c393a42Smrg  done
4242c393a42Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4252c393a42Smrg  touch "$tmpdepfile"
4262c393a42Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4272c393a42Smrg  rm -f "$depfile"
4282c393a42Smrg  cat < "$tmpdepfile" > "$depfile"
4292c393a42Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4302c393a42Smrg' | \
4312c393a42Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
4322c393a42Smrg## correctly.  Breaking it into two sed invocations is a workaround.
4332c393a42Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4342c393a42Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4352c393a42Smrg  ;;
4362c393a42Smrg
4372c393a42Smrgcpp)
4382c393a42Smrg  # Important note: in order to support this mode, a compiler *must*
4392c393a42Smrg  # always write the preprocessed file to stdout.
4402c393a42Smrg  "$@" || exit $?
4412c393a42Smrg
4422c393a42Smrg  # Remove the call to Libtool.
4432c393a42Smrg  if test "$libtool" = yes; then
4442c393a42Smrg    while test $1 != '--mode=compile'; do
4452c393a42Smrg      shift
4462c393a42Smrg    done
4472c393a42Smrg    shift
4482c393a42Smrg  fi
4492c393a42Smrg
4502c393a42Smrg  # Remove `-o $object'.
4512c393a42Smrg  IFS=" "
4522c393a42Smrg  for arg
4532c393a42Smrg  do
4542c393a42Smrg    case $arg in
4552c393a42Smrg    -o)
4562c393a42Smrg      shift
4572c393a42Smrg      ;;
4582c393a42Smrg    $object)
4592c393a42Smrg      shift
4602c393a42Smrg      ;;
4612c393a42Smrg    *)
4622c393a42Smrg      set fnord "$@" "$arg"
4632c393a42Smrg      shift # fnord
4642c393a42Smrg      shift # $arg
4652c393a42Smrg      ;;
4662c393a42Smrg    esac
4672c393a42Smrg  done
4682c393a42Smrg
4692c393a42Smrg  "$@" -E |
4702c393a42Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4712c393a42Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4722c393a42Smrg    sed '$ s: \\$::' > "$tmpdepfile"
4732c393a42Smrg  rm -f "$depfile"
4742c393a42Smrg  echo "$object : \\" > "$depfile"
4752c393a42Smrg  cat < "$tmpdepfile" >> "$depfile"
4762c393a42Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4772c393a42Smrg  rm -f "$tmpdepfile"
4782c393a42Smrg  ;;
4792c393a42Smrg
4802c393a42Smrgmsvisualcpp)
4812c393a42Smrg  # Important note: in order to support this mode, a compiler *must*
4822c393a42Smrg  # always write the preprocessed file to stdout, regardless of -o,
4832c393a42Smrg  # because we must use -o when running libtool.
4842c393a42Smrg  "$@" || exit $?
4852c393a42Smrg  IFS=" "
4862c393a42Smrg  for arg
4872c393a42Smrg  do
4882c393a42Smrg    case "$arg" in
4892c393a42Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4902c393a42Smrg	set fnord "$@"
4912c393a42Smrg	shift
4922c393a42Smrg	shift
4932c393a42Smrg	;;
4942c393a42Smrg    *)
4952c393a42Smrg	set fnord "$@" "$arg"
4962c393a42Smrg	shift
4972c393a42Smrg	shift
4982c393a42Smrg	;;
4992c393a42Smrg    esac
5002c393a42Smrg  done
5012c393a42Smrg  "$@" -E |
5022c393a42Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5032c393a42Smrg  rm -f "$depfile"
5042c393a42Smrg  echo "$object : \\" > "$depfile"
5052c393a42Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5062c393a42Smrg  echo "	" >> "$depfile"
5072c393a42Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5082c393a42Smrg  rm -f "$tmpdepfile"
5092c393a42Smrg  ;;
5102c393a42Smrg
5112c393a42Smrgnone)
5122c393a42Smrg  exec "$@"
5132c393a42Smrg  ;;
5142c393a42Smrg
5152c393a42Smrg*)
5162c393a42Smrg  echo "Unknown depmode $depmode" 1>&2
5172c393a42Smrg  exit 1
5182c393a42Smrg  ;;
5192c393a42Smrgesac
5202c393a42Smrg
5212c393a42Smrgexit 0
5222c393a42Smrg
5232c393a42Smrg# Local Variables:
5242c393a42Smrg# mode: shell-script
5252c393a42Smrg# sh-indentation: 2
5262c393a42Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5272c393a42Smrg# time-stamp-start: "scriptversion="
5282c393a42Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5292c393a42Smrg# time-stamp-end: "$"
5302c393a42Smrg# End:
531