depcomp revision 33c89af1
133c89af1Smrg#! /bin/sh 233c89af1Smrg# depcomp - compile a program generating dependencies as side-effects 333c89af1Smrg 433c89af1Smrgscriptversion=2005-07-09.11 533c89af1Smrg 633c89af1Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 733c89af1Smrg 833c89af1Smrg# This program is free software; you can redistribute it and/or modify 933c89af1Smrg# it under the terms of the GNU General Public License as published by 1033c89af1Smrg# the Free Software Foundation; either version 2, or (at your option) 1133c89af1Smrg# any later version. 1233c89af1Smrg 1333c89af1Smrg# This program is distributed in the hope that it will be useful, 1433c89af1Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1533c89af1Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1633c89af1Smrg# GNU General Public License for more details. 1733c89af1Smrg 1833c89af1Smrg# You should have received a copy of the GNU General Public License 1933c89af1Smrg# along with this program; if not, write to the Free Software 2033c89af1Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2133c89af1Smrg# 02110-1301, USA. 2233c89af1Smrg 2333c89af1Smrg# As a special exception to the GNU General Public License, if you 2433c89af1Smrg# distribute this file as part of a program that contains a 2533c89af1Smrg# configuration script generated by Autoconf, you may include it under 2633c89af1Smrg# the same distribution terms that you use for the rest of that program. 2733c89af1Smrg 2833c89af1Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2933c89af1Smrg 3033c89af1Smrgcase $1 in 3133c89af1Smrg '') 3233c89af1Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3333c89af1Smrg exit 1; 3433c89af1Smrg ;; 3533c89af1Smrg -h | --h*) 3633c89af1Smrg cat <<\EOF 3733c89af1SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3833c89af1Smrg 3933c89af1SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4033c89af1Smrgas side-effects. 4133c89af1Smrg 4233c89af1SmrgEnvironment variables: 4333c89af1Smrg depmode Dependency tracking mode. 4433c89af1Smrg source Source file read by `PROGRAMS ARGS'. 4533c89af1Smrg object Object file output by `PROGRAMS ARGS'. 4633c89af1Smrg DEPDIR directory where to store dependencies. 4733c89af1Smrg depfile Dependency file to output. 4833c89af1Smrg tmpdepfile Temporary file to use when outputing dependencies. 4933c89af1Smrg libtool Whether libtool is used (yes/no). 5033c89af1Smrg 5133c89af1SmrgReport bugs to <bug-automake@gnu.org>. 5233c89af1SmrgEOF 5333c89af1Smrg exit $? 5433c89af1Smrg ;; 5533c89af1Smrg -v | --v*) 5633c89af1Smrg echo "depcomp $scriptversion" 5733c89af1Smrg exit $? 5833c89af1Smrg ;; 5933c89af1Smrgesac 6033c89af1Smrg 6133c89af1Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6233c89af1Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6333c89af1Smrg exit 1 6433c89af1Smrgfi 6533c89af1Smrg 6633c89af1Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6733c89af1Smrgdepfile=${depfile-`echo "$object" | 6833c89af1Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6933c89af1Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7033c89af1Smrg 7133c89af1Smrgrm -f "$tmpdepfile" 7233c89af1Smrg 7333c89af1Smrg# Some modes work just like other modes, but use different flags. We 7433c89af1Smrg# parameterize here, but still list the modes in the big case below, 7533c89af1Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7633c89af1Smrg# here, because this file can only contain one case statement. 7733c89af1Smrgif test "$depmode" = hp; then 7833c89af1Smrg # HP compiler uses -M and no extra arg. 7933c89af1Smrg gccflag=-M 8033c89af1Smrg depmode=gcc 8133c89af1Smrgfi 8233c89af1Smrg 8333c89af1Smrgif test "$depmode" = dashXmstdout; then 8433c89af1Smrg # This is just like dashmstdout with a different argument. 8533c89af1Smrg dashmflag=-xM 8633c89af1Smrg depmode=dashmstdout 8733c89af1Smrgfi 8833c89af1Smrg 8933c89af1Smrgcase "$depmode" in 9033c89af1Smrggcc3) 9133c89af1Smrg## gcc 3 implements dependency tracking that does exactly what 9233c89af1Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9333c89af1Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 9433c89af1Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9533c89af1Smrg stat=$? 9633c89af1Smrg if test $stat -eq 0; then : 9733c89af1Smrg else 9833c89af1Smrg rm -f "$tmpdepfile" 9933c89af1Smrg exit $stat 10033c89af1Smrg fi 10133c89af1Smrg mv "$tmpdepfile" "$depfile" 10233c89af1Smrg ;; 10333c89af1Smrg 10433c89af1Smrggcc) 10533c89af1Smrg## There are various ways to get dependency output from gcc. Here's 10633c89af1Smrg## why we pick this rather obscure method: 10733c89af1Smrg## - Don't want to use -MD because we'd like the dependencies to end 10833c89af1Smrg## up in a subdir. Having to rename by hand is ugly. 10933c89af1Smrg## (We might end up doing this anyway to support other compilers.) 11033c89af1Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11133c89af1Smrg## -MM, not -M (despite what the docs say). 11233c89af1Smrg## - Using -M directly means running the compiler twice (even worse 11333c89af1Smrg## than renaming). 11433c89af1Smrg if test -z "$gccflag"; then 11533c89af1Smrg gccflag=-MD, 11633c89af1Smrg fi 11733c89af1Smrg "$@" -Wp,"$gccflag$tmpdepfile" 11833c89af1Smrg stat=$? 11933c89af1Smrg if test $stat -eq 0; then : 12033c89af1Smrg else 12133c89af1Smrg rm -f "$tmpdepfile" 12233c89af1Smrg exit $stat 12333c89af1Smrg fi 12433c89af1Smrg rm -f "$depfile" 12533c89af1Smrg echo "$object : \\" > "$depfile" 12633c89af1Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12733c89af1Smrg## The second -e expression handles DOS-style file names with drive letters. 12833c89af1Smrg sed -e 's/^[^:]*: / /' \ 12933c89af1Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13033c89af1Smrg## This next piece of magic avoids the `deleted header file' problem. 13133c89af1Smrg## The problem is that when a header file which appears in a .P file 13233c89af1Smrg## is deleted, the dependency causes make to die (because there is 13333c89af1Smrg## typically no way to rebuild the header). We avoid this by adding 13433c89af1Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 13533c89af1Smrg## this for us directly. 13633c89af1Smrg tr ' ' ' 13733c89af1Smrg' < "$tmpdepfile" | 13833c89af1Smrg## Some versions of gcc put a space before the `:'. On the theory 13933c89af1Smrg## that the space means something, we add a space to the output as 14033c89af1Smrg## well. 14133c89af1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 14233c89af1Smrg## correctly. Breaking it into two sed invocations is a workaround. 14333c89af1Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14433c89af1Smrg rm -f "$tmpdepfile" 14533c89af1Smrg ;; 14633c89af1Smrg 14733c89af1Smrghp) 14833c89af1Smrg # This case exists only to let depend.m4 do its work. It works by 14933c89af1Smrg # looking at the text of this script. This case will never be run, 15033c89af1Smrg # since it is checked for above. 15133c89af1Smrg exit 1 15233c89af1Smrg ;; 15333c89af1Smrg 15433c89af1Smrgsgi) 15533c89af1Smrg if test "$libtool" = yes; then 15633c89af1Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15733c89af1Smrg else 15833c89af1Smrg "$@" -MDupdate "$tmpdepfile" 15933c89af1Smrg fi 16033c89af1Smrg stat=$? 16133c89af1Smrg if test $stat -eq 0; then : 16233c89af1Smrg else 16333c89af1Smrg rm -f "$tmpdepfile" 16433c89af1Smrg exit $stat 16533c89af1Smrg fi 16633c89af1Smrg rm -f "$depfile" 16733c89af1Smrg 16833c89af1Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16933c89af1Smrg echo "$object : \\" > "$depfile" 17033c89af1Smrg 17133c89af1Smrg # Clip off the initial element (the dependent). Don't try to be 17233c89af1Smrg # clever and replace this with sed code, as IRIX sed won't handle 17333c89af1Smrg # lines with more than a fixed number of characters (4096 in 17433c89af1Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17533c89af1Smrg # the IRIX cc adds comments like `#:fec' to the end of the 17633c89af1Smrg # dependency line. 17733c89af1Smrg tr ' ' ' 17833c89af1Smrg' < "$tmpdepfile" \ 17933c89af1Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18033c89af1Smrg tr ' 18133c89af1Smrg' ' ' >> $depfile 18233c89af1Smrg echo >> $depfile 18333c89af1Smrg 18433c89af1Smrg # The second pass generates a dummy entry for each header file. 18533c89af1Smrg tr ' ' ' 18633c89af1Smrg' < "$tmpdepfile" \ 18733c89af1Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18833c89af1Smrg >> $depfile 18933c89af1Smrg else 19033c89af1Smrg # The sourcefile does not contain any dependencies, so just 19133c89af1Smrg # store a dummy comment line, to avoid errors with the Makefile 19233c89af1Smrg # "include basename.Plo" scheme. 19333c89af1Smrg echo "#dummy" > "$depfile" 19433c89af1Smrg fi 19533c89af1Smrg rm -f "$tmpdepfile" 19633c89af1Smrg ;; 19733c89af1Smrg 19833c89af1Smrgaix) 19933c89af1Smrg # The C for AIX Compiler uses -M and outputs the dependencies 20033c89af1Smrg # in a .u file. In older versions, this file always lives in the 20133c89af1Smrg # current directory. Also, the AIX compiler puts `$object:' at the 20233c89af1Smrg # start of each line; $object doesn't have directory information. 20333c89af1Smrg # Version 6 uses the directory in both cases. 20433c89af1Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20533c89af1Smrg tmpdepfile="$stripped.u" 20633c89af1Smrg if test "$libtool" = yes; then 20733c89af1Smrg "$@" -Wc,-M 20833c89af1Smrg else 20933c89af1Smrg "$@" -M 21033c89af1Smrg fi 21133c89af1Smrg stat=$? 21233c89af1Smrg 21333c89af1Smrg if test -f "$tmpdepfile"; then : 21433c89af1Smrg else 21533c89af1Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21633c89af1Smrg tmpdepfile="$stripped.u" 21733c89af1Smrg fi 21833c89af1Smrg 21933c89af1Smrg if test $stat -eq 0; then : 22033c89af1Smrg else 22133c89af1Smrg rm -f "$tmpdepfile" 22233c89af1Smrg exit $stat 22333c89af1Smrg fi 22433c89af1Smrg 22533c89af1Smrg if test -f "$tmpdepfile"; then 22633c89af1Smrg outname="$stripped.o" 22733c89af1Smrg # Each line is of the form `foo.o: dependent.h'. 22833c89af1Smrg # Do two passes, one to just change these to 22933c89af1Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 23033c89af1Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23133c89af1Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23233c89af1Smrg else 23333c89af1Smrg # The sourcefile does not contain any dependencies, so just 23433c89af1Smrg # store a dummy comment line, to avoid errors with the Makefile 23533c89af1Smrg # "include basename.Plo" scheme. 23633c89af1Smrg echo "#dummy" > "$depfile" 23733c89af1Smrg fi 23833c89af1Smrg rm -f "$tmpdepfile" 23933c89af1Smrg ;; 24033c89af1Smrg 24133c89af1Smrgicc) 24233c89af1Smrg # Intel's C compiler understands `-MD -MF file'. However on 24333c89af1Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24433c89af1Smrg # ICC 7.0 will fill foo.d with something like 24533c89af1Smrg # foo.o: sub/foo.c 24633c89af1Smrg # foo.o: sub/foo.h 24733c89af1Smrg # which is wrong. We want: 24833c89af1Smrg # sub/foo.o: sub/foo.c 24933c89af1Smrg # sub/foo.o: sub/foo.h 25033c89af1Smrg # sub/foo.c: 25133c89af1Smrg # sub/foo.h: 25233c89af1Smrg # ICC 7.1 will output 25333c89af1Smrg # foo.o: sub/foo.c sub/foo.h 25433c89af1Smrg # and will wrap long lines using \ : 25533c89af1Smrg # foo.o: sub/foo.c ... \ 25633c89af1Smrg # sub/foo.h ... \ 25733c89af1Smrg # ... 25833c89af1Smrg 25933c89af1Smrg "$@" -MD -MF "$tmpdepfile" 26033c89af1Smrg stat=$? 26133c89af1Smrg if test $stat -eq 0; then : 26233c89af1Smrg else 26333c89af1Smrg rm -f "$tmpdepfile" 26433c89af1Smrg exit $stat 26533c89af1Smrg fi 26633c89af1Smrg rm -f "$depfile" 26733c89af1Smrg # Each line is of the form `foo.o: dependent.h', 26833c89af1Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26933c89af1Smrg # Do two passes, one to just change these to 27033c89af1Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 27133c89af1Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27233c89af1Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 27333c89af1Smrg # correctly. Breaking it into two sed invocations is a workaround. 27433c89af1Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27533c89af1Smrg sed -e 's/$/ :/' >> "$depfile" 27633c89af1Smrg rm -f "$tmpdepfile" 27733c89af1Smrg ;; 27833c89af1Smrg 27933c89af1Smrgtru64) 28033c89af1Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 28133c89af1Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28233c89af1Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28333c89af1Smrg # dependencies in `foo.d' instead, so we check for that too. 28433c89af1Smrg # Subdirectories are respected. 28533c89af1Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28633c89af1Smrg test "x$dir" = "x$object" && dir= 28733c89af1Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28833c89af1Smrg 28933c89af1Smrg if test "$libtool" = yes; then 29033c89af1Smrg # With Tru64 cc, shared objects can also be used to make a 29133c89af1Smrg # static library. This mecanism is used in libtool 1.4 series to 29233c89af1Smrg # handle both shared and static libraries in a single compilation. 29333c89af1Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29433c89af1Smrg # 29533c89af1Smrg # With libtool 1.5 this exception was removed, and libtool now 29633c89af1Smrg # generates 2 separate objects for the 2 libraries. These two 29733c89af1Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 29833c89af1Smrg # in $dir$base.o.d. We have to check for both files, because 29933c89af1Smrg # one of the two compilations can be disabled. We should prefer 30033c89af1Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30133c89af1Smrg # automatically cleaned when .libs/ is deleted, while ignoring 30233c89af1Smrg # the former would cause a distcleancheck panic. 30333c89af1Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30433c89af1Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30533c89af1Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30633c89af1Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30733c89af1Smrg "$@" -Wc,-MD 30833c89af1Smrg else 30933c89af1Smrg tmpdepfile1=$dir$base.o.d 31033c89af1Smrg tmpdepfile2=$dir$base.d 31133c89af1Smrg tmpdepfile3=$dir$base.d 31233c89af1Smrg tmpdepfile4=$dir$base.d 31333c89af1Smrg "$@" -MD 31433c89af1Smrg fi 31533c89af1Smrg 31633c89af1Smrg stat=$? 31733c89af1Smrg if test $stat -eq 0; then : 31833c89af1Smrg else 31933c89af1Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32033c89af1Smrg exit $stat 32133c89af1Smrg fi 32233c89af1Smrg 32333c89af1Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32433c89af1Smrg do 32533c89af1Smrg test -f "$tmpdepfile" && break 32633c89af1Smrg done 32733c89af1Smrg if test -f "$tmpdepfile"; then 32833c89af1Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32933c89af1Smrg # That's a tab and a space in the []. 33033c89af1Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33133c89af1Smrg else 33233c89af1Smrg echo "#dummy" > "$depfile" 33333c89af1Smrg fi 33433c89af1Smrg rm -f "$tmpdepfile" 33533c89af1Smrg ;; 33633c89af1Smrg 33733c89af1Smrg#nosideeffect) 33833c89af1Smrg # This comment above is used by automake to tell side-effect 33933c89af1Smrg # dependency tracking mechanisms from slower ones. 34033c89af1Smrg 34133c89af1Smrgdashmstdout) 34233c89af1Smrg # Important note: in order to support this mode, a compiler *must* 34333c89af1Smrg # always write the preprocessed file to stdout, regardless of -o. 34433c89af1Smrg "$@" || exit $? 34533c89af1Smrg 34633c89af1Smrg # Remove the call to Libtool. 34733c89af1Smrg if test "$libtool" = yes; then 34833c89af1Smrg while test $1 != '--mode=compile'; do 34933c89af1Smrg shift 35033c89af1Smrg done 35133c89af1Smrg shift 35233c89af1Smrg fi 35333c89af1Smrg 35433c89af1Smrg # Remove `-o $object'. 35533c89af1Smrg IFS=" " 35633c89af1Smrg for arg 35733c89af1Smrg do 35833c89af1Smrg case $arg in 35933c89af1Smrg -o) 36033c89af1Smrg shift 36133c89af1Smrg ;; 36233c89af1Smrg $object) 36333c89af1Smrg shift 36433c89af1Smrg ;; 36533c89af1Smrg *) 36633c89af1Smrg set fnord "$@" "$arg" 36733c89af1Smrg shift # fnord 36833c89af1Smrg shift # $arg 36933c89af1Smrg ;; 37033c89af1Smrg esac 37133c89af1Smrg done 37233c89af1Smrg 37333c89af1Smrg test -z "$dashmflag" && dashmflag=-M 37433c89af1Smrg # Require at least two characters before searching for `:' 37533c89af1Smrg # in the target name. This is to cope with DOS-style filenames: 37633c89af1Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37733c89af1Smrg "$@" $dashmflag | 37833c89af1Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37933c89af1Smrg rm -f "$depfile" 38033c89af1Smrg cat < "$tmpdepfile" > "$depfile" 38133c89af1Smrg tr ' ' ' 38233c89af1Smrg' < "$tmpdepfile" | \ 38333c89af1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 38433c89af1Smrg## correctly. Breaking it into two sed invocations is a workaround. 38533c89af1Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38633c89af1Smrg rm -f "$tmpdepfile" 38733c89af1Smrg ;; 38833c89af1Smrg 38933c89af1SmrgdashXmstdout) 39033c89af1Smrg # This case only exists to satisfy depend.m4. It is never actually 39133c89af1Smrg # run, as this mode is specially recognized in the preamble. 39233c89af1Smrg exit 1 39333c89af1Smrg ;; 39433c89af1Smrg 39533c89af1Smrgmakedepend) 39633c89af1Smrg "$@" || exit $? 39733c89af1Smrg # Remove any Libtool call 39833c89af1Smrg if test "$libtool" = yes; then 39933c89af1Smrg while test $1 != '--mode=compile'; do 40033c89af1Smrg shift 40133c89af1Smrg done 40233c89af1Smrg shift 40333c89af1Smrg fi 40433c89af1Smrg # X makedepend 40533c89af1Smrg shift 40633c89af1Smrg cleared=no 40733c89af1Smrg for arg in "$@"; do 40833c89af1Smrg case $cleared in 40933c89af1Smrg no) 41033c89af1Smrg set ""; shift 41133c89af1Smrg cleared=yes ;; 41233c89af1Smrg esac 41333c89af1Smrg case "$arg" in 41433c89af1Smrg -D*|-I*) 41533c89af1Smrg set fnord "$@" "$arg"; shift ;; 41633c89af1Smrg # Strip any option that makedepend may not understand. Remove 41733c89af1Smrg # the object too, otherwise makedepend will parse it as a source file. 41833c89af1Smrg -*|$object) 41933c89af1Smrg ;; 42033c89af1Smrg *) 42133c89af1Smrg set fnord "$@" "$arg"; shift ;; 42233c89af1Smrg esac 42333c89af1Smrg done 42433c89af1Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42533c89af1Smrg touch "$tmpdepfile" 42633c89af1Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42733c89af1Smrg rm -f "$depfile" 42833c89af1Smrg cat < "$tmpdepfile" > "$depfile" 42933c89af1Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43033c89af1Smrg' | \ 43133c89af1Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 43233c89af1Smrg## correctly. Breaking it into two sed invocations is a workaround. 43333c89af1Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43433c89af1Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43533c89af1Smrg ;; 43633c89af1Smrg 43733c89af1Smrgcpp) 43833c89af1Smrg # Important note: in order to support this mode, a compiler *must* 43933c89af1Smrg # always write the preprocessed file to stdout. 44033c89af1Smrg "$@" || exit $? 44133c89af1Smrg 44233c89af1Smrg # Remove the call to Libtool. 44333c89af1Smrg if test "$libtool" = yes; then 44433c89af1Smrg while test $1 != '--mode=compile'; do 44533c89af1Smrg shift 44633c89af1Smrg done 44733c89af1Smrg shift 44833c89af1Smrg fi 44933c89af1Smrg 45033c89af1Smrg # Remove `-o $object'. 45133c89af1Smrg IFS=" " 45233c89af1Smrg for arg 45333c89af1Smrg do 45433c89af1Smrg case $arg in 45533c89af1Smrg -o) 45633c89af1Smrg shift 45733c89af1Smrg ;; 45833c89af1Smrg $object) 45933c89af1Smrg shift 46033c89af1Smrg ;; 46133c89af1Smrg *) 46233c89af1Smrg set fnord "$@" "$arg" 46333c89af1Smrg shift # fnord 46433c89af1Smrg shift # $arg 46533c89af1Smrg ;; 46633c89af1Smrg esac 46733c89af1Smrg done 46833c89af1Smrg 46933c89af1Smrg "$@" -E | 47033c89af1Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47133c89af1Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47233c89af1Smrg sed '$ s: \\$::' > "$tmpdepfile" 47333c89af1Smrg rm -f "$depfile" 47433c89af1Smrg echo "$object : \\" > "$depfile" 47533c89af1Smrg cat < "$tmpdepfile" >> "$depfile" 47633c89af1Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47733c89af1Smrg rm -f "$tmpdepfile" 47833c89af1Smrg ;; 47933c89af1Smrg 48033c89af1Smrgmsvisualcpp) 48133c89af1Smrg # Important note: in order to support this mode, a compiler *must* 48233c89af1Smrg # always write the preprocessed file to stdout, regardless of -o, 48333c89af1Smrg # because we must use -o when running libtool. 48433c89af1Smrg "$@" || exit $? 48533c89af1Smrg IFS=" " 48633c89af1Smrg for arg 48733c89af1Smrg do 48833c89af1Smrg case "$arg" in 48933c89af1Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49033c89af1Smrg set fnord "$@" 49133c89af1Smrg shift 49233c89af1Smrg shift 49333c89af1Smrg ;; 49433c89af1Smrg *) 49533c89af1Smrg set fnord "$@" "$arg" 49633c89af1Smrg shift 49733c89af1Smrg shift 49833c89af1Smrg ;; 49933c89af1Smrg esac 50033c89af1Smrg done 50133c89af1Smrg "$@" -E | 50233c89af1Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50333c89af1Smrg rm -f "$depfile" 50433c89af1Smrg echo "$object : \\" > "$depfile" 50533c89af1Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50633c89af1Smrg echo " " >> "$depfile" 50733c89af1Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50833c89af1Smrg rm -f "$tmpdepfile" 50933c89af1Smrg ;; 51033c89af1Smrg 51133c89af1Smrgnone) 51233c89af1Smrg exec "$@" 51333c89af1Smrg ;; 51433c89af1Smrg 51533c89af1Smrg*) 51633c89af1Smrg echo "Unknown depmode $depmode" 1>&2 51733c89af1Smrg exit 1 51833c89af1Smrg ;; 51933c89af1Smrgesac 52033c89af1Smrg 52133c89af1Smrgexit 0 52233c89af1Smrg 52333c89af1Smrg# Local Variables: 52433c89af1Smrg# mode: shell-script 52533c89af1Smrg# sh-indentation: 2 52633c89af1Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52733c89af1Smrg# time-stamp-start: "scriptversion=" 52833c89af1Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52933c89af1Smrg# time-stamp-end: "$" 53033c89af1Smrg# End: 531