12068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project#! /bin/sh
22068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# depcomp - compile a program generating dependencies as side-effects
32068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
42068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectscriptversion=2005-07-09.11
52068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
62068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
72068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
82068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# This program is free software; you can redistribute it and/or modify
92068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# it under the terms of the GNU General Public License as published by
102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# the Free Software Foundation; either version 2, or (at your option)
112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# any later version.
122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# This program is distributed in the hope that it will be useful,
142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of
152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# GNU General Public License for more details.
172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# You should have received a copy of the GNU General Public License
192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# along with this program; if not, write to the Free Software
202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# 02110-1301, USA.
222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# As a special exception to the GNU General Public License, if you
242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# distribute this file as part of a program that contains a
252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# configuration script generated by Autoconf, you may include it under
262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# the same distribution terms that you use for the rest of that program.
272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectcase $1 in
312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  '')
322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project     exit 1;
342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project     ;;
352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  -h | --h*)
362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    cat <<\EOF
372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectUsage: depcomp [--help] [--version] PROGRAM [ARGS]
382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectRun PROGRAMS ARGS to compile a file, generating dependencies
402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectas side-effects.
412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectEnvironment variables:
432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  depmode     Dependency tracking mode.
442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  source      Source file read by `PROGRAMS ARGS'.
452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  object      Object file output by `PROGRAMS ARGS'.
462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  DEPDIR      directory where to store dependencies.
472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  depfile     Dependency file to output.
482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  tmpdepfile  Temporary file to use when outputing dependencies.
492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  libtool     Whether libtool is used (yes/no).
502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectReport bugs to <bug-automake@gnu.org>.
522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectEOF
532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $?
542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    ;;
552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  -v | --v*)
562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    echo "depcomp $scriptversion"
572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $?
582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    ;;
592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectesac
602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif test -z "$depmode" || test -z "$source" || test -z "$object"; then
622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "depcomp: Variables source, object and depmode must be set" 1>&2
632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  exit 1
642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi
652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectdepfile=${depfile-`echo "$object" |
682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projecttmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectrm -f "$tmpdepfile"
722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Some modes work just like other modes, but use different flags.  We
742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# parameterize here, but still list the modes in the big case below,
752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# to make depend.m4 easier to write.  Note that we *cannot* use a case
762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# here, because this file can only contain one case statement.
772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif test "$depmode" = hp; then
782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # HP compiler uses -M and no extra arg.
792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  gccflag=-M
802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  depmode=gcc
812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi
822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectif test "$depmode" = dashXmstdout; then
842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # This is just like dashmstdout with a different argument.
852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   dashmflag=-xM
862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   depmode=dashmstdout
872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectfi
882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectcase "$depmode" in
902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectgcc3)
912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## gcc 3 implements dependency tracking that does exactly what
922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## it if -MD -MP comes after the -MF stuff.  Hmm.
942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stat=$?
962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test $stat -eq 0; then :
972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    rm -f "$tmpdepfile"
992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $stat
1002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  mv "$tmpdepfile" "$depfile"
1022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
1032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectgcc)
1052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## There are various ways to get dependency output from gcc.  Here's
1062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## why we pick this rather obscure method:
1072068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## - Don't want to use -MD because we'd like the dependencies to end
1082068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project##   up in a subdir.  Having to rename by hand is ugly.
1092068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project##   (We might end up doing this anyway to support other compilers.)
1102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project##   -MM, not -M (despite what the docs say).
1122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## - Using -M directly means running the compiler twice (even worse
1132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project##   than renaming).
1142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test -z "$gccflag"; then
1152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    gccflag=-MD,
1162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" -Wp,"$gccflag$tmpdepfile"
1182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stat=$?
1192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test $stat -eq 0; then :
1202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
1212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    rm -f "$tmpdepfile"
1222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $stat
1232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
1252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "$object : \\" > "$depfile"
1262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## The second -e expression handles DOS-style file names with drive letters.
1282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed -e 's/^[^:]*: / /' \
1292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## This next piece of magic avoids the `deleted header file' problem.
1312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## The problem is that when a header file which appears in a .P file
1322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## is deleted, the dependency causes make to die (because there is
1332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## typically no way to rebuild the header).  We avoid this by adding
1342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## dummy dependencies for each header file.  Too bad gcc doesn't do
1352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## this for us directly.
1362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  tr ' ' '
1372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' < "$tmpdepfile" |
1382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## Some versions of gcc put a space before the `:'.  On the theory
1392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## that the space means something, we add a space to the output as
1402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## well.
1412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
1422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
1432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
1452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
1462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projecthp)
1482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # This case exists only to let depend.m4 do its work.  It works by
1492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # looking at the text of this script.  This case will never be run,
1502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # since it is checked for above.
1512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  exit 1
1522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
1532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectsgi)
1552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test "$libtool" = yes; then
1562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    "$@" "-Wp,-MDupdate,$tmpdepfile"
1572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
1582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    "$@" -MDupdate "$tmpdepfile"
1592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stat=$?
1612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test $stat -eq 0; then :
1622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
1632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    rm -f "$tmpdepfile"
1642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $stat
1652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
1672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    echo "$object : \\" > "$depfile"
1702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # Clip off the initial element (the dependent).  Don't try to be
1722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # clever and replace this with sed code, as IRIX sed won't handle
1732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # lines with more than a fixed number of characters (4096 in
1742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # the IRIX cc adds comments like `#:fec' to the end of the
1762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # dependency line.
1772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    tr ' ' '
1782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' < "$tmpdepfile" \
1792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    tr '
1812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' ' ' >> $depfile
1822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    echo >> $depfile
1832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # The second pass generates a dummy entry for each header file.
1852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    tr ' ' '
1862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' < "$tmpdepfile" \
1872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   >> $depfile
1892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
1902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # The sourcefile does not contain any dependencies, so just
1912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # store a dummy comment line, to avoid errors with the Makefile
1922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # "include basename.Plo" scheme.
1932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    echo "#dummy" > "$depfile"
1942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
1952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
1962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
1972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
1982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectaix)
1992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # The C for AIX Compiler uses -M and outputs the dependencies
2002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # in a .u file.  In older versions, this file always lives in the
2012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # current directory.  Also, the AIX compiler puts `$object:' at the
2022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # start of each line; $object doesn't have directory information.
2032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Version 6 uses the directory in both cases.
2042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  tmpdepfile="$stripped.u"
2062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test "$libtool" = yes; then
2072068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    "$@" -Wc,-M
2082068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
2092068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    "$@" -M
2102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
2112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stat=$?
2122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test -f "$tmpdepfile"; then :
2142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
2152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    tmpdepfile="$stripped.u"
2172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
2182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test $stat -eq 0; then :
2202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
2212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    rm -f "$tmpdepfile"
2222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $stat
2232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
2242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test -f "$tmpdepfile"; then
2262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    outname="$stripped.o"
2272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # Each line is of the form `foo.o: dependent.h'.
2282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # Do two passes, one to just change these to
2292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # `$object: dependent.h' and one to simply `dependent.h:'.
2302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
2332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # The sourcefile does not contain any dependencies, so just
2342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # store a dummy comment line, to avoid errors with the Makefile
2352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # "include basename.Plo" scheme.
2362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    echo "#dummy" > "$depfile"
2372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
2382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
2392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
2402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projecticc)
2422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Intel's C compiler understands `-MD -MF file'.  However on
2432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # ICC 7.0 will fill foo.d with something like
2452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    foo.o: sub/foo.c
2462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    foo.o: sub/foo.h
2472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # which is wrong.  We want:
2482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    sub/foo.o: sub/foo.c
2492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    sub/foo.o: sub/foo.h
2502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    sub/foo.c:
2512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    sub/foo.h:
2522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # ICC 7.1 will output
2532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    foo.o: sub/foo.c sub/foo.h
2542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # and will wrap long lines using \ :
2552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #    foo.o: sub/foo.c ... \
2562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #     sub/foo.h ... \
2572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  #     ...
2582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" -MD -MF "$tmpdepfile"
2602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  stat=$?
2612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test $stat -eq 0; then :
2622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  else
2632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    rm -f "$tmpdepfile"
2642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    exit $stat
2652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
2662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
2672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Each line is of the form `foo.o: dependent.h',
2682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Do two passes, one to just change these to
2702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # `$object: dependent.h' and one to simply `dependent.h:'.
2712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Some versions of the HPUX 10.20 sed can't process this invocation
2732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # correctly.  Breaking it into two sed invocations is a workaround.
2742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e 's/$/ :/' >> "$depfile"
2762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
2772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
2782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projecttru64)
2802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # The Tru64 compiler uses -MD to generate dependencies as a side
2812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # dependencies in `foo.d' instead, so we check for that too.
2842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   # Subdirectories are respected.
2852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   test "x$dir" = "x$object" && dir=
2872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
2892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   if test "$libtool" = yes; then
2902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # With Tru64 cc, shared objects can also be used to make a
2912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # static library.  This mecanism is used in libtool 1.4 series to
2922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # handle both shared and static libraries in a single compilation.
2932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      #
2952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # With libtool 1.5 this exception was removed, and libtool now
2962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # generates 2 separate objects for the 2 libraries.  These two
2972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # compilations output dependencies in in $dir.libs/$base.o.d and
2982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # in $dir$base.o.d.  We have to check for both files, because
2992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # one of the two compilations can be disabled.  We should prefer
3002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # automatically cleaned when .libs/ is deleted, while ignoring
3022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # the former would cause a distcleancheck panic.
3032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3072068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      "$@" -Wc,-MD
3082068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   else
3092068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile1=$dir$base.o.d
3102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile2=$dir$base.d
3112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile3=$dir$base.d
3122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      tmpdepfile4=$dir$base.d
3132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      "$@" -MD
3142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   fi
3152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   stat=$?
3172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   if test $stat -eq 0; then :
3182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   else
3192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      exit $stat
3212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   fi
3222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   do
3252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project     test -f "$tmpdepfile" && break
3262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   done
3272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   if test -f "$tmpdepfile"; then
3282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      # That's a tab and a space in the [].
3302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   else
3322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      echo "#dummy" > "$depfile"
3332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   fi
3342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   rm -f "$tmpdepfile"
3352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project   ;;
3362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project#nosideeffect)
3382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # This comment above is used by automake to tell side-effect
3392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # dependency tracking mechanisms from slower ones.
3402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectdashmstdout)
3422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
3432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # always write the preprocessed file to stdout, regardless of -o.
3442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" || exit $?
3452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Remove the call to Libtool.
3472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test "$libtool" = yes; then
3482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    while test $1 != '--mode=compile'; do
3492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
3502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    done
3512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    shift
3522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
3532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Remove `-o $object'.
3552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  IFS=" "
3562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  for arg
3572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  do
3582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    case $arg in
3592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    -o)
3602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
3612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
3622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    $object)
3632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
3642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
3652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    *)
3662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      set fnord "$@" "$arg"
3672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift # fnord
3682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift # $arg
3692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
3702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    esac
3712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  done
3722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  test -z "$dashmflag" && dashmflag=-M
3742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Require at least two characters before searching for `:'
3752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # in the target name.  This is to cope with DOS-style filenames:
3762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" $dashmflag |
3782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
3802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  cat < "$tmpdepfile" > "$depfile"
3812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  tr ' ' '
3822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' < "$tmpdepfile" | \
3832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
3842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
3852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
3872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
3882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source ProjectdashXmstdout)
3902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # This case only exists to satisfy depend.m4.  It is never actually
3912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # run, as this mode is specially recognized in the preamble.
3922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  exit 1
3932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
3942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
3952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectmakedepend)
3962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" || exit $?
3972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Remove any Libtool call
3982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test "$libtool" = yes; then
3992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    while test $1 != '--mode=compile'; do
4002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
4012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    done
4022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    shift
4032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
4042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # X makedepend
4052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  shift
4062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  cleared=no
4072068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  for arg in "$@"; do
4082068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    case $cleared in
4092068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    no)
4102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      set ""; shift
4112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      cleared=yes ;;
4122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    esac
4132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    case "$arg" in
4142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    -D*|-I*)
4152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      set fnord "$@" "$arg"; shift ;;
4162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # Strip any option that makedepend may not understand.  Remove
4172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    # the object too, otherwise makedepend will parse it as a source file.
4182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    -*|$object)
4192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
4202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    *)
4212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      set fnord "$@" "$arg"; shift ;;
4222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    esac
4232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  done
4242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  obj_suffix="`echo $object | sed 's/^.*\././'`"
4252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  touch "$tmpdepfile"
4262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
4282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  cat < "$tmpdepfile" > "$depfile"
4292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed '1,2d' "$tmpdepfile" | tr ' ' '
4302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project' | \
4312068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
4322068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
4332068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4342068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile" "$tmpdepfile".bak
4352068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
4362068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
4372068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectcpp)
4382068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
4392068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # always write the preprocessed file to stdout.
4402068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" || exit $?
4412068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
4422068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Remove the call to Libtool.
4432068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  if test "$libtool" = yes; then
4442068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    while test $1 != '--mode=compile'; do
4452068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
4462068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    done
4472068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    shift
4482068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  fi
4492068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
4502068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Remove `-o $object'.
4512068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  IFS=" "
4522068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  for arg
4532068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  do
4542068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    case $arg in
4552068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    -o)
4562068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
4572068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
4582068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    $object)
4592068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift
4602068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
4612068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    *)
4622068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      set fnord "$@" "$arg"
4632068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift # fnord
4642068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      shift # $arg
4652068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project      ;;
4662068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    esac
4672068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  done
4682068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
4692068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" -E |
4702068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4712068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4722068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    sed '$ s: \\$::' > "$tmpdepfile"
4732068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
4742068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "$object : \\" > "$depfile"
4752068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  cat < "$tmpdepfile" >> "$depfile"
4762068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4772068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
4782068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
4792068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
4802068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectmsvisualcpp)
4812068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
4822068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # always write the preprocessed file to stdout, regardless of -o,
4832068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  # because we must use -o when running libtool.
4842068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" || exit $?
4852068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  IFS=" "
4862068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  for arg
4872068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  do
4882068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    case "$arg" in
4892068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4902068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	set fnord "$@"
4912068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	shift
4922068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	shift
4932068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	;;
4942068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    *)
4952068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	set fnord "$@" "$arg"
4962068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	shift
4972068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	shift
4982068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project	;;
4992068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project    esac
5002068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  done
5012068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  "$@" -E |
5022068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5032068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$depfile"
5042068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "$object : \\" > "$depfile"
5052068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5062068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "	" >> "$depfile"
5072068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5082068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  rm -f "$tmpdepfile"
5092068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
5102068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
5112068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectnone)
5122068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  exec "$@"
5132068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
5142068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
5152068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project*)
5162068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  echo "Unknown depmode $depmode" 1>&2
5172068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  exit 1
5182068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project  ;;
5192068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectesac
5202068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
5212068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Projectexit 0
5222068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project
5232068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# Local Variables:
5242068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# mode: shell-script
5252068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# sh-indentation: 2
5262068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# eval: (add-hook 'write-file-hooks 'time-stamp)
5272068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# time-stamp-start: "scriptversion="
5282068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# time-stamp-format: "%:y-%02m-%02d.%02H"
5292068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# time-stamp-end: "$"
5302068259fff846977bdd4262fa27ea6cb81d35a78The Android Open Source Project# End:
531