depcomp revision 7706df26
17706df26Smrg#! /bin/sh
27706df26Smrg# depcomp - compile a program generating dependencies as side-effects
37706df26Smrg
47706df26Smrgscriptversion=2005-07-09.11
57706df26Smrg
67706df26Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
77706df26Smrg
87706df26Smrg# This program is free software; you can redistribute it and/or modify
97706df26Smrg# it under the terms of the GNU General Public License as published by
107706df26Smrg# the Free Software Foundation; either version 2, or (at your option)
117706df26Smrg# any later version.
127706df26Smrg
137706df26Smrg# This program is distributed in the hope that it will be useful,
147706df26Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
157706df26Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
167706df26Smrg# GNU General Public License for more details.
177706df26Smrg
187706df26Smrg# You should have received a copy of the GNU General Public License
197706df26Smrg# along with this program; if not, write to the Free Software
207706df26Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
217706df26Smrg# 02110-1301, USA.
227706df26Smrg
237706df26Smrg# As a special exception to the GNU General Public License, if you
247706df26Smrg# distribute this file as part of a program that contains a
257706df26Smrg# configuration script generated by Autoconf, you may include it under
267706df26Smrg# the same distribution terms that you use for the rest of that program.
277706df26Smrg
287706df26Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
297706df26Smrg
307706df26Smrgcase $1 in
317706df26Smrg  '')
327706df26Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
337706df26Smrg     exit 1;
347706df26Smrg     ;;
357706df26Smrg  -h | --h*)
367706df26Smrg    cat <<\EOF
377706df26SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
387706df26Smrg
397706df26SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
407706df26Smrgas side-effects.
417706df26Smrg
427706df26SmrgEnvironment variables:
437706df26Smrg  depmode     Dependency tracking mode.
447706df26Smrg  source      Source file read by `PROGRAMS ARGS'.
457706df26Smrg  object      Object file output by `PROGRAMS ARGS'.
467706df26Smrg  DEPDIR      directory where to store dependencies.
477706df26Smrg  depfile     Dependency file to output.
487706df26Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
497706df26Smrg  libtool     Whether libtool is used (yes/no).
507706df26Smrg
517706df26SmrgReport bugs to <bug-automake@gnu.org>.
527706df26SmrgEOF
537706df26Smrg    exit $?
547706df26Smrg    ;;
557706df26Smrg  -v | --v*)
567706df26Smrg    echo "depcomp $scriptversion"
577706df26Smrg    exit $?
587706df26Smrg    ;;
597706df26Smrgesac
607706df26Smrg
617706df26Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
627706df26Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
637706df26Smrg  exit 1
647706df26Smrgfi
657706df26Smrg
667706df26Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
677706df26Smrgdepfile=${depfile-`echo "$object" |
687706df26Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
697706df26Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
707706df26Smrg
717706df26Smrgrm -f "$tmpdepfile"
727706df26Smrg
737706df26Smrg# Some modes work just like other modes, but use different flags.  We
747706df26Smrg# parameterize here, but still list the modes in the big case below,
757706df26Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
767706df26Smrg# here, because this file can only contain one case statement.
777706df26Smrgif test "$depmode" = hp; then
787706df26Smrg  # HP compiler uses -M and no extra arg.
797706df26Smrg  gccflag=-M
807706df26Smrg  depmode=gcc
817706df26Smrgfi
827706df26Smrg
837706df26Smrgif test "$depmode" = dashXmstdout; then
847706df26Smrg   # This is just like dashmstdout with a different argument.
857706df26Smrg   dashmflag=-xM
867706df26Smrg   depmode=dashmstdout
877706df26Smrgfi
887706df26Smrg
897706df26Smrgcase "$depmode" in
907706df26Smrggcc3)
917706df26Smrg## gcc 3 implements dependency tracking that does exactly what
927706df26Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
937706df26Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
947706df26Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
957706df26Smrg  stat=$?
967706df26Smrg  if test $stat -eq 0; then :
977706df26Smrg  else
987706df26Smrg    rm -f "$tmpdepfile"
997706df26Smrg    exit $stat
1007706df26Smrg  fi
1017706df26Smrg  mv "$tmpdepfile" "$depfile"
1027706df26Smrg  ;;
1037706df26Smrg
1047706df26Smrggcc)
1057706df26Smrg## There are various ways to get dependency output from gcc.  Here's
1067706df26Smrg## why we pick this rather obscure method:
1077706df26Smrg## - Don't want to use -MD because we'd like the dependencies to end
1087706df26Smrg##   up in a subdir.  Having to rename by hand is ugly.
1097706df26Smrg##   (We might end up doing this anyway to support other compilers.)
1107706df26Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1117706df26Smrg##   -MM, not -M (despite what the docs say).
1127706df26Smrg## - Using -M directly means running the compiler twice (even worse
1137706df26Smrg##   than renaming).
1147706df26Smrg  if test -z "$gccflag"; then
1157706df26Smrg    gccflag=-MD,
1167706df26Smrg  fi
1177706df26Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
1187706df26Smrg  stat=$?
1197706df26Smrg  if test $stat -eq 0; then :
1207706df26Smrg  else
1217706df26Smrg    rm -f "$tmpdepfile"
1227706df26Smrg    exit $stat
1237706df26Smrg  fi
1247706df26Smrg  rm -f "$depfile"
1257706df26Smrg  echo "$object : \\" > "$depfile"
1267706df26Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1277706df26Smrg## The second -e expression handles DOS-style file names with drive letters.
1287706df26Smrg  sed -e 's/^[^:]*: / /' \
1297706df26Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1307706df26Smrg## This next piece of magic avoids the `deleted header file' problem.
1317706df26Smrg## The problem is that when a header file which appears in a .P file
1327706df26Smrg## is deleted, the dependency causes make to die (because there is
1337706df26Smrg## typically no way to rebuild the header).  We avoid this by adding
1347706df26Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1357706df26Smrg## this for us directly.
1367706df26Smrg  tr ' ' '
1377706df26Smrg' < "$tmpdepfile" |
1387706df26Smrg## Some versions of gcc put a space before the `:'.  On the theory
1397706df26Smrg## that the space means something, we add a space to the output as
1407706df26Smrg## well.
1417706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
1427706df26Smrg## correctly.  Breaking it into two sed invocations is a workaround.
1437706df26Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1447706df26Smrg  rm -f "$tmpdepfile"
1457706df26Smrg  ;;
1467706df26Smrg
1477706df26Smrghp)
1487706df26Smrg  # This case exists only to let depend.m4 do its work.  It works by
1497706df26Smrg  # looking at the text of this script.  This case will never be run,
1507706df26Smrg  # since it is checked for above.
1517706df26Smrg  exit 1
1527706df26Smrg  ;;
1537706df26Smrg
1547706df26Smrgsgi)
1557706df26Smrg  if test "$libtool" = yes; then
1567706df26Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1577706df26Smrg  else
1587706df26Smrg    "$@" -MDupdate "$tmpdepfile"
1597706df26Smrg  fi
1607706df26Smrg  stat=$?
1617706df26Smrg  if test $stat -eq 0; then :
1627706df26Smrg  else
1637706df26Smrg    rm -f "$tmpdepfile"
1647706df26Smrg    exit $stat
1657706df26Smrg  fi
1667706df26Smrg  rm -f "$depfile"
1677706df26Smrg
1687706df26Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1697706df26Smrg    echo "$object : \\" > "$depfile"
1707706df26Smrg
1717706df26Smrg    # Clip off the initial element (the dependent).  Don't try to be
1727706df26Smrg    # clever and replace this with sed code, as IRIX sed won't handle
1737706df26Smrg    # lines with more than a fixed number of characters (4096 in
1747706df26Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1757706df26Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
1767706df26Smrg    # dependency line.
1777706df26Smrg    tr ' ' '
1787706df26Smrg' < "$tmpdepfile" \
1797706df26Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1807706df26Smrg    tr '
1817706df26Smrg' ' ' >> $depfile
1827706df26Smrg    echo >> $depfile
1837706df26Smrg
1847706df26Smrg    # The second pass generates a dummy entry for each header file.
1857706df26Smrg    tr ' ' '
1867706df26Smrg' < "$tmpdepfile" \
1877706df26Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1887706df26Smrg   >> $depfile
1897706df26Smrg  else
1907706df26Smrg    # The sourcefile does not contain any dependencies, so just
1917706df26Smrg    # store a dummy comment line, to avoid errors with the Makefile
1927706df26Smrg    # "include basename.Plo" scheme.
1937706df26Smrg    echo "#dummy" > "$depfile"
1947706df26Smrg  fi
1957706df26Smrg  rm -f "$tmpdepfile"
1967706df26Smrg  ;;
1977706df26Smrg
1987706df26Smrgaix)
1997706df26Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
2007706df26Smrg  # in a .u file.  In older versions, this file always lives in the
2017706df26Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2027706df26Smrg  # start of each line; $object doesn't have directory information.
2037706df26Smrg  # Version 6 uses the directory in both cases.
2047706df26Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2057706df26Smrg  tmpdepfile="$stripped.u"
2067706df26Smrg  if test "$libtool" = yes; then
2077706df26Smrg    "$@" -Wc,-M
2087706df26Smrg  else
2097706df26Smrg    "$@" -M
2107706df26Smrg  fi
2117706df26Smrg  stat=$?
2127706df26Smrg
2137706df26Smrg  if test -f "$tmpdepfile"; then :
2147706df26Smrg  else
2157706df26Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2167706df26Smrg    tmpdepfile="$stripped.u"
2177706df26Smrg  fi
2187706df26Smrg
2197706df26Smrg  if test $stat -eq 0; then :
2207706df26Smrg  else
2217706df26Smrg    rm -f "$tmpdepfile"
2227706df26Smrg    exit $stat
2237706df26Smrg  fi
2247706df26Smrg
2257706df26Smrg  if test -f "$tmpdepfile"; then
2267706df26Smrg    outname="$stripped.o"
2277706df26Smrg    # Each line is of the form `foo.o: dependent.h'.
2287706df26Smrg    # Do two passes, one to just change these to
2297706df26Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2307706df26Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2317706df26Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2327706df26Smrg  else
2337706df26Smrg    # The sourcefile does not contain any dependencies, so just
2347706df26Smrg    # store a dummy comment line, to avoid errors with the Makefile
2357706df26Smrg    # "include basename.Plo" scheme.
2367706df26Smrg    echo "#dummy" > "$depfile"
2377706df26Smrg  fi
2387706df26Smrg  rm -f "$tmpdepfile"
2397706df26Smrg  ;;
2407706df26Smrg
2417706df26Smrgicc)
2427706df26Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
2437706df26Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2447706df26Smrg  # ICC 7.0 will fill foo.d with something like
2457706df26Smrg  #    foo.o: sub/foo.c
2467706df26Smrg  #    foo.o: sub/foo.h
2477706df26Smrg  # which is wrong.  We want:
2487706df26Smrg  #    sub/foo.o: sub/foo.c
2497706df26Smrg  #    sub/foo.o: sub/foo.h
2507706df26Smrg  #    sub/foo.c:
2517706df26Smrg  #    sub/foo.h:
2527706df26Smrg  # ICC 7.1 will output
2537706df26Smrg  #    foo.o: sub/foo.c sub/foo.h
2547706df26Smrg  # and will wrap long lines using \ :
2557706df26Smrg  #    foo.o: sub/foo.c ... \
2567706df26Smrg  #     sub/foo.h ... \
2577706df26Smrg  #     ...
2587706df26Smrg
2597706df26Smrg  "$@" -MD -MF "$tmpdepfile"
2607706df26Smrg  stat=$?
2617706df26Smrg  if test $stat -eq 0; then :
2627706df26Smrg  else
2637706df26Smrg    rm -f "$tmpdepfile"
2647706df26Smrg    exit $stat
2657706df26Smrg  fi
2667706df26Smrg  rm -f "$depfile"
2677706df26Smrg  # Each line is of the form `foo.o: dependent.h',
2687706df26Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2697706df26Smrg  # Do two passes, one to just change these to
2707706df26Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2717706df26Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2727706df26Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2737706df26Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
2747706df26Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2757706df26Smrg    sed -e 's/$/ :/' >> "$depfile"
2767706df26Smrg  rm -f "$tmpdepfile"
2777706df26Smrg  ;;
2787706df26Smrg
2797706df26Smrgtru64)
2807706df26Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
2817706df26Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2827706df26Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2837706df26Smrg   # dependencies in `foo.d' instead, so we check for that too.
2847706df26Smrg   # Subdirectories are respected.
2857706df26Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2867706df26Smrg   test "x$dir" = "x$object" && dir=
2877706df26Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2887706df26Smrg
2897706df26Smrg   if test "$libtool" = yes; then
2907706df26Smrg      # With Tru64 cc, shared objects can also be used to make a
2917706df26Smrg      # static library.  This mecanism is used in libtool 1.4 series to
2927706df26Smrg      # handle both shared and static libraries in a single compilation.
2937706df26Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2947706df26Smrg      #
2957706df26Smrg      # With libtool 1.5 this exception was removed, and libtool now
2967706df26Smrg      # generates 2 separate objects for the 2 libraries.  These two
2977706df26Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
2987706df26Smrg      # in $dir$base.o.d.  We have to check for both files, because
2997706df26Smrg      # one of the two compilations can be disabled.  We should prefer
3007706df26Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3017706df26Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
3027706df26Smrg      # the former would cause a distcleancheck panic.
3037706df26Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3047706df26Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3057706df26Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3067706df26Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3077706df26Smrg      "$@" -Wc,-MD
3087706df26Smrg   else
3097706df26Smrg      tmpdepfile1=$dir$base.o.d
3107706df26Smrg      tmpdepfile2=$dir$base.d
3117706df26Smrg      tmpdepfile3=$dir$base.d
3127706df26Smrg      tmpdepfile4=$dir$base.d
3137706df26Smrg      "$@" -MD
3147706df26Smrg   fi
3157706df26Smrg
3167706df26Smrg   stat=$?
3177706df26Smrg   if test $stat -eq 0; then :
3187706df26Smrg   else
3197706df26Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3207706df26Smrg      exit $stat
3217706df26Smrg   fi
3227706df26Smrg
3237706df26Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3247706df26Smrg   do
3257706df26Smrg     test -f "$tmpdepfile" && break
3267706df26Smrg   done
3277706df26Smrg   if test -f "$tmpdepfile"; then
3287706df26Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3297706df26Smrg      # That's a tab and a space in the [].
3307706df26Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3317706df26Smrg   else
3327706df26Smrg      echo "#dummy" > "$depfile"
3337706df26Smrg   fi
3347706df26Smrg   rm -f "$tmpdepfile"
3357706df26Smrg   ;;
3367706df26Smrg
3377706df26Smrg#nosideeffect)
3387706df26Smrg  # This comment above is used by automake to tell side-effect
3397706df26Smrg  # dependency tracking mechanisms from slower ones.
3407706df26Smrg
3417706df26Smrgdashmstdout)
3427706df26Smrg  # Important note: in order to support this mode, a compiler *must*
3437706df26Smrg  # always write the preprocessed file to stdout, regardless of -o.
3447706df26Smrg  "$@" || exit $?
3457706df26Smrg
3467706df26Smrg  # Remove the call to Libtool.
3477706df26Smrg  if test "$libtool" = yes; then
3487706df26Smrg    while test $1 != '--mode=compile'; do
3497706df26Smrg      shift
3507706df26Smrg    done
3517706df26Smrg    shift
3527706df26Smrg  fi
3537706df26Smrg
3547706df26Smrg  # Remove `-o $object'.
3557706df26Smrg  IFS=" "
3567706df26Smrg  for arg
3577706df26Smrg  do
3587706df26Smrg    case $arg in
3597706df26Smrg    -o)
3607706df26Smrg      shift
3617706df26Smrg      ;;
3627706df26Smrg    $object)
3637706df26Smrg      shift
3647706df26Smrg      ;;
3657706df26Smrg    *)
3667706df26Smrg      set fnord "$@" "$arg"
3677706df26Smrg      shift # fnord
3687706df26Smrg      shift # $arg
3697706df26Smrg      ;;
3707706df26Smrg    esac
3717706df26Smrg  done
3727706df26Smrg
3737706df26Smrg  test -z "$dashmflag" && dashmflag=-M
3747706df26Smrg  # Require at least two characters before searching for `:'
3757706df26Smrg  # in the target name.  This is to cope with DOS-style filenames:
3767706df26Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3777706df26Smrg  "$@" $dashmflag |
3787706df26Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3797706df26Smrg  rm -f "$depfile"
3807706df26Smrg  cat < "$tmpdepfile" > "$depfile"
3817706df26Smrg  tr ' ' '
3827706df26Smrg' < "$tmpdepfile" | \
3837706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
3847706df26Smrg## correctly.  Breaking it into two sed invocations is a workaround.
3857706df26Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3867706df26Smrg  rm -f "$tmpdepfile"
3877706df26Smrg  ;;
3887706df26Smrg
3897706df26SmrgdashXmstdout)
3907706df26Smrg  # This case only exists to satisfy depend.m4.  It is never actually
3917706df26Smrg  # run, as this mode is specially recognized in the preamble.
3927706df26Smrg  exit 1
3937706df26Smrg  ;;
3947706df26Smrg
3957706df26Smrgmakedepend)
3967706df26Smrg  "$@" || exit $?
3977706df26Smrg  # Remove any Libtool call
3987706df26Smrg  if test "$libtool" = yes; then
3997706df26Smrg    while test $1 != '--mode=compile'; do
4007706df26Smrg      shift
4017706df26Smrg    done
4027706df26Smrg    shift
4037706df26Smrg  fi
4047706df26Smrg  # X makedepend
4057706df26Smrg  shift
4067706df26Smrg  cleared=no
4077706df26Smrg  for arg in "$@"; do
4087706df26Smrg    case $cleared in
4097706df26Smrg    no)
4107706df26Smrg      set ""; shift
4117706df26Smrg      cleared=yes ;;
4127706df26Smrg    esac
4137706df26Smrg    case "$arg" in
4147706df26Smrg    -D*|-I*)
4157706df26Smrg      set fnord "$@" "$arg"; shift ;;
4167706df26Smrg    # Strip any option that makedepend may not understand.  Remove
4177706df26Smrg    # the object too, otherwise makedepend will parse it as a source file.
4187706df26Smrg    -*|$object)
4197706df26Smrg      ;;
4207706df26Smrg    *)
4217706df26Smrg      set fnord "$@" "$arg"; shift ;;
4227706df26Smrg    esac
4237706df26Smrg  done
4247706df26Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4257706df26Smrg  touch "$tmpdepfile"
4267706df26Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4277706df26Smrg  rm -f "$depfile"
4287706df26Smrg  cat < "$tmpdepfile" > "$depfile"
4297706df26Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4307706df26Smrg' | \
4317706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
4327706df26Smrg## correctly.  Breaking it into two sed invocations is a workaround.
4337706df26Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4347706df26Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4357706df26Smrg  ;;
4367706df26Smrg
4377706df26Smrgcpp)
4387706df26Smrg  # Important note: in order to support this mode, a compiler *must*
4397706df26Smrg  # always write the preprocessed file to stdout.
4407706df26Smrg  "$@" || exit $?
4417706df26Smrg
4427706df26Smrg  # Remove the call to Libtool.
4437706df26Smrg  if test "$libtool" = yes; then
4447706df26Smrg    while test $1 != '--mode=compile'; do
4457706df26Smrg      shift
4467706df26Smrg    done
4477706df26Smrg    shift
4487706df26Smrg  fi
4497706df26Smrg
4507706df26Smrg  # Remove `-o $object'.
4517706df26Smrg  IFS=" "
4527706df26Smrg  for arg
4537706df26Smrg  do
4547706df26Smrg    case $arg in
4557706df26Smrg    -o)
4567706df26Smrg      shift
4577706df26Smrg      ;;
4587706df26Smrg    $object)
4597706df26Smrg      shift
4607706df26Smrg      ;;
4617706df26Smrg    *)
4627706df26Smrg      set fnord "$@" "$arg"
4637706df26Smrg      shift # fnord
4647706df26Smrg      shift # $arg
4657706df26Smrg      ;;
4667706df26Smrg    esac
4677706df26Smrg  done
4687706df26Smrg
4697706df26Smrg  "$@" -E |
4707706df26Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4717706df26Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4727706df26Smrg    sed '$ s: \\$::' > "$tmpdepfile"
4737706df26Smrg  rm -f "$depfile"
4747706df26Smrg  echo "$object : \\" > "$depfile"
4757706df26Smrg  cat < "$tmpdepfile" >> "$depfile"
4767706df26Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4777706df26Smrg  rm -f "$tmpdepfile"
4787706df26Smrg  ;;
4797706df26Smrg
4807706df26Smrgmsvisualcpp)
4817706df26Smrg  # Important note: in order to support this mode, a compiler *must*
4827706df26Smrg  # always write the preprocessed file to stdout, regardless of -o,
4837706df26Smrg  # because we must use -o when running libtool.
4847706df26Smrg  "$@" || exit $?
4857706df26Smrg  IFS=" "
4867706df26Smrg  for arg
4877706df26Smrg  do
4887706df26Smrg    case "$arg" in
4897706df26Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4907706df26Smrg	set fnord "$@"
4917706df26Smrg	shift
4927706df26Smrg	shift
4937706df26Smrg	;;
4947706df26Smrg    *)
4957706df26Smrg	set fnord "$@" "$arg"
4967706df26Smrg	shift
4977706df26Smrg	shift
4987706df26Smrg	;;
4997706df26Smrg    esac
5007706df26Smrg  done
5017706df26Smrg  "$@" -E |
5027706df26Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5037706df26Smrg  rm -f "$depfile"
5047706df26Smrg  echo "$object : \\" > "$depfile"
5057706df26Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5067706df26Smrg  echo "	" >> "$depfile"
5077706df26Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5087706df26Smrg  rm -f "$tmpdepfile"
5097706df26Smrg  ;;
5107706df26Smrg
5117706df26Smrgnone)
5127706df26Smrg  exec "$@"
5137706df26Smrg  ;;
5147706df26Smrg
5157706df26Smrg*)
5167706df26Smrg  echo "Unknown depmode $depmode" 1>&2
5177706df26Smrg  exit 1
5187706df26Smrg  ;;
5197706df26Smrgesac
5207706df26Smrg
5217706df26Smrgexit 0
5227706df26Smrg
5237706df26Smrg# Local Variables:
5247706df26Smrg# mode: shell-script
5257706df26Smrg# sh-indentation: 2
5267706df26Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5277706df26Smrg# time-stamp-start: "scriptversion="
5287706df26Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5297706df26Smrg# time-stamp-end: "$"
5307706df26Smrg# End:
531