depcomp revision 45bc899b
145bc899bSmrg#! /bin/sh 245bc899bSmrg# depcomp - compile a program generating dependencies as side-effects 345bc899bSmrg 445bc899bSmrgscriptversion=2005-07-09.11 545bc899bSmrg 645bc899bSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 745bc899bSmrg 845bc899bSmrg# This program is free software; you can redistribute it and/or modify 945bc899bSmrg# it under the terms of the GNU General Public License as published by 1045bc899bSmrg# the Free Software Foundation; either version 2, or (at your option) 1145bc899bSmrg# any later version. 1245bc899bSmrg 1345bc899bSmrg# This program is distributed in the hope that it will be useful, 1445bc899bSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1545bc899bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1645bc899bSmrg# GNU General Public License for more details. 1745bc899bSmrg 1845bc899bSmrg# You should have received a copy of the GNU General Public License 1945bc899bSmrg# along with this program; if not, write to the Free Software 2045bc899bSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2145bc899bSmrg# 02110-1301, USA. 2245bc899bSmrg 2345bc899bSmrg# As a special exception to the GNU General Public License, if you 2445bc899bSmrg# distribute this file as part of a program that contains a 2545bc899bSmrg# configuration script generated by Autoconf, you may include it under 2645bc899bSmrg# the same distribution terms that you use for the rest of that program. 2745bc899bSmrg 2845bc899bSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2945bc899bSmrg 3045bc899bSmrgcase $1 in 3145bc899bSmrg '') 3245bc899bSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3345bc899bSmrg exit 1; 3445bc899bSmrg ;; 3545bc899bSmrg -h | --h*) 3645bc899bSmrg cat <<\EOF 3745bc899bSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3845bc899bSmrg 3945bc899bSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4045bc899bSmrgas side-effects. 4145bc899bSmrg 4245bc899bSmrgEnvironment variables: 4345bc899bSmrg depmode Dependency tracking mode. 4445bc899bSmrg source Source file read by `PROGRAMS ARGS'. 4545bc899bSmrg object Object file output by `PROGRAMS ARGS'. 4645bc899bSmrg DEPDIR directory where to store dependencies. 4745bc899bSmrg depfile Dependency file to output. 4845bc899bSmrg tmpdepfile Temporary file to use when outputing dependencies. 4945bc899bSmrg libtool Whether libtool is used (yes/no). 5045bc899bSmrg 5145bc899bSmrgReport bugs to <bug-automake@gnu.org>. 5245bc899bSmrgEOF 5345bc899bSmrg exit $? 5445bc899bSmrg ;; 5545bc899bSmrg -v | --v*) 5645bc899bSmrg echo "depcomp $scriptversion" 5745bc899bSmrg exit $? 5845bc899bSmrg ;; 5945bc899bSmrgesac 6045bc899bSmrg 6145bc899bSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6245bc899bSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6345bc899bSmrg exit 1 6445bc899bSmrgfi 6545bc899bSmrg 6645bc899bSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6745bc899bSmrgdepfile=${depfile-`echo "$object" | 6845bc899bSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6945bc899bSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7045bc899bSmrg 7145bc899bSmrgrm -f "$tmpdepfile" 7245bc899bSmrg 7345bc899bSmrg# Some modes work just like other modes, but use different flags. We 7445bc899bSmrg# parameterize here, but still list the modes in the big case below, 7545bc899bSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7645bc899bSmrg# here, because this file can only contain one case statement. 7745bc899bSmrgif test "$depmode" = hp; then 7845bc899bSmrg # HP compiler uses -M and no extra arg. 7945bc899bSmrg gccflag=-M 8045bc899bSmrg depmode=gcc 8145bc899bSmrgfi 8245bc899bSmrg 8345bc899bSmrgif test "$depmode" = dashXmstdout; then 8445bc899bSmrg # This is just like dashmstdout with a different argument. 8545bc899bSmrg dashmflag=-xM 8645bc899bSmrg depmode=dashmstdout 8745bc899bSmrgfi 8845bc899bSmrg 8945bc899bSmrgcase "$depmode" in 9045bc899bSmrggcc3) 9145bc899bSmrg## gcc 3 implements dependency tracking that does exactly what 9245bc899bSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9345bc899bSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 9445bc899bSmrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9545bc899bSmrg stat=$? 9645bc899bSmrg if test $stat -eq 0; then : 9745bc899bSmrg else 9845bc899bSmrg rm -f "$tmpdepfile" 9945bc899bSmrg exit $stat 10045bc899bSmrg fi 10145bc899bSmrg mv "$tmpdepfile" "$depfile" 10245bc899bSmrg ;; 10345bc899bSmrg 10445bc899bSmrggcc) 10545bc899bSmrg## There are various ways to get dependency output from gcc. Here's 10645bc899bSmrg## why we pick this rather obscure method: 10745bc899bSmrg## - Don't want to use -MD because we'd like the dependencies to end 10845bc899bSmrg## up in a subdir. Having to rename by hand is ugly. 10945bc899bSmrg## (We might end up doing this anyway to support other compilers.) 11045bc899bSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11145bc899bSmrg## -MM, not -M (despite what the docs say). 11245bc899bSmrg## - Using -M directly means running the compiler twice (even worse 11345bc899bSmrg## than renaming). 11445bc899bSmrg if test -z "$gccflag"; then 11545bc899bSmrg gccflag=-MD, 11645bc899bSmrg fi 11745bc899bSmrg "$@" -Wp,"$gccflag$tmpdepfile" 11845bc899bSmrg stat=$? 11945bc899bSmrg if test $stat -eq 0; then : 12045bc899bSmrg else 12145bc899bSmrg rm -f "$tmpdepfile" 12245bc899bSmrg exit $stat 12345bc899bSmrg fi 12445bc899bSmrg rm -f "$depfile" 12545bc899bSmrg echo "$object : \\" > "$depfile" 12645bc899bSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12745bc899bSmrg## The second -e expression handles DOS-style file names with drive letters. 12845bc899bSmrg sed -e 's/^[^:]*: / /' \ 12945bc899bSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13045bc899bSmrg## This next piece of magic avoids the `deleted header file' problem. 13145bc899bSmrg## The problem is that when a header file which appears in a .P file 13245bc899bSmrg## is deleted, the dependency causes make to die (because there is 13345bc899bSmrg## typically no way to rebuild the header). We avoid this by adding 13445bc899bSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 13545bc899bSmrg## this for us directly. 13645bc899bSmrg tr ' ' ' 13745bc899bSmrg' < "$tmpdepfile" | 13845bc899bSmrg## Some versions of gcc put a space before the `:'. On the theory 13945bc899bSmrg## that the space means something, we add a space to the output as 14045bc899bSmrg## well. 14145bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 14245bc899bSmrg## correctly. Breaking it into two sed invocations is a workaround. 14345bc899bSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14445bc899bSmrg rm -f "$tmpdepfile" 14545bc899bSmrg ;; 14645bc899bSmrg 14745bc899bSmrghp) 14845bc899bSmrg # This case exists only to let depend.m4 do its work. It works by 14945bc899bSmrg # looking at the text of this script. This case will never be run, 15045bc899bSmrg # since it is checked for above. 15145bc899bSmrg exit 1 15245bc899bSmrg ;; 15345bc899bSmrg 15445bc899bSmrgsgi) 15545bc899bSmrg if test "$libtool" = yes; then 15645bc899bSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15745bc899bSmrg else 15845bc899bSmrg "$@" -MDupdate "$tmpdepfile" 15945bc899bSmrg fi 16045bc899bSmrg stat=$? 16145bc899bSmrg if test $stat -eq 0; then : 16245bc899bSmrg else 16345bc899bSmrg rm -f "$tmpdepfile" 16445bc899bSmrg exit $stat 16545bc899bSmrg fi 16645bc899bSmrg rm -f "$depfile" 16745bc899bSmrg 16845bc899bSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16945bc899bSmrg echo "$object : \\" > "$depfile" 17045bc899bSmrg 17145bc899bSmrg # Clip off the initial element (the dependent). Don't try to be 17245bc899bSmrg # clever and replace this with sed code, as IRIX sed won't handle 17345bc899bSmrg # lines with more than a fixed number of characters (4096 in 17445bc899bSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17545bc899bSmrg # the IRIX cc adds comments like `#:fec' to the end of the 17645bc899bSmrg # dependency line. 17745bc899bSmrg tr ' ' ' 17845bc899bSmrg' < "$tmpdepfile" \ 17945bc899bSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18045bc899bSmrg tr ' 18145bc899bSmrg' ' ' >> $depfile 18245bc899bSmrg echo >> $depfile 18345bc899bSmrg 18445bc899bSmrg # The second pass generates a dummy entry for each header file. 18545bc899bSmrg tr ' ' ' 18645bc899bSmrg' < "$tmpdepfile" \ 18745bc899bSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18845bc899bSmrg >> $depfile 18945bc899bSmrg else 19045bc899bSmrg # The sourcefile does not contain any dependencies, so just 19145bc899bSmrg # store a dummy comment line, to avoid errors with the Makefile 19245bc899bSmrg # "include basename.Plo" scheme. 19345bc899bSmrg echo "#dummy" > "$depfile" 19445bc899bSmrg fi 19545bc899bSmrg rm -f "$tmpdepfile" 19645bc899bSmrg ;; 19745bc899bSmrg 19845bc899bSmrgaix) 19945bc899bSmrg # The C for AIX Compiler uses -M and outputs the dependencies 20045bc899bSmrg # in a .u file. In older versions, this file always lives in the 20145bc899bSmrg # current directory. Also, the AIX compiler puts `$object:' at the 20245bc899bSmrg # start of each line; $object doesn't have directory information. 20345bc899bSmrg # Version 6 uses the directory in both cases. 20445bc899bSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20545bc899bSmrg tmpdepfile="$stripped.u" 20645bc899bSmrg if test "$libtool" = yes; then 20745bc899bSmrg "$@" -Wc,-M 20845bc899bSmrg else 20945bc899bSmrg "$@" -M 21045bc899bSmrg fi 21145bc899bSmrg stat=$? 21245bc899bSmrg 21345bc899bSmrg if test -f "$tmpdepfile"; then : 21445bc899bSmrg else 21545bc899bSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21645bc899bSmrg tmpdepfile="$stripped.u" 21745bc899bSmrg fi 21845bc899bSmrg 21945bc899bSmrg if test $stat -eq 0; then : 22045bc899bSmrg else 22145bc899bSmrg rm -f "$tmpdepfile" 22245bc899bSmrg exit $stat 22345bc899bSmrg fi 22445bc899bSmrg 22545bc899bSmrg if test -f "$tmpdepfile"; then 22645bc899bSmrg outname="$stripped.o" 22745bc899bSmrg # Each line is of the form `foo.o: dependent.h'. 22845bc899bSmrg # Do two passes, one to just change these to 22945bc899bSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 23045bc899bSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23145bc899bSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23245bc899bSmrg else 23345bc899bSmrg # The sourcefile does not contain any dependencies, so just 23445bc899bSmrg # store a dummy comment line, to avoid errors with the Makefile 23545bc899bSmrg # "include basename.Plo" scheme. 23645bc899bSmrg echo "#dummy" > "$depfile" 23745bc899bSmrg fi 23845bc899bSmrg rm -f "$tmpdepfile" 23945bc899bSmrg ;; 24045bc899bSmrg 24145bc899bSmrgicc) 24245bc899bSmrg # Intel's C compiler understands `-MD -MF file'. However on 24345bc899bSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24445bc899bSmrg # ICC 7.0 will fill foo.d with something like 24545bc899bSmrg # foo.o: sub/foo.c 24645bc899bSmrg # foo.o: sub/foo.h 24745bc899bSmrg # which is wrong. We want: 24845bc899bSmrg # sub/foo.o: sub/foo.c 24945bc899bSmrg # sub/foo.o: sub/foo.h 25045bc899bSmrg # sub/foo.c: 25145bc899bSmrg # sub/foo.h: 25245bc899bSmrg # ICC 7.1 will output 25345bc899bSmrg # foo.o: sub/foo.c sub/foo.h 25445bc899bSmrg # and will wrap long lines using \ : 25545bc899bSmrg # foo.o: sub/foo.c ... \ 25645bc899bSmrg # sub/foo.h ... \ 25745bc899bSmrg # ... 25845bc899bSmrg 25945bc899bSmrg "$@" -MD -MF "$tmpdepfile" 26045bc899bSmrg stat=$? 26145bc899bSmrg if test $stat -eq 0; then : 26245bc899bSmrg else 26345bc899bSmrg rm -f "$tmpdepfile" 26445bc899bSmrg exit $stat 26545bc899bSmrg fi 26645bc899bSmrg rm -f "$depfile" 26745bc899bSmrg # Each line is of the form `foo.o: dependent.h', 26845bc899bSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26945bc899bSmrg # Do two passes, one to just change these to 27045bc899bSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 27145bc899bSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27245bc899bSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 27345bc899bSmrg # correctly. Breaking it into two sed invocations is a workaround. 27445bc899bSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27545bc899bSmrg sed -e 's/$/ :/' >> "$depfile" 27645bc899bSmrg rm -f "$tmpdepfile" 27745bc899bSmrg ;; 27845bc899bSmrg 27945bc899bSmrgtru64) 28045bc899bSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 28145bc899bSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28245bc899bSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28345bc899bSmrg # dependencies in `foo.d' instead, so we check for that too. 28445bc899bSmrg # Subdirectories are respected. 28545bc899bSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28645bc899bSmrg test "x$dir" = "x$object" && dir= 28745bc899bSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28845bc899bSmrg 28945bc899bSmrg if test "$libtool" = yes; then 29045bc899bSmrg # With Tru64 cc, shared objects can also be used to make a 29145bc899bSmrg # static library. This mecanism is used in libtool 1.4 series to 29245bc899bSmrg # handle both shared and static libraries in a single compilation. 29345bc899bSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29445bc899bSmrg # 29545bc899bSmrg # With libtool 1.5 this exception was removed, and libtool now 29645bc899bSmrg # generates 2 separate objects for the 2 libraries. These two 29745bc899bSmrg # compilations output dependencies in in $dir.libs/$base.o.d and 29845bc899bSmrg # in $dir$base.o.d. We have to check for both files, because 29945bc899bSmrg # one of the two compilations can be disabled. We should prefer 30045bc899bSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30145bc899bSmrg # automatically cleaned when .libs/ is deleted, while ignoring 30245bc899bSmrg # the former would cause a distcleancheck panic. 30345bc899bSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30445bc899bSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30545bc899bSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30645bc899bSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30745bc899bSmrg "$@" -Wc,-MD 30845bc899bSmrg else 30945bc899bSmrg tmpdepfile1=$dir$base.o.d 31045bc899bSmrg tmpdepfile2=$dir$base.d 31145bc899bSmrg tmpdepfile3=$dir$base.d 31245bc899bSmrg tmpdepfile4=$dir$base.d 31345bc899bSmrg "$@" -MD 31445bc899bSmrg fi 31545bc899bSmrg 31645bc899bSmrg stat=$? 31745bc899bSmrg if test $stat -eq 0; then : 31845bc899bSmrg else 31945bc899bSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32045bc899bSmrg exit $stat 32145bc899bSmrg fi 32245bc899bSmrg 32345bc899bSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32445bc899bSmrg do 32545bc899bSmrg test -f "$tmpdepfile" && break 32645bc899bSmrg done 32745bc899bSmrg if test -f "$tmpdepfile"; then 32845bc899bSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32945bc899bSmrg # That's a tab and a space in the []. 33045bc899bSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33145bc899bSmrg else 33245bc899bSmrg echo "#dummy" > "$depfile" 33345bc899bSmrg fi 33445bc899bSmrg rm -f "$tmpdepfile" 33545bc899bSmrg ;; 33645bc899bSmrg 33745bc899bSmrg#nosideeffect) 33845bc899bSmrg # This comment above is used by automake to tell side-effect 33945bc899bSmrg # dependency tracking mechanisms from slower ones. 34045bc899bSmrg 34145bc899bSmrgdashmstdout) 34245bc899bSmrg # Important note: in order to support this mode, a compiler *must* 34345bc899bSmrg # always write the preprocessed file to stdout, regardless of -o. 34445bc899bSmrg "$@" || exit $? 34545bc899bSmrg 34645bc899bSmrg # Remove the call to Libtool. 34745bc899bSmrg if test "$libtool" = yes; then 34845bc899bSmrg while test $1 != '--mode=compile'; do 34945bc899bSmrg shift 35045bc899bSmrg done 35145bc899bSmrg shift 35245bc899bSmrg fi 35345bc899bSmrg 35445bc899bSmrg # Remove `-o $object'. 35545bc899bSmrg IFS=" " 35645bc899bSmrg for arg 35745bc899bSmrg do 35845bc899bSmrg case $arg in 35945bc899bSmrg -o) 36045bc899bSmrg shift 36145bc899bSmrg ;; 36245bc899bSmrg $object) 36345bc899bSmrg shift 36445bc899bSmrg ;; 36545bc899bSmrg *) 36645bc899bSmrg set fnord "$@" "$arg" 36745bc899bSmrg shift # fnord 36845bc899bSmrg shift # $arg 36945bc899bSmrg ;; 37045bc899bSmrg esac 37145bc899bSmrg done 37245bc899bSmrg 37345bc899bSmrg test -z "$dashmflag" && dashmflag=-M 37445bc899bSmrg # Require at least two characters before searching for `:' 37545bc899bSmrg # in the target name. This is to cope with DOS-style filenames: 37645bc899bSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37745bc899bSmrg "$@" $dashmflag | 37845bc899bSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37945bc899bSmrg rm -f "$depfile" 38045bc899bSmrg cat < "$tmpdepfile" > "$depfile" 38145bc899bSmrg tr ' ' ' 38245bc899bSmrg' < "$tmpdepfile" | \ 38345bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 38445bc899bSmrg## correctly. Breaking it into two sed invocations is a workaround. 38545bc899bSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38645bc899bSmrg rm -f "$tmpdepfile" 38745bc899bSmrg ;; 38845bc899bSmrg 38945bc899bSmrgdashXmstdout) 39045bc899bSmrg # This case only exists to satisfy depend.m4. It is never actually 39145bc899bSmrg # run, as this mode is specially recognized in the preamble. 39245bc899bSmrg exit 1 39345bc899bSmrg ;; 39445bc899bSmrg 39545bc899bSmrgmakedepend) 39645bc899bSmrg "$@" || exit $? 39745bc899bSmrg # Remove any Libtool call 39845bc899bSmrg if test "$libtool" = yes; then 39945bc899bSmrg while test $1 != '--mode=compile'; do 40045bc899bSmrg shift 40145bc899bSmrg done 40245bc899bSmrg shift 40345bc899bSmrg fi 40445bc899bSmrg # X makedepend 40545bc899bSmrg shift 40645bc899bSmrg cleared=no 40745bc899bSmrg for arg in "$@"; do 40845bc899bSmrg case $cleared in 40945bc899bSmrg no) 41045bc899bSmrg set ""; shift 41145bc899bSmrg cleared=yes ;; 41245bc899bSmrg esac 41345bc899bSmrg case "$arg" in 41445bc899bSmrg -D*|-I*) 41545bc899bSmrg set fnord "$@" "$arg"; shift ;; 41645bc899bSmrg # Strip any option that makedepend may not understand. Remove 41745bc899bSmrg # the object too, otherwise makedepend will parse it as a source file. 41845bc899bSmrg -*|$object) 41945bc899bSmrg ;; 42045bc899bSmrg *) 42145bc899bSmrg set fnord "$@" "$arg"; shift ;; 42245bc899bSmrg esac 42345bc899bSmrg done 42445bc899bSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42545bc899bSmrg touch "$tmpdepfile" 42645bc899bSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42745bc899bSmrg rm -f "$depfile" 42845bc899bSmrg cat < "$tmpdepfile" > "$depfile" 42945bc899bSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43045bc899bSmrg' | \ 43145bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 43245bc899bSmrg## correctly. Breaking it into two sed invocations is a workaround. 43345bc899bSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43445bc899bSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43545bc899bSmrg ;; 43645bc899bSmrg 43745bc899bSmrgcpp) 43845bc899bSmrg # Important note: in order to support this mode, a compiler *must* 43945bc899bSmrg # always write the preprocessed file to stdout. 44045bc899bSmrg "$@" || exit $? 44145bc899bSmrg 44245bc899bSmrg # Remove the call to Libtool. 44345bc899bSmrg if test "$libtool" = yes; then 44445bc899bSmrg while test $1 != '--mode=compile'; do 44545bc899bSmrg shift 44645bc899bSmrg done 44745bc899bSmrg shift 44845bc899bSmrg fi 44945bc899bSmrg 45045bc899bSmrg # Remove `-o $object'. 45145bc899bSmrg IFS=" " 45245bc899bSmrg for arg 45345bc899bSmrg do 45445bc899bSmrg case $arg in 45545bc899bSmrg -o) 45645bc899bSmrg shift 45745bc899bSmrg ;; 45845bc899bSmrg $object) 45945bc899bSmrg shift 46045bc899bSmrg ;; 46145bc899bSmrg *) 46245bc899bSmrg set fnord "$@" "$arg" 46345bc899bSmrg shift # fnord 46445bc899bSmrg shift # $arg 46545bc899bSmrg ;; 46645bc899bSmrg esac 46745bc899bSmrg done 46845bc899bSmrg 46945bc899bSmrg "$@" -E | 47045bc899bSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47145bc899bSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47245bc899bSmrg sed '$ s: \\$::' > "$tmpdepfile" 47345bc899bSmrg rm -f "$depfile" 47445bc899bSmrg echo "$object : \\" > "$depfile" 47545bc899bSmrg cat < "$tmpdepfile" >> "$depfile" 47645bc899bSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47745bc899bSmrg rm -f "$tmpdepfile" 47845bc899bSmrg ;; 47945bc899bSmrg 48045bc899bSmrgmsvisualcpp) 48145bc899bSmrg # Important note: in order to support this mode, a compiler *must* 48245bc899bSmrg # always write the preprocessed file to stdout, regardless of -o, 48345bc899bSmrg # because we must use -o when running libtool. 48445bc899bSmrg "$@" || exit $? 48545bc899bSmrg IFS=" " 48645bc899bSmrg for arg 48745bc899bSmrg do 48845bc899bSmrg case "$arg" in 48945bc899bSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49045bc899bSmrg set fnord "$@" 49145bc899bSmrg shift 49245bc899bSmrg shift 49345bc899bSmrg ;; 49445bc899bSmrg *) 49545bc899bSmrg set fnord "$@" "$arg" 49645bc899bSmrg shift 49745bc899bSmrg shift 49845bc899bSmrg ;; 49945bc899bSmrg esac 50045bc899bSmrg done 50145bc899bSmrg "$@" -E | 50245bc899bSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50345bc899bSmrg rm -f "$depfile" 50445bc899bSmrg echo "$object : \\" > "$depfile" 50545bc899bSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50645bc899bSmrg echo " " >> "$depfile" 50745bc899bSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50845bc899bSmrg rm -f "$tmpdepfile" 50945bc899bSmrg ;; 51045bc899bSmrg 51145bc899bSmrgnone) 51245bc899bSmrg exec "$@" 51345bc899bSmrg ;; 51445bc899bSmrg 51545bc899bSmrg*) 51645bc899bSmrg echo "Unknown depmode $depmode" 1>&2 51745bc899bSmrg exit 1 51845bc899bSmrg ;; 51945bc899bSmrgesac 52045bc899bSmrg 52145bc899bSmrgexit 0 52245bc899bSmrg 52345bc899bSmrg# Local Variables: 52445bc899bSmrg# mode: shell-script 52545bc899bSmrg# sh-indentation: 2 52645bc899bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52745bc899bSmrg# time-stamp-start: "scriptversion=" 52845bc899bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52945bc899bSmrg# time-stamp-end: "$" 53045bc899bSmrg# End: 531