depcomp revision 52f9793f
152f9793fSmrg#! /bin/sh 252f9793fSmrg# depcomp - compile a program generating dependencies as side-effects 352f9793fSmrg 452f9793fSmrgscriptversion=2005-07-09.11 552f9793fSmrg 652f9793fSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 752f9793fSmrg 852f9793fSmrg# This program is free software; you can redistribute it and/or modify 952f9793fSmrg# it under the terms of the GNU General Public License as published by 1052f9793fSmrg# the Free Software Foundation; either version 2, or (at your option) 1152f9793fSmrg# any later version. 1252f9793fSmrg 1352f9793fSmrg# This program is distributed in the hope that it will be useful, 1452f9793fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1552f9793fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1652f9793fSmrg# GNU General Public License for more details. 1752f9793fSmrg 1852f9793fSmrg# You should have received a copy of the GNU General Public License 1952f9793fSmrg# along with this program; if not, write to the Free Software 2052f9793fSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2152f9793fSmrg# 02110-1301, USA. 2252f9793fSmrg 2352f9793fSmrg# As a special exception to the GNU General Public License, if you 2452f9793fSmrg# distribute this file as part of a program that contains a 2552f9793fSmrg# configuration script generated by Autoconf, you may include it under 2652f9793fSmrg# the same distribution terms that you use for the rest of that program. 2752f9793fSmrg 2852f9793fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2952f9793fSmrg 3052f9793fSmrgcase $1 in 3152f9793fSmrg '') 3252f9793fSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3352f9793fSmrg exit 1; 3452f9793fSmrg ;; 3552f9793fSmrg -h | --h*) 3652f9793fSmrg cat <<\EOF 3752f9793fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3852f9793fSmrg 3952f9793fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4052f9793fSmrgas side-effects. 4152f9793fSmrg 4252f9793fSmrgEnvironment variables: 4352f9793fSmrg depmode Dependency tracking mode. 4452f9793fSmrg source Source file read by `PROGRAMS ARGS'. 4552f9793fSmrg object Object file output by `PROGRAMS ARGS'. 4652f9793fSmrg DEPDIR directory where to store dependencies. 4752f9793fSmrg depfile Dependency file to output. 4852f9793fSmrg tmpdepfile Temporary file to use when outputing dependencies. 4952f9793fSmrg libtool Whether libtool is used (yes/no). 5052f9793fSmrg 5152f9793fSmrgReport bugs to <bug-automake@gnu.org>. 5252f9793fSmrgEOF 5352f9793fSmrg exit $? 5452f9793fSmrg ;; 5552f9793fSmrg -v | --v*) 5652f9793fSmrg echo "depcomp $scriptversion" 5752f9793fSmrg exit $? 5852f9793fSmrg ;; 5952f9793fSmrgesac 6052f9793fSmrg 6152f9793fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6252f9793fSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6352f9793fSmrg exit 1 6452f9793fSmrgfi 6552f9793fSmrg 6652f9793fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6752f9793fSmrgdepfile=${depfile-`echo "$object" | 6852f9793fSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6952f9793fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7052f9793fSmrg 7152f9793fSmrgrm -f "$tmpdepfile" 7252f9793fSmrg 7352f9793fSmrg# Some modes work just like other modes, but use different flags. We 7452f9793fSmrg# parameterize here, but still list the modes in the big case below, 7552f9793fSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7652f9793fSmrg# here, because this file can only contain one case statement. 7752f9793fSmrgif test "$depmode" = hp; then 7852f9793fSmrg # HP compiler uses -M and no extra arg. 7952f9793fSmrg gccflag=-M 8052f9793fSmrg depmode=gcc 8152f9793fSmrgfi 8252f9793fSmrg 8352f9793fSmrgif test "$depmode" = dashXmstdout; then 8452f9793fSmrg # This is just like dashmstdout with a different argument. 8552f9793fSmrg dashmflag=-xM 8652f9793fSmrg depmode=dashmstdout 8752f9793fSmrgfi 8852f9793fSmrg 8952f9793fSmrgcase "$depmode" in 9052f9793fSmrggcc3) 9152f9793fSmrg## gcc 3 implements dependency tracking that does exactly what 9252f9793fSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9352f9793fSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 9452f9793fSmrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9552f9793fSmrg stat=$? 9652f9793fSmrg if test $stat -eq 0; then : 9752f9793fSmrg else 9852f9793fSmrg rm -f "$tmpdepfile" 9952f9793fSmrg exit $stat 10052f9793fSmrg fi 10152f9793fSmrg mv "$tmpdepfile" "$depfile" 10252f9793fSmrg ;; 10352f9793fSmrg 10452f9793fSmrggcc) 10552f9793fSmrg## There are various ways to get dependency output from gcc. Here's 10652f9793fSmrg## why we pick this rather obscure method: 10752f9793fSmrg## - Don't want to use -MD because we'd like the dependencies to end 10852f9793fSmrg## up in a subdir. Having to rename by hand is ugly. 10952f9793fSmrg## (We might end up doing this anyway to support other compilers.) 11052f9793fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11152f9793fSmrg## -MM, not -M (despite what the docs say). 11252f9793fSmrg## - Using -M directly means running the compiler twice (even worse 11352f9793fSmrg## than renaming). 11452f9793fSmrg if test -z "$gccflag"; then 11552f9793fSmrg gccflag=-MD, 11652f9793fSmrg fi 11752f9793fSmrg "$@" -Wp,"$gccflag$tmpdepfile" 11852f9793fSmrg stat=$? 11952f9793fSmrg if test $stat -eq 0; then : 12052f9793fSmrg else 12152f9793fSmrg rm -f "$tmpdepfile" 12252f9793fSmrg exit $stat 12352f9793fSmrg fi 12452f9793fSmrg rm -f "$depfile" 12552f9793fSmrg echo "$object : \\" > "$depfile" 12652f9793fSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12752f9793fSmrg## The second -e expression handles DOS-style file names with drive letters. 12852f9793fSmrg sed -e 's/^[^:]*: / /' \ 12952f9793fSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13052f9793fSmrg## This next piece of magic avoids the `deleted header file' problem. 13152f9793fSmrg## The problem is that when a header file which appears in a .P file 13252f9793fSmrg## is deleted, the dependency causes make to die (because there is 13352f9793fSmrg## typically no way to rebuild the header). We avoid this by adding 13452f9793fSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 13552f9793fSmrg## this for us directly. 13652f9793fSmrg tr ' ' ' 13752f9793fSmrg' < "$tmpdepfile" | 13852f9793fSmrg## Some versions of gcc put a space before the `:'. On the theory 13952f9793fSmrg## that the space means something, we add a space to the output as 14052f9793fSmrg## well. 14152f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 14252f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 14352f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14452f9793fSmrg rm -f "$tmpdepfile" 14552f9793fSmrg ;; 14652f9793fSmrg 14752f9793fSmrghp) 14852f9793fSmrg # This case exists only to let depend.m4 do its work. It works by 14952f9793fSmrg # looking at the text of this script. This case will never be run, 15052f9793fSmrg # since it is checked for above. 15152f9793fSmrg exit 1 15252f9793fSmrg ;; 15352f9793fSmrg 15452f9793fSmrgsgi) 15552f9793fSmrg if test "$libtool" = yes; then 15652f9793fSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15752f9793fSmrg else 15852f9793fSmrg "$@" -MDupdate "$tmpdepfile" 15952f9793fSmrg fi 16052f9793fSmrg stat=$? 16152f9793fSmrg if test $stat -eq 0; then : 16252f9793fSmrg else 16352f9793fSmrg rm -f "$tmpdepfile" 16452f9793fSmrg exit $stat 16552f9793fSmrg fi 16652f9793fSmrg rm -f "$depfile" 16752f9793fSmrg 16852f9793fSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16952f9793fSmrg echo "$object : \\" > "$depfile" 17052f9793fSmrg 17152f9793fSmrg # Clip off the initial element (the dependent). Don't try to be 17252f9793fSmrg # clever and replace this with sed code, as IRIX sed won't handle 17352f9793fSmrg # lines with more than a fixed number of characters (4096 in 17452f9793fSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17552f9793fSmrg # the IRIX cc adds comments like `#:fec' to the end of the 17652f9793fSmrg # dependency line. 17752f9793fSmrg tr ' ' ' 17852f9793fSmrg' < "$tmpdepfile" \ 17952f9793fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18052f9793fSmrg tr ' 18152f9793fSmrg' ' ' >> $depfile 18252f9793fSmrg echo >> $depfile 18352f9793fSmrg 18452f9793fSmrg # The second pass generates a dummy entry for each header file. 18552f9793fSmrg tr ' ' ' 18652f9793fSmrg' < "$tmpdepfile" \ 18752f9793fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18852f9793fSmrg >> $depfile 18952f9793fSmrg else 19052f9793fSmrg # The sourcefile does not contain any dependencies, so just 19152f9793fSmrg # store a dummy comment line, to avoid errors with the Makefile 19252f9793fSmrg # "include basename.Plo" scheme. 19352f9793fSmrg echo "#dummy" > "$depfile" 19452f9793fSmrg fi 19552f9793fSmrg rm -f "$tmpdepfile" 19652f9793fSmrg ;; 19752f9793fSmrg 19852f9793fSmrgaix) 19952f9793fSmrg # The C for AIX Compiler uses -M and outputs the dependencies 20052f9793fSmrg # in a .u file. In older versions, this file always lives in the 20152f9793fSmrg # current directory. Also, the AIX compiler puts `$object:' at the 20252f9793fSmrg # start of each line; $object doesn't have directory information. 20352f9793fSmrg # Version 6 uses the directory in both cases. 20452f9793fSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20552f9793fSmrg tmpdepfile="$stripped.u" 20652f9793fSmrg if test "$libtool" = yes; then 20752f9793fSmrg "$@" -Wc,-M 20852f9793fSmrg else 20952f9793fSmrg "$@" -M 21052f9793fSmrg fi 21152f9793fSmrg stat=$? 21252f9793fSmrg 21352f9793fSmrg if test -f "$tmpdepfile"; then : 21452f9793fSmrg else 21552f9793fSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21652f9793fSmrg tmpdepfile="$stripped.u" 21752f9793fSmrg fi 21852f9793fSmrg 21952f9793fSmrg if test $stat -eq 0; then : 22052f9793fSmrg else 22152f9793fSmrg rm -f "$tmpdepfile" 22252f9793fSmrg exit $stat 22352f9793fSmrg fi 22452f9793fSmrg 22552f9793fSmrg if test -f "$tmpdepfile"; then 22652f9793fSmrg outname="$stripped.o" 22752f9793fSmrg # Each line is of the form `foo.o: dependent.h'. 22852f9793fSmrg # Do two passes, one to just change these to 22952f9793fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 23052f9793fSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23152f9793fSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23252f9793fSmrg else 23352f9793fSmrg # The sourcefile does not contain any dependencies, so just 23452f9793fSmrg # store a dummy comment line, to avoid errors with the Makefile 23552f9793fSmrg # "include basename.Plo" scheme. 23652f9793fSmrg echo "#dummy" > "$depfile" 23752f9793fSmrg fi 23852f9793fSmrg rm -f "$tmpdepfile" 23952f9793fSmrg ;; 24052f9793fSmrg 24152f9793fSmrgicc) 24252f9793fSmrg # Intel's C compiler understands `-MD -MF file'. However on 24352f9793fSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24452f9793fSmrg # ICC 7.0 will fill foo.d with something like 24552f9793fSmrg # foo.o: sub/foo.c 24652f9793fSmrg # foo.o: sub/foo.h 24752f9793fSmrg # which is wrong. We want: 24852f9793fSmrg # sub/foo.o: sub/foo.c 24952f9793fSmrg # sub/foo.o: sub/foo.h 25052f9793fSmrg # sub/foo.c: 25152f9793fSmrg # sub/foo.h: 25252f9793fSmrg # ICC 7.1 will output 25352f9793fSmrg # foo.o: sub/foo.c sub/foo.h 25452f9793fSmrg # and will wrap long lines using \ : 25552f9793fSmrg # foo.o: sub/foo.c ... \ 25652f9793fSmrg # sub/foo.h ... \ 25752f9793fSmrg # ... 25852f9793fSmrg 25952f9793fSmrg "$@" -MD -MF "$tmpdepfile" 26052f9793fSmrg stat=$? 26152f9793fSmrg if test $stat -eq 0; then : 26252f9793fSmrg else 26352f9793fSmrg rm -f "$tmpdepfile" 26452f9793fSmrg exit $stat 26552f9793fSmrg fi 26652f9793fSmrg rm -f "$depfile" 26752f9793fSmrg # Each line is of the form `foo.o: dependent.h', 26852f9793fSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26952f9793fSmrg # Do two passes, one to just change these to 27052f9793fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 27152f9793fSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27252f9793fSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 27352f9793fSmrg # correctly. Breaking it into two sed invocations is a workaround. 27452f9793fSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27552f9793fSmrg sed -e 's/$/ :/' >> "$depfile" 27652f9793fSmrg rm -f "$tmpdepfile" 27752f9793fSmrg ;; 27852f9793fSmrg 27952f9793fSmrgtru64) 28052f9793fSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 28152f9793fSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28252f9793fSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28352f9793fSmrg # dependencies in `foo.d' instead, so we check for that too. 28452f9793fSmrg # Subdirectories are respected. 28552f9793fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28652f9793fSmrg test "x$dir" = "x$object" && dir= 28752f9793fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28852f9793fSmrg 28952f9793fSmrg if test "$libtool" = yes; then 29052f9793fSmrg # With Tru64 cc, shared objects can also be used to make a 29152f9793fSmrg # static library. This mecanism is used in libtool 1.4 series to 29252f9793fSmrg # handle both shared and static libraries in a single compilation. 29352f9793fSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29452f9793fSmrg # 29552f9793fSmrg # With libtool 1.5 this exception was removed, and libtool now 29652f9793fSmrg # generates 2 separate objects for the 2 libraries. These two 29752f9793fSmrg # compilations output dependencies in in $dir.libs/$base.o.d and 29852f9793fSmrg # in $dir$base.o.d. We have to check for both files, because 29952f9793fSmrg # one of the two compilations can be disabled. We should prefer 30052f9793fSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30152f9793fSmrg # automatically cleaned when .libs/ is deleted, while ignoring 30252f9793fSmrg # the former would cause a distcleancheck panic. 30352f9793fSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30452f9793fSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30552f9793fSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30652f9793fSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30752f9793fSmrg "$@" -Wc,-MD 30852f9793fSmrg else 30952f9793fSmrg tmpdepfile1=$dir$base.o.d 31052f9793fSmrg tmpdepfile2=$dir$base.d 31152f9793fSmrg tmpdepfile3=$dir$base.d 31252f9793fSmrg tmpdepfile4=$dir$base.d 31352f9793fSmrg "$@" -MD 31452f9793fSmrg fi 31552f9793fSmrg 31652f9793fSmrg stat=$? 31752f9793fSmrg if test $stat -eq 0; then : 31852f9793fSmrg else 31952f9793fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32052f9793fSmrg exit $stat 32152f9793fSmrg fi 32252f9793fSmrg 32352f9793fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32452f9793fSmrg do 32552f9793fSmrg test -f "$tmpdepfile" && break 32652f9793fSmrg done 32752f9793fSmrg if test -f "$tmpdepfile"; then 32852f9793fSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32952f9793fSmrg # That's a tab and a space in the []. 33052f9793fSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33152f9793fSmrg else 33252f9793fSmrg echo "#dummy" > "$depfile" 33352f9793fSmrg fi 33452f9793fSmrg rm -f "$tmpdepfile" 33552f9793fSmrg ;; 33652f9793fSmrg 33752f9793fSmrg#nosideeffect) 33852f9793fSmrg # This comment above is used by automake to tell side-effect 33952f9793fSmrg # dependency tracking mechanisms from slower ones. 34052f9793fSmrg 34152f9793fSmrgdashmstdout) 34252f9793fSmrg # Important note: in order to support this mode, a compiler *must* 34352f9793fSmrg # always write the preprocessed file to stdout, regardless of -o. 34452f9793fSmrg "$@" || exit $? 34552f9793fSmrg 34652f9793fSmrg # Remove the call to Libtool. 34752f9793fSmrg if test "$libtool" = yes; then 34852f9793fSmrg while test $1 != '--mode=compile'; do 34952f9793fSmrg shift 35052f9793fSmrg done 35152f9793fSmrg shift 35252f9793fSmrg fi 35352f9793fSmrg 35452f9793fSmrg # Remove `-o $object'. 35552f9793fSmrg IFS=" " 35652f9793fSmrg for arg 35752f9793fSmrg do 35852f9793fSmrg case $arg in 35952f9793fSmrg -o) 36052f9793fSmrg shift 36152f9793fSmrg ;; 36252f9793fSmrg $object) 36352f9793fSmrg shift 36452f9793fSmrg ;; 36552f9793fSmrg *) 36652f9793fSmrg set fnord "$@" "$arg" 36752f9793fSmrg shift # fnord 36852f9793fSmrg shift # $arg 36952f9793fSmrg ;; 37052f9793fSmrg esac 37152f9793fSmrg done 37252f9793fSmrg 37352f9793fSmrg test -z "$dashmflag" && dashmflag=-M 37452f9793fSmrg # Require at least two characters before searching for `:' 37552f9793fSmrg # in the target name. This is to cope with DOS-style filenames: 37652f9793fSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37752f9793fSmrg "$@" $dashmflag | 37852f9793fSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37952f9793fSmrg rm -f "$depfile" 38052f9793fSmrg cat < "$tmpdepfile" > "$depfile" 38152f9793fSmrg tr ' ' ' 38252f9793fSmrg' < "$tmpdepfile" | \ 38352f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 38452f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 38552f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38652f9793fSmrg rm -f "$tmpdepfile" 38752f9793fSmrg ;; 38852f9793fSmrg 38952f9793fSmrgdashXmstdout) 39052f9793fSmrg # This case only exists to satisfy depend.m4. It is never actually 39152f9793fSmrg # run, as this mode is specially recognized in the preamble. 39252f9793fSmrg exit 1 39352f9793fSmrg ;; 39452f9793fSmrg 39552f9793fSmrgmakedepend) 39652f9793fSmrg "$@" || exit $? 39752f9793fSmrg # Remove any Libtool call 39852f9793fSmrg if test "$libtool" = yes; then 39952f9793fSmrg while test $1 != '--mode=compile'; do 40052f9793fSmrg shift 40152f9793fSmrg done 40252f9793fSmrg shift 40352f9793fSmrg fi 40452f9793fSmrg # X makedepend 40552f9793fSmrg shift 40652f9793fSmrg cleared=no 40752f9793fSmrg for arg in "$@"; do 40852f9793fSmrg case $cleared in 40952f9793fSmrg no) 41052f9793fSmrg set ""; shift 41152f9793fSmrg cleared=yes ;; 41252f9793fSmrg esac 41352f9793fSmrg case "$arg" in 41452f9793fSmrg -D*|-I*) 41552f9793fSmrg set fnord "$@" "$arg"; shift ;; 41652f9793fSmrg # Strip any option that makedepend may not understand. Remove 41752f9793fSmrg # the object too, otherwise makedepend will parse it as a source file. 41852f9793fSmrg -*|$object) 41952f9793fSmrg ;; 42052f9793fSmrg *) 42152f9793fSmrg set fnord "$@" "$arg"; shift ;; 42252f9793fSmrg esac 42352f9793fSmrg done 42452f9793fSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42552f9793fSmrg touch "$tmpdepfile" 42652f9793fSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42752f9793fSmrg rm -f "$depfile" 42852f9793fSmrg cat < "$tmpdepfile" > "$depfile" 42952f9793fSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43052f9793fSmrg' | \ 43152f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 43252f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 43352f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43452f9793fSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43552f9793fSmrg ;; 43652f9793fSmrg 43752f9793fSmrgcpp) 43852f9793fSmrg # Important note: in order to support this mode, a compiler *must* 43952f9793fSmrg # always write the preprocessed file to stdout. 44052f9793fSmrg "$@" || exit $? 44152f9793fSmrg 44252f9793fSmrg # Remove the call to Libtool. 44352f9793fSmrg if test "$libtool" = yes; then 44452f9793fSmrg while test $1 != '--mode=compile'; do 44552f9793fSmrg shift 44652f9793fSmrg done 44752f9793fSmrg shift 44852f9793fSmrg fi 44952f9793fSmrg 45052f9793fSmrg # Remove `-o $object'. 45152f9793fSmrg IFS=" " 45252f9793fSmrg for arg 45352f9793fSmrg do 45452f9793fSmrg case $arg in 45552f9793fSmrg -o) 45652f9793fSmrg shift 45752f9793fSmrg ;; 45852f9793fSmrg $object) 45952f9793fSmrg shift 46052f9793fSmrg ;; 46152f9793fSmrg *) 46252f9793fSmrg set fnord "$@" "$arg" 46352f9793fSmrg shift # fnord 46452f9793fSmrg shift # $arg 46552f9793fSmrg ;; 46652f9793fSmrg esac 46752f9793fSmrg done 46852f9793fSmrg 46952f9793fSmrg "$@" -E | 47052f9793fSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47152f9793fSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47252f9793fSmrg sed '$ s: \\$::' > "$tmpdepfile" 47352f9793fSmrg rm -f "$depfile" 47452f9793fSmrg echo "$object : \\" > "$depfile" 47552f9793fSmrg cat < "$tmpdepfile" >> "$depfile" 47652f9793fSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47752f9793fSmrg rm -f "$tmpdepfile" 47852f9793fSmrg ;; 47952f9793fSmrg 48052f9793fSmrgmsvisualcpp) 48152f9793fSmrg # Important note: in order to support this mode, a compiler *must* 48252f9793fSmrg # always write the preprocessed file to stdout, regardless of -o, 48352f9793fSmrg # because we must use -o when running libtool. 48452f9793fSmrg "$@" || exit $? 48552f9793fSmrg IFS=" " 48652f9793fSmrg for arg 48752f9793fSmrg do 48852f9793fSmrg case "$arg" in 48952f9793fSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49052f9793fSmrg set fnord "$@" 49152f9793fSmrg shift 49252f9793fSmrg shift 49352f9793fSmrg ;; 49452f9793fSmrg *) 49552f9793fSmrg set fnord "$@" "$arg" 49652f9793fSmrg shift 49752f9793fSmrg shift 49852f9793fSmrg ;; 49952f9793fSmrg esac 50052f9793fSmrg done 50152f9793fSmrg "$@" -E | 50252f9793fSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50352f9793fSmrg rm -f "$depfile" 50452f9793fSmrg echo "$object : \\" > "$depfile" 50552f9793fSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50652f9793fSmrg echo " " >> "$depfile" 50752f9793fSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50852f9793fSmrg rm -f "$tmpdepfile" 50952f9793fSmrg ;; 51052f9793fSmrg 51152f9793fSmrgnone) 51252f9793fSmrg exec "$@" 51352f9793fSmrg ;; 51452f9793fSmrg 51552f9793fSmrg*) 51652f9793fSmrg echo "Unknown depmode $depmode" 1>&2 51752f9793fSmrg exit 1 51852f9793fSmrg ;; 51952f9793fSmrgesac 52052f9793fSmrg 52152f9793fSmrgexit 0 52252f9793fSmrg 52352f9793fSmrg# Local Variables: 52452f9793fSmrg# mode: shell-script 52552f9793fSmrg# sh-indentation: 2 52652f9793fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52752f9793fSmrg# time-stamp-start: "scriptversion=" 52852f9793fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52952f9793fSmrg# time-stamp-end: "$" 53052f9793fSmrg# End: 531