depcomp revision 02be438a
102be438aSmrg#! /bin/sh 202be438aSmrg# depcomp - compile a program generating dependencies as side-effects 302be438aSmrg 402be438aSmrgscriptversion=2005-07-09.11 502be438aSmrg 602be438aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 702be438aSmrg 802be438aSmrg# This program is free software; you can redistribute it and/or modify 902be438aSmrg# it under the terms of the GNU General Public License as published by 1002be438aSmrg# the Free Software Foundation; either version 2, or (at your option) 1102be438aSmrg# any later version. 1202be438aSmrg 1302be438aSmrg# This program is distributed in the hope that it will be useful, 1402be438aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1502be438aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1602be438aSmrg# GNU General Public License for more details. 1702be438aSmrg 1802be438aSmrg# You should have received a copy of the GNU General Public License 1902be438aSmrg# along with this program; if not, write to the Free Software 2002be438aSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2102be438aSmrg# 02110-1301, USA. 2202be438aSmrg 2302be438aSmrg# As a special exception to the GNU General Public License, if you 2402be438aSmrg# distribute this file as part of a program that contains a 2502be438aSmrg# configuration script generated by Autoconf, you may include it under 2602be438aSmrg# the same distribution terms that you use for the rest of that program. 2702be438aSmrg 2802be438aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2902be438aSmrg 3002be438aSmrgcase $1 in 3102be438aSmrg '') 3202be438aSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3302be438aSmrg exit 1; 3402be438aSmrg ;; 3502be438aSmrg -h | --h*) 3602be438aSmrg cat <<\EOF 3702be438aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3802be438aSmrg 3902be438aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4002be438aSmrgas side-effects. 4102be438aSmrg 4202be438aSmrgEnvironment variables: 4302be438aSmrg depmode Dependency tracking mode. 4402be438aSmrg source Source file read by `PROGRAMS ARGS'. 4502be438aSmrg object Object file output by `PROGRAMS ARGS'. 4602be438aSmrg DEPDIR directory where to store dependencies. 4702be438aSmrg depfile Dependency file to output. 4802be438aSmrg tmpdepfile Temporary file to use when outputing dependencies. 4902be438aSmrg libtool Whether libtool is used (yes/no). 5002be438aSmrg 5102be438aSmrgReport bugs to <bug-automake@gnu.org>. 5202be438aSmrgEOF 5302be438aSmrg exit $? 5402be438aSmrg ;; 5502be438aSmrg -v | --v*) 5602be438aSmrg echo "depcomp $scriptversion" 5702be438aSmrg exit $? 5802be438aSmrg ;; 5902be438aSmrgesac 6002be438aSmrg 6102be438aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6202be438aSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6302be438aSmrg exit 1 6402be438aSmrgfi 6502be438aSmrg 6602be438aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6702be438aSmrgdepfile=${depfile-`echo "$object" | 6802be438aSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6902be438aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7002be438aSmrg 7102be438aSmrgrm -f "$tmpdepfile" 7202be438aSmrg 7302be438aSmrg# Some modes work just like other modes, but use different flags. We 7402be438aSmrg# parameterize here, but still list the modes in the big case below, 7502be438aSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7602be438aSmrg# here, because this file can only contain one case statement. 7702be438aSmrgif test "$depmode" = hp; then 7802be438aSmrg # HP compiler uses -M and no extra arg. 7902be438aSmrg gccflag=-M 8002be438aSmrg depmode=gcc 8102be438aSmrgfi 8202be438aSmrg 8302be438aSmrgif test "$depmode" = dashXmstdout; then 8402be438aSmrg # This is just like dashmstdout with a different argument. 8502be438aSmrg dashmflag=-xM 8602be438aSmrg depmode=dashmstdout 8702be438aSmrgfi 8802be438aSmrg 8902be438aSmrgcase "$depmode" in 9002be438aSmrggcc3) 9102be438aSmrg## gcc 3 implements dependency tracking that does exactly what 9202be438aSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9302be438aSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 9402be438aSmrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9502be438aSmrg stat=$? 9602be438aSmrg if test $stat -eq 0; then : 9702be438aSmrg else 9802be438aSmrg rm -f "$tmpdepfile" 9902be438aSmrg exit $stat 10002be438aSmrg fi 10102be438aSmrg mv "$tmpdepfile" "$depfile" 10202be438aSmrg ;; 10302be438aSmrg 10402be438aSmrggcc) 10502be438aSmrg## There are various ways to get dependency output from gcc. Here's 10602be438aSmrg## why we pick this rather obscure method: 10702be438aSmrg## - Don't want to use -MD because we'd like the dependencies to end 10802be438aSmrg## up in a subdir. Having to rename by hand is ugly. 10902be438aSmrg## (We might end up doing this anyway to support other compilers.) 11002be438aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11102be438aSmrg## -MM, not -M (despite what the docs say). 11202be438aSmrg## - Using -M directly means running the compiler twice (even worse 11302be438aSmrg## than renaming). 11402be438aSmrg if test -z "$gccflag"; then 11502be438aSmrg gccflag=-MD, 11602be438aSmrg fi 11702be438aSmrg "$@" -Wp,"$gccflag$tmpdepfile" 11802be438aSmrg stat=$? 11902be438aSmrg if test $stat -eq 0; then : 12002be438aSmrg else 12102be438aSmrg rm -f "$tmpdepfile" 12202be438aSmrg exit $stat 12302be438aSmrg fi 12402be438aSmrg rm -f "$depfile" 12502be438aSmrg echo "$object : \\" > "$depfile" 12602be438aSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12702be438aSmrg## The second -e expression handles DOS-style file names with drive letters. 12802be438aSmrg sed -e 's/^[^:]*: / /' \ 12902be438aSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13002be438aSmrg## This next piece of magic avoids the `deleted header file' problem. 13102be438aSmrg## The problem is that when a header file which appears in a .P file 13202be438aSmrg## is deleted, the dependency causes make to die (because there is 13302be438aSmrg## typically no way to rebuild the header). We avoid this by adding 13402be438aSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 13502be438aSmrg## this for us directly. 13602be438aSmrg tr ' ' ' 13702be438aSmrg' < "$tmpdepfile" | 13802be438aSmrg## Some versions of gcc put a space before the `:'. On the theory 13902be438aSmrg## that the space means something, we add a space to the output as 14002be438aSmrg## well. 14102be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 14202be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 14302be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14402be438aSmrg rm -f "$tmpdepfile" 14502be438aSmrg ;; 14602be438aSmrg 14702be438aSmrghp) 14802be438aSmrg # This case exists only to let depend.m4 do its work. It works by 14902be438aSmrg # looking at the text of this script. This case will never be run, 15002be438aSmrg # since it is checked for above. 15102be438aSmrg exit 1 15202be438aSmrg ;; 15302be438aSmrg 15402be438aSmrgsgi) 15502be438aSmrg if test "$libtool" = yes; then 15602be438aSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15702be438aSmrg else 15802be438aSmrg "$@" -MDupdate "$tmpdepfile" 15902be438aSmrg fi 16002be438aSmrg stat=$? 16102be438aSmrg if test $stat -eq 0; then : 16202be438aSmrg else 16302be438aSmrg rm -f "$tmpdepfile" 16402be438aSmrg exit $stat 16502be438aSmrg fi 16602be438aSmrg rm -f "$depfile" 16702be438aSmrg 16802be438aSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16902be438aSmrg echo "$object : \\" > "$depfile" 17002be438aSmrg 17102be438aSmrg # Clip off the initial element (the dependent). Don't try to be 17202be438aSmrg # clever and replace this with sed code, as IRIX sed won't handle 17302be438aSmrg # lines with more than a fixed number of characters (4096 in 17402be438aSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17502be438aSmrg # the IRIX cc adds comments like `#:fec' to the end of the 17602be438aSmrg # dependency line. 17702be438aSmrg tr ' ' ' 17802be438aSmrg' < "$tmpdepfile" \ 17902be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18002be438aSmrg tr ' 18102be438aSmrg' ' ' >> $depfile 18202be438aSmrg echo >> $depfile 18302be438aSmrg 18402be438aSmrg # The second pass generates a dummy entry for each header file. 18502be438aSmrg tr ' ' ' 18602be438aSmrg' < "$tmpdepfile" \ 18702be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18802be438aSmrg >> $depfile 18902be438aSmrg else 19002be438aSmrg # The sourcefile does not contain any dependencies, so just 19102be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 19202be438aSmrg # "include basename.Plo" scheme. 19302be438aSmrg echo "#dummy" > "$depfile" 19402be438aSmrg fi 19502be438aSmrg rm -f "$tmpdepfile" 19602be438aSmrg ;; 19702be438aSmrg 19802be438aSmrgaix) 19902be438aSmrg # The C for AIX Compiler uses -M and outputs the dependencies 20002be438aSmrg # in a .u file. In older versions, this file always lives in the 20102be438aSmrg # current directory. Also, the AIX compiler puts `$object:' at the 20202be438aSmrg # start of each line; $object doesn't have directory information. 20302be438aSmrg # Version 6 uses the directory in both cases. 20402be438aSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20502be438aSmrg tmpdepfile="$stripped.u" 20602be438aSmrg if test "$libtool" = yes; then 20702be438aSmrg "$@" -Wc,-M 20802be438aSmrg else 20902be438aSmrg "$@" -M 21002be438aSmrg fi 21102be438aSmrg stat=$? 21202be438aSmrg 21302be438aSmrg if test -f "$tmpdepfile"; then : 21402be438aSmrg else 21502be438aSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21602be438aSmrg tmpdepfile="$stripped.u" 21702be438aSmrg fi 21802be438aSmrg 21902be438aSmrg if test $stat -eq 0; then : 22002be438aSmrg else 22102be438aSmrg rm -f "$tmpdepfile" 22202be438aSmrg exit $stat 22302be438aSmrg fi 22402be438aSmrg 22502be438aSmrg if test -f "$tmpdepfile"; then 22602be438aSmrg outname="$stripped.o" 22702be438aSmrg # Each line is of the form `foo.o: dependent.h'. 22802be438aSmrg # Do two passes, one to just change these to 22902be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 23002be438aSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23102be438aSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23202be438aSmrg else 23302be438aSmrg # The sourcefile does not contain any dependencies, so just 23402be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 23502be438aSmrg # "include basename.Plo" scheme. 23602be438aSmrg echo "#dummy" > "$depfile" 23702be438aSmrg fi 23802be438aSmrg rm -f "$tmpdepfile" 23902be438aSmrg ;; 24002be438aSmrg 24102be438aSmrgicc) 24202be438aSmrg # Intel's C compiler understands `-MD -MF file'. However on 24302be438aSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24402be438aSmrg # ICC 7.0 will fill foo.d with something like 24502be438aSmrg # foo.o: sub/foo.c 24602be438aSmrg # foo.o: sub/foo.h 24702be438aSmrg # which is wrong. We want: 24802be438aSmrg # sub/foo.o: sub/foo.c 24902be438aSmrg # sub/foo.o: sub/foo.h 25002be438aSmrg # sub/foo.c: 25102be438aSmrg # sub/foo.h: 25202be438aSmrg # ICC 7.1 will output 25302be438aSmrg # foo.o: sub/foo.c sub/foo.h 25402be438aSmrg # and will wrap long lines using \ : 25502be438aSmrg # foo.o: sub/foo.c ... \ 25602be438aSmrg # sub/foo.h ... \ 25702be438aSmrg # ... 25802be438aSmrg 25902be438aSmrg "$@" -MD -MF "$tmpdepfile" 26002be438aSmrg stat=$? 26102be438aSmrg if test $stat -eq 0; then : 26202be438aSmrg else 26302be438aSmrg rm -f "$tmpdepfile" 26402be438aSmrg exit $stat 26502be438aSmrg fi 26602be438aSmrg rm -f "$depfile" 26702be438aSmrg # Each line is of the form `foo.o: dependent.h', 26802be438aSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26902be438aSmrg # Do two passes, one to just change these to 27002be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 27102be438aSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27202be438aSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 27302be438aSmrg # correctly. Breaking it into two sed invocations is a workaround. 27402be438aSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27502be438aSmrg sed -e 's/$/ :/' >> "$depfile" 27602be438aSmrg rm -f "$tmpdepfile" 27702be438aSmrg ;; 27802be438aSmrg 27902be438aSmrgtru64) 28002be438aSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 28102be438aSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28202be438aSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28302be438aSmrg # dependencies in `foo.d' instead, so we check for that too. 28402be438aSmrg # Subdirectories are respected. 28502be438aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28602be438aSmrg test "x$dir" = "x$object" && dir= 28702be438aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28802be438aSmrg 28902be438aSmrg if test "$libtool" = yes; then 29002be438aSmrg # With Tru64 cc, shared objects can also be used to make a 29102be438aSmrg # static library. This mecanism is used in libtool 1.4 series to 29202be438aSmrg # handle both shared and static libraries in a single compilation. 29302be438aSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29402be438aSmrg # 29502be438aSmrg # With libtool 1.5 this exception was removed, and libtool now 29602be438aSmrg # generates 2 separate objects for the 2 libraries. These two 29702be438aSmrg # compilations output dependencies in in $dir.libs/$base.o.d and 29802be438aSmrg # in $dir$base.o.d. We have to check for both files, because 29902be438aSmrg # one of the two compilations can be disabled. We should prefer 30002be438aSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30102be438aSmrg # automatically cleaned when .libs/ is deleted, while ignoring 30202be438aSmrg # the former would cause a distcleancheck panic. 30302be438aSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30402be438aSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30502be438aSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30602be438aSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30702be438aSmrg "$@" -Wc,-MD 30802be438aSmrg else 30902be438aSmrg tmpdepfile1=$dir$base.o.d 31002be438aSmrg tmpdepfile2=$dir$base.d 31102be438aSmrg tmpdepfile3=$dir$base.d 31202be438aSmrg tmpdepfile4=$dir$base.d 31302be438aSmrg "$@" -MD 31402be438aSmrg fi 31502be438aSmrg 31602be438aSmrg stat=$? 31702be438aSmrg if test $stat -eq 0; then : 31802be438aSmrg else 31902be438aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32002be438aSmrg exit $stat 32102be438aSmrg fi 32202be438aSmrg 32302be438aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32402be438aSmrg do 32502be438aSmrg test -f "$tmpdepfile" && break 32602be438aSmrg done 32702be438aSmrg if test -f "$tmpdepfile"; then 32802be438aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32902be438aSmrg # That's a tab and a space in the []. 33002be438aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33102be438aSmrg else 33202be438aSmrg echo "#dummy" > "$depfile" 33302be438aSmrg fi 33402be438aSmrg rm -f "$tmpdepfile" 33502be438aSmrg ;; 33602be438aSmrg 33702be438aSmrg#nosideeffect) 33802be438aSmrg # This comment above is used by automake to tell side-effect 33902be438aSmrg # dependency tracking mechanisms from slower ones. 34002be438aSmrg 34102be438aSmrgdashmstdout) 34202be438aSmrg # Important note: in order to support this mode, a compiler *must* 34302be438aSmrg # always write the preprocessed file to stdout, regardless of -o. 34402be438aSmrg "$@" || exit $? 34502be438aSmrg 34602be438aSmrg # Remove the call to Libtool. 34702be438aSmrg if test "$libtool" = yes; then 34802be438aSmrg while test $1 != '--mode=compile'; do 34902be438aSmrg shift 35002be438aSmrg done 35102be438aSmrg shift 35202be438aSmrg fi 35302be438aSmrg 35402be438aSmrg # Remove `-o $object'. 35502be438aSmrg IFS=" " 35602be438aSmrg for arg 35702be438aSmrg do 35802be438aSmrg case $arg in 35902be438aSmrg -o) 36002be438aSmrg shift 36102be438aSmrg ;; 36202be438aSmrg $object) 36302be438aSmrg shift 36402be438aSmrg ;; 36502be438aSmrg *) 36602be438aSmrg set fnord "$@" "$arg" 36702be438aSmrg shift # fnord 36802be438aSmrg shift # $arg 36902be438aSmrg ;; 37002be438aSmrg esac 37102be438aSmrg done 37202be438aSmrg 37302be438aSmrg test -z "$dashmflag" && dashmflag=-M 37402be438aSmrg # Require at least two characters before searching for `:' 37502be438aSmrg # in the target name. This is to cope with DOS-style filenames: 37602be438aSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37702be438aSmrg "$@" $dashmflag | 37802be438aSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37902be438aSmrg rm -f "$depfile" 38002be438aSmrg cat < "$tmpdepfile" > "$depfile" 38102be438aSmrg tr ' ' ' 38202be438aSmrg' < "$tmpdepfile" | \ 38302be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 38402be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 38502be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38602be438aSmrg rm -f "$tmpdepfile" 38702be438aSmrg ;; 38802be438aSmrg 38902be438aSmrgdashXmstdout) 39002be438aSmrg # This case only exists to satisfy depend.m4. It is never actually 39102be438aSmrg # run, as this mode is specially recognized in the preamble. 39202be438aSmrg exit 1 39302be438aSmrg ;; 39402be438aSmrg 39502be438aSmrgmakedepend) 39602be438aSmrg "$@" || exit $? 39702be438aSmrg # Remove any Libtool call 39802be438aSmrg if test "$libtool" = yes; then 39902be438aSmrg while test $1 != '--mode=compile'; do 40002be438aSmrg shift 40102be438aSmrg done 40202be438aSmrg shift 40302be438aSmrg fi 40402be438aSmrg # X makedepend 40502be438aSmrg shift 40602be438aSmrg cleared=no 40702be438aSmrg for arg in "$@"; do 40802be438aSmrg case $cleared in 40902be438aSmrg no) 41002be438aSmrg set ""; shift 41102be438aSmrg cleared=yes ;; 41202be438aSmrg esac 41302be438aSmrg case "$arg" in 41402be438aSmrg -D*|-I*) 41502be438aSmrg set fnord "$@" "$arg"; shift ;; 41602be438aSmrg # Strip any option that makedepend may not understand. Remove 41702be438aSmrg # the object too, otherwise makedepend will parse it as a source file. 41802be438aSmrg -*|$object) 41902be438aSmrg ;; 42002be438aSmrg *) 42102be438aSmrg set fnord "$@" "$arg"; shift ;; 42202be438aSmrg esac 42302be438aSmrg done 42402be438aSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42502be438aSmrg touch "$tmpdepfile" 42602be438aSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42702be438aSmrg rm -f "$depfile" 42802be438aSmrg cat < "$tmpdepfile" > "$depfile" 42902be438aSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43002be438aSmrg' | \ 43102be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 43202be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 43302be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43402be438aSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43502be438aSmrg ;; 43602be438aSmrg 43702be438aSmrgcpp) 43802be438aSmrg # Important note: in order to support this mode, a compiler *must* 43902be438aSmrg # always write the preprocessed file to stdout. 44002be438aSmrg "$@" || exit $? 44102be438aSmrg 44202be438aSmrg # Remove the call to Libtool. 44302be438aSmrg if test "$libtool" = yes; then 44402be438aSmrg while test $1 != '--mode=compile'; do 44502be438aSmrg shift 44602be438aSmrg done 44702be438aSmrg shift 44802be438aSmrg fi 44902be438aSmrg 45002be438aSmrg # Remove `-o $object'. 45102be438aSmrg IFS=" " 45202be438aSmrg for arg 45302be438aSmrg do 45402be438aSmrg case $arg in 45502be438aSmrg -o) 45602be438aSmrg shift 45702be438aSmrg ;; 45802be438aSmrg $object) 45902be438aSmrg shift 46002be438aSmrg ;; 46102be438aSmrg *) 46202be438aSmrg set fnord "$@" "$arg" 46302be438aSmrg shift # fnord 46402be438aSmrg shift # $arg 46502be438aSmrg ;; 46602be438aSmrg esac 46702be438aSmrg done 46802be438aSmrg 46902be438aSmrg "$@" -E | 47002be438aSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47102be438aSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47202be438aSmrg sed '$ s: \\$::' > "$tmpdepfile" 47302be438aSmrg rm -f "$depfile" 47402be438aSmrg echo "$object : \\" > "$depfile" 47502be438aSmrg cat < "$tmpdepfile" >> "$depfile" 47602be438aSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47702be438aSmrg rm -f "$tmpdepfile" 47802be438aSmrg ;; 47902be438aSmrg 48002be438aSmrgmsvisualcpp) 48102be438aSmrg # Important note: in order to support this mode, a compiler *must* 48202be438aSmrg # always write the preprocessed file to stdout, regardless of -o, 48302be438aSmrg # because we must use -o when running libtool. 48402be438aSmrg "$@" || exit $? 48502be438aSmrg IFS=" " 48602be438aSmrg for arg 48702be438aSmrg do 48802be438aSmrg case "$arg" in 48902be438aSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49002be438aSmrg set fnord "$@" 49102be438aSmrg shift 49202be438aSmrg shift 49302be438aSmrg ;; 49402be438aSmrg *) 49502be438aSmrg set fnord "$@" "$arg" 49602be438aSmrg shift 49702be438aSmrg shift 49802be438aSmrg ;; 49902be438aSmrg esac 50002be438aSmrg done 50102be438aSmrg "$@" -E | 50202be438aSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50302be438aSmrg rm -f "$depfile" 50402be438aSmrg echo "$object : \\" > "$depfile" 50502be438aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50602be438aSmrg echo " " >> "$depfile" 50702be438aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50802be438aSmrg rm -f "$tmpdepfile" 50902be438aSmrg ;; 51002be438aSmrg 51102be438aSmrgnone) 51202be438aSmrg exec "$@" 51302be438aSmrg ;; 51402be438aSmrg 51502be438aSmrg*) 51602be438aSmrg echo "Unknown depmode $depmode" 1>&2 51702be438aSmrg exit 1 51802be438aSmrg ;; 51902be438aSmrgesac 52002be438aSmrg 52102be438aSmrgexit 0 52202be438aSmrg 52302be438aSmrg# Local Variables: 52402be438aSmrg# mode: shell-script 52502be438aSmrg# sh-indentation: 2 52602be438aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52702be438aSmrg# time-stamp-start: "scriptversion=" 52802be438aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52902be438aSmrg# time-stamp-end: "$" 53002be438aSmrg# End: 531