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