depcomp revision 61c899d4
153354cdbSmrg#! /bin/sh 253354cdbSmrg# depcomp - compile a program generating dependencies as side-effects 353354cdbSmrg 461c899d4Smrgscriptversion=2011-12-04.11; # UTC 553354cdbSmrg 661c899d4Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 761c899d4Smrg# 2011 Free Software Foundation, Inc. 853354cdbSmrg 953354cdbSmrg# This program is free software; you can redistribute it and/or modify 1053354cdbSmrg# it under the terms of the GNU General Public License as published by 1153354cdbSmrg# the Free Software Foundation; either version 2, or (at your option) 1253354cdbSmrg# any later version. 1353354cdbSmrg 1453354cdbSmrg# This program is distributed in the hope that it will be useful, 1553354cdbSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1653354cdbSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1753354cdbSmrg# GNU General Public License for more details. 1853354cdbSmrg 1953354cdbSmrg# You should have received a copy of the GNU General Public License 2086bbecbeSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2153354cdbSmrg 2253354cdbSmrg# As a special exception to the GNU General Public License, if you 2353354cdbSmrg# distribute this file as part of a program that contains a 2453354cdbSmrg# configuration script generated by Autoconf, you may include it under 2553354cdbSmrg# the same distribution terms that you use for the rest of that program. 2653354cdbSmrg 2753354cdbSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2853354cdbSmrg 2953354cdbSmrgcase $1 in 3053354cdbSmrg '') 3153354cdbSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3253354cdbSmrg exit 1; 3353354cdbSmrg ;; 3453354cdbSmrg -h | --h*) 3553354cdbSmrg cat <<\EOF 3653354cdbSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3753354cdbSmrg 3853354cdbSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3953354cdbSmrgas side-effects. 4053354cdbSmrg 4153354cdbSmrgEnvironment variables: 4253354cdbSmrg depmode Dependency tracking mode. 4353354cdbSmrg source Source file read by `PROGRAMS ARGS'. 4453354cdbSmrg object Object file output by `PROGRAMS ARGS'. 4553354cdbSmrg DEPDIR directory where to store dependencies. 4653354cdbSmrg depfile Dependency file to output. 4761c899d4Smrg tmpdepfile Temporary file to use when outputting dependencies. 4853354cdbSmrg libtool Whether libtool is used (yes/no). 4953354cdbSmrg 5053354cdbSmrgReport bugs to <bug-automake@gnu.org>. 5153354cdbSmrgEOF 5253354cdbSmrg exit $? 5353354cdbSmrg ;; 5453354cdbSmrg -v | --v*) 5553354cdbSmrg echo "depcomp $scriptversion" 5653354cdbSmrg exit $? 5753354cdbSmrg ;; 5853354cdbSmrgesac 5953354cdbSmrg 6053354cdbSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6153354cdbSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6253354cdbSmrg exit 1 6353354cdbSmrgfi 6453354cdbSmrg 6553354cdbSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6653354cdbSmrgdepfile=${depfile-`echo "$object" | 6753354cdbSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6853354cdbSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6953354cdbSmrg 7053354cdbSmrgrm -f "$tmpdepfile" 7153354cdbSmrg 7253354cdbSmrg# Some modes work just like other modes, but use different flags. We 7353354cdbSmrg# parameterize here, but still list the modes in the big case below, 7453354cdbSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7553354cdbSmrg# here, because this file can only contain one case statement. 7653354cdbSmrgif test "$depmode" = hp; then 7753354cdbSmrg # HP compiler uses -M and no extra arg. 7853354cdbSmrg gccflag=-M 7953354cdbSmrg depmode=gcc 8053354cdbSmrgfi 8153354cdbSmrg 8253354cdbSmrgif test "$depmode" = dashXmstdout; then 8353354cdbSmrg # This is just like dashmstdout with a different argument. 8453354cdbSmrg dashmflag=-xM 8553354cdbSmrg depmode=dashmstdout 8653354cdbSmrgfi 8753354cdbSmrg 8886bbecbeSmrgcygpath_u="cygpath -u -f -" 8986bbecbeSmrgif test "$depmode" = msvcmsys; then 9086bbecbeSmrg # This is just like msvisualcpp but w/o cygpath translation. 9186bbecbeSmrg # Just convert the backslash-escaped backslashes to single forward 9286bbecbeSmrg # slashes to satisfy depend.m4 9361c899d4Smrg cygpath_u='sed s,\\\\,/,g' 9486bbecbeSmrg depmode=msvisualcpp 9586bbecbeSmrgfi 9686bbecbeSmrg 9761c899d4Smrgif test "$depmode" = msvc7msys; then 9861c899d4Smrg # This is just like msvc7 but w/o cygpath translation. 9961c899d4Smrg # Just convert the backslash-escaped backslashes to single forward 10061c899d4Smrg # slashes to satisfy depend.m4 10161c899d4Smrg cygpath_u='sed s,\\\\,/,g' 10261c899d4Smrg depmode=msvc7 10361c899d4Smrgfi 10461c899d4Smrg 10553354cdbSmrgcase "$depmode" in 10653354cdbSmrggcc3) 10753354cdbSmrg## gcc 3 implements dependency tracking that does exactly what 10853354cdbSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10953354cdbSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 11053354cdbSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 11153354cdbSmrg## the command line argument order; so add the flags where they 11253354cdbSmrg## appear in depend2.am. Note that the slowdown incurred here 11353354cdbSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 11453354cdbSmrg for arg 11553354cdbSmrg do 11653354cdbSmrg case $arg in 11753354cdbSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 11853354cdbSmrg *) set fnord "$@" "$arg" ;; 11953354cdbSmrg esac 12053354cdbSmrg shift # fnord 12153354cdbSmrg shift # $arg 12253354cdbSmrg done 12353354cdbSmrg "$@" 12453354cdbSmrg stat=$? 12553354cdbSmrg if test $stat -eq 0; then : 12653354cdbSmrg else 12753354cdbSmrg rm -f "$tmpdepfile" 12853354cdbSmrg exit $stat 12953354cdbSmrg fi 13053354cdbSmrg mv "$tmpdepfile" "$depfile" 13153354cdbSmrg ;; 13253354cdbSmrg 13353354cdbSmrggcc) 13453354cdbSmrg## There are various ways to get dependency output from gcc. Here's 13553354cdbSmrg## why we pick this rather obscure method: 13653354cdbSmrg## - Don't want to use -MD because we'd like the dependencies to end 13753354cdbSmrg## up in a subdir. Having to rename by hand is ugly. 13853354cdbSmrg## (We might end up doing this anyway to support other compilers.) 13953354cdbSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 14053354cdbSmrg## -MM, not -M (despite what the docs say). 14153354cdbSmrg## - Using -M directly means running the compiler twice (even worse 14253354cdbSmrg## than renaming). 14353354cdbSmrg if test -z "$gccflag"; then 14453354cdbSmrg gccflag=-MD, 14553354cdbSmrg fi 14653354cdbSmrg "$@" -Wp,"$gccflag$tmpdepfile" 14753354cdbSmrg stat=$? 14853354cdbSmrg if test $stat -eq 0; then : 14953354cdbSmrg else 15053354cdbSmrg rm -f "$tmpdepfile" 15153354cdbSmrg exit $stat 15253354cdbSmrg fi 15353354cdbSmrg rm -f "$depfile" 15453354cdbSmrg echo "$object : \\" > "$depfile" 15553354cdbSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 15653354cdbSmrg## The second -e expression handles DOS-style file names with drive letters. 15753354cdbSmrg sed -e 's/^[^:]*: / /' \ 15853354cdbSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15953354cdbSmrg## This next piece of magic avoids the `deleted header file' problem. 16053354cdbSmrg## The problem is that when a header file which appears in a .P file 16153354cdbSmrg## is deleted, the dependency causes make to die (because there is 16253354cdbSmrg## typically no way to rebuild the header). We avoid this by adding 16353354cdbSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 16453354cdbSmrg## this for us directly. 16553354cdbSmrg tr ' ' ' 16653354cdbSmrg' < "$tmpdepfile" | 16753354cdbSmrg## Some versions of gcc put a space before the `:'. On the theory 16853354cdbSmrg## that the space means something, we add a space to the output as 16961c899d4Smrg## well. hp depmode also adds that space, but also prefixes the VPATH 17061c899d4Smrg## to the object. Take care to not repeat it in the output. 17153354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 17253354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 17361c899d4Smrg sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 17461c899d4Smrg | sed -e 's/$/ :/' >> "$depfile" 17553354cdbSmrg rm -f "$tmpdepfile" 17653354cdbSmrg ;; 17753354cdbSmrg 17853354cdbSmrghp) 17953354cdbSmrg # This case exists only to let depend.m4 do its work. It works by 18053354cdbSmrg # looking at the text of this script. This case will never be run, 18153354cdbSmrg # since it is checked for above. 18253354cdbSmrg exit 1 18353354cdbSmrg ;; 18453354cdbSmrg 18553354cdbSmrgsgi) 18653354cdbSmrg if test "$libtool" = yes; then 18753354cdbSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 18853354cdbSmrg else 18953354cdbSmrg "$@" -MDupdate "$tmpdepfile" 19053354cdbSmrg fi 19153354cdbSmrg stat=$? 19253354cdbSmrg if test $stat -eq 0; then : 19353354cdbSmrg else 19453354cdbSmrg rm -f "$tmpdepfile" 19553354cdbSmrg exit $stat 19653354cdbSmrg fi 19753354cdbSmrg rm -f "$depfile" 19853354cdbSmrg 19953354cdbSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 20053354cdbSmrg echo "$object : \\" > "$depfile" 20153354cdbSmrg 20253354cdbSmrg # Clip off the initial element (the dependent). Don't try to be 20353354cdbSmrg # clever and replace this with sed code, as IRIX sed won't handle 20453354cdbSmrg # lines with more than a fixed number of characters (4096 in 20553354cdbSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 20653354cdbSmrg # the IRIX cc adds comments like `#:fec' to the end of the 20753354cdbSmrg # dependency line. 20853354cdbSmrg tr ' ' ' 20953354cdbSmrg' < "$tmpdepfile" \ 21053354cdbSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 21153354cdbSmrg tr ' 21286bbecbeSmrg' ' ' >> "$depfile" 21386bbecbeSmrg echo >> "$depfile" 21453354cdbSmrg 21553354cdbSmrg # The second pass generates a dummy entry for each header file. 21653354cdbSmrg tr ' ' ' 21753354cdbSmrg' < "$tmpdepfile" \ 21853354cdbSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 21986bbecbeSmrg >> "$depfile" 22053354cdbSmrg else 22153354cdbSmrg # The sourcefile does not contain any dependencies, so just 22253354cdbSmrg # store a dummy comment line, to avoid errors with the Makefile 22353354cdbSmrg # "include basename.Plo" scheme. 22453354cdbSmrg echo "#dummy" > "$depfile" 22553354cdbSmrg fi 22653354cdbSmrg rm -f "$tmpdepfile" 22753354cdbSmrg ;; 22853354cdbSmrg 22953354cdbSmrgaix) 23053354cdbSmrg # The C for AIX Compiler uses -M and outputs the dependencies 23153354cdbSmrg # in a .u file. In older versions, this file always lives in the 23253354cdbSmrg # current directory. Also, the AIX compiler puts `$object:' at the 23353354cdbSmrg # start of each line; $object doesn't have directory information. 23453354cdbSmrg # Version 6 uses the directory in both cases. 23586bbecbeSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 23686bbecbeSmrg test "x$dir" = "x$object" && dir= 23786bbecbeSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 23853354cdbSmrg if test "$libtool" = yes; then 23986bbecbeSmrg tmpdepfile1=$dir$base.u 24086bbecbeSmrg tmpdepfile2=$base.u 24186bbecbeSmrg tmpdepfile3=$dir.libs/$base.u 24253354cdbSmrg "$@" -Wc,-M 24353354cdbSmrg else 24486bbecbeSmrg tmpdepfile1=$dir$base.u 24586bbecbeSmrg tmpdepfile2=$dir$base.u 24686bbecbeSmrg tmpdepfile3=$dir$base.u 24753354cdbSmrg "$@" -M 24853354cdbSmrg fi 24953354cdbSmrg stat=$? 25053354cdbSmrg 25153354cdbSmrg if test $stat -eq 0; then : 25253354cdbSmrg else 25386bbecbeSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 25453354cdbSmrg exit $stat 25553354cdbSmrg fi 25653354cdbSmrg 25786bbecbeSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 25886bbecbeSmrg do 25986bbecbeSmrg test -f "$tmpdepfile" && break 26086bbecbeSmrg done 26153354cdbSmrg if test -f "$tmpdepfile"; then 26253354cdbSmrg # Each line is of the form `foo.o: dependent.h'. 26353354cdbSmrg # Do two passes, one to just change these to 26453354cdbSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 26586bbecbeSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 26686bbecbeSmrg # That's a tab and a space in the []. 26786bbecbeSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 26853354cdbSmrg else 26953354cdbSmrg # The sourcefile does not contain any dependencies, so just 27053354cdbSmrg # store a dummy comment line, to avoid errors with the Makefile 27153354cdbSmrg # "include basename.Plo" scheme. 27253354cdbSmrg echo "#dummy" > "$depfile" 27353354cdbSmrg fi 27453354cdbSmrg rm -f "$tmpdepfile" 27553354cdbSmrg ;; 27653354cdbSmrg 27753354cdbSmrgicc) 27853354cdbSmrg # Intel's C compiler understands `-MD -MF file'. However on 27953354cdbSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 28053354cdbSmrg # ICC 7.0 will fill foo.d with something like 28153354cdbSmrg # foo.o: sub/foo.c 28253354cdbSmrg # foo.o: sub/foo.h 28353354cdbSmrg # which is wrong. We want: 28453354cdbSmrg # sub/foo.o: sub/foo.c 28553354cdbSmrg # sub/foo.o: sub/foo.h 28653354cdbSmrg # sub/foo.c: 28753354cdbSmrg # sub/foo.h: 28853354cdbSmrg # ICC 7.1 will output 28953354cdbSmrg # foo.o: sub/foo.c sub/foo.h 29053354cdbSmrg # and will wrap long lines using \ : 29153354cdbSmrg # foo.o: sub/foo.c ... \ 29253354cdbSmrg # sub/foo.h ... \ 29353354cdbSmrg # ... 29453354cdbSmrg 29553354cdbSmrg "$@" -MD -MF "$tmpdepfile" 29653354cdbSmrg stat=$? 29753354cdbSmrg if test $stat -eq 0; then : 29853354cdbSmrg else 29953354cdbSmrg rm -f "$tmpdepfile" 30053354cdbSmrg exit $stat 30153354cdbSmrg fi 30253354cdbSmrg rm -f "$depfile" 30353354cdbSmrg # Each line is of the form `foo.o: dependent.h', 30453354cdbSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 30553354cdbSmrg # Do two passes, one to just change these to 30653354cdbSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 30753354cdbSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 30853354cdbSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 30953354cdbSmrg # correctly. Breaking it into two sed invocations is a workaround. 31053354cdbSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 31153354cdbSmrg sed -e 's/$/ :/' >> "$depfile" 31253354cdbSmrg rm -f "$tmpdepfile" 31353354cdbSmrg ;; 31453354cdbSmrg 31553354cdbSmrghp2) 31653354cdbSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 31753354cdbSmrg # compilers, which have integrated preprocessors. The correct option 31853354cdbSmrg # to use with these is +Maked; it writes dependencies to a file named 31953354cdbSmrg # 'foo.d', which lands next to the object file, wherever that 32053354cdbSmrg # happens to be. 32153354cdbSmrg # Much of this is similar to the tru64 case; see comments there. 32253354cdbSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 32353354cdbSmrg test "x$dir" = "x$object" && dir= 32453354cdbSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 32553354cdbSmrg if test "$libtool" = yes; then 32653354cdbSmrg tmpdepfile1=$dir$base.d 32753354cdbSmrg tmpdepfile2=$dir.libs/$base.d 32853354cdbSmrg "$@" -Wc,+Maked 32953354cdbSmrg else 33053354cdbSmrg tmpdepfile1=$dir$base.d 33153354cdbSmrg tmpdepfile2=$dir$base.d 33253354cdbSmrg "$@" +Maked 33353354cdbSmrg fi 33453354cdbSmrg stat=$? 33553354cdbSmrg if test $stat -eq 0; then : 33653354cdbSmrg else 33753354cdbSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 33853354cdbSmrg exit $stat 33953354cdbSmrg fi 34053354cdbSmrg 34153354cdbSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 34253354cdbSmrg do 34353354cdbSmrg test -f "$tmpdepfile" && break 34453354cdbSmrg done 34553354cdbSmrg if test -f "$tmpdepfile"; then 34653354cdbSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 34753354cdbSmrg # Add `dependent.h:' lines. 34886bbecbeSmrg sed -ne '2,${ 34986bbecbeSmrg s/^ *// 35086bbecbeSmrg s/ \\*$// 35186bbecbeSmrg s/$/:/ 35286bbecbeSmrg p 35386bbecbeSmrg }' "$tmpdepfile" >> "$depfile" 35453354cdbSmrg else 35553354cdbSmrg echo "#dummy" > "$depfile" 35653354cdbSmrg fi 35753354cdbSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 35853354cdbSmrg ;; 35953354cdbSmrg 36053354cdbSmrgtru64) 36153354cdbSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 36253354cdbSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 36353354cdbSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 36453354cdbSmrg # dependencies in `foo.d' instead, so we check for that too. 36553354cdbSmrg # Subdirectories are respected. 36653354cdbSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 36753354cdbSmrg test "x$dir" = "x$object" && dir= 36853354cdbSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 36953354cdbSmrg 37053354cdbSmrg if test "$libtool" = yes; then 37153354cdbSmrg # With Tru64 cc, shared objects can also be used to make a 37253354cdbSmrg # static library. This mechanism is used in libtool 1.4 series to 37353354cdbSmrg # handle both shared and static libraries in a single compilation. 37453354cdbSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 37553354cdbSmrg # 37653354cdbSmrg # With libtool 1.5 this exception was removed, and libtool now 37753354cdbSmrg # generates 2 separate objects for the 2 libraries. These two 37853354cdbSmrg # compilations output dependencies in $dir.libs/$base.o.d and 37953354cdbSmrg # in $dir$base.o.d. We have to check for both files, because 38053354cdbSmrg # one of the two compilations can be disabled. We should prefer 38153354cdbSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 38253354cdbSmrg # automatically cleaned when .libs/ is deleted, while ignoring 38353354cdbSmrg # the former would cause a distcleancheck panic. 38453354cdbSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 38553354cdbSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 38653354cdbSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 38753354cdbSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 38853354cdbSmrg "$@" -Wc,-MD 38953354cdbSmrg else 39053354cdbSmrg tmpdepfile1=$dir$base.o.d 39153354cdbSmrg tmpdepfile2=$dir$base.d 39253354cdbSmrg tmpdepfile3=$dir$base.d 39353354cdbSmrg tmpdepfile4=$dir$base.d 39453354cdbSmrg "$@" -MD 39553354cdbSmrg fi 39653354cdbSmrg 39753354cdbSmrg stat=$? 39853354cdbSmrg if test $stat -eq 0; then : 39953354cdbSmrg else 40053354cdbSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40153354cdbSmrg exit $stat 40253354cdbSmrg fi 40353354cdbSmrg 40453354cdbSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40553354cdbSmrg do 40653354cdbSmrg test -f "$tmpdepfile" && break 40753354cdbSmrg done 40853354cdbSmrg if test -f "$tmpdepfile"; then 40953354cdbSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 41053354cdbSmrg # That's a tab and a space in the []. 41153354cdbSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 41253354cdbSmrg else 41353354cdbSmrg echo "#dummy" > "$depfile" 41453354cdbSmrg fi 41553354cdbSmrg rm -f "$tmpdepfile" 41653354cdbSmrg ;; 41753354cdbSmrg 41861c899d4Smrgmsvc7) 41961c899d4Smrg if test "$libtool" = yes; then 42061c899d4Smrg showIncludes=-Wc,-showIncludes 42161c899d4Smrg else 42261c899d4Smrg showIncludes=-showIncludes 42361c899d4Smrg fi 42461c899d4Smrg "$@" $showIncludes > "$tmpdepfile" 42561c899d4Smrg stat=$? 42661c899d4Smrg grep -v '^Note: including file: ' "$tmpdepfile" 42761c899d4Smrg if test "$stat" = 0; then : 42861c899d4Smrg else 42961c899d4Smrg rm -f "$tmpdepfile" 43061c899d4Smrg exit $stat 43161c899d4Smrg fi 43261c899d4Smrg rm -f "$depfile" 43361c899d4Smrg echo "$object : \\" > "$depfile" 43461c899d4Smrg # The first sed program below extracts the file names and escapes 43561c899d4Smrg # backslashes for cygpath. The second sed program outputs the file 43661c899d4Smrg # name when reading, but also accumulates all include files in the 43761c899d4Smrg # hold buffer in order to output them again at the end. This only 43861c899d4Smrg # works with sed implementations that can handle large buffers. 43961c899d4Smrg sed < "$tmpdepfile" -n ' 44061c899d4Smrg/^Note: including file: *\(.*\)/ { 44161c899d4Smrg s//\1/ 44261c899d4Smrg s/\\/\\\\/g 44361c899d4Smrg p 44461c899d4Smrg}' | $cygpath_u | sort -u | sed -n ' 44561c899d4Smrgs/ /\\ /g 44661c899d4Smrgs/\(.*\)/ \1 \\/p 44761c899d4Smrgs/.\(.*\) \\/\1:/ 44861c899d4SmrgH 44961c899d4Smrg$ { 45061c899d4Smrg s/.*/ / 45161c899d4Smrg G 45261c899d4Smrg p 45361c899d4Smrg}' >> "$depfile" 45461c899d4Smrg rm -f "$tmpdepfile" 45561c899d4Smrg ;; 45661c899d4Smrg 45761c899d4Smrgmsvc7msys) 45861c899d4Smrg # This case exists only to let depend.m4 do its work. It works by 45961c899d4Smrg # looking at the text of this script. This case will never be run, 46061c899d4Smrg # since it is checked for above. 46161c899d4Smrg exit 1 46261c899d4Smrg ;; 46361c899d4Smrg 46453354cdbSmrg#nosideeffect) 46553354cdbSmrg # This comment above is used by automake to tell side-effect 46653354cdbSmrg # dependency tracking mechanisms from slower ones. 46753354cdbSmrg 46853354cdbSmrgdashmstdout) 46953354cdbSmrg # Important note: in order to support this mode, a compiler *must* 47053354cdbSmrg # always write the preprocessed file to stdout, regardless of -o. 47153354cdbSmrg "$@" || exit $? 47253354cdbSmrg 47353354cdbSmrg # Remove the call to Libtool. 47453354cdbSmrg if test "$libtool" = yes; then 47586bbecbeSmrg while test "X$1" != 'X--mode=compile'; do 47653354cdbSmrg shift 47753354cdbSmrg done 47853354cdbSmrg shift 47953354cdbSmrg fi 48053354cdbSmrg 48153354cdbSmrg # Remove `-o $object'. 48253354cdbSmrg IFS=" " 48353354cdbSmrg for arg 48453354cdbSmrg do 48553354cdbSmrg case $arg in 48653354cdbSmrg -o) 48753354cdbSmrg shift 48853354cdbSmrg ;; 48953354cdbSmrg $object) 49053354cdbSmrg shift 49153354cdbSmrg ;; 49253354cdbSmrg *) 49353354cdbSmrg set fnord "$@" "$arg" 49453354cdbSmrg shift # fnord 49553354cdbSmrg shift # $arg 49653354cdbSmrg ;; 49753354cdbSmrg esac 49853354cdbSmrg done 49953354cdbSmrg 50053354cdbSmrg test -z "$dashmflag" && dashmflag=-M 50153354cdbSmrg # Require at least two characters before searching for `:' 50253354cdbSmrg # in the target name. This is to cope with DOS-style filenames: 50353354cdbSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 50453354cdbSmrg "$@" $dashmflag | 50553354cdbSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 50653354cdbSmrg rm -f "$depfile" 50753354cdbSmrg cat < "$tmpdepfile" > "$depfile" 50853354cdbSmrg tr ' ' ' 50953354cdbSmrg' < "$tmpdepfile" | \ 51053354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 51153354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 51253354cdbSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51353354cdbSmrg rm -f "$tmpdepfile" 51453354cdbSmrg ;; 51553354cdbSmrg 51653354cdbSmrgdashXmstdout) 51753354cdbSmrg # This case only exists to satisfy depend.m4. It is never actually 51853354cdbSmrg # run, as this mode is specially recognized in the preamble. 51953354cdbSmrg exit 1 52053354cdbSmrg ;; 52153354cdbSmrg 52253354cdbSmrgmakedepend) 52353354cdbSmrg "$@" || exit $? 52453354cdbSmrg # Remove any Libtool call 52553354cdbSmrg if test "$libtool" = yes; then 52686bbecbeSmrg while test "X$1" != 'X--mode=compile'; do 52753354cdbSmrg shift 52853354cdbSmrg done 52953354cdbSmrg shift 53053354cdbSmrg fi 53153354cdbSmrg # X makedepend 53253354cdbSmrg shift 53386bbecbeSmrg cleared=no eat=no 53486bbecbeSmrg for arg 53586bbecbeSmrg do 53653354cdbSmrg case $cleared in 53753354cdbSmrg no) 53853354cdbSmrg set ""; shift 53953354cdbSmrg cleared=yes ;; 54053354cdbSmrg esac 54186bbecbeSmrg if test $eat = yes; then 54286bbecbeSmrg eat=no 54386bbecbeSmrg continue 54486bbecbeSmrg fi 54553354cdbSmrg case "$arg" in 54653354cdbSmrg -D*|-I*) 54753354cdbSmrg set fnord "$@" "$arg"; shift ;; 54853354cdbSmrg # Strip any option that makedepend may not understand. Remove 54953354cdbSmrg # the object too, otherwise makedepend will parse it as a source file. 55086bbecbeSmrg -arch) 55186bbecbeSmrg eat=yes ;; 55253354cdbSmrg -*|$object) 55353354cdbSmrg ;; 55453354cdbSmrg *) 55553354cdbSmrg set fnord "$@" "$arg"; shift ;; 55653354cdbSmrg esac 55753354cdbSmrg done 55886bbecbeSmrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 55953354cdbSmrg touch "$tmpdepfile" 56053354cdbSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 56153354cdbSmrg rm -f "$depfile" 56261c899d4Smrg # makedepend may prepend the VPATH from the source file name to the object. 56361c899d4Smrg # No need to regex-escape $object, excess matching of '.' is harmless. 56461c899d4Smrg sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 56553354cdbSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 56653354cdbSmrg' | \ 56753354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 56853354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 56953354cdbSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 57053354cdbSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 57153354cdbSmrg ;; 57253354cdbSmrg 57353354cdbSmrgcpp) 57453354cdbSmrg # Important note: in order to support this mode, a compiler *must* 57553354cdbSmrg # always write the preprocessed file to stdout. 57653354cdbSmrg "$@" || exit $? 57753354cdbSmrg 57853354cdbSmrg # Remove the call to Libtool. 57953354cdbSmrg if test "$libtool" = yes; then 58086bbecbeSmrg while test "X$1" != 'X--mode=compile'; do 58153354cdbSmrg shift 58253354cdbSmrg done 58353354cdbSmrg shift 58453354cdbSmrg fi 58553354cdbSmrg 58653354cdbSmrg # Remove `-o $object'. 58753354cdbSmrg IFS=" " 58853354cdbSmrg for arg 58953354cdbSmrg do 59053354cdbSmrg case $arg in 59153354cdbSmrg -o) 59253354cdbSmrg shift 59353354cdbSmrg ;; 59453354cdbSmrg $object) 59553354cdbSmrg shift 59653354cdbSmrg ;; 59753354cdbSmrg *) 59853354cdbSmrg set fnord "$@" "$arg" 59953354cdbSmrg shift # fnord 60053354cdbSmrg shift # $arg 60153354cdbSmrg ;; 60253354cdbSmrg esac 60353354cdbSmrg done 60453354cdbSmrg 60553354cdbSmrg "$@" -E | 60653354cdbSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 60753354cdbSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 60853354cdbSmrg sed '$ s: \\$::' > "$tmpdepfile" 60953354cdbSmrg rm -f "$depfile" 61053354cdbSmrg echo "$object : \\" > "$depfile" 61153354cdbSmrg cat < "$tmpdepfile" >> "$depfile" 61253354cdbSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 61353354cdbSmrg rm -f "$tmpdepfile" 61453354cdbSmrg ;; 61553354cdbSmrg 61653354cdbSmrgmsvisualcpp) 61753354cdbSmrg # Important note: in order to support this mode, a compiler *must* 61886bbecbeSmrg # always write the preprocessed file to stdout. 61953354cdbSmrg "$@" || exit $? 62086bbecbeSmrg 62186bbecbeSmrg # Remove the call to Libtool. 62286bbecbeSmrg if test "$libtool" = yes; then 62386bbecbeSmrg while test "X$1" != 'X--mode=compile'; do 62486bbecbeSmrg shift 62586bbecbeSmrg done 62686bbecbeSmrg shift 62786bbecbeSmrg fi 62886bbecbeSmrg 62953354cdbSmrg IFS=" " 63053354cdbSmrg for arg 63153354cdbSmrg do 63253354cdbSmrg case "$arg" in 63386bbecbeSmrg -o) 63486bbecbeSmrg shift 63586bbecbeSmrg ;; 63686bbecbeSmrg $object) 63786bbecbeSmrg shift 63886bbecbeSmrg ;; 63953354cdbSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 64053354cdbSmrg set fnord "$@" 64153354cdbSmrg shift 64253354cdbSmrg shift 64353354cdbSmrg ;; 64453354cdbSmrg *) 64553354cdbSmrg set fnord "$@" "$arg" 64653354cdbSmrg shift 64753354cdbSmrg shift 64853354cdbSmrg ;; 64953354cdbSmrg esac 65053354cdbSmrg done 65186bbecbeSmrg "$@" -E 2>/dev/null | 65286bbecbeSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 65353354cdbSmrg rm -f "$depfile" 65453354cdbSmrg echo "$object : \\" > "$depfile" 65586bbecbeSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 65653354cdbSmrg echo " " >> "$depfile" 65786bbecbeSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 65853354cdbSmrg rm -f "$tmpdepfile" 65953354cdbSmrg ;; 66053354cdbSmrg 66186bbecbeSmrgmsvcmsys) 66286bbecbeSmrg # This case exists only to let depend.m4 do its work. It works by 66386bbecbeSmrg # looking at the text of this script. This case will never be run, 66486bbecbeSmrg # since it is checked for above. 66586bbecbeSmrg exit 1 66686bbecbeSmrg ;; 66786bbecbeSmrg 66853354cdbSmrgnone) 66953354cdbSmrg exec "$@" 67053354cdbSmrg ;; 67153354cdbSmrg 67253354cdbSmrg*) 67353354cdbSmrg echo "Unknown depmode $depmode" 1>&2 67453354cdbSmrg exit 1 67553354cdbSmrg ;; 67653354cdbSmrgesac 67753354cdbSmrg 67853354cdbSmrgexit 0 67953354cdbSmrg 68053354cdbSmrg# Local Variables: 68153354cdbSmrg# mode: shell-script 68253354cdbSmrg# sh-indentation: 2 68353354cdbSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 68453354cdbSmrg# time-stamp-start: "scriptversion=" 68553354cdbSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 68686bbecbeSmrg# time-stamp-time-zone: "UTC" 68786bbecbeSmrg# time-stamp-end: "; # UTC" 68853354cdbSmrg# End: 689