depcomp revision 42d69509
14456fccdSmrg#! /bin/sh
24456fccdSmrg# depcomp - compile a program generating dependencies as side-effects
34456fccdSmrg
442d69509Smrgscriptversion=2009-04-28.21; # UTC
54456fccdSmrg
642d69509Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
742d69509Smrg# Software Foundation, Inc.
84456fccdSmrg
94456fccdSmrg# This program is free software; you can redistribute it and/or modify
104456fccdSmrg# it under the terms of the GNU General Public License as published by
114456fccdSmrg# the Free Software Foundation; either version 2, or (at your option)
124456fccdSmrg# any later version.
134456fccdSmrg
144456fccdSmrg# This program is distributed in the hope that it will be useful,
154456fccdSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
164456fccdSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
174456fccdSmrg# GNU General Public License for more details.
184456fccdSmrg
194456fccdSmrg# You should have received a copy of the GNU General Public License
2042d69509Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
214456fccdSmrg
224456fccdSmrg# As a special exception to the GNU General Public License, if you
234456fccdSmrg# distribute this file as part of a program that contains a
244456fccdSmrg# configuration script generated by Autoconf, you may include it under
254456fccdSmrg# the same distribution terms that you use for the rest of that program.
264456fccdSmrg
274456fccdSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
284456fccdSmrg
294456fccdSmrgcase $1 in
304456fccdSmrg  '')
314456fccdSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
324456fccdSmrg     exit 1;
334456fccdSmrg     ;;
344456fccdSmrg  -h | --h*)
354456fccdSmrg    cat <<\EOF
364456fccdSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
374456fccdSmrg
384456fccdSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
394456fccdSmrgas side-effects.
404456fccdSmrg
414456fccdSmrgEnvironment variables:
424456fccdSmrg  depmode     Dependency tracking mode.
434456fccdSmrg  source      Source file read by `PROGRAMS ARGS'.
444456fccdSmrg  object      Object file output by `PROGRAMS ARGS'.
454456fccdSmrg  DEPDIR      directory where to store dependencies.
464456fccdSmrg  depfile     Dependency file to output.
474456fccdSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
484456fccdSmrg  libtool     Whether libtool is used (yes/no).
494456fccdSmrg
504456fccdSmrgReport bugs to <bug-automake@gnu.org>.
514456fccdSmrgEOF
524456fccdSmrg    exit $?
534456fccdSmrg    ;;
544456fccdSmrg  -v | --v*)
554456fccdSmrg    echo "depcomp $scriptversion"
564456fccdSmrg    exit $?
574456fccdSmrg    ;;
584456fccdSmrgesac
594456fccdSmrg
604456fccdSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
614456fccdSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
624456fccdSmrg  exit 1
634456fccdSmrgfi
644456fccdSmrg
654456fccdSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
664456fccdSmrgdepfile=${depfile-`echo "$object" |
674456fccdSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
684456fccdSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
694456fccdSmrg
704456fccdSmrgrm -f "$tmpdepfile"
714456fccdSmrg
724456fccdSmrg# Some modes work just like other modes, but use different flags.  We
734456fccdSmrg# parameterize here, but still list the modes in the big case below,
744456fccdSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
754456fccdSmrg# here, because this file can only contain one case statement.
764456fccdSmrgif test "$depmode" = hp; then
774456fccdSmrg  # HP compiler uses -M and no extra arg.
784456fccdSmrg  gccflag=-M
794456fccdSmrg  depmode=gcc
804456fccdSmrgfi
814456fccdSmrg
824456fccdSmrgif test "$depmode" = dashXmstdout; then
834456fccdSmrg   # This is just like dashmstdout with a different argument.
844456fccdSmrg   dashmflag=-xM
854456fccdSmrg   depmode=dashmstdout
864456fccdSmrgfi
874456fccdSmrg
8842d69509Smrgcygpath_u="cygpath -u -f -"
8942d69509Smrgif test "$depmode" = msvcmsys; then
9042d69509Smrg   # This is just like msvisualcpp but w/o cygpath translation.
9142d69509Smrg   # Just convert the backslash-escaped backslashes to single forward
9242d69509Smrg   # slashes to satisfy depend.m4
9342d69509Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
9442d69509Smrg   depmode=msvisualcpp
9542d69509Smrgfi
9642d69509Smrg
974456fccdSmrgcase "$depmode" in
984456fccdSmrggcc3)
994456fccdSmrg## gcc 3 implements dependency tracking that does exactly what
1004456fccdSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
1014456fccdSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
10242d69509Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
10342d69509Smrg## the command line argument order; so add the flags where they
10442d69509Smrg## appear in depend2.am.  Note that the slowdown incurred here
10542d69509Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
10642d69509Smrg  for arg
10742d69509Smrg  do
10842d69509Smrg    case $arg in
10942d69509Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
11042d69509Smrg    *)  set fnord "$@" "$arg" ;;
11142d69509Smrg    esac
11242d69509Smrg    shift # fnord
11342d69509Smrg    shift # $arg
11442d69509Smrg  done
11542d69509Smrg  "$@"
1164456fccdSmrg  stat=$?
1174456fccdSmrg  if test $stat -eq 0; then :
1184456fccdSmrg  else
1194456fccdSmrg    rm -f "$tmpdepfile"
1204456fccdSmrg    exit $stat
1214456fccdSmrg  fi
1224456fccdSmrg  mv "$tmpdepfile" "$depfile"
1234456fccdSmrg  ;;
1244456fccdSmrg
1254456fccdSmrggcc)
1264456fccdSmrg## There are various ways to get dependency output from gcc.  Here's
1274456fccdSmrg## why we pick this rather obscure method:
1284456fccdSmrg## - Don't want to use -MD because we'd like the dependencies to end
1294456fccdSmrg##   up in a subdir.  Having to rename by hand is ugly.
1304456fccdSmrg##   (We might end up doing this anyway to support other compilers.)
1314456fccdSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1324456fccdSmrg##   -MM, not -M (despite what the docs say).
1334456fccdSmrg## - Using -M directly means running the compiler twice (even worse
1344456fccdSmrg##   than renaming).
1354456fccdSmrg  if test -z "$gccflag"; then
1364456fccdSmrg    gccflag=-MD,
1374456fccdSmrg  fi
1384456fccdSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1394456fccdSmrg  stat=$?
1404456fccdSmrg  if test $stat -eq 0; then :
1414456fccdSmrg  else
1424456fccdSmrg    rm -f "$tmpdepfile"
1434456fccdSmrg    exit $stat
1444456fccdSmrg  fi
1454456fccdSmrg  rm -f "$depfile"
1464456fccdSmrg  echo "$object : \\" > "$depfile"
1474456fccdSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1484456fccdSmrg## The second -e expression handles DOS-style file names with drive letters.
1494456fccdSmrg  sed -e 's/^[^:]*: / /' \
1504456fccdSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1514456fccdSmrg## This next piece of magic avoids the `deleted header file' problem.
1524456fccdSmrg## The problem is that when a header file which appears in a .P file
1534456fccdSmrg## is deleted, the dependency causes make to die (because there is
1544456fccdSmrg## typically no way to rebuild the header).  We avoid this by adding
1554456fccdSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1564456fccdSmrg## this for us directly.
1574456fccdSmrg  tr ' ' '
1584456fccdSmrg' < "$tmpdepfile" |
1594456fccdSmrg## Some versions of gcc put a space before the `:'.  On the theory
1604456fccdSmrg## that the space means something, we add a space to the output as
1614456fccdSmrg## well.
1624456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1634456fccdSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1644456fccdSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1654456fccdSmrg  rm -f "$tmpdepfile"
1664456fccdSmrg  ;;
1674456fccdSmrg
1684456fccdSmrghp)
1694456fccdSmrg  # This case exists only to let depend.m4 do its work.  It works by
1704456fccdSmrg  # looking at the text of this script.  This case will never be run,
1714456fccdSmrg  # since it is checked for above.
1724456fccdSmrg  exit 1
1734456fccdSmrg  ;;
1744456fccdSmrg
1754456fccdSmrgsgi)
1764456fccdSmrg  if test "$libtool" = yes; then
1774456fccdSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1784456fccdSmrg  else
1794456fccdSmrg    "$@" -MDupdate "$tmpdepfile"
1804456fccdSmrg  fi
1814456fccdSmrg  stat=$?
1824456fccdSmrg  if test $stat -eq 0; then :
1834456fccdSmrg  else
1844456fccdSmrg    rm -f "$tmpdepfile"
1854456fccdSmrg    exit $stat
1864456fccdSmrg  fi
1874456fccdSmrg  rm -f "$depfile"
1884456fccdSmrg
1894456fccdSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1904456fccdSmrg    echo "$object : \\" > "$depfile"
1914456fccdSmrg
1924456fccdSmrg    # Clip off the initial element (the dependent).  Don't try to be
1934456fccdSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1944456fccdSmrg    # lines with more than a fixed number of characters (4096 in
1954456fccdSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1964456fccdSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1974456fccdSmrg    # dependency line.
1984456fccdSmrg    tr ' ' '
1994456fccdSmrg' < "$tmpdepfile" \
2004456fccdSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
2014456fccdSmrg    tr '
20242d69509Smrg' ' ' >> "$depfile"
20342d69509Smrg    echo >> "$depfile"
2044456fccdSmrg
2054456fccdSmrg    # The second pass generates a dummy entry for each header file.
2064456fccdSmrg    tr ' ' '
2074456fccdSmrg' < "$tmpdepfile" \
2084456fccdSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20942d69509Smrg   >> "$depfile"
2104456fccdSmrg  else
2114456fccdSmrg    # The sourcefile does not contain any dependencies, so just
2124456fccdSmrg    # store a dummy comment line, to avoid errors with the Makefile
2134456fccdSmrg    # "include basename.Plo" scheme.
2144456fccdSmrg    echo "#dummy" > "$depfile"
2154456fccdSmrg  fi
2164456fccdSmrg  rm -f "$tmpdepfile"
2174456fccdSmrg  ;;
2184456fccdSmrg
2194456fccdSmrgaix)
2204456fccdSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2214456fccdSmrg  # in a .u file.  In older versions, this file always lives in the
2224456fccdSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2234456fccdSmrg  # start of each line; $object doesn't have directory information.
2244456fccdSmrg  # Version 6 uses the directory in both cases.
22542d69509Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
22642d69509Smrg  test "x$dir" = "x$object" && dir=
22742d69509Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2284456fccdSmrg  if test "$libtool" = yes; then
22942d69509Smrg    tmpdepfile1=$dir$base.u
23042d69509Smrg    tmpdepfile2=$base.u
23142d69509Smrg    tmpdepfile3=$dir.libs/$base.u
2324456fccdSmrg    "$@" -Wc,-M
2334456fccdSmrg  else
23442d69509Smrg    tmpdepfile1=$dir$base.u
23542d69509Smrg    tmpdepfile2=$dir$base.u
23642d69509Smrg    tmpdepfile3=$dir$base.u
2374456fccdSmrg    "$@" -M
2384456fccdSmrg  fi
2394456fccdSmrg  stat=$?
2404456fccdSmrg
2414456fccdSmrg  if test $stat -eq 0; then :
2424456fccdSmrg  else
24342d69509Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2444456fccdSmrg    exit $stat
2454456fccdSmrg  fi
2464456fccdSmrg
24742d69509Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24842d69509Smrg  do
24942d69509Smrg    test -f "$tmpdepfile" && break
25042d69509Smrg  done
2514456fccdSmrg  if test -f "$tmpdepfile"; then
2524456fccdSmrg    # Each line is of the form `foo.o: dependent.h'.
2534456fccdSmrg    # Do two passes, one to just change these to
2544456fccdSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
25542d69509Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
25642d69509Smrg    # That's a tab and a space in the [].
25742d69509Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2584456fccdSmrg  else
2594456fccdSmrg    # The sourcefile does not contain any dependencies, so just
2604456fccdSmrg    # store a dummy comment line, to avoid errors with the Makefile
2614456fccdSmrg    # "include basename.Plo" scheme.
2624456fccdSmrg    echo "#dummy" > "$depfile"
2634456fccdSmrg  fi
2644456fccdSmrg  rm -f "$tmpdepfile"
2654456fccdSmrg  ;;
2664456fccdSmrg
2674456fccdSmrgicc)
2684456fccdSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2694456fccdSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2704456fccdSmrg  # ICC 7.0 will fill foo.d with something like
2714456fccdSmrg  #    foo.o: sub/foo.c
2724456fccdSmrg  #    foo.o: sub/foo.h
2734456fccdSmrg  # which is wrong.  We want:
2744456fccdSmrg  #    sub/foo.o: sub/foo.c
2754456fccdSmrg  #    sub/foo.o: sub/foo.h
2764456fccdSmrg  #    sub/foo.c:
2774456fccdSmrg  #    sub/foo.h:
2784456fccdSmrg  # ICC 7.1 will output
2794456fccdSmrg  #    foo.o: sub/foo.c sub/foo.h
2804456fccdSmrg  # and will wrap long lines using \ :
2814456fccdSmrg  #    foo.o: sub/foo.c ... \
2824456fccdSmrg  #     sub/foo.h ... \
2834456fccdSmrg  #     ...
2844456fccdSmrg
2854456fccdSmrg  "$@" -MD -MF "$tmpdepfile"
2864456fccdSmrg  stat=$?
2874456fccdSmrg  if test $stat -eq 0; then :
2884456fccdSmrg  else
2894456fccdSmrg    rm -f "$tmpdepfile"
2904456fccdSmrg    exit $stat
2914456fccdSmrg  fi
2924456fccdSmrg  rm -f "$depfile"
2934456fccdSmrg  # Each line is of the form `foo.o: dependent.h',
2944456fccdSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2954456fccdSmrg  # Do two passes, one to just change these to
2964456fccdSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2974456fccdSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2984456fccdSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2994456fccdSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
3004456fccdSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
3014456fccdSmrg    sed -e 's/$/ :/' >> "$depfile"
3024456fccdSmrg  rm -f "$tmpdepfile"
3034456fccdSmrg  ;;
3044456fccdSmrg
30542d69509Smrghp2)
30642d69509Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
30742d69509Smrg  # compilers, which have integrated preprocessors.  The correct option
30842d69509Smrg  # to use with these is +Maked; it writes dependencies to a file named
30942d69509Smrg  # 'foo.d', which lands next to the object file, wherever that
31042d69509Smrg  # happens to be.
31142d69509Smrg  # Much of this is similar to the tru64 case; see comments there.
31242d69509Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
31342d69509Smrg  test "x$dir" = "x$object" && dir=
31442d69509Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
31542d69509Smrg  if test "$libtool" = yes; then
31642d69509Smrg    tmpdepfile1=$dir$base.d
31742d69509Smrg    tmpdepfile2=$dir.libs/$base.d
31842d69509Smrg    "$@" -Wc,+Maked
31942d69509Smrg  else
32042d69509Smrg    tmpdepfile1=$dir$base.d
32142d69509Smrg    tmpdepfile2=$dir$base.d
32242d69509Smrg    "$@" +Maked
32342d69509Smrg  fi
32442d69509Smrg  stat=$?
32542d69509Smrg  if test $stat -eq 0; then :
32642d69509Smrg  else
32742d69509Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
32842d69509Smrg     exit $stat
32942d69509Smrg  fi
33042d69509Smrg
33142d69509Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
33242d69509Smrg  do
33342d69509Smrg    test -f "$tmpdepfile" && break
33442d69509Smrg  done
33542d69509Smrg  if test -f "$tmpdepfile"; then
33642d69509Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
33742d69509Smrg    # Add `dependent.h:' lines.
33842d69509Smrg    sed -ne '2,${
33942d69509Smrg	       s/^ *//
34042d69509Smrg	       s/ \\*$//
34142d69509Smrg	       s/$/:/
34242d69509Smrg	       p
34342d69509Smrg	     }' "$tmpdepfile" >> "$depfile"
34442d69509Smrg  else
34542d69509Smrg    echo "#dummy" > "$depfile"
34642d69509Smrg  fi
34742d69509Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
34842d69509Smrg  ;;
34942d69509Smrg
3504456fccdSmrgtru64)
3514456fccdSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3524456fccdSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3534456fccdSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3544456fccdSmrg   # dependencies in `foo.d' instead, so we check for that too.
3554456fccdSmrg   # Subdirectories are respected.
3564456fccdSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3574456fccdSmrg   test "x$dir" = "x$object" && dir=
3584456fccdSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3594456fccdSmrg
3604456fccdSmrg   if test "$libtool" = yes; then
3614456fccdSmrg      # With Tru64 cc, shared objects can also be used to make a
36242d69509Smrg      # static library.  This mechanism is used in libtool 1.4 series to
3634456fccdSmrg      # handle both shared and static libraries in a single compilation.
3644456fccdSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3654456fccdSmrg      #
3664456fccdSmrg      # With libtool 1.5 this exception was removed, and libtool now
3674456fccdSmrg      # generates 2 separate objects for the 2 libraries.  These two
36842d69509Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
3694456fccdSmrg      # in $dir$base.o.d.  We have to check for both files, because
3704456fccdSmrg      # one of the two compilations can be disabled.  We should prefer
3714456fccdSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3724456fccdSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3734456fccdSmrg      # the former would cause a distcleancheck panic.
3744456fccdSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3754456fccdSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3764456fccdSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3774456fccdSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3784456fccdSmrg      "$@" -Wc,-MD
3794456fccdSmrg   else
3804456fccdSmrg      tmpdepfile1=$dir$base.o.d
3814456fccdSmrg      tmpdepfile2=$dir$base.d
3824456fccdSmrg      tmpdepfile3=$dir$base.d
3834456fccdSmrg      tmpdepfile4=$dir$base.d
3844456fccdSmrg      "$@" -MD
3854456fccdSmrg   fi
3864456fccdSmrg
3874456fccdSmrg   stat=$?
3884456fccdSmrg   if test $stat -eq 0; then :
3894456fccdSmrg   else
3904456fccdSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3914456fccdSmrg      exit $stat
3924456fccdSmrg   fi
3934456fccdSmrg
3944456fccdSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3954456fccdSmrg   do
3964456fccdSmrg     test -f "$tmpdepfile" && break
3974456fccdSmrg   done
3984456fccdSmrg   if test -f "$tmpdepfile"; then
3994456fccdSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4004456fccdSmrg      # That's a tab and a space in the [].
4014456fccdSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4024456fccdSmrg   else
4034456fccdSmrg      echo "#dummy" > "$depfile"
4044456fccdSmrg   fi
4054456fccdSmrg   rm -f "$tmpdepfile"
4064456fccdSmrg   ;;
4074456fccdSmrg
4084456fccdSmrg#nosideeffect)
4094456fccdSmrg  # This comment above is used by automake to tell side-effect
4104456fccdSmrg  # dependency tracking mechanisms from slower ones.
4114456fccdSmrg
4124456fccdSmrgdashmstdout)
4134456fccdSmrg  # Important note: in order to support this mode, a compiler *must*
4144456fccdSmrg  # always write the preprocessed file to stdout, regardless of -o.
4154456fccdSmrg  "$@" || exit $?
4164456fccdSmrg
4174456fccdSmrg  # Remove the call to Libtool.
4184456fccdSmrg  if test "$libtool" = yes; then
41942d69509Smrg    while test "X$1" != 'X--mode=compile'; do
4204456fccdSmrg      shift
4214456fccdSmrg    done
4224456fccdSmrg    shift
4234456fccdSmrg  fi
4244456fccdSmrg
4254456fccdSmrg  # Remove `-o $object'.
4264456fccdSmrg  IFS=" "
4274456fccdSmrg  for arg
4284456fccdSmrg  do
4294456fccdSmrg    case $arg in
4304456fccdSmrg    -o)
4314456fccdSmrg      shift
4324456fccdSmrg      ;;
4334456fccdSmrg    $object)
4344456fccdSmrg      shift
4354456fccdSmrg      ;;
4364456fccdSmrg    *)
4374456fccdSmrg      set fnord "$@" "$arg"
4384456fccdSmrg      shift # fnord
4394456fccdSmrg      shift # $arg
4404456fccdSmrg      ;;
4414456fccdSmrg    esac
4424456fccdSmrg  done
4434456fccdSmrg
4444456fccdSmrg  test -z "$dashmflag" && dashmflag=-M
4454456fccdSmrg  # Require at least two characters before searching for `:'
4464456fccdSmrg  # in the target name.  This is to cope with DOS-style filenames:
4474456fccdSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4484456fccdSmrg  "$@" $dashmflag |
4494456fccdSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4504456fccdSmrg  rm -f "$depfile"
4514456fccdSmrg  cat < "$tmpdepfile" > "$depfile"
4524456fccdSmrg  tr ' ' '
4534456fccdSmrg' < "$tmpdepfile" | \
4544456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4554456fccdSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4564456fccdSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4574456fccdSmrg  rm -f "$tmpdepfile"
4584456fccdSmrg  ;;
4594456fccdSmrg
4604456fccdSmrgdashXmstdout)
4614456fccdSmrg  # This case only exists to satisfy depend.m4.  It is never actually
4624456fccdSmrg  # run, as this mode is specially recognized in the preamble.
4634456fccdSmrg  exit 1
4644456fccdSmrg  ;;
4654456fccdSmrg
4664456fccdSmrgmakedepend)
4674456fccdSmrg  "$@" || exit $?
4684456fccdSmrg  # Remove any Libtool call
4694456fccdSmrg  if test "$libtool" = yes; then
47042d69509Smrg    while test "X$1" != 'X--mode=compile'; do
4714456fccdSmrg      shift
4724456fccdSmrg    done
4734456fccdSmrg    shift
4744456fccdSmrg  fi
4754456fccdSmrg  # X makedepend
4764456fccdSmrg  shift
47742d69509Smrg  cleared=no eat=no
47842d69509Smrg  for arg
47942d69509Smrg  do
4804456fccdSmrg    case $cleared in
4814456fccdSmrg    no)
4824456fccdSmrg      set ""; shift
4834456fccdSmrg      cleared=yes ;;
4844456fccdSmrg    esac
48542d69509Smrg    if test $eat = yes; then
48642d69509Smrg      eat=no
48742d69509Smrg      continue
48842d69509Smrg    fi
4894456fccdSmrg    case "$arg" in
4904456fccdSmrg    -D*|-I*)
4914456fccdSmrg      set fnord "$@" "$arg"; shift ;;
4924456fccdSmrg    # Strip any option that makedepend may not understand.  Remove
4934456fccdSmrg    # the object too, otherwise makedepend will parse it as a source file.
49442d69509Smrg    -arch)
49542d69509Smrg      eat=yes ;;
4964456fccdSmrg    -*|$object)
4974456fccdSmrg      ;;
4984456fccdSmrg    *)
4994456fccdSmrg      set fnord "$@" "$arg"; shift ;;
5004456fccdSmrg    esac
5014456fccdSmrg  done
50242d69509Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
5034456fccdSmrg  touch "$tmpdepfile"
5044456fccdSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
5054456fccdSmrg  rm -f "$depfile"
5064456fccdSmrg  cat < "$tmpdepfile" > "$depfile"
5074456fccdSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
5084456fccdSmrg' | \
5094456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
5104456fccdSmrg## correctly.  Breaking it into two sed invocations is a workaround.
5114456fccdSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
5124456fccdSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
5134456fccdSmrg  ;;
5144456fccdSmrg
5154456fccdSmrgcpp)
5164456fccdSmrg  # Important note: in order to support this mode, a compiler *must*
5174456fccdSmrg  # always write the preprocessed file to stdout.
5184456fccdSmrg  "$@" || exit $?
5194456fccdSmrg
5204456fccdSmrg  # Remove the call to Libtool.
5214456fccdSmrg  if test "$libtool" = yes; then
52242d69509Smrg    while test "X$1" != 'X--mode=compile'; do
5234456fccdSmrg      shift
5244456fccdSmrg    done
5254456fccdSmrg    shift
5264456fccdSmrg  fi
5274456fccdSmrg
5284456fccdSmrg  # Remove `-o $object'.
5294456fccdSmrg  IFS=" "
5304456fccdSmrg  for arg
5314456fccdSmrg  do
5324456fccdSmrg    case $arg in
5334456fccdSmrg    -o)
5344456fccdSmrg      shift
5354456fccdSmrg      ;;
5364456fccdSmrg    $object)
5374456fccdSmrg      shift
5384456fccdSmrg      ;;
5394456fccdSmrg    *)
5404456fccdSmrg      set fnord "$@" "$arg"
5414456fccdSmrg      shift # fnord
5424456fccdSmrg      shift # $arg
5434456fccdSmrg      ;;
5444456fccdSmrg    esac
5454456fccdSmrg  done
5464456fccdSmrg
5474456fccdSmrg  "$@" -E |
5484456fccdSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5494456fccdSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5504456fccdSmrg    sed '$ s: \\$::' > "$tmpdepfile"
5514456fccdSmrg  rm -f "$depfile"
5524456fccdSmrg  echo "$object : \\" > "$depfile"
5534456fccdSmrg  cat < "$tmpdepfile" >> "$depfile"
5544456fccdSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5554456fccdSmrg  rm -f "$tmpdepfile"
5564456fccdSmrg  ;;
5574456fccdSmrg
5584456fccdSmrgmsvisualcpp)
5594456fccdSmrg  # Important note: in order to support this mode, a compiler *must*
56042d69509Smrg  # always write the preprocessed file to stdout.
5614456fccdSmrg  "$@" || exit $?
56242d69509Smrg
56342d69509Smrg  # Remove the call to Libtool.
56442d69509Smrg  if test "$libtool" = yes; then
56542d69509Smrg    while test "X$1" != 'X--mode=compile'; do
56642d69509Smrg      shift
56742d69509Smrg    done
56842d69509Smrg    shift
56942d69509Smrg  fi
57042d69509Smrg
5714456fccdSmrg  IFS=" "
5724456fccdSmrg  for arg
5734456fccdSmrg  do
5744456fccdSmrg    case "$arg" in
57542d69509Smrg    -o)
57642d69509Smrg      shift
57742d69509Smrg      ;;
57842d69509Smrg    $object)
57942d69509Smrg      shift
58042d69509Smrg      ;;
5814456fccdSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5824456fccdSmrg	set fnord "$@"
5834456fccdSmrg	shift
5844456fccdSmrg	shift
5854456fccdSmrg	;;
5864456fccdSmrg    *)
5874456fccdSmrg	set fnord "$@" "$arg"
5884456fccdSmrg	shift
5894456fccdSmrg	shift
5904456fccdSmrg	;;
5914456fccdSmrg    esac
5924456fccdSmrg  done
59342d69509Smrg  "$@" -E 2>/dev/null |
59442d69509Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
5954456fccdSmrg  rm -f "$depfile"
5964456fccdSmrg  echo "$object : \\" > "$depfile"
59742d69509Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5984456fccdSmrg  echo "	" >> "$depfile"
59942d69509Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
6004456fccdSmrg  rm -f "$tmpdepfile"
6014456fccdSmrg  ;;
6024456fccdSmrg
60342d69509Smrgmsvcmsys)
60442d69509Smrg  # This case exists only to let depend.m4 do its work.  It works by
60542d69509Smrg  # looking at the text of this script.  This case will never be run,
60642d69509Smrg  # since it is checked for above.
60742d69509Smrg  exit 1
60842d69509Smrg  ;;
60942d69509Smrg
6104456fccdSmrgnone)
6114456fccdSmrg  exec "$@"
6124456fccdSmrg  ;;
6134456fccdSmrg
6144456fccdSmrg*)
6154456fccdSmrg  echo "Unknown depmode $depmode" 1>&2
6164456fccdSmrg  exit 1
6174456fccdSmrg  ;;
6184456fccdSmrgesac
6194456fccdSmrg
6204456fccdSmrgexit 0
6214456fccdSmrg
6224456fccdSmrg# Local Variables:
6234456fccdSmrg# mode: shell-script
6244456fccdSmrg# sh-indentation: 2
6254456fccdSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
6264456fccdSmrg# time-stamp-start: "scriptversion="
6274456fccdSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
62842d69509Smrg# time-stamp-time-zone: "UTC"
62942d69509Smrg# time-stamp-end: "; # UTC"
6304456fccdSmrg# End:
631