depcomp revision e169010a
17914d74bSmrg#! /bin/sh
27914d74bSmrg# depcomp - compile a program generating dependencies as side-effects
37914d74bSmrg
4e169010aSmrgscriptversion=2007-03-29.01
57914d74bSmrg
6e169010aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
77914d74bSmrg# Foundation, Inc.
87914d74bSmrg
97914d74bSmrg# This program is free software; you can redistribute it and/or modify
107914d74bSmrg# it under the terms of the GNU General Public License as published by
117914d74bSmrg# the Free Software Foundation; either version 2, or (at your option)
127914d74bSmrg# any later version.
137914d74bSmrg
147914d74bSmrg# This program is distributed in the hope that it will be useful,
157914d74bSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
167914d74bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
177914d74bSmrg# GNU General Public License for more details.
187914d74bSmrg
197914d74bSmrg# You should have received a copy of the GNU General Public License
207914d74bSmrg# along with this program; if not, write to the Free Software
217914d74bSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
227914d74bSmrg# 02110-1301, USA.
237914d74bSmrg
247914d74bSmrg# As a special exception to the GNU General Public License, if you
257914d74bSmrg# distribute this file as part of a program that contains a
267914d74bSmrg# configuration script generated by Autoconf, you may include it under
277914d74bSmrg# the same distribution terms that you use for the rest of that program.
287914d74bSmrg
297914d74bSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
307914d74bSmrg
317914d74bSmrgcase $1 in
327914d74bSmrg  '')
337914d74bSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
347914d74bSmrg     exit 1;
357914d74bSmrg     ;;
367914d74bSmrg  -h | --h*)
377914d74bSmrg    cat <<\EOF
387914d74bSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
397914d74bSmrg
407914d74bSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
417914d74bSmrgas side-effects.
427914d74bSmrg
437914d74bSmrgEnvironment variables:
447914d74bSmrg  depmode     Dependency tracking mode.
457914d74bSmrg  source      Source file read by `PROGRAMS ARGS'.
467914d74bSmrg  object      Object file output by `PROGRAMS ARGS'.
477914d74bSmrg  DEPDIR      directory where to store dependencies.
487914d74bSmrg  depfile     Dependency file to output.
497914d74bSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
507914d74bSmrg  libtool     Whether libtool is used (yes/no).
517914d74bSmrg
527914d74bSmrgReport bugs to <bug-automake@gnu.org>.
537914d74bSmrgEOF
547914d74bSmrg    exit $?
557914d74bSmrg    ;;
567914d74bSmrg  -v | --v*)
577914d74bSmrg    echo "depcomp $scriptversion"
587914d74bSmrg    exit $?
597914d74bSmrg    ;;
607914d74bSmrgesac
617914d74bSmrg
627914d74bSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
637914d74bSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
647914d74bSmrg  exit 1
657914d74bSmrgfi
667914d74bSmrg
677914d74bSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
687914d74bSmrgdepfile=${depfile-`echo "$object" |
697914d74bSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
707914d74bSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
717914d74bSmrg
727914d74bSmrgrm -f "$tmpdepfile"
737914d74bSmrg
747914d74bSmrg# Some modes work just like other modes, but use different flags.  We
757914d74bSmrg# parameterize here, but still list the modes in the big case below,
767914d74bSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
777914d74bSmrg# here, because this file can only contain one case statement.
787914d74bSmrgif test "$depmode" = hp; then
797914d74bSmrg  # HP compiler uses -M and no extra arg.
807914d74bSmrg  gccflag=-M
817914d74bSmrg  depmode=gcc
827914d74bSmrgfi
837914d74bSmrg
847914d74bSmrgif test "$depmode" = dashXmstdout; then
857914d74bSmrg   # This is just like dashmstdout with a different argument.
867914d74bSmrg   dashmflag=-xM
877914d74bSmrg   depmode=dashmstdout
887914d74bSmrgfi
897914d74bSmrg
907914d74bSmrgcase "$depmode" in
917914d74bSmrggcc3)
927914d74bSmrg## gcc 3 implements dependency tracking that does exactly what
937914d74bSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
947914d74bSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
957914d74bSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
967914d74bSmrg## the command line argument order; so add the flags where they
977914d74bSmrg## appear in depend2.am.  Note that the slowdown incurred here
987914d74bSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
997914d74bSmrg  for arg
1007914d74bSmrg  do
1017914d74bSmrg    case $arg in
1027914d74bSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1037914d74bSmrg    *)  set fnord "$@" "$arg" ;;
1047914d74bSmrg    esac
1057914d74bSmrg    shift # fnord
1067914d74bSmrg    shift # $arg
1077914d74bSmrg  done
1087914d74bSmrg  "$@"
1097914d74bSmrg  stat=$?
1107914d74bSmrg  if test $stat -eq 0; then :
1117914d74bSmrg  else
1127914d74bSmrg    rm -f "$tmpdepfile"
1137914d74bSmrg    exit $stat
1147914d74bSmrg  fi
1157914d74bSmrg  mv "$tmpdepfile" "$depfile"
1167914d74bSmrg  ;;
1177914d74bSmrg
1187914d74bSmrggcc)
1197914d74bSmrg## There are various ways to get dependency output from gcc.  Here's
1207914d74bSmrg## why we pick this rather obscure method:
1217914d74bSmrg## - Don't want to use -MD because we'd like the dependencies to end
1227914d74bSmrg##   up in a subdir.  Having to rename by hand is ugly.
1237914d74bSmrg##   (We might end up doing this anyway to support other compilers.)
1247914d74bSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1257914d74bSmrg##   -MM, not -M (despite what the docs say).
1267914d74bSmrg## - Using -M directly means running the compiler twice (even worse
1277914d74bSmrg##   than renaming).
1287914d74bSmrg  if test -z "$gccflag"; then
1297914d74bSmrg    gccflag=-MD,
1307914d74bSmrg  fi
1317914d74bSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1327914d74bSmrg  stat=$?
1337914d74bSmrg  if test $stat -eq 0; then :
1347914d74bSmrg  else
1357914d74bSmrg    rm -f "$tmpdepfile"
1367914d74bSmrg    exit $stat
1377914d74bSmrg  fi
1387914d74bSmrg  rm -f "$depfile"
1397914d74bSmrg  echo "$object : \\" > "$depfile"
1407914d74bSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1417914d74bSmrg## The second -e expression handles DOS-style file names with drive letters.
1427914d74bSmrg  sed -e 's/^[^:]*: / /' \
1437914d74bSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1447914d74bSmrg## This next piece of magic avoids the `deleted header file' problem.
1457914d74bSmrg## The problem is that when a header file which appears in a .P file
1467914d74bSmrg## is deleted, the dependency causes make to die (because there is
1477914d74bSmrg## typically no way to rebuild the header).  We avoid this by adding
1487914d74bSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1497914d74bSmrg## this for us directly.
1507914d74bSmrg  tr ' ' '
1517914d74bSmrg' < "$tmpdepfile" |
1527914d74bSmrg## Some versions of gcc put a space before the `:'.  On the theory
1537914d74bSmrg## that the space means something, we add a space to the output as
1547914d74bSmrg## well.
1557914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1567914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1577914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1587914d74bSmrg  rm -f "$tmpdepfile"
1597914d74bSmrg  ;;
1607914d74bSmrg
1617914d74bSmrghp)
1627914d74bSmrg  # This case exists only to let depend.m4 do its work.  It works by
1637914d74bSmrg  # looking at the text of this script.  This case will never be run,
1647914d74bSmrg  # since it is checked for above.
1657914d74bSmrg  exit 1
1667914d74bSmrg  ;;
1677914d74bSmrg
1687914d74bSmrgsgi)
1697914d74bSmrg  if test "$libtool" = yes; then
1707914d74bSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1717914d74bSmrg  else
1727914d74bSmrg    "$@" -MDupdate "$tmpdepfile"
1737914d74bSmrg  fi
1747914d74bSmrg  stat=$?
1757914d74bSmrg  if test $stat -eq 0; then :
1767914d74bSmrg  else
1777914d74bSmrg    rm -f "$tmpdepfile"
1787914d74bSmrg    exit $stat
1797914d74bSmrg  fi
1807914d74bSmrg  rm -f "$depfile"
1817914d74bSmrg
1827914d74bSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1837914d74bSmrg    echo "$object : \\" > "$depfile"
1847914d74bSmrg
1857914d74bSmrg    # Clip off the initial element (the dependent).  Don't try to be
1867914d74bSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1877914d74bSmrg    # lines with more than a fixed number of characters (4096 in
1887914d74bSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1897914d74bSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1907914d74bSmrg    # dependency line.
1917914d74bSmrg    tr ' ' '
1927914d74bSmrg' < "$tmpdepfile" \
1937914d74bSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1947914d74bSmrg    tr '
1957914d74bSmrg' ' ' >> $depfile
1967914d74bSmrg    echo >> $depfile
1977914d74bSmrg
1987914d74bSmrg    # The second pass generates a dummy entry for each header file.
1997914d74bSmrg    tr ' ' '
2007914d74bSmrg' < "$tmpdepfile" \
2017914d74bSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
2027914d74bSmrg   >> $depfile
2037914d74bSmrg  else
2047914d74bSmrg    # The sourcefile does not contain any dependencies, so just
2057914d74bSmrg    # store a dummy comment line, to avoid errors with the Makefile
2067914d74bSmrg    # "include basename.Plo" scheme.
2077914d74bSmrg    echo "#dummy" > "$depfile"
2087914d74bSmrg  fi
2097914d74bSmrg  rm -f "$tmpdepfile"
2107914d74bSmrg  ;;
2117914d74bSmrg
2127914d74bSmrgaix)
2137914d74bSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2147914d74bSmrg  # in a .u file.  In older versions, this file always lives in the
2157914d74bSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2167914d74bSmrg  # start of each line; $object doesn't have directory information.
2177914d74bSmrg  # Version 6 uses the directory in both cases.
218e169010aSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
219e169010aSmrg  test "x$dir" = "x$object" && dir=
220e169010aSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2217914d74bSmrg  if test "$libtool" = yes; then
222e169010aSmrg    tmpdepfile1=$dir$base.u
223e169010aSmrg    tmpdepfile2=$base.u
224e169010aSmrg    tmpdepfile3=$dir.libs/$base.u
2257914d74bSmrg    "$@" -Wc,-M
2267914d74bSmrg  else
227e169010aSmrg    tmpdepfile1=$dir$base.u
228e169010aSmrg    tmpdepfile2=$dir$base.u
229e169010aSmrg    tmpdepfile3=$dir$base.u
2307914d74bSmrg    "$@" -M
2317914d74bSmrg  fi
2327914d74bSmrg  stat=$?
2337914d74bSmrg
2347914d74bSmrg  if test $stat -eq 0; then :
2357914d74bSmrg  else
236e169010aSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2377914d74bSmrg    exit $stat
2387914d74bSmrg  fi
2397914d74bSmrg
240e169010aSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
241e169010aSmrg  do
242e169010aSmrg    test -f "$tmpdepfile" && break
243e169010aSmrg  done
2447914d74bSmrg  if test -f "$tmpdepfile"; then
2457914d74bSmrg    # Each line is of the form `foo.o: dependent.h'.
2467914d74bSmrg    # Do two passes, one to just change these to
2477914d74bSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
248e169010aSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
249e169010aSmrg    # That's a tab and a space in the [].
250e169010aSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2517914d74bSmrg  else
2527914d74bSmrg    # The sourcefile does not contain any dependencies, so just
2537914d74bSmrg    # store a dummy comment line, to avoid errors with the Makefile
2547914d74bSmrg    # "include basename.Plo" scheme.
2557914d74bSmrg    echo "#dummy" > "$depfile"
2567914d74bSmrg  fi
2577914d74bSmrg  rm -f "$tmpdepfile"
2587914d74bSmrg  ;;
2597914d74bSmrg
2607914d74bSmrgicc)
2617914d74bSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2627914d74bSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2637914d74bSmrg  # ICC 7.0 will fill foo.d with something like
2647914d74bSmrg  #    foo.o: sub/foo.c
2657914d74bSmrg  #    foo.o: sub/foo.h
2667914d74bSmrg  # which is wrong.  We want:
2677914d74bSmrg  #    sub/foo.o: sub/foo.c
2687914d74bSmrg  #    sub/foo.o: sub/foo.h
2697914d74bSmrg  #    sub/foo.c:
2707914d74bSmrg  #    sub/foo.h:
2717914d74bSmrg  # ICC 7.1 will output
2727914d74bSmrg  #    foo.o: sub/foo.c sub/foo.h
2737914d74bSmrg  # and will wrap long lines using \ :
2747914d74bSmrg  #    foo.o: sub/foo.c ... \
2757914d74bSmrg  #     sub/foo.h ... \
2767914d74bSmrg  #     ...
2777914d74bSmrg
2787914d74bSmrg  "$@" -MD -MF "$tmpdepfile"
2797914d74bSmrg  stat=$?
2807914d74bSmrg  if test $stat -eq 0; then :
2817914d74bSmrg  else
2827914d74bSmrg    rm -f "$tmpdepfile"
2837914d74bSmrg    exit $stat
2847914d74bSmrg  fi
2857914d74bSmrg  rm -f "$depfile"
2867914d74bSmrg  # Each line is of the form `foo.o: dependent.h',
2877914d74bSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2887914d74bSmrg  # Do two passes, one to just change these to
2897914d74bSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2907914d74bSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2917914d74bSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2927914d74bSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
2937914d74bSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2947914d74bSmrg    sed -e 's/$/ :/' >> "$depfile"
2957914d74bSmrg  rm -f "$tmpdepfile"
2967914d74bSmrg  ;;
2977914d74bSmrg
2987914d74bSmrghp2)
2997914d74bSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3007914d74bSmrg  # compilers, which have integrated preprocessors.  The correct option
3017914d74bSmrg  # to use with these is +Maked; it writes dependencies to a file named
3027914d74bSmrg  # 'foo.d', which lands next to the object file, wherever that
3037914d74bSmrg  # happens to be.
3047914d74bSmrg  # Much of this is similar to the tru64 case; see comments there.
3057914d74bSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3067914d74bSmrg  test "x$dir" = "x$object" && dir=
3077914d74bSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3087914d74bSmrg  if test "$libtool" = yes; then
3097914d74bSmrg    tmpdepfile1=$dir$base.d
3107914d74bSmrg    tmpdepfile2=$dir.libs/$base.d
3117914d74bSmrg    "$@" -Wc,+Maked
3127914d74bSmrg  else
3137914d74bSmrg    tmpdepfile1=$dir$base.d
3147914d74bSmrg    tmpdepfile2=$dir$base.d
3157914d74bSmrg    "$@" +Maked
3167914d74bSmrg  fi
3177914d74bSmrg  stat=$?
3187914d74bSmrg  if test $stat -eq 0; then :
3197914d74bSmrg  else
3207914d74bSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3217914d74bSmrg     exit $stat
3227914d74bSmrg  fi
3237914d74bSmrg
3247914d74bSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3257914d74bSmrg  do
3267914d74bSmrg    test -f "$tmpdepfile" && break
3277914d74bSmrg  done
3287914d74bSmrg  if test -f "$tmpdepfile"; then
3297914d74bSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3307914d74bSmrg    # Add `dependent.h:' lines.
3317914d74bSmrg    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
3327914d74bSmrg  else
3337914d74bSmrg    echo "#dummy" > "$depfile"
3347914d74bSmrg  fi
3357914d74bSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3367914d74bSmrg  ;;
3377914d74bSmrg
3387914d74bSmrgtru64)
3397914d74bSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3407914d74bSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3417914d74bSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3427914d74bSmrg   # dependencies in `foo.d' instead, so we check for that too.
3437914d74bSmrg   # Subdirectories are respected.
3447914d74bSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3457914d74bSmrg   test "x$dir" = "x$object" && dir=
3467914d74bSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3477914d74bSmrg
3487914d74bSmrg   if test "$libtool" = yes; then
3497914d74bSmrg      # With Tru64 cc, shared objects can also be used to make a
3507914d74bSmrg      # static library.  This mechanism is used in libtool 1.4 series to
3517914d74bSmrg      # handle both shared and static libraries in a single compilation.
3527914d74bSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3537914d74bSmrg      #
3547914d74bSmrg      # With libtool 1.5 this exception was removed, and libtool now
3557914d74bSmrg      # generates 2 separate objects for the 2 libraries.  These two
3567914d74bSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
3577914d74bSmrg      # in $dir$base.o.d.  We have to check for both files, because
3587914d74bSmrg      # one of the two compilations can be disabled.  We should prefer
3597914d74bSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3607914d74bSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3617914d74bSmrg      # the former would cause a distcleancheck panic.
3627914d74bSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3637914d74bSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3647914d74bSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3657914d74bSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3667914d74bSmrg      "$@" -Wc,-MD
3677914d74bSmrg   else
3687914d74bSmrg      tmpdepfile1=$dir$base.o.d
3697914d74bSmrg      tmpdepfile2=$dir$base.d
3707914d74bSmrg      tmpdepfile3=$dir$base.d
3717914d74bSmrg      tmpdepfile4=$dir$base.d
3727914d74bSmrg      "$@" -MD
3737914d74bSmrg   fi
3747914d74bSmrg
3757914d74bSmrg   stat=$?
3767914d74bSmrg   if test $stat -eq 0; then :
3777914d74bSmrg   else
3787914d74bSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3797914d74bSmrg      exit $stat
3807914d74bSmrg   fi
3817914d74bSmrg
3827914d74bSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3837914d74bSmrg   do
3847914d74bSmrg     test -f "$tmpdepfile" && break
3857914d74bSmrg   done
3867914d74bSmrg   if test -f "$tmpdepfile"; then
3877914d74bSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3887914d74bSmrg      # That's a tab and a space in the [].
3897914d74bSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3907914d74bSmrg   else
3917914d74bSmrg      echo "#dummy" > "$depfile"
3927914d74bSmrg   fi
3937914d74bSmrg   rm -f "$tmpdepfile"
3947914d74bSmrg   ;;
3957914d74bSmrg
3967914d74bSmrg#nosideeffect)
3977914d74bSmrg  # This comment above is used by automake to tell side-effect
3987914d74bSmrg  # dependency tracking mechanisms from slower ones.
3997914d74bSmrg
4007914d74bSmrgdashmstdout)
4017914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
4027914d74bSmrg  # always write the preprocessed file to stdout, regardless of -o.
4037914d74bSmrg  "$@" || exit $?
4047914d74bSmrg
4057914d74bSmrg  # Remove the call to Libtool.
4067914d74bSmrg  if test "$libtool" = yes; then
4077914d74bSmrg    while test $1 != '--mode=compile'; do
4087914d74bSmrg      shift
4097914d74bSmrg    done
4107914d74bSmrg    shift
4117914d74bSmrg  fi
4127914d74bSmrg
4137914d74bSmrg  # Remove `-o $object'.
4147914d74bSmrg  IFS=" "
4157914d74bSmrg  for arg
4167914d74bSmrg  do
4177914d74bSmrg    case $arg in
4187914d74bSmrg    -o)
4197914d74bSmrg      shift
4207914d74bSmrg      ;;
4217914d74bSmrg    $object)
4227914d74bSmrg      shift
4237914d74bSmrg      ;;
4247914d74bSmrg    *)
4257914d74bSmrg      set fnord "$@" "$arg"
4267914d74bSmrg      shift # fnord
4277914d74bSmrg      shift # $arg
4287914d74bSmrg      ;;
4297914d74bSmrg    esac
4307914d74bSmrg  done
4317914d74bSmrg
4327914d74bSmrg  test -z "$dashmflag" && dashmflag=-M
4337914d74bSmrg  # Require at least two characters before searching for `:'
4347914d74bSmrg  # in the target name.  This is to cope with DOS-style filenames:
4357914d74bSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4367914d74bSmrg  "$@" $dashmflag |
4377914d74bSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4387914d74bSmrg  rm -f "$depfile"
4397914d74bSmrg  cat < "$tmpdepfile" > "$depfile"
4407914d74bSmrg  tr ' ' '
4417914d74bSmrg' < "$tmpdepfile" | \
4427914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4437914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4447914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4457914d74bSmrg  rm -f "$tmpdepfile"
4467914d74bSmrg  ;;
4477914d74bSmrg
4487914d74bSmrgdashXmstdout)
4497914d74bSmrg  # This case only exists to satisfy depend.m4.  It is never actually
4507914d74bSmrg  # run, as this mode is specially recognized in the preamble.
4517914d74bSmrg  exit 1
4527914d74bSmrg  ;;
4537914d74bSmrg
4547914d74bSmrgmakedepend)
4557914d74bSmrg  "$@" || exit $?
4567914d74bSmrg  # Remove any Libtool call
4577914d74bSmrg  if test "$libtool" = yes; then
4587914d74bSmrg    while test $1 != '--mode=compile'; do
4597914d74bSmrg      shift
4607914d74bSmrg    done
4617914d74bSmrg    shift
4627914d74bSmrg  fi
4637914d74bSmrg  # X makedepend
4647914d74bSmrg  shift
4657914d74bSmrg  cleared=no
4667914d74bSmrg  for arg in "$@"; do
4677914d74bSmrg    case $cleared in
4687914d74bSmrg    no)
4697914d74bSmrg      set ""; shift
4707914d74bSmrg      cleared=yes ;;
4717914d74bSmrg    esac
4727914d74bSmrg    case "$arg" in
4737914d74bSmrg    -D*|-I*)
4747914d74bSmrg      set fnord "$@" "$arg"; shift ;;
4757914d74bSmrg    # Strip any option that makedepend may not understand.  Remove
4767914d74bSmrg    # the object too, otherwise makedepend will parse it as a source file.
4777914d74bSmrg    -*|$object)
4787914d74bSmrg      ;;
4797914d74bSmrg    *)
4807914d74bSmrg      set fnord "$@" "$arg"; shift ;;
4817914d74bSmrg    esac
4827914d74bSmrg  done
4837914d74bSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4847914d74bSmrg  touch "$tmpdepfile"
4857914d74bSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4867914d74bSmrg  rm -f "$depfile"
4877914d74bSmrg  cat < "$tmpdepfile" > "$depfile"
4887914d74bSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4897914d74bSmrg' | \
4907914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4917914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4927914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4937914d74bSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4947914d74bSmrg  ;;
4957914d74bSmrg
4967914d74bSmrgcpp)
4977914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
4987914d74bSmrg  # always write the preprocessed file to stdout.
4997914d74bSmrg  "$@" || exit $?
5007914d74bSmrg
5017914d74bSmrg  # Remove the call to Libtool.
5027914d74bSmrg  if test "$libtool" = yes; then
5037914d74bSmrg    while test $1 != '--mode=compile'; do
5047914d74bSmrg      shift
5057914d74bSmrg    done
5067914d74bSmrg    shift
5077914d74bSmrg  fi
5087914d74bSmrg
5097914d74bSmrg  # Remove `-o $object'.
5107914d74bSmrg  IFS=" "
5117914d74bSmrg  for arg
5127914d74bSmrg  do
5137914d74bSmrg    case $arg in
5147914d74bSmrg    -o)
5157914d74bSmrg      shift
5167914d74bSmrg      ;;
5177914d74bSmrg    $object)
5187914d74bSmrg      shift
5197914d74bSmrg      ;;
5207914d74bSmrg    *)
5217914d74bSmrg      set fnord "$@" "$arg"
5227914d74bSmrg      shift # fnord
5237914d74bSmrg      shift # $arg
5247914d74bSmrg      ;;
5257914d74bSmrg    esac
5267914d74bSmrg  done
5277914d74bSmrg
5287914d74bSmrg  "$@" -E |
5297914d74bSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5307914d74bSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5317914d74bSmrg    sed '$ s: \\$::' > "$tmpdepfile"
5327914d74bSmrg  rm -f "$depfile"
5337914d74bSmrg  echo "$object : \\" > "$depfile"
5347914d74bSmrg  cat < "$tmpdepfile" >> "$depfile"
5357914d74bSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5367914d74bSmrg  rm -f "$tmpdepfile"
5377914d74bSmrg  ;;
5387914d74bSmrg
5397914d74bSmrgmsvisualcpp)
5407914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
5417914d74bSmrg  # always write the preprocessed file to stdout, regardless of -o,
5427914d74bSmrg  # because we must use -o when running libtool.
5437914d74bSmrg  "$@" || exit $?
5447914d74bSmrg  IFS=" "
5457914d74bSmrg  for arg
5467914d74bSmrg  do
5477914d74bSmrg    case "$arg" in
5487914d74bSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5497914d74bSmrg	set fnord "$@"
5507914d74bSmrg	shift
5517914d74bSmrg	shift
5527914d74bSmrg	;;
5537914d74bSmrg    *)
5547914d74bSmrg	set fnord "$@" "$arg"
5557914d74bSmrg	shift
5567914d74bSmrg	shift
5577914d74bSmrg	;;
5587914d74bSmrg    esac
5597914d74bSmrg  done
5607914d74bSmrg  "$@" -E |
5617914d74bSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5627914d74bSmrg  rm -f "$depfile"
5637914d74bSmrg  echo "$object : \\" > "$depfile"
5647914d74bSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5657914d74bSmrg  echo "	" >> "$depfile"
5667914d74bSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5677914d74bSmrg  rm -f "$tmpdepfile"
5687914d74bSmrg  ;;
5697914d74bSmrg
5707914d74bSmrgnone)
5717914d74bSmrg  exec "$@"
5727914d74bSmrg  ;;
5737914d74bSmrg
5747914d74bSmrg*)
5757914d74bSmrg  echo "Unknown depmode $depmode" 1>&2
5767914d74bSmrg  exit 1
5777914d74bSmrg  ;;
5787914d74bSmrgesac
5797914d74bSmrg
5807914d74bSmrgexit 0
5817914d74bSmrg
5827914d74bSmrg# Local Variables:
5837914d74bSmrg# mode: shell-script
5847914d74bSmrg# sh-indentation: 2
5857914d74bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5867914d74bSmrg# time-stamp-start: "scriptversion="
5877914d74bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5887914d74bSmrg# time-stamp-end: "$"
5897914d74bSmrg# End:
590