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