depcomp revision 8108eb18
18108eb18Smrg#! /bin/sh
28108eb18Smrg
38108eb18Smrg# depcomp - compile a program generating dependencies as side-effects
48108eb18Smrg# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
58108eb18Smrg
68108eb18Smrg# This program is free software; you can redistribute it and/or modify
78108eb18Smrg# it under the terms of the GNU General Public License as published by
88108eb18Smrg# the Free Software Foundation; either version 2, or (at your option)
98108eb18Smrg# any later version.
108108eb18Smrg
118108eb18Smrg# This program is distributed in the hope that it will be useful,
128108eb18Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
138108eb18Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
148108eb18Smrg# GNU General Public License for more details.
158108eb18Smrg
168108eb18Smrg# You should have received a copy of the GNU General Public License
178108eb18Smrg# along with this program; if not, write to the Free Software
188108eb18Smrg# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
198108eb18Smrg# 02111-1307, USA.
208108eb18Smrg
218108eb18Smrg# As a special exception to the GNU General Public License, if you
228108eb18Smrg# distribute this file as part of a program that contains a
238108eb18Smrg# configuration script generated by Autoconf, you may include it under
248108eb18Smrg# the same distribution terms that you use for the rest of that program.
258108eb18Smrg
268108eb18Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
278108eb18Smrg
288108eb18Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
298108eb18Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
308108eb18Smrg  exit 1
318108eb18Smrgfi
328108eb18Smrg# `libtool' can also be set to `yes' or `no'.
338108eb18Smrg
348108eb18Smrgif test -z "$depfile"; then
358108eb18Smrg   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
368108eb18Smrg   dir=`echo "$object" | sed 's,/.*$,/,'`
378108eb18Smrg   if test "$dir" = "$object"; then
388108eb18Smrg      dir=
398108eb18Smrg   fi
408108eb18Smrg   # FIXME: should be _deps on DOS.
418108eb18Smrg   depfile="$dir.deps/$base"
428108eb18Smrgfi
438108eb18Smrg
448108eb18Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
458108eb18Smrg
468108eb18Smrgrm -f "$tmpdepfile"
478108eb18Smrg
488108eb18Smrg# Some modes work just like other modes, but use different flags.  We
498108eb18Smrg# parameterize here, but still list the modes in the big case below,
508108eb18Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
518108eb18Smrg# here, because this file can only contain one case statement.
528108eb18Smrgif test "$depmode" = hp; then
538108eb18Smrg  # HP compiler uses -M and no extra arg.
548108eb18Smrg  gccflag=-M
558108eb18Smrg  depmode=gcc
568108eb18Smrgfi
578108eb18Smrg
588108eb18Smrgif test "$depmode" = dashXmstdout; then
598108eb18Smrg   # This is just like dashmstdout with a different argument.
608108eb18Smrg   dashmflag=-xM
618108eb18Smrg   depmode=dashmstdout
628108eb18Smrgfi
638108eb18Smrg
648108eb18Smrgcase "$depmode" in
658108eb18Smrggcc3)
668108eb18Smrg## gcc 3 implements dependency tracking that does exactly what
678108eb18Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
688108eb18Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
698108eb18Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
708108eb18Smrg  stat=$?
718108eb18Smrg  if test $stat -eq 0; then :
728108eb18Smrg  else
738108eb18Smrg    rm -f "$tmpdepfile"
748108eb18Smrg    exit $stat
758108eb18Smrg  fi
768108eb18Smrg  mv "$tmpdepfile" "$depfile"
778108eb18Smrg  ;;
788108eb18Smrg
798108eb18Smrggcc)
808108eb18Smrg## There are various ways to get dependency output from gcc.  Here's
818108eb18Smrg## why we pick this rather obscure method:
828108eb18Smrg## - Don't want to use -MD because we'd like the dependencies to end
838108eb18Smrg##   up in a subdir.  Having to rename by hand is ugly.
848108eb18Smrg##   (We might end up doing this anyway to support other compilers.)
858108eb18Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
868108eb18Smrg##   -MM, not -M (despite what the docs say).
878108eb18Smrg## - Using -M directly means running the compiler twice (even worse
888108eb18Smrg##   than renaming).
898108eb18Smrg  if test -z "$gccflag"; then
908108eb18Smrg    gccflag=-MD,
918108eb18Smrg  fi
928108eb18Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
938108eb18Smrg  stat=$?
948108eb18Smrg  if test $stat -eq 0; then :
958108eb18Smrg  else
968108eb18Smrg    rm -f "$tmpdepfile"
978108eb18Smrg    exit $stat
988108eb18Smrg  fi
998108eb18Smrg  rm -f "$depfile"
1008108eb18Smrg  echo "$object : \\" > "$depfile"
1018108eb18Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1028108eb18Smrg## The second -e expression handles DOS-style file names with drive letters.
1038108eb18Smrg  sed -e 's/^[^:]*: / /' \
1048108eb18Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1058108eb18Smrg## This next piece of magic avoids the `deleted header file' problem.
1068108eb18Smrg## The problem is that when a header file which appears in a .P file
1078108eb18Smrg## is deleted, the dependency causes make to die (because there is
1088108eb18Smrg## typically no way to rebuild the header).  We avoid this by adding
1098108eb18Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1108108eb18Smrg## this for us directly.
1118108eb18Smrg  tr ' ' '
1128108eb18Smrg' < "$tmpdepfile" |
1138108eb18Smrg## Some versions of gcc put a space before the `:'.  On the theory
1148108eb18Smrg## that the space means something, we add a space to the output as
1158108eb18Smrg## well.
1168108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
1178108eb18Smrg## correctly.  Breaking it into two sed invocations is a workaround.
1188108eb18Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1198108eb18Smrg  rm -f "$tmpdepfile"
1208108eb18Smrg  ;;
1218108eb18Smrg
1228108eb18Smrghp)
1238108eb18Smrg  # This case exists only to let depend.m4 do its work.  It works by
1248108eb18Smrg  # looking at the text of this script.  This case will never be run,
1258108eb18Smrg  # since it is checked for above.
1268108eb18Smrg  exit 1
1278108eb18Smrg  ;;
1288108eb18Smrg
1298108eb18Smrgsgi)
1308108eb18Smrg  if test "$libtool" = yes; then
1318108eb18Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1328108eb18Smrg  else
1338108eb18Smrg    "$@" -MDupdate "$tmpdepfile"
1348108eb18Smrg  fi
1358108eb18Smrg  stat=$?
1368108eb18Smrg  if test $stat -eq 0; then :
1378108eb18Smrg  else
1388108eb18Smrg    rm -f "$tmpdepfile"
1398108eb18Smrg    exit $stat
1408108eb18Smrg  fi
1418108eb18Smrg  rm -f "$depfile"
1428108eb18Smrg
1438108eb18Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1448108eb18Smrg    echo "$object : \\" > "$depfile"
1458108eb18Smrg
1468108eb18Smrg    # Clip off the initial element (the dependent).  Don't try to be
1478108eb18Smrg    # clever and replace this with sed code, as IRIX sed won't handle
1488108eb18Smrg    # lines with more than a fixed number of characters (4096 in
1498108eb18Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1508108eb18Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
1518108eb18Smrg    # dependency line.
1528108eb18Smrg    tr ' ' '
1538108eb18Smrg' < "$tmpdepfile" \
1548108eb18Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1558108eb18Smrg    tr '
1568108eb18Smrg' ' ' >> $depfile
1578108eb18Smrg    echo >> $depfile
1588108eb18Smrg
1598108eb18Smrg    # The second pass generates a dummy entry for each header file.
1608108eb18Smrg    tr ' ' '
1618108eb18Smrg' < "$tmpdepfile" \
1628108eb18Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1638108eb18Smrg   >> $depfile
1648108eb18Smrg  else
1658108eb18Smrg    # The sourcefile does not contain any dependencies, so just
1668108eb18Smrg    # store a dummy comment line, to avoid errors with the Makefile
1678108eb18Smrg    # "include basename.Plo" scheme.
1688108eb18Smrg    echo "#dummy" > "$depfile"
1698108eb18Smrg  fi
1708108eb18Smrg  rm -f "$tmpdepfile"
1718108eb18Smrg  ;;
1728108eb18Smrg
1738108eb18Smrgaix)
1748108eb18Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
1758108eb18Smrg  # in a .u file.  In older versions, this file always lives in the
1768108eb18Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
1778108eb18Smrg  # start of each line; $object doesn't have directory information.
1788108eb18Smrg  # Version 6 uses the directory in both cases.
1798108eb18Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
1808108eb18Smrg  tmpdepfile="$stripped.u"
1818108eb18Smrg  if test "$libtool" = yes; then
1828108eb18Smrg    "$@" -Wc,-M
1838108eb18Smrg  else
1848108eb18Smrg    "$@" -M
1858108eb18Smrg  fi
1868108eb18Smrg  stat=$?
1878108eb18Smrg
1888108eb18Smrg  if test -f "$tmpdepfile"; then :
1898108eb18Smrg  else
1908108eb18Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
1918108eb18Smrg    tmpdepfile="$stripped.u"
1928108eb18Smrg  fi
1938108eb18Smrg
1948108eb18Smrg  if test $stat -eq 0; then :
1958108eb18Smrg  else
1968108eb18Smrg    rm -f "$tmpdepfile"
1978108eb18Smrg    exit $stat
1988108eb18Smrg  fi
1998108eb18Smrg
2008108eb18Smrg  if test -f "$tmpdepfile"; then
2018108eb18Smrg    outname="$stripped.o"
2028108eb18Smrg    # Each line is of the form `foo.o: dependent.h'.
2038108eb18Smrg    # Do two passes, one to just change these to
2048108eb18Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2058108eb18Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2068108eb18Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2078108eb18Smrg  else
2088108eb18Smrg    # The sourcefile does not contain any dependencies, so just
2098108eb18Smrg    # store a dummy comment line, to avoid errors with the Makefile
2108108eb18Smrg    # "include basename.Plo" scheme.
2118108eb18Smrg    echo "#dummy" > "$depfile"
2128108eb18Smrg  fi
2138108eb18Smrg  rm -f "$tmpdepfile"
2148108eb18Smrg  ;;
2158108eb18Smrg
2168108eb18Smrgicc)
2178108eb18Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
2188108eb18Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2198108eb18Smrg  # ICC 7.0 will fill foo.d with something like
2208108eb18Smrg  #    foo.o: sub/foo.c
2218108eb18Smrg  #    foo.o: sub/foo.h
2228108eb18Smrg  # which is wrong.  We want:
2238108eb18Smrg  #    sub/foo.o: sub/foo.c
2248108eb18Smrg  #    sub/foo.o: sub/foo.h
2258108eb18Smrg  #    sub/foo.c:
2268108eb18Smrg  #    sub/foo.h:
2278108eb18Smrg  # ICC 7.1 will output
2288108eb18Smrg  #    foo.o: sub/foo.c sub/foo.h
2298108eb18Smrg  # and will wrap long lines using \ :
2308108eb18Smrg  #    foo.o: sub/foo.c ... \
2318108eb18Smrg  #     sub/foo.h ... \
2328108eb18Smrg  #     ...
2338108eb18Smrg
2348108eb18Smrg  "$@" -MD -MF "$tmpdepfile"
2358108eb18Smrg  stat=$?
2368108eb18Smrg  if test $stat -eq 0; then :
2378108eb18Smrg  else
2388108eb18Smrg    rm -f "$tmpdepfile"
2398108eb18Smrg    exit $stat
2408108eb18Smrg  fi
2418108eb18Smrg  rm -f "$depfile"
2428108eb18Smrg  # Each line is of the form `foo.o: dependent.h',
2438108eb18Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2448108eb18Smrg  # Do two passes, one to just change these to
2458108eb18Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2468108eb18Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2478108eb18Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2488108eb18Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
2498108eb18Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2508108eb18Smrg    sed -e 's/$/ :/' >> "$depfile"
2518108eb18Smrg  rm -f "$tmpdepfile"
2528108eb18Smrg  ;;
2538108eb18Smrg
2548108eb18Smrgtru64)
2558108eb18Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
2568108eb18Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2578108eb18Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2588108eb18Smrg   # dependencies in `foo.d' instead, so we check for that too.
2598108eb18Smrg   # Subdirectories are respected.
2608108eb18Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2618108eb18Smrg   test "x$dir" = "x$object" && dir=
2628108eb18Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2638108eb18Smrg
2648108eb18Smrg   if test "$libtool" = yes; then
2658108eb18Smrg      tmpdepfile1="$dir.libs/$base.lo.d"
2668108eb18Smrg      tmpdepfile2="$dir.libs/$base.d"
2678108eb18Smrg      "$@" -Wc,-MD
2688108eb18Smrg   else
2698108eb18Smrg      tmpdepfile1="$dir$base.o.d"
2708108eb18Smrg      tmpdepfile2="$dir$base.d"
2718108eb18Smrg      "$@" -MD
2728108eb18Smrg   fi
2738108eb18Smrg
2748108eb18Smrg   stat=$?
2758108eb18Smrg   if test $stat -eq 0; then :
2768108eb18Smrg   else
2778108eb18Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2"
2788108eb18Smrg      exit $stat
2798108eb18Smrg   fi
2808108eb18Smrg
2818108eb18Smrg   if test -f "$tmpdepfile1"; then
2828108eb18Smrg      tmpdepfile="$tmpdepfile1"
2838108eb18Smrg   else
2848108eb18Smrg      tmpdepfile="$tmpdepfile2"
2858108eb18Smrg   fi
2868108eb18Smrg   if test -f "$tmpdepfile"; then
2878108eb18Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
2888108eb18Smrg      # That's a tab and a space in the [].
2898108eb18Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2908108eb18Smrg   else
2918108eb18Smrg      echo "#dummy" > "$depfile"
2928108eb18Smrg   fi
2938108eb18Smrg   rm -f "$tmpdepfile"
2948108eb18Smrg   ;;
2958108eb18Smrg
2968108eb18Smrg#nosideeffect)
2978108eb18Smrg  # This comment above is used by automake to tell side-effect
2988108eb18Smrg  # dependency tracking mechanisms from slower ones.
2998108eb18Smrg
3008108eb18Smrgdashmstdout)
3018108eb18Smrg  # Important note: in order to support this mode, a compiler *must*
3028108eb18Smrg  # always write the preprocessed file to stdout, regardless of -o.
3038108eb18Smrg  "$@" || exit $?
3048108eb18Smrg
3058108eb18Smrg  # Remove the call to Libtool.
3068108eb18Smrg  if test "$libtool" = yes; then
3078108eb18Smrg    while test $1 != '--mode=compile'; do
3088108eb18Smrg      shift
3098108eb18Smrg    done
3108108eb18Smrg    shift
3118108eb18Smrg  fi
3128108eb18Smrg
3138108eb18Smrg  # Remove `-o $object'.
3148108eb18Smrg  IFS=" "
3158108eb18Smrg  for arg
3168108eb18Smrg  do
3178108eb18Smrg    case $arg in
3188108eb18Smrg    -o)
3198108eb18Smrg      shift
3208108eb18Smrg      ;;
3218108eb18Smrg    $object)
3228108eb18Smrg      shift
3238108eb18Smrg      ;;
3248108eb18Smrg    *)
3258108eb18Smrg      set fnord "$@" "$arg"
3268108eb18Smrg      shift # fnord
3278108eb18Smrg      shift # $arg
3288108eb18Smrg      ;;
3298108eb18Smrg    esac
3308108eb18Smrg  done
3318108eb18Smrg
3328108eb18Smrg  test -z "$dashmflag" && dashmflag=-M
3338108eb18Smrg  # Require at least two characters before searching for `:'
3348108eb18Smrg  # in the target name.  This is to cope with DOS-style filenames:
3358108eb18Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3368108eb18Smrg  "$@" $dashmflag |
3378108eb18Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3388108eb18Smrg  rm -f "$depfile"
3398108eb18Smrg  cat < "$tmpdepfile" > "$depfile"
3408108eb18Smrg  tr ' ' '
3418108eb18Smrg' < "$tmpdepfile" | \
3428108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
3438108eb18Smrg## correctly.  Breaking it into two sed invocations is a workaround.
3448108eb18Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3458108eb18Smrg  rm -f "$tmpdepfile"
3468108eb18Smrg  ;;
3478108eb18Smrg
3488108eb18SmrgdashXmstdout)
3498108eb18Smrg  # This case only exists to satisfy depend.m4.  It is never actually
3508108eb18Smrg  # run, as this mode is specially recognized in the preamble.
3518108eb18Smrg  exit 1
3528108eb18Smrg  ;;
3538108eb18Smrg
3548108eb18Smrgmakedepend)
3558108eb18Smrg  "$@" || exit $?
3568108eb18Smrg  # Remove any Libtool call
3578108eb18Smrg  if test "$libtool" = yes; then
3588108eb18Smrg    while test $1 != '--mode=compile'; do
3598108eb18Smrg      shift
3608108eb18Smrg    done
3618108eb18Smrg    shift
3628108eb18Smrg  fi
3638108eb18Smrg  # X makedepend
3648108eb18Smrg  shift
3658108eb18Smrg  cleared=no
3668108eb18Smrg  for arg in "$@"; do
3678108eb18Smrg    case $cleared in
3688108eb18Smrg    no)
3698108eb18Smrg      set ""; shift
3708108eb18Smrg      cleared=yes ;;
3718108eb18Smrg    esac
3728108eb18Smrg    case "$arg" in
3738108eb18Smrg    -D*|-I*)
3748108eb18Smrg      set fnord "$@" "$arg"; shift ;;
3758108eb18Smrg    # Strip any option that makedepend may not understand.  Remove
3768108eb18Smrg    # the object too, otherwise makedepend will parse it as a source file.
3778108eb18Smrg    -*|$object)
3788108eb18Smrg      ;;
3798108eb18Smrg    *)
3808108eb18Smrg      set fnord "$@" "$arg"; shift ;;
3818108eb18Smrg    esac
3828108eb18Smrg  done
3838108eb18Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
3848108eb18Smrg  touch "$tmpdepfile"
3858108eb18Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
3868108eb18Smrg  rm -f "$depfile"
3878108eb18Smrg  cat < "$tmpdepfile" > "$depfile"
3888108eb18Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
3898108eb18Smrg' | \
3908108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
3918108eb18Smrg## correctly.  Breaking it into two sed invocations is a workaround.
3928108eb18Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3938108eb18Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
3948108eb18Smrg  ;;
3958108eb18Smrg
3968108eb18Smrgcpp)
3978108eb18Smrg  # Important note: in order to support this mode, a compiler *must*
3988108eb18Smrg  # always write the preprocessed file to stdout.
3998108eb18Smrg  "$@" || exit $?
4008108eb18Smrg
4018108eb18Smrg  # Remove the call to Libtool.
4028108eb18Smrg  if test "$libtool" = yes; then
4038108eb18Smrg    while test $1 != '--mode=compile'; do
4048108eb18Smrg      shift
4058108eb18Smrg    done
4068108eb18Smrg    shift
4078108eb18Smrg  fi
4088108eb18Smrg
4098108eb18Smrg  # Remove `-o $object'.
4108108eb18Smrg  IFS=" "
4118108eb18Smrg  for arg
4128108eb18Smrg  do
4138108eb18Smrg    case $arg in
4148108eb18Smrg    -o)
4158108eb18Smrg      shift
4168108eb18Smrg      ;;
4178108eb18Smrg    $object)
4188108eb18Smrg      shift
4198108eb18Smrg      ;;
4208108eb18Smrg    *)
4218108eb18Smrg      set fnord "$@" "$arg"
4228108eb18Smrg      shift # fnord
4238108eb18Smrg      shift # $arg
4248108eb18Smrg      ;;
4258108eb18Smrg    esac
4268108eb18Smrg  done
4278108eb18Smrg
4288108eb18Smrg  "$@" -E |
4298108eb18Smrg    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4308108eb18Smrg    sed '$ s: \\$::' > "$tmpdepfile"
4318108eb18Smrg  rm -f "$depfile"
4328108eb18Smrg  echo "$object : \\" > "$depfile"
4338108eb18Smrg  cat < "$tmpdepfile" >> "$depfile"
4348108eb18Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4358108eb18Smrg  rm -f "$tmpdepfile"
4368108eb18Smrg  ;;
4378108eb18Smrg
4388108eb18Smrgmsvisualcpp)
4398108eb18Smrg  # Important note: in order to support this mode, a compiler *must*
4408108eb18Smrg  # always write the preprocessed file to stdout, regardless of -o,
4418108eb18Smrg  # because we must use -o when running libtool.
4428108eb18Smrg  "$@" || exit $?
4438108eb18Smrg  IFS=" "
4448108eb18Smrg  for arg
4458108eb18Smrg  do
4468108eb18Smrg    case "$arg" in
4478108eb18Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4488108eb18Smrg	set fnord "$@"
4498108eb18Smrg	shift
4508108eb18Smrg	shift
4518108eb18Smrg	;;
4528108eb18Smrg    *)
4538108eb18Smrg	set fnord "$@" "$arg"
4548108eb18Smrg	shift
4558108eb18Smrg	shift
4568108eb18Smrg	;;
4578108eb18Smrg    esac
4588108eb18Smrg  done
4598108eb18Smrg  "$@" -E |
4608108eb18Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
4618108eb18Smrg  rm -f "$depfile"
4628108eb18Smrg  echo "$object : \\" > "$depfile"
4638108eb18Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
4648108eb18Smrg  echo "	" >> "$depfile"
4658108eb18Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
4668108eb18Smrg  rm -f "$tmpdepfile"
4678108eb18Smrg  ;;
4688108eb18Smrg
4698108eb18Smrgnone)
4708108eb18Smrg  exec "$@"
4718108eb18Smrg  ;;
4728108eb18Smrg
4738108eb18Smrg*)
4748108eb18Smrg  echo "Unknown depmode $depmode" 1>&2
4758108eb18Smrg  exit 1
4768108eb18Smrg  ;;
4778108eb18Smrgesac
4788108eb18Smrg
4798108eb18Smrgexit 0
480