1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#! /bin/sh
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# depcomp - compile a program generating dependencies as side-effects
3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectscriptversion=2005-07-09.11
5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is free software; you can redistribute it and/or modify
9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by
10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# the Free Software Foundation; either version 2, or (at your option)
11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# any later version.
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful,
14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details.
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License
19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# along with this program; if not, write to the Free Software
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# 02110-1301, USA.
22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# As a special exception to the GNU General Public License, if you
24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# distribute this file as part of a program that contains a
25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# configuration script generated by Autoconf, you may include it under
26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# the same distribution terms that you use for the rest of that program.
27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectcase $1 in
31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  '')
32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     exit 1;
34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     ;;
35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  -h | --h*)
36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    cat <<\EOF
37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectUsage: depcomp [--help] [--version] PROGRAM [ARGS]
38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectRun PROGRAMS ARGS to compile a file, generating dependencies
40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectas side-effects.
41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectEnvironment variables:
43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  depmode     Dependency tracking mode.
44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  source      Source file read by `PROGRAMS ARGS'.
45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  object      Object file output by `PROGRAMS ARGS'.
46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  DEPDIR      directory where to store dependencies.
47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  depfile     Dependency file to output.
48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  tmpdepfile  Temporary file to use when outputing dependencies.
49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  libtool     Whether libtool is used (yes/no).
50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectReport bugs to <bug-automake@gnu.org>.
52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectEOF
53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $?
54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    ;;
55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  -v | --v*)
56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    echo "depcomp $scriptversion"
57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $?
58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    ;;
59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectesac
60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectif test -z "$depmode" || test -z "$source" || test -z "$object"; then
62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  exit 1
64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectfi
65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdepfile=${depfile-`echo "$object" |
68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectrm -f "$tmpdepfile"
72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Some modes work just like other modes, but use different flags.  We
74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# parameterize here, but still list the modes in the big case below,
75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# to make depend.m4 easier to write.  Note that we *cannot* use a case
76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# here, because this file can only contain one case statement.
77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectif test "$depmode" = hp; then
78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # HP compiler uses -M and no extra arg.
79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  gccflag=-M
80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  depmode=gcc
81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectfi
82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectif test "$depmode" = dashXmstdout; then
84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # This is just like dashmstdout with a different argument.
85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   dashmflag=-xM
86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   depmode=dashmstdout
87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectfi
88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectcase "$depmode" in
90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectgcc3)
91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## gcc 3 implements dependency tracking that does exactly what
92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## it if -MD -MP comes after the -MF stuff.  Hmm.
94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stat=$?
96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test $stat -eq 0; then :
97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    rm -f "$tmpdepfile"
99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $stat
100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  mv "$tmpdepfile" "$depfile"
102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectgcc)
105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## There are various ways to get dependency output from gcc.  Here's
106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## why we pick this rather obscure method:
107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## - Don't want to use -MD because we'd like the dependencies to end
108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project##   up in a subdir.  Having to rename by hand is ugly.
109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project##   (We might end up doing this anyway to support other compilers.)
110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project##   -MM, not -M (despite what the docs say).
112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## - Using -M directly means running the compiler twice (even worse
113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project##   than renaming).
114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test -z "$gccflag"; then
115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    gccflag=-MD,
116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" -Wp,"$gccflag$tmpdepfile"
118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stat=$?
119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test $stat -eq 0; then :
120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    rm -f "$tmpdepfile"
122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $stat
123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "$object : \\" > "$depfile"
126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## The second -e expression handles DOS-style file names with drive letters.
128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed -e 's/^[^:]*: / /' \
129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## This next piece of magic avoids the `deleted header file' problem.
131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## The problem is that when a header file which appears in a .P file
132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## is deleted, the dependency causes make to die (because there is
133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## typically no way to rebuild the header).  We avoid this by adding
134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## dummy dependencies for each header file.  Too bad gcc doesn't do
135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## this for us directly.
136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  tr ' ' '
137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' < "$tmpdepfile" |
138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Some versions of gcc put a space before the `:'.  On the theory
139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## that the space means something, we add a space to the output as
140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## well.
141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecthp)
148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # This case exists only to let depend.m4 do its work.  It works by
149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # looking at the text of this script.  This case will never be run,
150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # since it is checked for above.
151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  exit 1
152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsgi)
155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test "$libtool" = yes; then
156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    "$@" "-Wp,-MDupdate,$tmpdepfile"
157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    "$@" -MDupdate "$tmpdepfile"
159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stat=$?
161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test $stat -eq 0; then :
162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    rm -f "$tmpdepfile"
164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $stat
165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    echo "$object : \\" > "$depfile"
170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # Clip off the initial element (the dependent).  Don't try to be
172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # clever and replace this with sed code, as IRIX sed won't handle
173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # lines with more than a fixed number of characters (4096 in
174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # the IRIX cc adds comments like `#:fec' to the end of the
176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # dependency line.
177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    tr ' ' '
178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' < "$tmpdepfile" \
179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    tr '
181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' ' ' >> $depfile
182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    echo >> $depfile
183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # The second pass generates a dummy entry for each header file.
185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    tr ' ' '
186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' < "$tmpdepfile" \
187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   >> $depfile
189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # The sourcefile does not contain any dependencies, so just
191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # store a dummy comment line, to avoid errors with the Makefile
192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # "include basename.Plo" scheme.
193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    echo "#dummy" > "$depfile"
194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectaix)
199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # The C for AIX Compiler uses -M and outputs the dependencies
200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # in a .u file.  In older versions, this file always lives in the
201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # current directory.  Also, the AIX compiler puts `$object:' at the
202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # start of each line; $object doesn't have directory information.
203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Version 6 uses the directory in both cases.
204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  tmpdepfile="$stripped.u"
206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test "$libtool" = yes; then
207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    "$@" -Wc,-M
208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    "$@" -M
210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stat=$?
212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test -f "$tmpdepfile"; then :
214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    tmpdepfile="$stripped.u"
217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test $stat -eq 0; then :
220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    rm -f "$tmpdepfile"
222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $stat
223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test -f "$tmpdepfile"; then
226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    outname="$stripped.o"
227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # Each line is of the form `foo.o: dependent.h'.
228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # Do two passes, one to just change these to
229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # `$object: dependent.h' and one to simply `dependent.h:'.
230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # The sourcefile does not contain any dependencies, so just
234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # store a dummy comment line, to avoid errors with the Makefile
235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # "include basename.Plo" scheme.
236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    echo "#dummy" > "$depfile"
237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecticc)
242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Intel's C compiler understands `-MD -MF file'.  However on
243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # ICC 7.0 will fill foo.d with something like
245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    foo.o: sub/foo.c
246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    foo.o: sub/foo.h
247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # which is wrong.  We want:
248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    sub/foo.o: sub/foo.c
249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    sub/foo.o: sub/foo.h
250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    sub/foo.c:
251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    sub/foo.h:
252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # ICC 7.1 will output
253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    foo.o: sub/foo.c sub/foo.h
254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # and will wrap long lines using \ :
255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #    foo.o: sub/foo.c ... \
256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #     sub/foo.h ... \
257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  #     ...
258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" -MD -MF "$tmpdepfile"
260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  stat=$?
261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test $stat -eq 0; then :
262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  else
263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    rm -f "$tmpdepfile"
264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    exit $stat
265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Each line is of the form `foo.o: dependent.h',
268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Do two passes, one to just change these to
270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # `$object: dependent.h' and one to simply `dependent.h:'.
271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Some versions of the HPUX 10.20 sed can't process this invocation
273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # correctly.  Breaking it into two sed invocations is a workaround.
274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e 's/$/ :/' >> "$depfile"
276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttru64)
280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # The Tru64 compiler uses -MD to generate dependencies as a side
281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # dependencies in `foo.d' instead, so we check for that too.
284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   # Subdirectories are respected.
285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   test "x$dir" = "x$object" && dir=
287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   if test "$libtool" = yes; then
290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # With Tru64 cc, shared objects can also be used to make a
291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # static library.  This mecanism is used in libtool 1.4 series to
292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # handle both shared and static libraries in a single compilation.
293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      #
295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # With libtool 1.5 this exception was removed, and libtool now
296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # generates 2 separate objects for the 2 libraries.  These two
297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # compilations output dependencies in in $dir.libs/$base.o.d and
298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # in $dir$base.o.d.  We have to check for both files, because
299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # one of the two compilations can be disabled.  We should prefer
300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # automatically cleaned when .libs/ is deleted, while ignoring
302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # the former would cause a distcleancheck panic.
303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      "$@" -Wc,-MD
308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   else
309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile1=$dir$base.o.d
310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile2=$dir$base.d
311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile3=$dir$base.d
312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      tmpdepfile4=$dir$base.d
313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      "$@" -MD
314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   fi
315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   stat=$?
317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   if test $stat -eq 0; then :
318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   else
319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      exit $stat
321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   fi
322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   do
325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project     test -f "$tmpdepfile" && break
326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   done
327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   if test -f "$tmpdepfile"; then
328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      # That's a tab and a space in the [].
330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   else
332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      echo "#dummy" > "$depfile"
333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   fi
334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   rm -f "$tmpdepfile"
335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   ;;
336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#nosideeffect)
338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # This comment above is used by automake to tell side-effect
339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # dependency tracking mechanisms from slower ones.
340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdashmstdout)
342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # always write the preprocessed file to stdout, regardless of -o.
344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" || exit $?
345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Remove the call to Libtool.
347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test "$libtool" = yes; then
348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    while test $1 != '--mode=compile'; do
349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    done
351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    shift
352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Remove `-o $object'.
355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  IFS=" "
356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  for arg
357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  do
358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case $arg in
359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    -o)
360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    $object)
363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    *)
366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      set fnord "$@" "$arg"
367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift # fnord
368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift # $arg
369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    esac
371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  done
372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  test -z "$dashmflag" && dashmflag=-M
374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Require at least two characters before searching for `:'
375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # in the target name.  This is to cope with DOS-style filenames:
376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" $dashmflag |
378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  cat < "$tmpdepfile" > "$depfile"
381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  tr ' ' '
382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' < "$tmpdepfile" | \
383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectdashXmstdout)
390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # This case only exists to satisfy depend.m4.  It is never actually
391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # run, as this mode is specially recognized in the preamble.
392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  exit 1
393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectmakedepend)
396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" || exit $?
397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Remove any Libtool call
398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test "$libtool" = yes; then
399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    while test $1 != '--mode=compile'; do
400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    done
402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    shift
403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # X makedepend
405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  shift
406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  cleared=no
407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  for arg in "$@"; do
408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case $cleared in
409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    no)
410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      set ""; shift
411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      cleared=yes ;;
412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    esac
413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case "$arg" in
414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    -D*|-I*)
415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      set fnord "$@" "$arg"; shift ;;
416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # Strip any option that makedepend may not understand.  Remove
417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    # the object too, otherwise makedepend will parse it as a source file.
418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    -*|$object)
419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    *)
421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      set fnord "$@" "$arg"; shift ;;
422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    esac
423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  done
424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  obj_suffix="`echo $object | sed 's/^.*\././'`"
425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  touch "$tmpdepfile"
426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  cat < "$tmpdepfile" > "$depfile"
429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed '1,2d' "$tmpdepfile" | tr ' ' '
430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project' | \
431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Some versions of the HPUX 10.20 sed can't process this invocation
432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## correctly.  Breaking it into two sed invocations is a workaround.
433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile" "$tmpdepfile".bak
435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectcpp)
438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # always write the preprocessed file to stdout.
440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" || exit $?
441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Remove the call to Libtool.
443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if test "$libtool" = yes; then
444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    while test $1 != '--mode=compile'; do
445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    done
447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    shift
448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  fi
449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Remove `-o $object'.
451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  IFS=" "
452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  for arg
453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  do
454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case $arg in
455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    -o)
456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    $object)
459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift
460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    *)
462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      set fnord "$@" "$arg"
463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift # fnord
464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      shift # $arg
465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      ;;
466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    esac
467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  done
468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" -E |
470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    sed '$ s: \\$::' > "$tmpdepfile"
473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "$object : \\" > "$depfile"
475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  cat < "$tmpdepfile" >> "$depfile"
476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectmsvisualcpp)
481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # Important note: in order to support this mode, a compiler *must*
482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # always write the preprocessed file to stdout, regardless of -o,
483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  # because we must use -o when running libtool.
484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" || exit $?
485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  IFS=" "
486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  for arg
487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  do
488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    case "$arg" in
489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	set fnord "$@"
491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	shift
492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	shift
493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	;;
494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    *)
495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	set fnord "$@" "$arg"
496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	shift
497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	shift
498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	;;
499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    esac
500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  done
501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  "$@" -E |
502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$depfile"
504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "$object : \\" > "$depfile"
505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "	" >> "$depfile"
507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  rm -f "$tmpdepfile"
509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnone)
512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  exec "$@"
513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project*)
516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  echo "Unknown depmode $depmode" 1>&2
517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  exit 1
518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  ;;
519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectesac
520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexit 0
522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Local Variables:
524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# mode: shell-script
525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# sh-indentation: 2
526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# eval: (add-hook 'write-file-hooks 'time-stamp)
527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# time-stamp-start: "scriptversion="
528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# time-stamp-format: "%:y-%02m-%02d.%02H"
529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# time-stamp-end: "$"
530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# End:
531