depcomp revision 0fa2845d
10fa2845dSmrg#! /bin/sh
20fa2845dSmrg# depcomp - compile a program generating dependencies as side-effects
30fa2845dSmrg
40fa2845dSmrgscriptversion=2006-10-15.18
50fa2845dSmrg
60fa2845dSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
70fa2845dSmrg# Foundation, Inc.
80fa2845dSmrg
90fa2845dSmrg# This program is free software; you can redistribute it and/or modify
100fa2845dSmrg# it under the terms of the GNU General Public License as published by
110fa2845dSmrg# the Free Software Foundation; either version 2, or (at your option)
120fa2845dSmrg# any later version.
130fa2845dSmrg
140fa2845dSmrg# This program is distributed in the hope that it will be useful,
150fa2845dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
160fa2845dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
170fa2845dSmrg# GNU General Public License for more details.
180fa2845dSmrg
190fa2845dSmrg# You should have received a copy of the GNU General Public License
200fa2845dSmrg# along with this program; if not, write to the Free Software
210fa2845dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
220fa2845dSmrg# 02110-1301, USA.
230fa2845dSmrg
240fa2845dSmrg# As a special exception to the GNU General Public License, if you
250fa2845dSmrg# distribute this file as part of a program that contains a
260fa2845dSmrg# configuration script generated by Autoconf, you may include it under
270fa2845dSmrg# the same distribution terms that you use for the rest of that program.
280fa2845dSmrg
290fa2845dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
300fa2845dSmrg
310fa2845dSmrgcase $1 in
320fa2845dSmrg  '')
330fa2845dSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
340fa2845dSmrg     exit 1;
350fa2845dSmrg     ;;
360fa2845dSmrg  -h | --h*)
370fa2845dSmrg    cat <<\EOF
380fa2845dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
390fa2845dSmrg
400fa2845dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
410fa2845dSmrgas side-effects.
420fa2845dSmrg
430fa2845dSmrgEnvironment variables:
440fa2845dSmrg  depmode     Dependency tracking mode.
450fa2845dSmrg  source      Source file read by `PROGRAMS ARGS'.
460fa2845dSmrg  object      Object file output by `PROGRAMS ARGS'.
470fa2845dSmrg  DEPDIR      directory where to store dependencies.
480fa2845dSmrg  depfile     Dependency file to output.
490fa2845dSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
500fa2845dSmrg  libtool     Whether libtool is used (yes/no).
510fa2845dSmrg
520fa2845dSmrgReport bugs to <bug-automake@gnu.org>.
530fa2845dSmrgEOF
540fa2845dSmrg    exit $?
550fa2845dSmrg    ;;
560fa2845dSmrg  -v | --v*)
570fa2845dSmrg    echo "depcomp $scriptversion"
580fa2845dSmrg    exit $?
590fa2845dSmrg    ;;
600fa2845dSmrgesac
610fa2845dSmrg
620fa2845dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
630fa2845dSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
640fa2845dSmrg  exit 1
650fa2845dSmrgfi
660fa2845dSmrg
670fa2845dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
680fa2845dSmrgdepfile=${depfile-`echo "$object" |
690fa2845dSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
700fa2845dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
710fa2845dSmrg
720fa2845dSmrgrm -f "$tmpdepfile"
730fa2845dSmrg
740fa2845dSmrg# Some modes work just like other modes, but use different flags.  We
750fa2845dSmrg# parameterize here, but still list the modes in the big case below,
760fa2845dSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
770fa2845dSmrg# here, because this file can only contain one case statement.
780fa2845dSmrgif test "$depmode" = hp; then
790fa2845dSmrg  # HP compiler uses -M and no extra arg.
800fa2845dSmrg  gccflag=-M
810fa2845dSmrg  depmode=gcc
820fa2845dSmrgfi
830fa2845dSmrg
840fa2845dSmrgif test "$depmode" = dashXmstdout; then
850fa2845dSmrg   # This is just like dashmstdout with a different argument.
860fa2845dSmrg   dashmflag=-xM
870fa2845dSmrg   depmode=dashmstdout
880fa2845dSmrgfi
890fa2845dSmrg
900fa2845dSmrgcase "$depmode" in
910fa2845dSmrggcc3)
920fa2845dSmrg## gcc 3 implements dependency tracking that does exactly what
930fa2845dSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
940fa2845dSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
950fa2845dSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
960fa2845dSmrg## the command line argument order; so add the flags where they
970fa2845dSmrg## appear in depend2.am.  Note that the slowdown incurred here
980fa2845dSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
990fa2845dSmrg  for arg
1000fa2845dSmrg  do
1010fa2845dSmrg    case $arg in
1020fa2845dSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1030fa2845dSmrg    *)  set fnord "$@" "$arg" ;;
1040fa2845dSmrg    esac
1050fa2845dSmrg    shift # fnord
1060fa2845dSmrg    shift # $arg
1070fa2845dSmrg  done
1080fa2845dSmrg  "$@"
1090fa2845dSmrg  stat=$?
1100fa2845dSmrg  if test $stat -eq 0; then :
1110fa2845dSmrg  else
1120fa2845dSmrg    rm -f "$tmpdepfile"
1130fa2845dSmrg    exit $stat
1140fa2845dSmrg  fi
1150fa2845dSmrg  mv "$tmpdepfile" "$depfile"
1160fa2845dSmrg  ;;
1170fa2845dSmrg
1180fa2845dSmrggcc)
1190fa2845dSmrg## There are various ways to get dependency output from gcc.  Here's
1200fa2845dSmrg## why we pick this rather obscure method:
1210fa2845dSmrg## - Don't want to use -MD because we'd like the dependencies to end
1220fa2845dSmrg##   up in a subdir.  Having to rename by hand is ugly.
1230fa2845dSmrg##   (We might end up doing this anyway to support other compilers.)
1240fa2845dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1250fa2845dSmrg##   -MM, not -M (despite what the docs say).
1260fa2845dSmrg## - Using -M directly means running the compiler twice (even worse
1270fa2845dSmrg##   than renaming).
1280fa2845dSmrg  if test -z "$gccflag"; then
1290fa2845dSmrg    gccflag=-MD,
1300fa2845dSmrg  fi
1310fa2845dSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1320fa2845dSmrg  stat=$?
1330fa2845dSmrg  if test $stat -eq 0; then :
1340fa2845dSmrg  else
1350fa2845dSmrg    rm -f "$tmpdepfile"
1360fa2845dSmrg    exit $stat
1370fa2845dSmrg  fi
1380fa2845dSmrg  rm -f "$depfile"
1390fa2845dSmrg  echo "$object : \\" > "$depfile"
1400fa2845dSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1410fa2845dSmrg## The second -e expression handles DOS-style file names with drive letters.
1420fa2845dSmrg  sed -e 's/^[^:]*: / /' \
1430fa2845dSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1440fa2845dSmrg## This next piece of magic avoids the `deleted header file' problem.
1450fa2845dSmrg## The problem is that when a header file which appears in a .P file
1460fa2845dSmrg## is deleted, the dependency causes make to die (because there is
1470fa2845dSmrg## typically no way to rebuild the header).  We avoid this by adding
1480fa2845dSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1490fa2845dSmrg## this for us directly.
1500fa2845dSmrg  tr ' ' '
1510fa2845dSmrg' < "$tmpdepfile" |
1520fa2845dSmrg## Some versions of gcc put a space before the `:'.  On the theory
1530fa2845dSmrg## that the space means something, we add a space to the output as
1540fa2845dSmrg## well.
1550fa2845dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1560fa2845dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1570fa2845dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1580fa2845dSmrg  rm -f "$tmpdepfile"
1590fa2845dSmrg  ;;
1600fa2845dSmrg
1610fa2845dSmrghp)
1620fa2845dSmrg  # This case exists only to let depend.m4 do its work.  It works by
1630fa2845dSmrg  # looking at the text of this script.  This case will never be run,
1640fa2845dSmrg  # since it is checked for above.
1650fa2845dSmrg  exit 1
1660fa2845dSmrg  ;;
1670fa2845dSmrg
1680fa2845dSmrgsgi)
1690fa2845dSmrg  if test "$libtool" = yes; then
1700fa2845dSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1710fa2845dSmrg  else
1720fa2845dSmrg    "$@" -MDupdate "$tmpdepfile"
1730fa2845dSmrg  fi
1740fa2845dSmrg  stat=$?
1750fa2845dSmrg  if test $stat -eq 0; then :
1760fa2845dSmrg  else
1770fa2845dSmrg    rm -f "$tmpdepfile"
1780fa2845dSmrg    exit $stat
1790fa2845dSmrg  fi
1800fa2845dSmrg  rm -f "$depfile"
1810fa2845dSmrg
1820fa2845dSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1830fa2845dSmrg    echo "$object : \\" > "$depfile"
1840fa2845dSmrg
1850fa2845dSmrg    # Clip off the initial element (the dependent).  Don't try to be
1860fa2845dSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1870fa2845dSmrg    # lines with more than a fixed number of characters (4096 in
1880fa2845dSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1890fa2845dSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1900fa2845dSmrg    # dependency line.
1910fa2845dSmrg    tr ' ' '
1920fa2845dSmrg' < "$tmpdepfile" \
1930fa2845dSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1940fa2845dSmrg    tr '
1950fa2845dSmrg' ' ' >> $depfile
1960fa2845dSmrg    echo >> $depfile
1970fa2845dSmrg
1980fa2845dSmrg    # The second pass generates a dummy entry for each header file.
1990fa2845dSmrg    tr ' ' '
2000fa2845dSmrg' < "$tmpdepfile" \
2010fa2845dSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2020fa2845dSmrg   >> $depfile
2030fa2845dSmrg  else
2040fa2845dSmrg    # The sourcefile does not contain any dependencies, so just
2050fa2845dSmrg    # store a dummy comment line, to avoid errors with the Makefile
2060fa2845dSmrg    # "include basename.Plo" scheme.
2070fa2845dSmrg    echo "#dummy" > "$depfile"
2080fa2845dSmrg  fi
2090fa2845dSmrg  rm -f "$tmpdepfile"
2100fa2845dSmrg  ;;
2110fa2845dSmrg
2120fa2845dSmrgaix)
2130fa2845dSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2140fa2845dSmrg  # in a .u file.  In older versions, this file always lives in the
2150fa2845dSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2160fa2845dSmrg  # start of each line; $object doesn't have directory information.
2170fa2845dSmrg  # Version 6 uses the directory in both cases.
2180fa2845dSmrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2190fa2845dSmrg  tmpdepfile="$stripped.u"
2200fa2845dSmrg  if test "$libtool" = yes; then
2210fa2845dSmrg    "$@" -Wc,-M
2220fa2845dSmrg  else
2230fa2845dSmrg    "$@" -M
2240fa2845dSmrg  fi
2250fa2845dSmrg  stat=$?
2260fa2845dSmrg
2270fa2845dSmrg  if test -f "$tmpdepfile"; then :
2280fa2845dSmrg  else
2290fa2845dSmrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2300fa2845dSmrg    tmpdepfile="$stripped.u"
2310fa2845dSmrg  fi
2320fa2845dSmrg
2330fa2845dSmrg  if test $stat -eq 0; then :
2340fa2845dSmrg  else
2350fa2845dSmrg    rm -f "$tmpdepfile"
2360fa2845dSmrg    exit $stat
2370fa2845dSmrg  fi
2380fa2845dSmrg
2390fa2845dSmrg  if test -f "$tmpdepfile"; then
2400fa2845dSmrg    outname="$stripped.o"
2410fa2845dSmrg    # Each line is of the form `foo.o: dependent.h'.
2420fa2845dSmrg    # Do two passes, one to just change these to
2430fa2845dSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2440fa2845dSmrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2450fa2845dSmrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2460fa2845dSmrg  else
2470fa2845dSmrg    # The sourcefile does not contain any dependencies, so just
2480fa2845dSmrg    # store a dummy comment line, to avoid errors with the Makefile
2490fa2845dSmrg    # "include basename.Plo" scheme.
2500fa2845dSmrg    echo "#dummy" > "$depfile"
2510fa2845dSmrg  fi
2520fa2845dSmrg  rm -f "$tmpdepfile"
2530fa2845dSmrg  ;;
2540fa2845dSmrg
2550fa2845dSmrgicc)
2560fa2845dSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2570fa2845dSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2580fa2845dSmrg  # ICC 7.0 will fill foo.d with something like
2590fa2845dSmrg  #    foo.o: sub/foo.c
2600fa2845dSmrg  #    foo.o: sub/foo.h
2610fa2845dSmrg  # which is wrong.  We want:
2620fa2845dSmrg  #    sub/foo.o: sub/foo.c
2630fa2845dSmrg  #    sub/foo.o: sub/foo.h
2640fa2845dSmrg  #    sub/foo.c:
2650fa2845dSmrg  #    sub/foo.h:
2660fa2845dSmrg  # ICC 7.1 will output
2670fa2845dSmrg  #    foo.o: sub/foo.c sub/foo.h
2680fa2845dSmrg  # and will wrap long lines using \ :
2690fa2845dSmrg  #    foo.o: sub/foo.c ... \
2700fa2845dSmrg  #     sub/foo.h ... \
2710fa2845dSmrg  #     ...
2720fa2845dSmrg
2730fa2845dSmrg  "$@" -MD -MF "$tmpdepfile"
2740fa2845dSmrg  stat=$?
2750fa2845dSmrg  if test $stat -eq 0; then :
2760fa2845dSmrg  else
2770fa2845dSmrg    rm -f "$tmpdepfile"
2780fa2845dSmrg    exit $stat
2790fa2845dSmrg  fi
2800fa2845dSmrg  rm -f "$depfile"
2810fa2845dSmrg  # Each line is of the form `foo.o: dependent.h',
2820fa2845dSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2830fa2845dSmrg  # Do two passes, one to just change these to
2840fa2845dSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2850fa2845dSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2860fa2845dSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2870fa2845dSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
2880fa2845dSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2890fa2845dSmrg    sed -e 's/$/ :/' >> "$depfile"
2900fa2845dSmrg  rm -f "$tmpdepfile"
2910fa2845dSmrg  ;;
2920fa2845dSmrg
2930fa2845dSmrghp2)
2940fa2845dSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
2950fa2845dSmrg  # compilers, which have integrated preprocessors.  The correct option
2960fa2845dSmrg  # to use with these is +Maked; it writes dependencies to a file named
2970fa2845dSmrg  # 'foo.d', which lands next to the object file, wherever that
2980fa2845dSmrg  # happens to be.
2990fa2845dSmrg  # Much of this is similar to the tru64 case; see comments there.
3000fa2845dSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3010fa2845dSmrg  test "x$dir" = "x$object" && dir=
3020fa2845dSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3030fa2845dSmrg  if test "$libtool" = yes; then
3040fa2845dSmrg    tmpdepfile1=$dir$base.d
3050fa2845dSmrg    tmpdepfile2=$dir.libs/$base.d
3060fa2845dSmrg    "$@" -Wc,+Maked
3070fa2845dSmrg  else
3080fa2845dSmrg    tmpdepfile1=$dir$base.d
3090fa2845dSmrg    tmpdepfile2=$dir$base.d
3100fa2845dSmrg    "$@" +Maked
3110fa2845dSmrg  fi
3120fa2845dSmrg  stat=$?
3130fa2845dSmrg  if test $stat -eq 0; then :
3140fa2845dSmrg  else
3150fa2845dSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3160fa2845dSmrg     exit $stat
3170fa2845dSmrg  fi
3180fa2845dSmrg
3190fa2845dSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3200fa2845dSmrg  do
3210fa2845dSmrg    test -f "$tmpdepfile" && break
3220fa2845dSmrg  done
3230fa2845dSmrg  if test -f "$tmpdepfile"; then
3240fa2845dSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3250fa2845dSmrg    # Add `dependent.h:' lines.
3260fa2845dSmrg    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
3270fa2845dSmrg  else
3280fa2845dSmrg    echo "#dummy" > "$depfile"
3290fa2845dSmrg  fi
3300fa2845dSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3310fa2845dSmrg  ;;
3320fa2845dSmrg
3330fa2845dSmrgtru64)
3340fa2845dSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3350fa2845dSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3360fa2845dSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3370fa2845dSmrg   # dependencies in `foo.d' instead, so we check for that too.
3380fa2845dSmrg   # Subdirectories are respected.
3390fa2845dSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3400fa2845dSmrg   test "x$dir" = "x$object" && dir=
3410fa2845dSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3420fa2845dSmrg
3430fa2845dSmrg   if test "$libtool" = yes; then
3440fa2845dSmrg      # With Tru64 cc, shared objects can also be used to make a
3450fa2845dSmrg      # static library.  This mechanism is used in libtool 1.4 series to
3460fa2845dSmrg      # handle both shared and static libraries in a single compilation.
3470fa2845dSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3480fa2845dSmrg      #
3490fa2845dSmrg      # With libtool 1.5 this exception was removed, and libtool now
3500fa2845dSmrg      # generates 2 separate objects for the 2 libraries.  These two
3510fa2845dSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
3520fa2845dSmrg      # in $dir$base.o.d.  We have to check for both files, because
3530fa2845dSmrg      # one of the two compilations can be disabled.  We should prefer
3540fa2845dSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3550fa2845dSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3560fa2845dSmrg      # the former would cause a distcleancheck panic.
3570fa2845dSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3580fa2845dSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3590fa2845dSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3600fa2845dSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3610fa2845dSmrg      "$@" -Wc,-MD
3620fa2845dSmrg   else
3630fa2845dSmrg      tmpdepfile1=$dir$base.o.d
3640fa2845dSmrg      tmpdepfile2=$dir$base.d
3650fa2845dSmrg      tmpdepfile3=$dir$base.d
3660fa2845dSmrg      tmpdepfile4=$dir$base.d
3670fa2845dSmrg      "$@" -MD
3680fa2845dSmrg   fi
3690fa2845dSmrg
3700fa2845dSmrg   stat=$?
3710fa2845dSmrg   if test $stat -eq 0; then :
3720fa2845dSmrg   else
3730fa2845dSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3740fa2845dSmrg      exit $stat
3750fa2845dSmrg   fi
3760fa2845dSmrg
3770fa2845dSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3780fa2845dSmrg   do
3790fa2845dSmrg     test -f "$tmpdepfile" && break
3800fa2845dSmrg   done
3810fa2845dSmrg   if test -f "$tmpdepfile"; then
3820fa2845dSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3830fa2845dSmrg      # That's a tab and a space in the [].
3840fa2845dSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3850fa2845dSmrg   else
3860fa2845dSmrg      echo "#dummy" > "$depfile"
3870fa2845dSmrg   fi
3880fa2845dSmrg   rm -f "$tmpdepfile"
3890fa2845dSmrg   ;;
3900fa2845dSmrg
3910fa2845dSmrg#nosideeffect)
3920fa2845dSmrg  # This comment above is used by automake to tell side-effect
3930fa2845dSmrg  # dependency tracking mechanisms from slower ones.
3940fa2845dSmrg
3950fa2845dSmrgdashmstdout)
3960fa2845dSmrg  # Important note: in order to support this mode, a compiler *must*
3970fa2845dSmrg  # always write the preprocessed file to stdout, regardless of -o.
3980fa2845dSmrg  "$@" || exit $?
3990fa2845dSmrg
4000fa2845dSmrg  # Remove the call to Libtool.
4010fa2845dSmrg  if test "$libtool" = yes; then
4020fa2845dSmrg    while test $1 != '--mode=compile'; do
4030fa2845dSmrg      shift
4040fa2845dSmrg    done
4050fa2845dSmrg    shift
4060fa2845dSmrg  fi
4070fa2845dSmrg
4080fa2845dSmrg  # Remove `-o $object'.
4090fa2845dSmrg  IFS=" "
4100fa2845dSmrg  for arg
4110fa2845dSmrg  do
4120fa2845dSmrg    case $arg in
4130fa2845dSmrg    -o)
4140fa2845dSmrg      shift
4150fa2845dSmrg      ;;
4160fa2845dSmrg    $object)
4170fa2845dSmrg      shift
4180fa2845dSmrg      ;;
4190fa2845dSmrg    *)
4200fa2845dSmrg      set fnord "$@" "$arg"
4210fa2845dSmrg      shift # fnord
4220fa2845dSmrg      shift # $arg
4230fa2845dSmrg      ;;
4240fa2845dSmrg    esac
4250fa2845dSmrg  done
4260fa2845dSmrg
4270fa2845dSmrg  test -z "$dashmflag" && dashmflag=-M
4280fa2845dSmrg  # Require at least two characters before searching for `:'
4290fa2845dSmrg  # in the target name.  This is to cope with DOS-style filenames:
4300fa2845dSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4310fa2845dSmrg  "$@" $dashmflag |
4320fa2845dSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4330fa2845dSmrg  rm -f "$depfile"
4340fa2845dSmrg  cat < "$tmpdepfile" > "$depfile"
4350fa2845dSmrg  tr ' ' '
4360fa2845dSmrg' < "$tmpdepfile" | \
4370fa2845dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4380fa2845dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4390fa2845dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4400fa2845dSmrg  rm -f "$tmpdepfile"
4410fa2845dSmrg  ;;
4420fa2845dSmrg
4430fa2845dSmrgdashXmstdout)
4440fa2845dSmrg  # This case only exists to satisfy depend.m4.  It is never actually
4450fa2845dSmrg  # run, as this mode is specially recognized in the preamble.
4460fa2845dSmrg  exit 1
4470fa2845dSmrg  ;;
4480fa2845dSmrg
4490fa2845dSmrgmakedepend)
4500fa2845dSmrg  "$@" || exit $?
4510fa2845dSmrg  # Remove any Libtool call
4520fa2845dSmrg  if test "$libtool" = yes; then
4530fa2845dSmrg    while test $1 != '--mode=compile'; do
4540fa2845dSmrg      shift
4550fa2845dSmrg    done
4560fa2845dSmrg    shift
4570fa2845dSmrg  fi
4580fa2845dSmrg  # X makedepend
4590fa2845dSmrg  shift
4600fa2845dSmrg  cleared=no
4610fa2845dSmrg  for arg in "$@"; do
4620fa2845dSmrg    case $cleared in
4630fa2845dSmrg    no)
4640fa2845dSmrg      set ""; shift
4650fa2845dSmrg      cleared=yes ;;
4660fa2845dSmrg    esac
4670fa2845dSmrg    case "$arg" in
4680fa2845dSmrg    -D*|-I*)
4690fa2845dSmrg      set fnord "$@" "$arg"; shift ;;
4700fa2845dSmrg    # Strip any option that makedepend may not understand.  Remove
4710fa2845dSmrg    # the object too, otherwise makedepend will parse it as a source file.
4720fa2845dSmrg    -*|$object)
4730fa2845dSmrg      ;;
4740fa2845dSmrg    *)
4750fa2845dSmrg      set fnord "$@" "$arg"; shift ;;
4760fa2845dSmrg    esac
4770fa2845dSmrg  done
4780fa2845dSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4790fa2845dSmrg  touch "$tmpdepfile"
4800fa2845dSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4810fa2845dSmrg  rm -f "$depfile"
4820fa2845dSmrg  cat < "$tmpdepfile" > "$depfile"
4830fa2845dSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4840fa2845dSmrg' | \
4850fa2845dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4860fa2845dSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4870fa2845dSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4880fa2845dSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4890fa2845dSmrg  ;;
4900fa2845dSmrg
4910fa2845dSmrgcpp)
4920fa2845dSmrg  # Important note: in order to support this mode, a compiler *must*
4930fa2845dSmrg  # always write the preprocessed file to stdout.
4940fa2845dSmrg  "$@" || exit $?
4950fa2845dSmrg
4960fa2845dSmrg  # Remove the call to Libtool.
4970fa2845dSmrg  if test "$libtool" = yes; then
4980fa2845dSmrg    while test $1 != '--mode=compile'; do
4990fa2845dSmrg      shift
5000fa2845dSmrg    done
5010fa2845dSmrg    shift
5020fa2845dSmrg  fi
5030fa2845dSmrg
5040fa2845dSmrg  # Remove `-o $object'.
5050fa2845dSmrg  IFS=" "
5060fa2845dSmrg  for arg
5070fa2845dSmrg  do
5080fa2845dSmrg    case $arg in
5090fa2845dSmrg    -o)
5100fa2845dSmrg      shift
5110fa2845dSmrg      ;;
5120fa2845dSmrg    $object)
5130fa2845dSmrg      shift
5140fa2845dSmrg      ;;
5150fa2845dSmrg    *)
5160fa2845dSmrg      set fnord "$@" "$arg"
5170fa2845dSmrg      shift # fnord
5180fa2845dSmrg      shift # $arg
5190fa2845dSmrg      ;;
5200fa2845dSmrg    esac
5210fa2845dSmrg  done
5220fa2845dSmrg
5230fa2845dSmrg  "$@" -E |
5240fa2845dSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5250fa2845dSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5260fa2845dSmrg    sed '$ s: \\$::' > "$tmpdepfile"
5270fa2845dSmrg  rm -f "$depfile"
5280fa2845dSmrg  echo "$object : \\" > "$depfile"
5290fa2845dSmrg  cat < "$tmpdepfile" >> "$depfile"
5300fa2845dSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5310fa2845dSmrg  rm -f "$tmpdepfile"
5320fa2845dSmrg  ;;
5330fa2845dSmrg
5340fa2845dSmrgmsvisualcpp)
5350fa2845dSmrg  # Important note: in order to support this mode, a compiler *must*
5360fa2845dSmrg  # always write the preprocessed file to stdout, regardless of -o,
5370fa2845dSmrg  # because we must use -o when running libtool.
5380fa2845dSmrg  "$@" || exit $?
5390fa2845dSmrg  IFS=" "
5400fa2845dSmrg  for arg
5410fa2845dSmrg  do
5420fa2845dSmrg    case "$arg" in
5430fa2845dSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5440fa2845dSmrg	set fnord "$@"
5450fa2845dSmrg	shift
5460fa2845dSmrg	shift
5470fa2845dSmrg	;;
5480fa2845dSmrg    *)
5490fa2845dSmrg	set fnord "$@" "$arg"
5500fa2845dSmrg	shift
5510fa2845dSmrg	shift
5520fa2845dSmrg	;;
5530fa2845dSmrg    esac
5540fa2845dSmrg  done
5550fa2845dSmrg  "$@" -E |
5560fa2845dSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5570fa2845dSmrg  rm -f "$depfile"
5580fa2845dSmrg  echo "$object : \\" > "$depfile"
5590fa2845dSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5600fa2845dSmrg  echo "	" >> "$depfile"
5610fa2845dSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5620fa2845dSmrg  rm -f "$tmpdepfile"
5630fa2845dSmrg  ;;
5640fa2845dSmrg
5650fa2845dSmrgnone)
5660fa2845dSmrg  exec "$@"
5670fa2845dSmrg  ;;
5680fa2845dSmrg
5690fa2845dSmrg*)
5700fa2845dSmrg  echo "Unknown depmode $depmode" 1>&2
5710fa2845dSmrg  exit 1
5720fa2845dSmrg  ;;
5730fa2845dSmrgesac
5740fa2845dSmrg
5750fa2845dSmrgexit 0
5760fa2845dSmrg
5770fa2845dSmrg# Local Variables:
5780fa2845dSmrg# mode: shell-script
5790fa2845dSmrg# sh-indentation: 2
5800fa2845dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5810fa2845dSmrg# time-stamp-start: "scriptversion="
5820fa2845dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5830fa2845dSmrg# time-stamp-end: "$"
5840fa2845dSmrg# End:
585