depcomp revision 67f05d30
167f05d30Smrg#! /bin/sh 267f05d30Smrg 367f05d30Smrg# depcomp - compile a program generating dependencies as side-effects 467f05d30Smrg# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. 567f05d30Smrg 667f05d30Smrg# This program is free software; you can redistribute it and/or modify 767f05d30Smrg# it under the terms of the GNU General Public License as published by 867f05d30Smrg# the Free Software Foundation; either version 2, or (at your option) 967f05d30Smrg# any later version. 1067f05d30Smrg 1167f05d30Smrg# This program is distributed in the hope that it will be useful, 1267f05d30Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1367f05d30Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1467f05d30Smrg# GNU General Public License for more details. 1567f05d30Smrg 1667f05d30Smrg# You should have received a copy of the GNU General Public License 1767f05d30Smrg# along with this program; if not, write to the Free Software 1867f05d30Smrg# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 1967f05d30Smrg# 02111-1307, USA. 2067f05d30Smrg 2167f05d30Smrg# As a special exception to the GNU General Public License, if you 2267f05d30Smrg# distribute this file as part of a program that contains a 2367f05d30Smrg# configuration script generated by Autoconf, you may include it under 2467f05d30Smrg# the same distribution terms that you use for the rest of that program. 2567f05d30Smrg 2667f05d30Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2767f05d30Smrg 2867f05d30Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 2967f05d30Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 3067f05d30Smrg exit 1 3167f05d30Smrgfi 3267f05d30Smrg# `libtool' can also be set to `yes' or `no'. 3367f05d30Smrg 3467f05d30Smrgif test -z "$depfile"; then 3567f05d30Smrg base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` 3667f05d30Smrg dir=`echo "$object" | sed 's,/.*$,/,'` 3767f05d30Smrg if test "$dir" = "$object"; then 3867f05d30Smrg dir= 3967f05d30Smrg fi 4067f05d30Smrg # FIXME: should be _deps on DOS. 4167f05d30Smrg depfile="$dir.deps/$base" 4267f05d30Smrgfi 4367f05d30Smrg 4467f05d30Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 4567f05d30Smrg 4667f05d30Smrgrm -f "$tmpdepfile" 4767f05d30Smrg 4867f05d30Smrg# Some modes work just like other modes, but use different flags. We 4967f05d30Smrg# parameterize here, but still list the modes in the big case below, 5067f05d30Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 5167f05d30Smrg# here, because this file can only contain one case statement. 5267f05d30Smrgif test "$depmode" = hp; then 5367f05d30Smrg # HP compiler uses -M and no extra arg. 5467f05d30Smrg gccflag=-M 5567f05d30Smrg depmode=gcc 5667f05d30Smrgfi 5767f05d30Smrg 5867f05d30Smrgif test "$depmode" = dashXmstdout; then 5967f05d30Smrg # This is just like dashmstdout with a different argument. 6067f05d30Smrg dashmflag=-xM 6167f05d30Smrg depmode=dashmstdout 6267f05d30Smrgfi 6367f05d30Smrg 6467f05d30Smrgcase "$depmode" in 6567f05d30Smrggcc3) 6667f05d30Smrg## gcc 3 implements dependency tracking that does exactly what 6767f05d30Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 6867f05d30Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 6967f05d30Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 7067f05d30Smrg stat=$? 7167f05d30Smrg if test $stat -eq 0; then : 7267f05d30Smrg else 7367f05d30Smrg rm -f "$tmpdepfile" 7467f05d30Smrg exit $stat 7567f05d30Smrg fi 7667f05d30Smrg mv "$tmpdepfile" "$depfile" 7767f05d30Smrg ;; 7867f05d30Smrg 7967f05d30Smrggcc) 8067f05d30Smrg## There are various ways to get dependency output from gcc. Here's 8167f05d30Smrg## why we pick this rather obscure method: 8267f05d30Smrg## - Don't want to use -MD because we'd like the dependencies to end 8367f05d30Smrg## up in a subdir. Having to rename by hand is ugly. 8467f05d30Smrg## (We might end up doing this anyway to support other compilers.) 8567f05d30Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 8667f05d30Smrg## -MM, not -M (despite what the docs say). 8767f05d30Smrg## - Using -M directly means running the compiler twice (even worse 8867f05d30Smrg## than renaming). 8967f05d30Smrg if test -z "$gccflag"; then 9067f05d30Smrg gccflag=-MD, 9167f05d30Smrg fi 9267f05d30Smrg "$@" -Wp,"$gccflag$tmpdepfile" 9367f05d30Smrg stat=$? 9467f05d30Smrg if test $stat -eq 0; then : 9567f05d30Smrg else 9667f05d30Smrg rm -f "$tmpdepfile" 9767f05d30Smrg exit $stat 9867f05d30Smrg fi 9967f05d30Smrg rm -f "$depfile" 10067f05d30Smrg echo "$object : \\" > "$depfile" 10167f05d30Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 10267f05d30Smrg## The second -e expression handles DOS-style file names with drive letters. 10367f05d30Smrg sed -e 's/^[^:]*: / /' \ 10467f05d30Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 10567f05d30Smrg## This next piece of magic avoids the `deleted header file' problem. 10667f05d30Smrg## The problem is that when a header file which appears in a .P file 10767f05d30Smrg## is deleted, the dependency causes make to die (because there is 10867f05d30Smrg## typically no way to rebuild the header). We avoid this by adding 10967f05d30Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 11067f05d30Smrg## this for us directly. 11167f05d30Smrg tr ' ' ' 11267f05d30Smrg' < "$tmpdepfile" | 11367f05d30Smrg## Some versions of gcc put a space before the `:'. On the theory 11467f05d30Smrg## that the space means something, we add a space to the output as 11567f05d30Smrg## well. 11667f05d30Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 11767f05d30Smrg## correctly. Breaking it into two sed invocations is a workaround. 11867f05d30Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 11967f05d30Smrg rm -f "$tmpdepfile" 12067f05d30Smrg ;; 12167f05d30Smrg 12267f05d30Smrghp) 12367f05d30Smrg # This case exists only to let depend.m4 do its work. It works by 12467f05d30Smrg # looking at the text of this script. This case will never be run, 12567f05d30Smrg # since it is checked for above. 12667f05d30Smrg exit 1 12767f05d30Smrg ;; 12867f05d30Smrg 12967f05d30Smrgsgi) 13067f05d30Smrg if test "$libtool" = yes; then 13167f05d30Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 13267f05d30Smrg else 13367f05d30Smrg "$@" -MDupdate "$tmpdepfile" 13467f05d30Smrg fi 13567f05d30Smrg stat=$? 13667f05d30Smrg if test $stat -eq 0; then : 13767f05d30Smrg else 13867f05d30Smrg rm -f "$tmpdepfile" 13967f05d30Smrg exit $stat 14067f05d30Smrg fi 14167f05d30Smrg rm -f "$depfile" 14267f05d30Smrg 14367f05d30Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 14467f05d30Smrg echo "$object : \\" > "$depfile" 14567f05d30Smrg 14667f05d30Smrg # Clip off the initial element (the dependent). Don't try to be 14767f05d30Smrg # clever and replace this with sed code, as IRIX sed won't handle 14867f05d30Smrg # lines with more than a fixed number of characters (4096 in 14967f05d30Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 15067f05d30Smrg # the IRIX cc adds comments like `#:fec' to the end of the 15167f05d30Smrg # dependency line. 15267f05d30Smrg tr ' ' ' 15367f05d30Smrg' < "$tmpdepfile" \ 15467f05d30Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 15567f05d30Smrg tr ' 15667f05d30Smrg' ' ' >> $depfile 15767f05d30Smrg echo >> $depfile 15867f05d30Smrg 15967f05d30Smrg # The second pass generates a dummy entry for each header file. 16067f05d30Smrg tr ' ' ' 16167f05d30Smrg' < "$tmpdepfile" \ 16267f05d30Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 16367f05d30Smrg >> $depfile 16467f05d30Smrg else 16567f05d30Smrg # The sourcefile does not contain any dependencies, so just 16667f05d30Smrg # store a dummy comment line, to avoid errors with the Makefile 16767f05d30Smrg # "include basename.Plo" scheme. 16867f05d30Smrg echo "#dummy" > "$depfile" 16967f05d30Smrg fi 17067f05d30Smrg rm -f "$tmpdepfile" 17167f05d30Smrg ;; 17267f05d30Smrg 17367f05d30Smrgaix) 17467f05d30Smrg # The C for AIX Compiler uses -M and outputs the dependencies 17567f05d30Smrg # in a .u file. In older versions, this file always lives in the 17667f05d30Smrg # current directory. Also, the AIX compiler puts `$object:' at the 17767f05d30Smrg # start of each line; $object doesn't have directory information. 17867f05d30Smrg # Version 6 uses the directory in both cases. 17967f05d30Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 18067f05d30Smrg tmpdepfile="$stripped.u" 18167f05d30Smrg if test "$libtool" = yes; then 18267f05d30Smrg "$@" -Wc,-M 18367f05d30Smrg else 18467f05d30Smrg "$@" -M 18567f05d30Smrg fi 18667f05d30Smrg stat=$? 18767f05d30Smrg 18867f05d30Smrg if test -f "$tmpdepfile"; then : 18967f05d30Smrg else 19067f05d30Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 19167f05d30Smrg tmpdepfile="$stripped.u" 19267f05d30Smrg fi 19367f05d30Smrg 19467f05d30Smrg if test $stat -eq 0; then : 19567f05d30Smrg else 19667f05d30Smrg rm -f "$tmpdepfile" 19767f05d30Smrg exit $stat 19867f05d30Smrg fi 19967f05d30Smrg 20067f05d30Smrg if test -f "$tmpdepfile"; then 20167f05d30Smrg outname="$stripped.o" 20267f05d30Smrg # Each line is of the form `foo.o: dependent.h'. 20367f05d30Smrg # Do two passes, one to just change these to 20467f05d30Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 20567f05d30Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 20667f05d30Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 20767f05d30Smrg else 20867f05d30Smrg # The sourcefile does not contain any dependencies, so just 20967f05d30Smrg # store a dummy comment line, to avoid errors with the Makefile 21067f05d30Smrg # "include basename.Plo" scheme. 21167f05d30Smrg echo "#dummy" > "$depfile" 21267f05d30Smrg fi 21367f05d30Smrg rm -f "$tmpdepfile" 21467f05d30Smrg ;; 21567f05d30Smrg 21667f05d30Smrgicc) 21767f05d30Smrg # Intel's C compiler understands `-MD -MF file'. However on 21867f05d30Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 21967f05d30Smrg # ICC 7.0 will fill foo.d with something like 22067f05d30Smrg # foo.o: sub/foo.c 22167f05d30Smrg # foo.o: sub/foo.h 22267f05d30Smrg # which is wrong. We want: 22367f05d30Smrg # sub/foo.o: sub/foo.c 22467f05d30Smrg # sub/foo.o: sub/foo.h 22567f05d30Smrg # sub/foo.c: 22667f05d30Smrg # sub/foo.h: 22767f05d30Smrg # ICC 7.1 will output 22867f05d30Smrg # foo.o: sub/foo.c sub/foo.h 22967f05d30Smrg # and will wrap long lines using \ : 23067f05d30Smrg # foo.o: sub/foo.c ... \ 23167f05d30Smrg # sub/foo.h ... \ 23267f05d30Smrg # ... 23367f05d30Smrg 23467f05d30Smrg "$@" -MD -MF "$tmpdepfile" 23567f05d30Smrg stat=$? 23667f05d30Smrg if test $stat -eq 0; then : 23767f05d30Smrg else 23867f05d30Smrg rm -f "$tmpdepfile" 23967f05d30Smrg exit $stat 24067f05d30Smrg fi 24167f05d30Smrg rm -f "$depfile" 24267f05d30Smrg # Each line is of the form `foo.o: dependent.h', 24367f05d30Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 24467f05d30Smrg # Do two passes, one to just change these to 24567f05d30Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 24667f05d30Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 24767f05d30Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 24867f05d30Smrg # correctly. Breaking it into two sed invocations is a workaround. 24967f05d30Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 25067f05d30Smrg sed -e 's/$/ :/' >> "$depfile" 25167f05d30Smrg rm -f "$tmpdepfile" 25267f05d30Smrg ;; 25367f05d30Smrg 25467f05d30Smrgtru64) 25567f05d30Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 25667f05d30Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 25767f05d30Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 25867f05d30Smrg # dependencies in `foo.d' instead, so we check for that too. 25967f05d30Smrg # Subdirectories are respected. 26067f05d30Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 26167f05d30Smrg test "x$dir" = "x$object" && dir= 26267f05d30Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 26367f05d30Smrg 26467f05d30Smrg if test "$libtool" = yes; then 26567f05d30Smrg tmpdepfile1="$dir.libs/$base.lo.d" 26667f05d30Smrg tmpdepfile2="$dir.libs/$base.d" 26767f05d30Smrg "$@" -Wc,-MD 26867f05d30Smrg else 26967f05d30Smrg tmpdepfile1="$dir$base.o.d" 27067f05d30Smrg tmpdepfile2="$dir$base.d" 27167f05d30Smrg "$@" -MD 27267f05d30Smrg fi 27367f05d30Smrg 27467f05d30Smrg stat=$? 27567f05d30Smrg if test $stat -eq 0; then : 27667f05d30Smrg else 27767f05d30Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 27867f05d30Smrg exit $stat 27967f05d30Smrg fi 28067f05d30Smrg 28167f05d30Smrg if test -f "$tmpdepfile1"; then 28267f05d30Smrg tmpdepfile="$tmpdepfile1" 28367f05d30Smrg else 28467f05d30Smrg tmpdepfile="$tmpdepfile2" 28567f05d30Smrg fi 28667f05d30Smrg if test -f "$tmpdepfile"; then 28767f05d30Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 28867f05d30Smrg # That's a tab and a space in the []. 28967f05d30Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 29067f05d30Smrg else 29167f05d30Smrg echo "#dummy" > "$depfile" 29267f05d30Smrg fi 29367f05d30Smrg rm -f "$tmpdepfile" 29467f05d30Smrg ;; 29567f05d30Smrg 29667f05d30Smrg#nosideeffect) 29767f05d30Smrg # This comment above is used by automake to tell side-effect 29867f05d30Smrg # dependency tracking mechanisms from slower ones. 29967f05d30Smrg 30067f05d30Smrgdashmstdout) 30167f05d30Smrg # Important note: in order to support this mode, a compiler *must* 30267f05d30Smrg # always write the preprocessed file to stdout, regardless of -o. 30367f05d30Smrg "$@" || exit $? 30467f05d30Smrg 30567f05d30Smrg # Remove the call to Libtool. 30667f05d30Smrg if test "$libtool" = yes; then 30767f05d30Smrg while test $1 != '--mode=compile'; do 30867f05d30Smrg shift 30967f05d30Smrg done 31067f05d30Smrg shift 31167f05d30Smrg fi 31267f05d30Smrg 31367f05d30Smrg # Remove `-o $object'. 31467f05d30Smrg IFS=" " 31567f05d30Smrg for arg 31667f05d30Smrg do 31767f05d30Smrg case $arg in 31867f05d30Smrg -o) 31967f05d30Smrg shift 32067f05d30Smrg ;; 32167f05d30Smrg $object) 32267f05d30Smrg shift 32367f05d30Smrg ;; 32467f05d30Smrg *) 32567f05d30Smrg set fnord "$@" "$arg" 32667f05d30Smrg shift # fnord 32767f05d30Smrg shift # $arg 32867f05d30Smrg ;; 32967f05d30Smrg esac 33067f05d30Smrg done 33167f05d30Smrg 33267f05d30Smrg test -z "$dashmflag" && dashmflag=-M 33367f05d30Smrg # Require at least two characters before searching for `:' 33467f05d30Smrg # in the target name. This is to cope with DOS-style filenames: 33567f05d30Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 33667f05d30Smrg "$@" $dashmflag | 33767f05d30Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 33867f05d30Smrg rm -f "$depfile" 33967f05d30Smrg cat < "$tmpdepfile" > "$depfile" 34067f05d30Smrg tr ' ' ' 34167f05d30Smrg' < "$tmpdepfile" | \ 34267f05d30Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 34367f05d30Smrg## correctly. Breaking it into two sed invocations is a workaround. 34467f05d30Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 34567f05d30Smrg rm -f "$tmpdepfile" 34667f05d30Smrg ;; 34767f05d30Smrg 34867f05d30SmrgdashXmstdout) 34967f05d30Smrg # This case only exists to satisfy depend.m4. It is never actually 35067f05d30Smrg # run, as this mode is specially recognized in the preamble. 35167f05d30Smrg exit 1 35267f05d30Smrg ;; 35367f05d30Smrg 35467f05d30Smrgmakedepend) 35567f05d30Smrg "$@" || exit $? 35667f05d30Smrg # Remove any Libtool call 35767f05d30Smrg if test "$libtool" = yes; then 35867f05d30Smrg while test $1 != '--mode=compile'; do 35967f05d30Smrg shift 36067f05d30Smrg done 36167f05d30Smrg shift 36267f05d30Smrg fi 36367f05d30Smrg # X makedepend 36467f05d30Smrg shift 36567f05d30Smrg cleared=no 36667f05d30Smrg for arg in "$@"; do 36767f05d30Smrg case $cleared in 36867f05d30Smrg no) 36967f05d30Smrg set ""; shift 37067f05d30Smrg cleared=yes ;; 37167f05d30Smrg esac 37267f05d30Smrg case "$arg" in 37367f05d30Smrg -D*|-I*) 37467f05d30Smrg set fnord "$@" "$arg"; shift ;; 37567f05d30Smrg # Strip any option that makedepend may not understand. Remove 37667f05d30Smrg # the object too, otherwise makedepend will parse it as a source file. 37767f05d30Smrg -*|$object) 37867f05d30Smrg ;; 37967f05d30Smrg *) 38067f05d30Smrg set fnord "$@" "$arg"; shift ;; 38167f05d30Smrg esac 38267f05d30Smrg done 38367f05d30Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 38467f05d30Smrg touch "$tmpdepfile" 38567f05d30Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 38667f05d30Smrg rm -f "$depfile" 38767f05d30Smrg cat < "$tmpdepfile" > "$depfile" 38867f05d30Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 38967f05d30Smrg' | \ 39067f05d30Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 39167f05d30Smrg## correctly. Breaking it into two sed invocations is a workaround. 39267f05d30Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 39367f05d30Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 39467f05d30Smrg ;; 39567f05d30Smrg 39667f05d30Smrgcpp) 39767f05d30Smrg # Important note: in order to support this mode, a compiler *must* 39867f05d30Smrg # always write the preprocessed file to stdout. 39967f05d30Smrg "$@" || exit $? 40067f05d30Smrg 40167f05d30Smrg # Remove the call to Libtool. 40267f05d30Smrg if test "$libtool" = yes; then 40367f05d30Smrg while test $1 != '--mode=compile'; do 40467f05d30Smrg shift 40567f05d30Smrg done 40667f05d30Smrg shift 40767f05d30Smrg fi 40867f05d30Smrg 40967f05d30Smrg # Remove `-o $object'. 41067f05d30Smrg IFS=" " 41167f05d30Smrg for arg 41267f05d30Smrg do 41367f05d30Smrg case $arg in 41467f05d30Smrg -o) 41567f05d30Smrg shift 41667f05d30Smrg ;; 41767f05d30Smrg $object) 41867f05d30Smrg shift 41967f05d30Smrg ;; 42067f05d30Smrg *) 42167f05d30Smrg set fnord "$@" "$arg" 42267f05d30Smrg shift # fnord 42367f05d30Smrg shift # $arg 42467f05d30Smrg ;; 42567f05d30Smrg esac 42667f05d30Smrg done 42767f05d30Smrg 42867f05d30Smrg "$@" -E | 42967f05d30Smrg sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 43067f05d30Smrg sed '$ s: \\$::' > "$tmpdepfile" 43167f05d30Smrg rm -f "$depfile" 43267f05d30Smrg echo "$object : \\" > "$depfile" 43367f05d30Smrg cat < "$tmpdepfile" >> "$depfile" 43467f05d30Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 43567f05d30Smrg rm -f "$tmpdepfile" 43667f05d30Smrg ;; 43767f05d30Smrg 43867f05d30Smrgmsvisualcpp) 43967f05d30Smrg # Important note: in order to support this mode, a compiler *must* 44067f05d30Smrg # always write the preprocessed file to stdout, regardless of -o, 44167f05d30Smrg # because we must use -o when running libtool. 44267f05d30Smrg "$@" || exit $? 44367f05d30Smrg IFS=" " 44467f05d30Smrg for arg 44567f05d30Smrg do 44667f05d30Smrg case "$arg" in 44767f05d30Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 44867f05d30Smrg set fnord "$@" 44967f05d30Smrg shift 45067f05d30Smrg shift 45167f05d30Smrg ;; 45267f05d30Smrg *) 45367f05d30Smrg set fnord "$@" "$arg" 45467f05d30Smrg shift 45567f05d30Smrg shift 45667f05d30Smrg ;; 45767f05d30Smrg esac 45867f05d30Smrg done 45967f05d30Smrg "$@" -E | 46067f05d30Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 46167f05d30Smrg rm -f "$depfile" 46267f05d30Smrg echo "$object : \\" > "$depfile" 46367f05d30Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 46467f05d30Smrg echo " " >> "$depfile" 46567f05d30Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 46667f05d30Smrg rm -f "$tmpdepfile" 46767f05d30Smrg ;; 46867f05d30Smrg 46967f05d30Smrgnone) 47067f05d30Smrg exec "$@" 47167f05d30Smrg ;; 47267f05d30Smrg 47367f05d30Smrg*) 47467f05d30Smrg echo "Unknown depmode $depmode" 1>&2 47567f05d30Smrg exit 1 47667f05d30Smrg ;; 47767f05d30Smrgesac 47867f05d30Smrg 47967f05d30Smrgexit 0 480