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