depcomp revision 50806d53
150806d53Smrg#! /bin/sh 250806d53Smrg# depcomp - compile a program generating dependencies as side-effects 350806d53Smrg 450806d53Smrgscriptversion=2005-07-09.11 550806d53Smrg 650806d53Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 750806d53Smrg 850806d53Smrg# This program is free software; you can redistribute it and/or modify 950806d53Smrg# it under the terms of the GNU General Public License as published by 1050806d53Smrg# the Free Software Foundation; either version 2, or (at your option) 1150806d53Smrg# any later version. 1250806d53Smrg 1350806d53Smrg# This program is distributed in the hope that it will be useful, 1450806d53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1550806d53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1650806d53Smrg# GNU General Public License for more details. 1750806d53Smrg 1850806d53Smrg# You should have received a copy of the GNU General Public License 1950806d53Smrg# along with this program; if not, write to the Free Software 2050806d53Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2150806d53Smrg# 02110-1301, USA. 2250806d53Smrg 2350806d53Smrg# As a special exception to the GNU General Public License, if you 2450806d53Smrg# distribute this file as part of a program that contains a 2550806d53Smrg# configuration script generated by Autoconf, you may include it under 2650806d53Smrg# the same distribution terms that you use for the rest of that program. 2750806d53Smrg 2850806d53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2950806d53Smrg 3050806d53Smrgcase $1 in 3150806d53Smrg '') 3250806d53Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3350806d53Smrg exit 1; 3450806d53Smrg ;; 3550806d53Smrg -h | --h*) 3650806d53Smrg cat <<\EOF 3750806d53SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3850806d53Smrg 3950806d53SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4050806d53Smrgas side-effects. 4150806d53Smrg 4250806d53SmrgEnvironment variables: 4350806d53Smrg depmode Dependency tracking mode. 4450806d53Smrg source Source file read by `PROGRAMS ARGS'. 4550806d53Smrg object Object file output by `PROGRAMS ARGS'. 4650806d53Smrg DEPDIR directory where to store dependencies. 4750806d53Smrg depfile Dependency file to output. 4850806d53Smrg tmpdepfile Temporary file to use when outputing dependencies. 4950806d53Smrg libtool Whether libtool is used (yes/no). 5050806d53Smrg 5150806d53SmrgReport bugs to <bug-automake@gnu.org>. 5250806d53SmrgEOF 5350806d53Smrg exit $? 5450806d53Smrg ;; 5550806d53Smrg -v | --v*) 5650806d53Smrg echo "depcomp $scriptversion" 5750806d53Smrg exit $? 5850806d53Smrg ;; 5950806d53Smrgesac 6050806d53Smrg 6150806d53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6250806d53Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6350806d53Smrg exit 1 6450806d53Smrgfi 6550806d53Smrg 6650806d53Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6750806d53Smrgdepfile=${depfile-`echo "$object" | 6850806d53Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6950806d53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7050806d53Smrg 7150806d53Smrgrm -f "$tmpdepfile" 7250806d53Smrg 7350806d53Smrg# Some modes work just like other modes, but use different flags. We 7450806d53Smrg# parameterize here, but still list the modes in the big case below, 7550806d53Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7650806d53Smrg# here, because this file can only contain one case statement. 7750806d53Smrgif test "$depmode" = hp; then 7850806d53Smrg # HP compiler uses -M and no extra arg. 7950806d53Smrg gccflag=-M 8050806d53Smrg depmode=gcc 8150806d53Smrgfi 8250806d53Smrg 8350806d53Smrgif test "$depmode" = dashXmstdout; then 8450806d53Smrg # This is just like dashmstdout with a different argument. 8550806d53Smrg dashmflag=-xM 8650806d53Smrg depmode=dashmstdout 8750806d53Smrgfi 8850806d53Smrg 8950806d53Smrgcase "$depmode" in 9050806d53Smrggcc3) 9150806d53Smrg## gcc 3 implements dependency tracking that does exactly what 9250806d53Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9350806d53Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 9450806d53Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9550806d53Smrg stat=$? 9650806d53Smrg if test $stat -eq 0; then : 9750806d53Smrg else 9850806d53Smrg rm -f "$tmpdepfile" 9950806d53Smrg exit $stat 10050806d53Smrg fi 10150806d53Smrg mv "$tmpdepfile" "$depfile" 10250806d53Smrg ;; 10350806d53Smrg 10450806d53Smrggcc) 10550806d53Smrg## There are various ways to get dependency output from gcc. Here's 10650806d53Smrg## why we pick this rather obscure method: 10750806d53Smrg## - Don't want to use -MD because we'd like the dependencies to end 10850806d53Smrg## up in a subdir. Having to rename by hand is ugly. 10950806d53Smrg## (We might end up doing this anyway to support other compilers.) 11050806d53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11150806d53Smrg## -MM, not -M (despite what the docs say). 11250806d53Smrg## - Using -M directly means running the compiler twice (even worse 11350806d53Smrg## than renaming). 11450806d53Smrg if test -z "$gccflag"; then 11550806d53Smrg gccflag=-MD, 11650806d53Smrg fi 11750806d53Smrg "$@" -Wp,"$gccflag$tmpdepfile" 11850806d53Smrg stat=$? 11950806d53Smrg if test $stat -eq 0; then : 12050806d53Smrg else 12150806d53Smrg rm -f "$tmpdepfile" 12250806d53Smrg exit $stat 12350806d53Smrg fi 12450806d53Smrg rm -f "$depfile" 12550806d53Smrg echo "$object : \\" > "$depfile" 12650806d53Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12750806d53Smrg## The second -e expression handles DOS-style file names with drive letters. 12850806d53Smrg sed -e 's/^[^:]*: / /' \ 12950806d53Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13050806d53Smrg## This next piece of magic avoids the `deleted header file' problem. 13150806d53Smrg## The problem is that when a header file which appears in a .P file 13250806d53Smrg## is deleted, the dependency causes make to die (because there is 13350806d53Smrg## typically no way to rebuild the header). We avoid this by adding 13450806d53Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 13550806d53Smrg## this for us directly. 13650806d53Smrg tr ' ' ' 13750806d53Smrg' < "$tmpdepfile" | 13850806d53Smrg## Some versions of gcc put a space before the `:'. On the theory 13950806d53Smrg## that the space means something, we add a space to the output as 14050806d53Smrg## well. 14150806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 14250806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 14350806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14450806d53Smrg rm -f "$tmpdepfile" 14550806d53Smrg ;; 14650806d53Smrg 14750806d53Smrghp) 14850806d53Smrg # This case exists only to let depend.m4 do its work. It works by 14950806d53Smrg # looking at the text of this script. This case will never be run, 15050806d53Smrg # since it is checked for above. 15150806d53Smrg exit 1 15250806d53Smrg ;; 15350806d53Smrg 15450806d53Smrgsgi) 15550806d53Smrg if test "$libtool" = yes; then 15650806d53Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15750806d53Smrg else 15850806d53Smrg "$@" -MDupdate "$tmpdepfile" 15950806d53Smrg fi 16050806d53Smrg stat=$? 16150806d53Smrg if test $stat -eq 0; then : 16250806d53Smrg else 16350806d53Smrg rm -f "$tmpdepfile" 16450806d53Smrg exit $stat 16550806d53Smrg fi 16650806d53Smrg rm -f "$depfile" 16750806d53Smrg 16850806d53Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16950806d53Smrg echo "$object : \\" > "$depfile" 17050806d53Smrg 17150806d53Smrg # Clip off the initial element (the dependent). Don't try to be 17250806d53Smrg # clever and replace this with sed code, as IRIX sed won't handle 17350806d53Smrg # lines with more than a fixed number of characters (4096 in 17450806d53Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17550806d53Smrg # the IRIX cc adds comments like `#:fec' to the end of the 17650806d53Smrg # dependency line. 17750806d53Smrg tr ' ' ' 17850806d53Smrg' < "$tmpdepfile" \ 17950806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18050806d53Smrg tr ' 18150806d53Smrg' ' ' >> $depfile 18250806d53Smrg echo >> $depfile 18350806d53Smrg 18450806d53Smrg # The second pass generates a dummy entry for each header file. 18550806d53Smrg tr ' ' ' 18650806d53Smrg' < "$tmpdepfile" \ 18750806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18850806d53Smrg >> $depfile 18950806d53Smrg else 19050806d53Smrg # The sourcefile does not contain any dependencies, so just 19150806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 19250806d53Smrg # "include basename.Plo" scheme. 19350806d53Smrg echo "#dummy" > "$depfile" 19450806d53Smrg fi 19550806d53Smrg rm -f "$tmpdepfile" 19650806d53Smrg ;; 19750806d53Smrg 19850806d53Smrgaix) 19950806d53Smrg # The C for AIX Compiler uses -M and outputs the dependencies 20050806d53Smrg # in a .u file. In older versions, this file always lives in the 20150806d53Smrg # current directory. Also, the AIX compiler puts `$object:' at the 20250806d53Smrg # start of each line; $object doesn't have directory information. 20350806d53Smrg # Version 6 uses the directory in both cases. 20450806d53Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20550806d53Smrg tmpdepfile="$stripped.u" 20650806d53Smrg if test "$libtool" = yes; then 20750806d53Smrg "$@" -Wc,-M 20850806d53Smrg else 20950806d53Smrg "$@" -M 21050806d53Smrg fi 21150806d53Smrg stat=$? 21250806d53Smrg 21350806d53Smrg if test -f "$tmpdepfile"; then : 21450806d53Smrg else 21550806d53Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21650806d53Smrg tmpdepfile="$stripped.u" 21750806d53Smrg fi 21850806d53Smrg 21950806d53Smrg if test $stat -eq 0; then : 22050806d53Smrg else 22150806d53Smrg rm -f "$tmpdepfile" 22250806d53Smrg exit $stat 22350806d53Smrg fi 22450806d53Smrg 22550806d53Smrg if test -f "$tmpdepfile"; then 22650806d53Smrg outname="$stripped.o" 22750806d53Smrg # Each line is of the form `foo.o: dependent.h'. 22850806d53Smrg # Do two passes, one to just change these to 22950806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 23050806d53Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23150806d53Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23250806d53Smrg else 23350806d53Smrg # The sourcefile does not contain any dependencies, so just 23450806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 23550806d53Smrg # "include basename.Plo" scheme. 23650806d53Smrg echo "#dummy" > "$depfile" 23750806d53Smrg fi 23850806d53Smrg rm -f "$tmpdepfile" 23950806d53Smrg ;; 24050806d53Smrg 24150806d53Smrgicc) 24250806d53Smrg # Intel's C compiler understands `-MD -MF file'. However on 24350806d53Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24450806d53Smrg # ICC 7.0 will fill foo.d with something like 24550806d53Smrg # foo.o: sub/foo.c 24650806d53Smrg # foo.o: sub/foo.h 24750806d53Smrg # which is wrong. We want: 24850806d53Smrg # sub/foo.o: sub/foo.c 24950806d53Smrg # sub/foo.o: sub/foo.h 25050806d53Smrg # sub/foo.c: 25150806d53Smrg # sub/foo.h: 25250806d53Smrg # ICC 7.1 will output 25350806d53Smrg # foo.o: sub/foo.c sub/foo.h 25450806d53Smrg # and will wrap long lines using \ : 25550806d53Smrg # foo.o: sub/foo.c ... \ 25650806d53Smrg # sub/foo.h ... \ 25750806d53Smrg # ... 25850806d53Smrg 25950806d53Smrg "$@" -MD -MF "$tmpdepfile" 26050806d53Smrg stat=$? 26150806d53Smrg if test $stat -eq 0; then : 26250806d53Smrg else 26350806d53Smrg rm -f "$tmpdepfile" 26450806d53Smrg exit $stat 26550806d53Smrg fi 26650806d53Smrg rm -f "$depfile" 26750806d53Smrg # Each line is of the form `foo.o: dependent.h', 26850806d53Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26950806d53Smrg # Do two passes, one to just change these to 27050806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 27150806d53Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27250806d53Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 27350806d53Smrg # correctly. Breaking it into two sed invocations is a workaround. 27450806d53Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27550806d53Smrg sed -e 's/$/ :/' >> "$depfile" 27650806d53Smrg rm -f "$tmpdepfile" 27750806d53Smrg ;; 27850806d53Smrg 27950806d53Smrgtru64) 28050806d53Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 28150806d53Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28250806d53Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28350806d53Smrg # dependencies in `foo.d' instead, so we check for that too. 28450806d53Smrg # Subdirectories are respected. 28550806d53Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28650806d53Smrg test "x$dir" = "x$object" && dir= 28750806d53Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28850806d53Smrg 28950806d53Smrg if test "$libtool" = yes; then 29050806d53Smrg # With Tru64 cc, shared objects can also be used to make a 29150806d53Smrg # static library. This mecanism is used in libtool 1.4 series to 29250806d53Smrg # handle both shared and static libraries in a single compilation. 29350806d53Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29450806d53Smrg # 29550806d53Smrg # With libtool 1.5 this exception was removed, and libtool now 29650806d53Smrg # generates 2 separate objects for the 2 libraries. These two 29750806d53Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 29850806d53Smrg # in $dir$base.o.d. We have to check for both files, because 29950806d53Smrg # one of the two compilations can be disabled. We should prefer 30050806d53Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30150806d53Smrg # automatically cleaned when .libs/ is deleted, while ignoring 30250806d53Smrg # the former would cause a distcleancheck panic. 30350806d53Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30450806d53Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30550806d53Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30650806d53Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30750806d53Smrg "$@" -Wc,-MD 30850806d53Smrg else 30950806d53Smrg tmpdepfile1=$dir$base.o.d 31050806d53Smrg tmpdepfile2=$dir$base.d 31150806d53Smrg tmpdepfile3=$dir$base.d 31250806d53Smrg tmpdepfile4=$dir$base.d 31350806d53Smrg "$@" -MD 31450806d53Smrg fi 31550806d53Smrg 31650806d53Smrg stat=$? 31750806d53Smrg if test $stat -eq 0; then : 31850806d53Smrg else 31950806d53Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32050806d53Smrg exit $stat 32150806d53Smrg fi 32250806d53Smrg 32350806d53Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32450806d53Smrg do 32550806d53Smrg test -f "$tmpdepfile" && break 32650806d53Smrg done 32750806d53Smrg if test -f "$tmpdepfile"; then 32850806d53Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32950806d53Smrg # That's a tab and a space in the []. 33050806d53Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33150806d53Smrg else 33250806d53Smrg echo "#dummy" > "$depfile" 33350806d53Smrg fi 33450806d53Smrg rm -f "$tmpdepfile" 33550806d53Smrg ;; 33650806d53Smrg 33750806d53Smrg#nosideeffect) 33850806d53Smrg # This comment above is used by automake to tell side-effect 33950806d53Smrg # dependency tracking mechanisms from slower ones. 34050806d53Smrg 34150806d53Smrgdashmstdout) 34250806d53Smrg # Important note: in order to support this mode, a compiler *must* 34350806d53Smrg # always write the preprocessed file to stdout, regardless of -o. 34450806d53Smrg "$@" || exit $? 34550806d53Smrg 34650806d53Smrg # Remove the call to Libtool. 34750806d53Smrg if test "$libtool" = yes; then 34850806d53Smrg while test $1 != '--mode=compile'; do 34950806d53Smrg shift 35050806d53Smrg done 35150806d53Smrg shift 35250806d53Smrg fi 35350806d53Smrg 35450806d53Smrg # Remove `-o $object'. 35550806d53Smrg IFS=" " 35650806d53Smrg for arg 35750806d53Smrg do 35850806d53Smrg case $arg in 35950806d53Smrg -o) 36050806d53Smrg shift 36150806d53Smrg ;; 36250806d53Smrg $object) 36350806d53Smrg shift 36450806d53Smrg ;; 36550806d53Smrg *) 36650806d53Smrg set fnord "$@" "$arg" 36750806d53Smrg shift # fnord 36850806d53Smrg shift # $arg 36950806d53Smrg ;; 37050806d53Smrg esac 37150806d53Smrg done 37250806d53Smrg 37350806d53Smrg test -z "$dashmflag" && dashmflag=-M 37450806d53Smrg # Require at least two characters before searching for `:' 37550806d53Smrg # in the target name. This is to cope with DOS-style filenames: 37650806d53Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37750806d53Smrg "$@" $dashmflag | 37850806d53Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37950806d53Smrg rm -f "$depfile" 38050806d53Smrg cat < "$tmpdepfile" > "$depfile" 38150806d53Smrg tr ' ' ' 38250806d53Smrg' < "$tmpdepfile" | \ 38350806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 38450806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 38550806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38650806d53Smrg rm -f "$tmpdepfile" 38750806d53Smrg ;; 38850806d53Smrg 38950806d53SmrgdashXmstdout) 39050806d53Smrg # This case only exists to satisfy depend.m4. It is never actually 39150806d53Smrg # run, as this mode is specially recognized in the preamble. 39250806d53Smrg exit 1 39350806d53Smrg ;; 39450806d53Smrg 39550806d53Smrgmakedepend) 39650806d53Smrg "$@" || exit $? 39750806d53Smrg # Remove any Libtool call 39850806d53Smrg if test "$libtool" = yes; then 39950806d53Smrg while test $1 != '--mode=compile'; do 40050806d53Smrg shift 40150806d53Smrg done 40250806d53Smrg shift 40350806d53Smrg fi 40450806d53Smrg # X makedepend 40550806d53Smrg shift 40650806d53Smrg cleared=no 40750806d53Smrg for arg in "$@"; do 40850806d53Smrg case $cleared in 40950806d53Smrg no) 41050806d53Smrg set ""; shift 41150806d53Smrg cleared=yes ;; 41250806d53Smrg esac 41350806d53Smrg case "$arg" in 41450806d53Smrg -D*|-I*) 41550806d53Smrg set fnord "$@" "$arg"; shift ;; 41650806d53Smrg # Strip any option that makedepend may not understand. Remove 41750806d53Smrg # the object too, otherwise makedepend will parse it as a source file. 41850806d53Smrg -*|$object) 41950806d53Smrg ;; 42050806d53Smrg *) 42150806d53Smrg set fnord "$@" "$arg"; shift ;; 42250806d53Smrg esac 42350806d53Smrg done 42450806d53Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42550806d53Smrg touch "$tmpdepfile" 42650806d53Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42750806d53Smrg rm -f "$depfile" 42850806d53Smrg cat < "$tmpdepfile" > "$depfile" 42950806d53Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43050806d53Smrg' | \ 43150806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 43250806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 43350806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43450806d53Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43550806d53Smrg ;; 43650806d53Smrg 43750806d53Smrgcpp) 43850806d53Smrg # Important note: in order to support this mode, a compiler *must* 43950806d53Smrg # always write the preprocessed file to stdout. 44050806d53Smrg "$@" || exit $? 44150806d53Smrg 44250806d53Smrg # Remove the call to Libtool. 44350806d53Smrg if test "$libtool" = yes; then 44450806d53Smrg while test $1 != '--mode=compile'; do 44550806d53Smrg shift 44650806d53Smrg done 44750806d53Smrg shift 44850806d53Smrg fi 44950806d53Smrg 45050806d53Smrg # Remove `-o $object'. 45150806d53Smrg IFS=" " 45250806d53Smrg for arg 45350806d53Smrg do 45450806d53Smrg case $arg in 45550806d53Smrg -o) 45650806d53Smrg shift 45750806d53Smrg ;; 45850806d53Smrg $object) 45950806d53Smrg shift 46050806d53Smrg ;; 46150806d53Smrg *) 46250806d53Smrg set fnord "$@" "$arg" 46350806d53Smrg shift # fnord 46450806d53Smrg shift # $arg 46550806d53Smrg ;; 46650806d53Smrg esac 46750806d53Smrg done 46850806d53Smrg 46950806d53Smrg "$@" -E | 47050806d53Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47150806d53Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47250806d53Smrg sed '$ s: \\$::' > "$tmpdepfile" 47350806d53Smrg rm -f "$depfile" 47450806d53Smrg echo "$object : \\" > "$depfile" 47550806d53Smrg cat < "$tmpdepfile" >> "$depfile" 47650806d53Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47750806d53Smrg rm -f "$tmpdepfile" 47850806d53Smrg ;; 47950806d53Smrg 48050806d53Smrgmsvisualcpp) 48150806d53Smrg # Important note: in order to support this mode, a compiler *must* 48250806d53Smrg # always write the preprocessed file to stdout, regardless of -o, 48350806d53Smrg # because we must use -o when running libtool. 48450806d53Smrg "$@" || exit $? 48550806d53Smrg IFS=" " 48650806d53Smrg for arg 48750806d53Smrg do 48850806d53Smrg case "$arg" in 48950806d53Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49050806d53Smrg set fnord "$@" 49150806d53Smrg shift 49250806d53Smrg shift 49350806d53Smrg ;; 49450806d53Smrg *) 49550806d53Smrg set fnord "$@" "$arg" 49650806d53Smrg shift 49750806d53Smrg shift 49850806d53Smrg ;; 49950806d53Smrg esac 50050806d53Smrg done 50150806d53Smrg "$@" -E | 50250806d53Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50350806d53Smrg rm -f "$depfile" 50450806d53Smrg echo "$object : \\" > "$depfile" 50550806d53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50650806d53Smrg echo " " >> "$depfile" 50750806d53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50850806d53Smrg rm -f "$tmpdepfile" 50950806d53Smrg ;; 51050806d53Smrg 51150806d53Smrgnone) 51250806d53Smrg exec "$@" 51350806d53Smrg ;; 51450806d53Smrg 51550806d53Smrg*) 51650806d53Smrg echo "Unknown depmode $depmode" 1>&2 51750806d53Smrg exit 1 51850806d53Smrg ;; 51950806d53Smrgesac 52050806d53Smrg 52150806d53Smrgexit 0 52250806d53Smrg 52350806d53Smrg# Local Variables: 52450806d53Smrg# mode: shell-script 52550806d53Smrg# sh-indentation: 2 52650806d53Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52750806d53Smrg# time-stamp-start: "scriptversion=" 52850806d53Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52950806d53Smrg# time-stamp-end: "$" 53050806d53Smrg# End: 531