depcomp revision 53354cdb
153354cdbSmrg#! /bin/sh 253354cdbSmrg# depcomp - compile a program generating dependencies as side-effects 353354cdbSmrg 453354cdbSmrgscriptversion=2006-10-15.18 553354cdbSmrg 653354cdbSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software 753354cdbSmrg# Foundation, Inc. 853354cdbSmrg 953354cdbSmrg# This program is free software; you can redistribute it and/or modify 1053354cdbSmrg# it under the terms of the GNU General Public License as published by 1153354cdbSmrg# the Free Software Foundation; either version 2, or (at your option) 1253354cdbSmrg# any later version. 1353354cdbSmrg 1453354cdbSmrg# This program is distributed in the hope that it will be useful, 1553354cdbSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1653354cdbSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1753354cdbSmrg# GNU General Public License for more details. 1853354cdbSmrg 1953354cdbSmrg# You should have received a copy of the GNU General Public License 2053354cdbSmrg# along with this program; if not, write to the Free Software 2153354cdbSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2253354cdbSmrg# 02110-1301, USA. 2353354cdbSmrg 2453354cdbSmrg# As a special exception to the GNU General Public License, if you 2553354cdbSmrg# distribute this file as part of a program that contains a 2653354cdbSmrg# configuration script generated by Autoconf, you may include it under 2753354cdbSmrg# the same distribution terms that you use for the rest of that program. 2853354cdbSmrg 2953354cdbSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 3053354cdbSmrg 3153354cdbSmrgcase $1 in 3253354cdbSmrg '') 3353354cdbSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3453354cdbSmrg exit 1; 3553354cdbSmrg ;; 3653354cdbSmrg -h | --h*) 3753354cdbSmrg cat <<\EOF 3853354cdbSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3953354cdbSmrg 4053354cdbSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4153354cdbSmrgas side-effects. 4253354cdbSmrg 4353354cdbSmrgEnvironment variables: 4453354cdbSmrg depmode Dependency tracking mode. 4553354cdbSmrg source Source file read by `PROGRAMS ARGS'. 4653354cdbSmrg object Object file output by `PROGRAMS ARGS'. 4753354cdbSmrg DEPDIR directory where to store dependencies. 4853354cdbSmrg depfile Dependency file to output. 4953354cdbSmrg tmpdepfile Temporary file to use when outputing dependencies. 5053354cdbSmrg libtool Whether libtool is used (yes/no). 5153354cdbSmrg 5253354cdbSmrgReport bugs to <bug-automake@gnu.org>. 5353354cdbSmrgEOF 5453354cdbSmrg exit $? 5553354cdbSmrg ;; 5653354cdbSmrg -v | --v*) 5753354cdbSmrg echo "depcomp $scriptversion" 5853354cdbSmrg exit $? 5953354cdbSmrg ;; 6053354cdbSmrgesac 6153354cdbSmrg 6253354cdbSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6353354cdbSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6453354cdbSmrg exit 1 6553354cdbSmrgfi 6653354cdbSmrg 6753354cdbSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6853354cdbSmrgdepfile=${depfile-`echo "$object" | 6953354cdbSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 7053354cdbSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7153354cdbSmrg 7253354cdbSmrgrm -f "$tmpdepfile" 7353354cdbSmrg 7453354cdbSmrg# Some modes work just like other modes, but use different flags. We 7553354cdbSmrg# parameterize here, but still list the modes in the big case below, 7653354cdbSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7753354cdbSmrg# here, because this file can only contain one case statement. 7853354cdbSmrgif test "$depmode" = hp; then 7953354cdbSmrg # HP compiler uses -M and no extra arg. 8053354cdbSmrg gccflag=-M 8153354cdbSmrg depmode=gcc 8253354cdbSmrgfi 8353354cdbSmrg 8453354cdbSmrgif test "$depmode" = dashXmstdout; then 8553354cdbSmrg # This is just like dashmstdout with a different argument. 8653354cdbSmrg dashmflag=-xM 8753354cdbSmrg depmode=dashmstdout 8853354cdbSmrgfi 8953354cdbSmrg 9053354cdbSmrgcase "$depmode" in 9153354cdbSmrggcc3) 9253354cdbSmrg## gcc 3 implements dependency tracking that does exactly what 9353354cdbSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9453354cdbSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 9553354cdbSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 9653354cdbSmrg## the command line argument order; so add the flags where they 9753354cdbSmrg## appear in depend2.am. Note that the slowdown incurred here 9853354cdbSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 9953354cdbSmrg for arg 10053354cdbSmrg do 10153354cdbSmrg case $arg in 10253354cdbSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 10353354cdbSmrg *) set fnord "$@" "$arg" ;; 10453354cdbSmrg esac 10553354cdbSmrg shift # fnord 10653354cdbSmrg shift # $arg 10753354cdbSmrg done 10853354cdbSmrg "$@" 10953354cdbSmrg stat=$? 11053354cdbSmrg if test $stat -eq 0; then : 11153354cdbSmrg else 11253354cdbSmrg rm -f "$tmpdepfile" 11353354cdbSmrg exit $stat 11453354cdbSmrg fi 11553354cdbSmrg mv "$tmpdepfile" "$depfile" 11653354cdbSmrg ;; 11753354cdbSmrg 11853354cdbSmrggcc) 11953354cdbSmrg## There are various ways to get dependency output from gcc. Here's 12053354cdbSmrg## why we pick this rather obscure method: 12153354cdbSmrg## - Don't want to use -MD because we'd like the dependencies to end 12253354cdbSmrg## up in a subdir. Having to rename by hand is ugly. 12353354cdbSmrg## (We might end up doing this anyway to support other compilers.) 12453354cdbSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 12553354cdbSmrg## -MM, not -M (despite what the docs say). 12653354cdbSmrg## - Using -M directly means running the compiler twice (even worse 12753354cdbSmrg## than renaming). 12853354cdbSmrg if test -z "$gccflag"; then 12953354cdbSmrg gccflag=-MD, 13053354cdbSmrg fi 13153354cdbSmrg "$@" -Wp,"$gccflag$tmpdepfile" 13253354cdbSmrg stat=$? 13353354cdbSmrg if test $stat -eq 0; then : 13453354cdbSmrg else 13553354cdbSmrg rm -f "$tmpdepfile" 13653354cdbSmrg exit $stat 13753354cdbSmrg fi 13853354cdbSmrg rm -f "$depfile" 13953354cdbSmrg echo "$object : \\" > "$depfile" 14053354cdbSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14153354cdbSmrg## The second -e expression handles DOS-style file names with drive letters. 14253354cdbSmrg sed -e 's/^[^:]*: / /' \ 14353354cdbSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 14453354cdbSmrg## This next piece of magic avoids the `deleted header file' problem. 14553354cdbSmrg## The problem is that when a header file which appears in a .P file 14653354cdbSmrg## is deleted, the dependency causes make to die (because there is 14753354cdbSmrg## typically no way to rebuild the header). We avoid this by adding 14853354cdbSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 14953354cdbSmrg## this for us directly. 15053354cdbSmrg tr ' ' ' 15153354cdbSmrg' < "$tmpdepfile" | 15253354cdbSmrg## Some versions of gcc put a space before the `:'. On the theory 15353354cdbSmrg## that the space means something, we add a space to the output as 15453354cdbSmrg## well. 15553354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 15653354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 15753354cdbSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 15853354cdbSmrg rm -f "$tmpdepfile" 15953354cdbSmrg ;; 16053354cdbSmrg 16153354cdbSmrghp) 16253354cdbSmrg # This case exists only to let depend.m4 do its work. It works by 16353354cdbSmrg # looking at the text of this script. This case will never be run, 16453354cdbSmrg # since it is checked for above. 16553354cdbSmrg exit 1 16653354cdbSmrg ;; 16753354cdbSmrg 16853354cdbSmrgsgi) 16953354cdbSmrg if test "$libtool" = yes; then 17053354cdbSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17153354cdbSmrg else 17253354cdbSmrg "$@" -MDupdate "$tmpdepfile" 17353354cdbSmrg fi 17453354cdbSmrg stat=$? 17553354cdbSmrg if test $stat -eq 0; then : 17653354cdbSmrg else 17753354cdbSmrg rm -f "$tmpdepfile" 17853354cdbSmrg exit $stat 17953354cdbSmrg fi 18053354cdbSmrg rm -f "$depfile" 18153354cdbSmrg 18253354cdbSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 18353354cdbSmrg echo "$object : \\" > "$depfile" 18453354cdbSmrg 18553354cdbSmrg # Clip off the initial element (the dependent). Don't try to be 18653354cdbSmrg # clever and replace this with sed code, as IRIX sed won't handle 18753354cdbSmrg # lines with more than a fixed number of characters (4096 in 18853354cdbSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 18953354cdbSmrg # the IRIX cc adds comments like `#:fec' to the end of the 19053354cdbSmrg # dependency line. 19153354cdbSmrg tr ' ' ' 19253354cdbSmrg' < "$tmpdepfile" \ 19353354cdbSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 19453354cdbSmrg tr ' 19553354cdbSmrg' ' ' >> $depfile 19653354cdbSmrg echo >> $depfile 19753354cdbSmrg 19853354cdbSmrg # The second pass generates a dummy entry for each header file. 19953354cdbSmrg tr ' ' ' 20053354cdbSmrg' < "$tmpdepfile" \ 20153354cdbSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 20253354cdbSmrg >> $depfile 20353354cdbSmrg else 20453354cdbSmrg # The sourcefile does not contain any dependencies, so just 20553354cdbSmrg # store a dummy comment line, to avoid errors with the Makefile 20653354cdbSmrg # "include basename.Plo" scheme. 20753354cdbSmrg echo "#dummy" > "$depfile" 20853354cdbSmrg fi 20953354cdbSmrg rm -f "$tmpdepfile" 21053354cdbSmrg ;; 21153354cdbSmrg 21253354cdbSmrgaix) 21353354cdbSmrg # The C for AIX Compiler uses -M and outputs the dependencies 21453354cdbSmrg # in a .u file. In older versions, this file always lives in the 21553354cdbSmrg # current directory. Also, the AIX compiler puts `$object:' at the 21653354cdbSmrg # start of each line; $object doesn't have directory information. 21753354cdbSmrg # Version 6 uses the directory in both cases. 21853354cdbSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 21953354cdbSmrg tmpdepfile="$stripped.u" 22053354cdbSmrg if test "$libtool" = yes; then 22153354cdbSmrg "$@" -Wc,-M 22253354cdbSmrg else 22353354cdbSmrg "$@" -M 22453354cdbSmrg fi 22553354cdbSmrg stat=$? 22653354cdbSmrg 22753354cdbSmrg if test -f "$tmpdepfile"; then : 22853354cdbSmrg else 22953354cdbSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 23053354cdbSmrg tmpdepfile="$stripped.u" 23153354cdbSmrg fi 23253354cdbSmrg 23353354cdbSmrg if test $stat -eq 0; then : 23453354cdbSmrg else 23553354cdbSmrg rm -f "$tmpdepfile" 23653354cdbSmrg exit $stat 23753354cdbSmrg fi 23853354cdbSmrg 23953354cdbSmrg if test -f "$tmpdepfile"; then 24053354cdbSmrg outname="$stripped.o" 24153354cdbSmrg # Each line is of the form `foo.o: dependent.h'. 24253354cdbSmrg # Do two passes, one to just change these to 24353354cdbSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 24453354cdbSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 24553354cdbSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 24653354cdbSmrg else 24753354cdbSmrg # The sourcefile does not contain any dependencies, so just 24853354cdbSmrg # store a dummy comment line, to avoid errors with the Makefile 24953354cdbSmrg # "include basename.Plo" scheme. 25053354cdbSmrg echo "#dummy" > "$depfile" 25153354cdbSmrg fi 25253354cdbSmrg rm -f "$tmpdepfile" 25353354cdbSmrg ;; 25453354cdbSmrg 25553354cdbSmrgicc) 25653354cdbSmrg # Intel's C compiler understands `-MD -MF file'. However on 25753354cdbSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 25853354cdbSmrg # ICC 7.0 will fill foo.d with something like 25953354cdbSmrg # foo.o: sub/foo.c 26053354cdbSmrg # foo.o: sub/foo.h 26153354cdbSmrg # which is wrong. We want: 26253354cdbSmrg # sub/foo.o: sub/foo.c 26353354cdbSmrg # sub/foo.o: sub/foo.h 26453354cdbSmrg # sub/foo.c: 26553354cdbSmrg # sub/foo.h: 26653354cdbSmrg # ICC 7.1 will output 26753354cdbSmrg # foo.o: sub/foo.c sub/foo.h 26853354cdbSmrg # and will wrap long lines using \ : 26953354cdbSmrg # foo.o: sub/foo.c ... \ 27053354cdbSmrg # sub/foo.h ... \ 27153354cdbSmrg # ... 27253354cdbSmrg 27353354cdbSmrg "$@" -MD -MF "$tmpdepfile" 27453354cdbSmrg stat=$? 27553354cdbSmrg if test $stat -eq 0; then : 27653354cdbSmrg else 27753354cdbSmrg rm -f "$tmpdepfile" 27853354cdbSmrg exit $stat 27953354cdbSmrg fi 28053354cdbSmrg rm -f "$depfile" 28153354cdbSmrg # Each line is of the form `foo.o: dependent.h', 28253354cdbSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 28353354cdbSmrg # Do two passes, one to just change these to 28453354cdbSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 28553354cdbSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 28653354cdbSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 28753354cdbSmrg # correctly. Breaking it into two sed invocations is a workaround. 28853354cdbSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 28953354cdbSmrg sed -e 's/$/ :/' >> "$depfile" 29053354cdbSmrg rm -f "$tmpdepfile" 29153354cdbSmrg ;; 29253354cdbSmrg 29353354cdbSmrghp2) 29453354cdbSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 29553354cdbSmrg # compilers, which have integrated preprocessors. The correct option 29653354cdbSmrg # to use with these is +Maked; it writes dependencies to a file named 29753354cdbSmrg # 'foo.d', which lands next to the object file, wherever that 29853354cdbSmrg # happens to be. 29953354cdbSmrg # Much of this is similar to the tru64 case; see comments there. 30053354cdbSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 30153354cdbSmrg test "x$dir" = "x$object" && dir= 30253354cdbSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 30353354cdbSmrg if test "$libtool" = yes; then 30453354cdbSmrg tmpdepfile1=$dir$base.d 30553354cdbSmrg tmpdepfile2=$dir.libs/$base.d 30653354cdbSmrg "$@" -Wc,+Maked 30753354cdbSmrg else 30853354cdbSmrg tmpdepfile1=$dir$base.d 30953354cdbSmrg tmpdepfile2=$dir$base.d 31053354cdbSmrg "$@" +Maked 31153354cdbSmrg fi 31253354cdbSmrg stat=$? 31353354cdbSmrg if test $stat -eq 0; then : 31453354cdbSmrg else 31553354cdbSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 31653354cdbSmrg exit $stat 31753354cdbSmrg fi 31853354cdbSmrg 31953354cdbSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 32053354cdbSmrg do 32153354cdbSmrg test -f "$tmpdepfile" && break 32253354cdbSmrg done 32353354cdbSmrg if test -f "$tmpdepfile"; then 32453354cdbSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 32553354cdbSmrg # Add `dependent.h:' lines. 32653354cdbSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 32753354cdbSmrg else 32853354cdbSmrg echo "#dummy" > "$depfile" 32953354cdbSmrg fi 33053354cdbSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 33153354cdbSmrg ;; 33253354cdbSmrg 33353354cdbSmrgtru64) 33453354cdbSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 33553354cdbSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 33653354cdbSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 33753354cdbSmrg # dependencies in `foo.d' instead, so we check for that too. 33853354cdbSmrg # Subdirectories are respected. 33953354cdbSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 34053354cdbSmrg test "x$dir" = "x$object" && dir= 34153354cdbSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 34253354cdbSmrg 34353354cdbSmrg if test "$libtool" = yes; then 34453354cdbSmrg # With Tru64 cc, shared objects can also be used to make a 34553354cdbSmrg # static library. This mechanism is used in libtool 1.4 series to 34653354cdbSmrg # handle both shared and static libraries in a single compilation. 34753354cdbSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 34853354cdbSmrg # 34953354cdbSmrg # With libtool 1.5 this exception was removed, and libtool now 35053354cdbSmrg # generates 2 separate objects for the 2 libraries. These two 35153354cdbSmrg # compilations output dependencies in $dir.libs/$base.o.d and 35253354cdbSmrg # in $dir$base.o.d. We have to check for both files, because 35353354cdbSmrg # one of the two compilations can be disabled. We should prefer 35453354cdbSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 35553354cdbSmrg # automatically cleaned when .libs/ is deleted, while ignoring 35653354cdbSmrg # the former would cause a distcleancheck panic. 35753354cdbSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 35853354cdbSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 35953354cdbSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 36053354cdbSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 36153354cdbSmrg "$@" -Wc,-MD 36253354cdbSmrg else 36353354cdbSmrg tmpdepfile1=$dir$base.o.d 36453354cdbSmrg tmpdepfile2=$dir$base.d 36553354cdbSmrg tmpdepfile3=$dir$base.d 36653354cdbSmrg tmpdepfile4=$dir$base.d 36753354cdbSmrg "$@" -MD 36853354cdbSmrg fi 36953354cdbSmrg 37053354cdbSmrg stat=$? 37153354cdbSmrg if test $stat -eq 0; then : 37253354cdbSmrg else 37353354cdbSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37453354cdbSmrg exit $stat 37553354cdbSmrg fi 37653354cdbSmrg 37753354cdbSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37853354cdbSmrg do 37953354cdbSmrg test -f "$tmpdepfile" && break 38053354cdbSmrg done 38153354cdbSmrg if test -f "$tmpdepfile"; then 38253354cdbSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 38353354cdbSmrg # That's a tab and a space in the []. 38453354cdbSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 38553354cdbSmrg else 38653354cdbSmrg echo "#dummy" > "$depfile" 38753354cdbSmrg fi 38853354cdbSmrg rm -f "$tmpdepfile" 38953354cdbSmrg ;; 39053354cdbSmrg 39153354cdbSmrg#nosideeffect) 39253354cdbSmrg # This comment above is used by automake to tell side-effect 39353354cdbSmrg # dependency tracking mechanisms from slower ones. 39453354cdbSmrg 39553354cdbSmrgdashmstdout) 39653354cdbSmrg # Important note: in order to support this mode, a compiler *must* 39753354cdbSmrg # always write the preprocessed file to stdout, regardless of -o. 39853354cdbSmrg "$@" || exit $? 39953354cdbSmrg 40053354cdbSmrg # Remove the call to Libtool. 40153354cdbSmrg if test "$libtool" = yes; then 40253354cdbSmrg while test $1 != '--mode=compile'; do 40353354cdbSmrg shift 40453354cdbSmrg done 40553354cdbSmrg shift 40653354cdbSmrg fi 40753354cdbSmrg 40853354cdbSmrg # Remove `-o $object'. 40953354cdbSmrg IFS=" " 41053354cdbSmrg for arg 41153354cdbSmrg do 41253354cdbSmrg case $arg in 41353354cdbSmrg -o) 41453354cdbSmrg shift 41553354cdbSmrg ;; 41653354cdbSmrg $object) 41753354cdbSmrg shift 41853354cdbSmrg ;; 41953354cdbSmrg *) 42053354cdbSmrg set fnord "$@" "$arg" 42153354cdbSmrg shift # fnord 42253354cdbSmrg shift # $arg 42353354cdbSmrg ;; 42453354cdbSmrg esac 42553354cdbSmrg done 42653354cdbSmrg 42753354cdbSmrg test -z "$dashmflag" && dashmflag=-M 42853354cdbSmrg # Require at least two characters before searching for `:' 42953354cdbSmrg # in the target name. This is to cope with DOS-style filenames: 43053354cdbSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 43153354cdbSmrg "$@" $dashmflag | 43253354cdbSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 43353354cdbSmrg rm -f "$depfile" 43453354cdbSmrg cat < "$tmpdepfile" > "$depfile" 43553354cdbSmrg tr ' ' ' 43653354cdbSmrg' < "$tmpdepfile" | \ 43753354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 43853354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 43953354cdbSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 44053354cdbSmrg rm -f "$tmpdepfile" 44153354cdbSmrg ;; 44253354cdbSmrg 44353354cdbSmrgdashXmstdout) 44453354cdbSmrg # This case only exists to satisfy depend.m4. It is never actually 44553354cdbSmrg # run, as this mode is specially recognized in the preamble. 44653354cdbSmrg exit 1 44753354cdbSmrg ;; 44853354cdbSmrg 44953354cdbSmrgmakedepend) 45053354cdbSmrg "$@" || exit $? 45153354cdbSmrg # Remove any Libtool call 45253354cdbSmrg if test "$libtool" = yes; then 45353354cdbSmrg while test $1 != '--mode=compile'; do 45453354cdbSmrg shift 45553354cdbSmrg done 45653354cdbSmrg shift 45753354cdbSmrg fi 45853354cdbSmrg # X makedepend 45953354cdbSmrg shift 46053354cdbSmrg cleared=no 46153354cdbSmrg for arg in "$@"; do 46253354cdbSmrg case $cleared in 46353354cdbSmrg no) 46453354cdbSmrg set ""; shift 46553354cdbSmrg cleared=yes ;; 46653354cdbSmrg esac 46753354cdbSmrg case "$arg" in 46853354cdbSmrg -D*|-I*) 46953354cdbSmrg set fnord "$@" "$arg"; shift ;; 47053354cdbSmrg # Strip any option that makedepend may not understand. Remove 47153354cdbSmrg # the object too, otherwise makedepend will parse it as a source file. 47253354cdbSmrg -*|$object) 47353354cdbSmrg ;; 47453354cdbSmrg *) 47553354cdbSmrg set fnord "$@" "$arg"; shift ;; 47653354cdbSmrg esac 47753354cdbSmrg done 47853354cdbSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 47953354cdbSmrg touch "$tmpdepfile" 48053354cdbSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 48153354cdbSmrg rm -f "$depfile" 48253354cdbSmrg cat < "$tmpdepfile" > "$depfile" 48353354cdbSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 48453354cdbSmrg' | \ 48553354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 48653354cdbSmrg## correctly. Breaking it into two sed invocations is a workaround. 48753354cdbSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 48853354cdbSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 48953354cdbSmrg ;; 49053354cdbSmrg 49153354cdbSmrgcpp) 49253354cdbSmrg # Important note: in order to support this mode, a compiler *must* 49353354cdbSmrg # always write the preprocessed file to stdout. 49453354cdbSmrg "$@" || exit $? 49553354cdbSmrg 49653354cdbSmrg # Remove the call to Libtool. 49753354cdbSmrg if test "$libtool" = yes; then 49853354cdbSmrg while test $1 != '--mode=compile'; do 49953354cdbSmrg shift 50053354cdbSmrg done 50153354cdbSmrg shift 50253354cdbSmrg fi 50353354cdbSmrg 50453354cdbSmrg # Remove `-o $object'. 50553354cdbSmrg IFS=" " 50653354cdbSmrg for arg 50753354cdbSmrg do 50853354cdbSmrg case $arg in 50953354cdbSmrg -o) 51053354cdbSmrg shift 51153354cdbSmrg ;; 51253354cdbSmrg $object) 51353354cdbSmrg shift 51453354cdbSmrg ;; 51553354cdbSmrg *) 51653354cdbSmrg set fnord "$@" "$arg" 51753354cdbSmrg shift # fnord 51853354cdbSmrg shift # $arg 51953354cdbSmrg ;; 52053354cdbSmrg esac 52153354cdbSmrg done 52253354cdbSmrg 52353354cdbSmrg "$@" -E | 52453354cdbSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 52553354cdbSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 52653354cdbSmrg sed '$ s: \\$::' > "$tmpdepfile" 52753354cdbSmrg rm -f "$depfile" 52853354cdbSmrg echo "$object : \\" > "$depfile" 52953354cdbSmrg cat < "$tmpdepfile" >> "$depfile" 53053354cdbSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 53153354cdbSmrg rm -f "$tmpdepfile" 53253354cdbSmrg ;; 53353354cdbSmrg 53453354cdbSmrgmsvisualcpp) 53553354cdbSmrg # Important note: in order to support this mode, a compiler *must* 53653354cdbSmrg # always write the preprocessed file to stdout, regardless of -o, 53753354cdbSmrg # because we must use -o when running libtool. 53853354cdbSmrg "$@" || exit $? 53953354cdbSmrg IFS=" " 54053354cdbSmrg for arg 54153354cdbSmrg do 54253354cdbSmrg case "$arg" in 54353354cdbSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 54453354cdbSmrg set fnord "$@" 54553354cdbSmrg shift 54653354cdbSmrg shift 54753354cdbSmrg ;; 54853354cdbSmrg *) 54953354cdbSmrg set fnord "$@" "$arg" 55053354cdbSmrg shift 55153354cdbSmrg shift 55253354cdbSmrg ;; 55353354cdbSmrg esac 55453354cdbSmrg done 55553354cdbSmrg "$@" -E | 55653354cdbSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 55753354cdbSmrg rm -f "$depfile" 55853354cdbSmrg echo "$object : \\" > "$depfile" 55953354cdbSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 56053354cdbSmrg echo " " >> "$depfile" 56153354cdbSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 56253354cdbSmrg rm -f "$tmpdepfile" 56353354cdbSmrg ;; 56453354cdbSmrg 56553354cdbSmrgnone) 56653354cdbSmrg exec "$@" 56753354cdbSmrg ;; 56853354cdbSmrg 56953354cdbSmrg*) 57053354cdbSmrg echo "Unknown depmode $depmode" 1>&2 57153354cdbSmrg exit 1 57253354cdbSmrg ;; 57353354cdbSmrgesac 57453354cdbSmrg 57553354cdbSmrgexit 0 57653354cdbSmrg 57753354cdbSmrg# Local Variables: 57853354cdbSmrg# mode: shell-script 57953354cdbSmrg# sh-indentation: 2 58053354cdbSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 58153354cdbSmrg# time-stamp-start: "scriptversion=" 58253354cdbSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 58353354cdbSmrg# time-stamp-end: "$" 58453354cdbSmrg# End: 585