153e90a53Smrg#! /bin/sh 253e90a53Smrg# depcomp - compile a program generating dependencies as side-effects 353e90a53Smrg 453e90a53Smrgscriptversion=2005-07-09.11 553e90a53Smrg 653e90a53Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 753e90a53Smrg 853e90a53Smrg# This program is free software; you can redistribute it and/or modify 953e90a53Smrg# it under the terms of the GNU General Public License as published by 1053e90a53Smrg# the Free Software Foundation; either version 2, or (at your option) 1153e90a53Smrg# any later version. 1253e90a53Smrg 1353e90a53Smrg# This program is distributed in the hope that it will be useful, 1453e90a53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1553e90a53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1653e90a53Smrg# GNU General Public License for more details. 1753e90a53Smrg 1853e90a53Smrg# You should have received a copy of the GNU General Public License 1953e90a53Smrg# along with this program; if not, write to the Free Software 2053e90a53Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2153e90a53Smrg# 02110-1301, USA. 2253e90a53Smrg 2353e90a53Smrg# As a special exception to the GNU General Public License, if you 2453e90a53Smrg# distribute this file as part of a program that contains a 2553e90a53Smrg# configuration script generated by Autoconf, you may include it under 2653e90a53Smrg# the same distribution terms that you use for the rest of that program. 2753e90a53Smrg 2853e90a53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2953e90a53Smrg 3053e90a53Smrgcase $1 in 3153e90a53Smrg '') 3253e90a53Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3353e90a53Smrg exit 1; 3453e90a53Smrg ;; 3553e90a53Smrg -h | --h*) 3653e90a53Smrg cat <<\EOF 3753e90a53SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3853e90a53Smrg 3953e90a53SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4053e90a53Smrgas side-effects. 4153e90a53Smrg 4253e90a53SmrgEnvironment variables: 4353e90a53Smrg depmode Dependency tracking mode. 4453e90a53Smrg source Source file read by `PROGRAMS ARGS'. 4553e90a53Smrg object Object file output by `PROGRAMS ARGS'. 4653e90a53Smrg DEPDIR directory where to store dependencies. 4753e90a53Smrg depfile Dependency file to output. 4853e90a53Smrg tmpdepfile Temporary file to use when outputing dependencies. 4953e90a53Smrg libtool Whether libtool is used (yes/no). 5053e90a53Smrg 5153e90a53SmrgReport bugs to <bug-automake@gnu.org>. 5253e90a53SmrgEOF 5353e90a53Smrg exit $? 5453e90a53Smrg ;; 5553e90a53Smrg -v | --v*) 5653e90a53Smrg echo "depcomp $scriptversion" 5753e90a53Smrg exit $? 5853e90a53Smrg ;; 5953e90a53Smrgesac 6053e90a53Smrg 6153e90a53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6253e90a53Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6353e90a53Smrg exit 1 6453e90a53Smrgfi 6553e90a53Smrg 6653e90a53Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6753e90a53Smrgdepfile=${depfile-`echo "$object" | 6853e90a53Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6953e90a53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7053e90a53Smrg 7153e90a53Smrgrm -f "$tmpdepfile" 7253e90a53Smrg 7353e90a53Smrg# Some modes work just like other modes, but use different flags. We 7453e90a53Smrg# parameterize here, but still list the modes in the big case below, 7553e90a53Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7653e90a53Smrg# here, because this file can only contain one case statement. 7753e90a53Smrgif test "$depmode" = hp; then 7853e90a53Smrg # HP compiler uses -M and no extra arg. 7953e90a53Smrg gccflag=-M 8053e90a53Smrg depmode=gcc 8153e90a53Smrgfi 8253e90a53Smrg 8353e90a53Smrgif test "$depmode" = dashXmstdout; then 8453e90a53Smrg # This is just like dashmstdout with a different argument. 8553e90a53Smrg dashmflag=-xM 8653e90a53Smrg depmode=dashmstdout 8753e90a53Smrgfi 8853e90a53Smrg 8953e90a53Smrgcase "$depmode" in 9053e90a53Smrggcc3) 9153e90a53Smrg## gcc 3 implements dependency tracking that does exactly what 9253e90a53Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9353e90a53Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 9453e90a53Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9553e90a53Smrg stat=$? 9653e90a53Smrg if test $stat -eq 0; then : 9753e90a53Smrg else 9853e90a53Smrg rm -f "$tmpdepfile" 9953e90a53Smrg exit $stat 10053e90a53Smrg fi 10153e90a53Smrg mv "$tmpdepfile" "$depfile" 10253e90a53Smrg ;; 10353e90a53Smrg 10453e90a53Smrggcc) 10553e90a53Smrg## There are various ways to get dependency output from gcc. Here's 10653e90a53Smrg## why we pick this rather obscure method: 10753e90a53Smrg## - Don't want to use -MD because we'd like the dependencies to end 10853e90a53Smrg## up in a subdir. Having to rename by hand is ugly. 10953e90a53Smrg## (We might end up doing this anyway to support other compilers.) 11053e90a53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11153e90a53Smrg## -MM, not -M (despite what the docs say). 11253e90a53Smrg## - Using -M directly means running the compiler twice (even worse 11353e90a53Smrg## than renaming). 11453e90a53Smrg if test -z "$gccflag"; then 11553e90a53Smrg gccflag=-MD, 11653e90a53Smrg fi 11753e90a53Smrg "$@" -Wp,"$gccflag$tmpdepfile" 11853e90a53Smrg stat=$? 11953e90a53Smrg if test $stat -eq 0; then : 12053e90a53Smrg else 12153e90a53Smrg rm -f "$tmpdepfile" 12253e90a53Smrg exit $stat 12353e90a53Smrg fi 12453e90a53Smrg rm -f "$depfile" 12553e90a53Smrg echo "$object : \\" > "$depfile" 12653e90a53Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12753e90a53Smrg## The second -e expression handles DOS-style file names with drive letters. 12853e90a53Smrg sed -e 's/^[^:]*: / /' \ 12953e90a53Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13053e90a53Smrg## This next piece of magic avoids the `deleted header file' problem. 13153e90a53Smrg## The problem is that when a header file which appears in a .P file 13253e90a53Smrg## is deleted, the dependency causes make to die (because there is 13353e90a53Smrg## typically no way to rebuild the header). We avoid this by adding 13453e90a53Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 13553e90a53Smrg## this for us directly. 13653e90a53Smrg tr ' ' ' 13753e90a53Smrg' < "$tmpdepfile" | 13853e90a53Smrg## Some versions of gcc put a space before the `:'. On the theory 13953e90a53Smrg## that the space means something, we add a space to the output as 14053e90a53Smrg## well. 14153e90a53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 14253e90a53Smrg## correctly. Breaking it into two sed invocations is a workaround. 14353e90a53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14453e90a53Smrg rm -f "$tmpdepfile" 14553e90a53Smrg ;; 14653e90a53Smrg 14753e90a53Smrghp) 14853e90a53Smrg # This case exists only to let depend.m4 do its work. It works by 14953e90a53Smrg # looking at the text of this script. This case will never be run, 15053e90a53Smrg # since it is checked for above. 15153e90a53Smrg exit 1 15253e90a53Smrg ;; 15353e90a53Smrg 15453e90a53Smrgsgi) 15553e90a53Smrg if test "$libtool" = yes; then 15653e90a53Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15753e90a53Smrg else 15853e90a53Smrg "$@" -MDupdate "$tmpdepfile" 15953e90a53Smrg fi 16053e90a53Smrg stat=$? 16153e90a53Smrg if test $stat -eq 0; then : 16253e90a53Smrg else 16353e90a53Smrg rm -f "$tmpdepfile" 16453e90a53Smrg exit $stat 16553e90a53Smrg fi 16653e90a53Smrg rm -f "$depfile" 16753e90a53Smrg 16853e90a53Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16953e90a53Smrg echo "$object : \\" > "$depfile" 17053e90a53Smrg 17153e90a53Smrg # Clip off the initial element (the dependent). Don't try to be 17253e90a53Smrg # clever and replace this with sed code, as IRIX sed won't handle 17353e90a53Smrg # lines with more than a fixed number of characters (4096 in 17453e90a53Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17553e90a53Smrg # the IRIX cc adds comments like `#:fec' to the end of the 17653e90a53Smrg # dependency line. 17753e90a53Smrg tr ' ' ' 17853e90a53Smrg' < "$tmpdepfile" \ 17953e90a53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18053e90a53Smrg tr ' 18153e90a53Smrg' ' ' >> $depfile 18253e90a53Smrg echo >> $depfile 18353e90a53Smrg 18453e90a53Smrg # The second pass generates a dummy entry for each header file. 18553e90a53Smrg tr ' ' ' 18653e90a53Smrg' < "$tmpdepfile" \ 18753e90a53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18853e90a53Smrg >> $depfile 18953e90a53Smrg else 19053e90a53Smrg # The sourcefile does not contain any dependencies, so just 19153e90a53Smrg # store a dummy comment line, to avoid errors with the Makefile 19253e90a53Smrg # "include basename.Plo" scheme. 19353e90a53Smrg echo "#dummy" > "$depfile" 19453e90a53Smrg fi 19553e90a53Smrg rm -f "$tmpdepfile" 19653e90a53Smrg ;; 19753e90a53Smrg 19853e90a53Smrgaix) 19953e90a53Smrg # The C for AIX Compiler uses -M and outputs the dependencies 20053e90a53Smrg # in a .u file. In older versions, this file always lives in the 20153e90a53Smrg # current directory. Also, the AIX compiler puts `$object:' at the 20253e90a53Smrg # start of each line; $object doesn't have directory information. 20353e90a53Smrg # Version 6 uses the directory in both cases. 20453e90a53Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20553e90a53Smrg tmpdepfile="$stripped.u" 20653e90a53Smrg if test "$libtool" = yes; then 20753e90a53Smrg "$@" -Wc,-M 20853e90a53Smrg else 20953e90a53Smrg "$@" -M 21053e90a53Smrg fi 21153e90a53Smrg stat=$? 21253e90a53Smrg 21353e90a53Smrg if test -f "$tmpdepfile"; then : 21453e90a53Smrg else 21553e90a53Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21653e90a53Smrg tmpdepfile="$stripped.u" 21753e90a53Smrg fi 21853e90a53Smrg 21953e90a53Smrg if test $stat -eq 0; then : 22053e90a53Smrg else 22153e90a53Smrg rm -f "$tmpdepfile" 22253e90a53Smrg exit $stat 22353e90a53Smrg fi 22453e90a53Smrg 22553e90a53Smrg if test -f "$tmpdepfile"; then 22653e90a53Smrg outname="$stripped.o" 22753e90a53Smrg # Each line is of the form `foo.o: dependent.h'. 22853e90a53Smrg # Do two passes, one to just change these to 22953e90a53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 23053e90a53Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23153e90a53Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23253e90a53Smrg else 23353e90a53Smrg # The sourcefile does not contain any dependencies, so just 23453e90a53Smrg # store a dummy comment line, to avoid errors with the Makefile 23553e90a53Smrg # "include basename.Plo" scheme. 23653e90a53Smrg echo "#dummy" > "$depfile" 23753e90a53Smrg fi 23853e90a53Smrg rm -f "$tmpdepfile" 23953e90a53Smrg ;; 24053e90a53Smrg 24153e90a53Smrgicc) 24253e90a53Smrg # Intel's C compiler understands `-MD -MF file'. However on 24353e90a53Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24453e90a53Smrg # ICC 7.0 will fill foo.d with something like 24553e90a53Smrg # foo.o: sub/foo.c 24653e90a53Smrg # foo.o: sub/foo.h 24753e90a53Smrg # which is wrong. We want: 24853e90a53Smrg # sub/foo.o: sub/foo.c 24953e90a53Smrg # sub/foo.o: sub/foo.h 25053e90a53Smrg # sub/foo.c: 25153e90a53Smrg # sub/foo.h: 25253e90a53Smrg # ICC 7.1 will output 25353e90a53Smrg # foo.o: sub/foo.c sub/foo.h 25453e90a53Smrg # and will wrap long lines using \ : 25553e90a53Smrg # foo.o: sub/foo.c ... \ 25653e90a53Smrg # sub/foo.h ... \ 25753e90a53Smrg # ... 25853e90a53Smrg 25953e90a53Smrg "$@" -MD -MF "$tmpdepfile" 26053e90a53Smrg stat=$? 26153e90a53Smrg if test $stat -eq 0; then : 26253e90a53Smrg else 26353e90a53Smrg rm -f "$tmpdepfile" 26453e90a53Smrg exit $stat 26553e90a53Smrg fi 26653e90a53Smrg rm -f "$depfile" 26753e90a53Smrg # Each line is of the form `foo.o: dependent.h', 26853e90a53Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26953e90a53Smrg # Do two passes, one to just change these to 27053e90a53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 27153e90a53Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27253e90a53Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 27353e90a53Smrg # correctly. Breaking it into two sed invocations is a workaround. 27453e90a53Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27553e90a53Smrg sed -e 's/$/ :/' >> "$depfile" 27653e90a53Smrg rm -f "$tmpdepfile" 27753e90a53Smrg ;; 27853e90a53Smrg 27953e90a53Smrgtru64) 28053e90a53Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 28153e90a53Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28253e90a53Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28353e90a53Smrg # dependencies in `foo.d' instead, so we check for that too. 28453e90a53Smrg # Subdirectories are respected. 28553e90a53Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28653e90a53Smrg test "x$dir" = "x$object" && dir= 28753e90a53Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28853e90a53Smrg 28953e90a53Smrg if test "$libtool" = yes; then 29053e90a53Smrg # With Tru64 cc, shared objects can also be used to make a 29153e90a53Smrg # static library. This mecanism is used in libtool 1.4 series to 29253e90a53Smrg # handle both shared and static libraries in a single compilation. 29353e90a53Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29453e90a53Smrg # 29553e90a53Smrg # With libtool 1.5 this exception was removed, and libtool now 29653e90a53Smrg # generates 2 separate objects for the 2 libraries. These two 29753e90a53Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 29853e90a53Smrg # in $dir$base.o.d. We have to check for both files, because 29953e90a53Smrg # one of the two compilations can be disabled. We should prefer 30053e90a53Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30153e90a53Smrg # automatically cleaned when .libs/ is deleted, while ignoring 30253e90a53Smrg # the former would cause a distcleancheck panic. 30353e90a53Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30453e90a53Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30553e90a53Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30653e90a53Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30753e90a53Smrg "$@" -Wc,-MD 30853e90a53Smrg else 30953e90a53Smrg tmpdepfile1=$dir$base.o.d 31053e90a53Smrg tmpdepfile2=$dir$base.d 31153e90a53Smrg tmpdepfile3=$dir$base.d 31253e90a53Smrg tmpdepfile4=$dir$base.d 31353e90a53Smrg "$@" -MD 31453e90a53Smrg fi 31553e90a53Smrg 31653e90a53Smrg stat=$? 31753e90a53Smrg if test $stat -eq 0; then : 31853e90a53Smrg else 31953e90a53Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32053e90a53Smrg exit $stat 32153e90a53Smrg fi 32253e90a53Smrg 32353e90a53Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32453e90a53Smrg do 32553e90a53Smrg test -f "$tmpdepfile" && break 32653e90a53Smrg done 32753e90a53Smrg if test -f "$tmpdepfile"; then 32853e90a53Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32953e90a53Smrg # That's a tab and a space in the []. 33053e90a53Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33153e90a53Smrg else 33253e90a53Smrg echo "#dummy" > "$depfile" 33353e90a53Smrg fi 33453e90a53Smrg rm -f "$tmpdepfile" 33553e90a53Smrg ;; 33653e90a53Smrg 33753e90a53Smrg#nosideeffect) 33853e90a53Smrg # This comment above is used by automake to tell side-effect 33953e90a53Smrg # dependency tracking mechanisms from slower ones. 34053e90a53Smrg 34153e90a53Smrgdashmstdout) 34253e90a53Smrg # Important note: in order to support this mode, a compiler *must* 34353e90a53Smrg # always write the preprocessed file to stdout, regardless of -o. 34453e90a53Smrg "$@" || exit $? 34553e90a53Smrg 34653e90a53Smrg # Remove the call to Libtool. 34753e90a53Smrg if test "$libtool" = yes; then 34853e90a53Smrg while test $1 != '--mode=compile'; do 34953e90a53Smrg shift 35053e90a53Smrg done 35153e90a53Smrg shift 35253e90a53Smrg fi 35353e90a53Smrg 35453e90a53Smrg # Remove `-o $object'. 35553e90a53Smrg IFS=" " 35653e90a53Smrg for arg 35753e90a53Smrg do 35853e90a53Smrg case $arg in 35953e90a53Smrg -o) 36053e90a53Smrg shift 36153e90a53Smrg ;; 36253e90a53Smrg $object) 36353e90a53Smrg shift 36453e90a53Smrg ;; 36553e90a53Smrg *) 36653e90a53Smrg set fnord "$@" "$arg" 36753e90a53Smrg shift # fnord 36853e90a53Smrg shift # $arg 36953e90a53Smrg ;; 37053e90a53Smrg esac 37153e90a53Smrg done 37253e90a53Smrg 37353e90a53Smrg test -z "$dashmflag" && dashmflag=-M 37453e90a53Smrg # Require at least two characters before searching for `:' 37553e90a53Smrg # in the target name. This is to cope with DOS-style filenames: 37653e90a53Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37753e90a53Smrg "$@" $dashmflag | 37853e90a53Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37953e90a53Smrg rm -f "$depfile" 38053e90a53Smrg cat < "$tmpdepfile" > "$depfile" 38153e90a53Smrg tr ' ' ' 38253e90a53Smrg' < "$tmpdepfile" | \ 38353e90a53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 38453e90a53Smrg## correctly. Breaking it into two sed invocations is a workaround. 38553e90a53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38653e90a53Smrg rm -f "$tmpdepfile" 38753e90a53Smrg ;; 38853e90a53Smrg 38953e90a53SmrgdashXmstdout) 39053e90a53Smrg # This case only exists to satisfy depend.m4. It is never actually 39153e90a53Smrg # run, as this mode is specially recognized in the preamble. 39253e90a53Smrg exit 1 39353e90a53Smrg ;; 39453e90a53Smrg 39553e90a53Smrgmakedepend) 39653e90a53Smrg "$@" || exit $? 39753e90a53Smrg # Remove any Libtool call 39853e90a53Smrg if test "$libtool" = yes; then 39953e90a53Smrg while test $1 != '--mode=compile'; do 40053e90a53Smrg shift 40153e90a53Smrg done 40253e90a53Smrg shift 40353e90a53Smrg fi 40453e90a53Smrg # X makedepend 40553e90a53Smrg shift 40653e90a53Smrg cleared=no 40753e90a53Smrg for arg in "$@"; do 40853e90a53Smrg case $cleared in 40953e90a53Smrg no) 41053e90a53Smrg set ""; shift 41153e90a53Smrg cleared=yes ;; 41253e90a53Smrg esac 41353e90a53Smrg case "$arg" in 41453e90a53Smrg -D*|-I*) 41553e90a53Smrg set fnord "$@" "$arg"; shift ;; 41653e90a53Smrg # Strip any option that makedepend may not understand. Remove 41753e90a53Smrg # the object too, otherwise makedepend will parse it as a source file. 41853e90a53Smrg -*|$object) 41953e90a53Smrg ;; 42053e90a53Smrg *) 42153e90a53Smrg set fnord "$@" "$arg"; shift ;; 42253e90a53Smrg esac 42353e90a53Smrg done 42453e90a53Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42553e90a53Smrg touch "$tmpdepfile" 42653e90a53Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42753e90a53Smrg rm -f "$depfile" 42853e90a53Smrg cat < "$tmpdepfile" > "$depfile" 42953e90a53Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43053e90a53Smrg' | \ 43153e90a53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 43253e90a53Smrg## correctly. Breaking it into two sed invocations is a workaround. 43353e90a53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43453e90a53Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43553e90a53Smrg ;; 43653e90a53Smrg 43753e90a53Smrgcpp) 43853e90a53Smrg # Important note: in order to support this mode, a compiler *must* 43953e90a53Smrg # always write the preprocessed file to stdout. 44053e90a53Smrg "$@" || exit $? 44153e90a53Smrg 44253e90a53Smrg # Remove the call to Libtool. 44353e90a53Smrg if test "$libtool" = yes; then 44453e90a53Smrg while test $1 != '--mode=compile'; do 44553e90a53Smrg shift 44653e90a53Smrg done 44753e90a53Smrg shift 44853e90a53Smrg fi 44953e90a53Smrg 45053e90a53Smrg # Remove `-o $object'. 45153e90a53Smrg IFS=" " 45253e90a53Smrg for arg 45353e90a53Smrg do 45453e90a53Smrg case $arg in 45553e90a53Smrg -o) 45653e90a53Smrg shift 45753e90a53Smrg ;; 45853e90a53Smrg $object) 45953e90a53Smrg shift 46053e90a53Smrg ;; 46153e90a53Smrg *) 46253e90a53Smrg set fnord "$@" "$arg" 46353e90a53Smrg shift # fnord 46453e90a53Smrg shift # $arg 46553e90a53Smrg ;; 46653e90a53Smrg esac 46753e90a53Smrg done 46853e90a53Smrg 46953e90a53Smrg "$@" -E | 47053e90a53Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47153e90a53Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47253e90a53Smrg sed '$ s: \\$::' > "$tmpdepfile" 47353e90a53Smrg rm -f "$depfile" 47453e90a53Smrg echo "$object : \\" > "$depfile" 47553e90a53Smrg cat < "$tmpdepfile" >> "$depfile" 47653e90a53Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47753e90a53Smrg rm -f "$tmpdepfile" 47853e90a53Smrg ;; 47953e90a53Smrg 48053e90a53Smrgmsvisualcpp) 48153e90a53Smrg # Important note: in order to support this mode, a compiler *must* 48253e90a53Smrg # always write the preprocessed file to stdout, regardless of -o, 48353e90a53Smrg # because we must use -o when running libtool. 48453e90a53Smrg "$@" || exit $? 48553e90a53Smrg IFS=" " 48653e90a53Smrg for arg 48753e90a53Smrg do 48853e90a53Smrg case "$arg" in 48953e90a53Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49053e90a53Smrg set fnord "$@" 49153e90a53Smrg shift 49253e90a53Smrg shift 49353e90a53Smrg ;; 49453e90a53Smrg *) 49553e90a53Smrg set fnord "$@" "$arg" 49653e90a53Smrg shift 49753e90a53Smrg shift 49853e90a53Smrg ;; 49953e90a53Smrg esac 50053e90a53Smrg done 50153e90a53Smrg "$@" -E | 50253e90a53Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50353e90a53Smrg rm -f "$depfile" 50453e90a53Smrg echo "$object : \\" > "$depfile" 50553e90a53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50653e90a53Smrg echo " " >> "$depfile" 50753e90a53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50853e90a53Smrg rm -f "$tmpdepfile" 50953e90a53Smrg ;; 51053e90a53Smrg 51153e90a53Smrgnone) 51253e90a53Smrg exec "$@" 51353e90a53Smrg ;; 51453e90a53Smrg 51553e90a53Smrg*) 51653e90a53Smrg echo "Unknown depmode $depmode" 1>&2 51753e90a53Smrg exit 1 51853e90a53Smrg ;; 51953e90a53Smrgesac 52053e90a53Smrg 52153e90a53Smrgexit 0 52253e90a53Smrg 52353e90a53Smrg# Local Variables: 52453e90a53Smrg# mode: shell-script 52553e90a53Smrg# sh-indentation: 2 52653e90a53Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52753e90a53Smrg# time-stamp-start: "scriptversion=" 52853e90a53Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52953e90a53Smrg# time-stamp-end: "$" 53053e90a53Smrg# End: 531