depcomp revision fb23d3a8
164ce7165Smrg#! /bin/sh 264ce7165Smrg# depcomp - compile a program generating dependencies as side-effects 364ce7165Smrg 4fb23d3a8Smrgscriptversion=2009-04-28.21; # UTC 564ce7165Smrg 6fb23d3a8Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7fb23d3a8Smrg# Software Foundation, Inc. 864ce7165Smrg 964ce7165Smrg# This program is free software; you can redistribute it and/or modify 1064ce7165Smrg# it under the terms of the GNU General Public License as published by 1164ce7165Smrg# the Free Software Foundation; either version 2, or (at your option) 1264ce7165Smrg# any later version. 1364ce7165Smrg 1464ce7165Smrg# This program is distributed in the hope that it will be useful, 1564ce7165Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1664ce7165Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1764ce7165Smrg# GNU General Public License for more details. 1864ce7165Smrg 1964ce7165Smrg# You should have received a copy of the GNU General Public License 20fb23d3a8Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2164ce7165Smrg 2264ce7165Smrg# As a special exception to the GNU General Public License, if you 2364ce7165Smrg# distribute this file as part of a program that contains a 2464ce7165Smrg# configuration script generated by Autoconf, you may include it under 2564ce7165Smrg# the same distribution terms that you use for the rest of that program. 2664ce7165Smrg 2764ce7165Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2864ce7165Smrg 2964ce7165Smrgcase $1 in 3064ce7165Smrg '') 3164ce7165Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3264ce7165Smrg exit 1; 3364ce7165Smrg ;; 3464ce7165Smrg -h | --h*) 3564ce7165Smrg cat <<\EOF 3664ce7165SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3764ce7165Smrg 3864ce7165SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3964ce7165Smrgas side-effects. 4064ce7165Smrg 4164ce7165SmrgEnvironment variables: 4264ce7165Smrg depmode Dependency tracking mode. 4364ce7165Smrg source Source file read by `PROGRAMS ARGS'. 4464ce7165Smrg object Object file output by `PROGRAMS ARGS'. 4564ce7165Smrg DEPDIR directory where to store dependencies. 4664ce7165Smrg depfile Dependency file to output. 4764ce7165Smrg tmpdepfile Temporary file to use when outputing dependencies. 4864ce7165Smrg libtool Whether libtool is used (yes/no). 4964ce7165Smrg 5064ce7165SmrgReport bugs to <bug-automake@gnu.org>. 5164ce7165SmrgEOF 5264ce7165Smrg exit $? 5364ce7165Smrg ;; 5464ce7165Smrg -v | --v*) 5564ce7165Smrg echo "depcomp $scriptversion" 5664ce7165Smrg exit $? 5764ce7165Smrg ;; 5864ce7165Smrgesac 5964ce7165Smrg 6064ce7165Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6164ce7165Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6264ce7165Smrg exit 1 6364ce7165Smrgfi 6464ce7165Smrg 6564ce7165Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6664ce7165Smrgdepfile=${depfile-`echo "$object" | 6764ce7165Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6864ce7165Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6964ce7165Smrg 7064ce7165Smrgrm -f "$tmpdepfile" 7164ce7165Smrg 7264ce7165Smrg# Some modes work just like other modes, but use different flags. We 7364ce7165Smrg# parameterize here, but still list the modes in the big case below, 7464ce7165Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7564ce7165Smrg# here, because this file can only contain one case statement. 7664ce7165Smrgif test "$depmode" = hp; then 7764ce7165Smrg # HP compiler uses -M and no extra arg. 7864ce7165Smrg gccflag=-M 7964ce7165Smrg depmode=gcc 8064ce7165Smrgfi 8164ce7165Smrg 8264ce7165Smrgif test "$depmode" = dashXmstdout; then 8364ce7165Smrg # This is just like dashmstdout with a different argument. 8464ce7165Smrg dashmflag=-xM 8564ce7165Smrg depmode=dashmstdout 8664ce7165Smrgfi 8764ce7165Smrg 88fb23d3a8Smrgcygpath_u="cygpath -u -f -" 89fb23d3a8Smrgif test "$depmode" = msvcmsys; then 90fb23d3a8Smrg # This is just like msvisualcpp but w/o cygpath translation. 91fb23d3a8Smrg # Just convert the backslash-escaped backslashes to single forward 92fb23d3a8Smrg # slashes to satisfy depend.m4 93fb23d3a8Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94fb23d3a8Smrg depmode=msvisualcpp 95fb23d3a8Smrgfi 96fb23d3a8Smrg 9764ce7165Smrgcase "$depmode" in 9864ce7165Smrggcc3) 9964ce7165Smrg## gcc 3 implements dependency tracking that does exactly what 10064ce7165Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10164ce7165Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 10264ce7165Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 10364ce7165Smrg## the command line argument order; so add the flags where they 10464ce7165Smrg## appear in depend2.am. Note that the slowdown incurred here 10564ce7165Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 10664ce7165Smrg for arg 10764ce7165Smrg do 10864ce7165Smrg case $arg in 10964ce7165Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 11064ce7165Smrg *) set fnord "$@" "$arg" ;; 11164ce7165Smrg esac 11264ce7165Smrg shift # fnord 11364ce7165Smrg shift # $arg 11464ce7165Smrg done 11564ce7165Smrg "$@" 11664ce7165Smrg stat=$? 11764ce7165Smrg if test $stat -eq 0; then : 11864ce7165Smrg else 11964ce7165Smrg rm -f "$tmpdepfile" 12064ce7165Smrg exit $stat 12164ce7165Smrg fi 12264ce7165Smrg mv "$tmpdepfile" "$depfile" 12364ce7165Smrg ;; 12464ce7165Smrg 12564ce7165Smrggcc) 12664ce7165Smrg## There are various ways to get dependency output from gcc. Here's 12764ce7165Smrg## why we pick this rather obscure method: 12864ce7165Smrg## - Don't want to use -MD because we'd like the dependencies to end 12964ce7165Smrg## up in a subdir. Having to rename by hand is ugly. 13064ce7165Smrg## (We might end up doing this anyway to support other compilers.) 13164ce7165Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 13264ce7165Smrg## -MM, not -M (despite what the docs say). 13364ce7165Smrg## - Using -M directly means running the compiler twice (even worse 13464ce7165Smrg## than renaming). 13564ce7165Smrg if test -z "$gccflag"; then 13664ce7165Smrg gccflag=-MD, 13764ce7165Smrg fi 13864ce7165Smrg "$@" -Wp,"$gccflag$tmpdepfile" 13964ce7165Smrg stat=$? 14064ce7165Smrg if test $stat -eq 0; then : 14164ce7165Smrg else 14264ce7165Smrg rm -f "$tmpdepfile" 14364ce7165Smrg exit $stat 14464ce7165Smrg fi 14564ce7165Smrg rm -f "$depfile" 14664ce7165Smrg echo "$object : \\" > "$depfile" 14764ce7165Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14864ce7165Smrg## The second -e expression handles DOS-style file names with drive letters. 14964ce7165Smrg sed -e 's/^[^:]*: / /' \ 15064ce7165Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15164ce7165Smrg## This next piece of magic avoids the `deleted header file' problem. 15264ce7165Smrg## The problem is that when a header file which appears in a .P file 15364ce7165Smrg## is deleted, the dependency causes make to die (because there is 15464ce7165Smrg## typically no way to rebuild the header). We avoid this by adding 15564ce7165Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 15664ce7165Smrg## this for us directly. 15764ce7165Smrg tr ' ' ' 15864ce7165Smrg' < "$tmpdepfile" | 15964ce7165Smrg## Some versions of gcc put a space before the `:'. On the theory 16064ce7165Smrg## that the space means something, we add a space to the output as 16164ce7165Smrg## well. 16264ce7165Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 16364ce7165Smrg## correctly. Breaking it into two sed invocations is a workaround. 16464ce7165Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 16564ce7165Smrg rm -f "$tmpdepfile" 16664ce7165Smrg ;; 16764ce7165Smrg 16864ce7165Smrghp) 16964ce7165Smrg # This case exists only to let depend.m4 do its work. It works by 17064ce7165Smrg # looking at the text of this script. This case will never be run, 17164ce7165Smrg # since it is checked for above. 17264ce7165Smrg exit 1 17364ce7165Smrg ;; 17464ce7165Smrg 17564ce7165Smrgsgi) 17664ce7165Smrg if test "$libtool" = yes; then 17764ce7165Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17864ce7165Smrg else 17964ce7165Smrg "$@" -MDupdate "$tmpdepfile" 18064ce7165Smrg fi 18164ce7165Smrg stat=$? 18264ce7165Smrg if test $stat -eq 0; then : 18364ce7165Smrg else 18464ce7165Smrg rm -f "$tmpdepfile" 18564ce7165Smrg exit $stat 18664ce7165Smrg fi 18764ce7165Smrg rm -f "$depfile" 18864ce7165Smrg 18964ce7165Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 19064ce7165Smrg echo "$object : \\" > "$depfile" 19164ce7165Smrg 19264ce7165Smrg # Clip off the initial element (the dependent). Don't try to be 19364ce7165Smrg # clever and replace this with sed code, as IRIX sed won't handle 19464ce7165Smrg # lines with more than a fixed number of characters (4096 in 19564ce7165Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 19664ce7165Smrg # the IRIX cc adds comments like `#:fec' to the end of the 19764ce7165Smrg # dependency line. 19864ce7165Smrg tr ' ' ' 19964ce7165Smrg' < "$tmpdepfile" \ 20064ce7165Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 20164ce7165Smrg tr ' 202fb23d3a8Smrg' ' ' >> "$depfile" 203fb23d3a8Smrg echo >> "$depfile" 20464ce7165Smrg 20564ce7165Smrg # The second pass generates a dummy entry for each header file. 20664ce7165Smrg tr ' ' ' 20764ce7165Smrg' < "$tmpdepfile" \ 20864ce7165Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209fb23d3a8Smrg >> "$depfile" 21064ce7165Smrg else 21164ce7165Smrg # The sourcefile does not contain any dependencies, so just 21264ce7165Smrg # store a dummy comment line, to avoid errors with the Makefile 21364ce7165Smrg # "include basename.Plo" scheme. 21464ce7165Smrg echo "#dummy" > "$depfile" 21564ce7165Smrg fi 21664ce7165Smrg rm -f "$tmpdepfile" 21764ce7165Smrg ;; 21864ce7165Smrg 21964ce7165Smrgaix) 22064ce7165Smrg # The C for AIX Compiler uses -M and outputs the dependencies 22164ce7165Smrg # in a .u file. In older versions, this file always lives in the 22264ce7165Smrg # current directory. Also, the AIX compiler puts `$object:' at the 22364ce7165Smrg # start of each line; $object doesn't have directory information. 22464ce7165Smrg # Version 6 uses the directory in both cases. 225fb23d3a8Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226fb23d3a8Smrg test "x$dir" = "x$object" && dir= 227fb23d3a8Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22864ce7165Smrg if test "$libtool" = yes; then 229fb23d3a8Smrg tmpdepfile1=$dir$base.u 230fb23d3a8Smrg tmpdepfile2=$base.u 231fb23d3a8Smrg tmpdepfile3=$dir.libs/$base.u 23264ce7165Smrg "$@" -Wc,-M 23364ce7165Smrg else 234fb23d3a8Smrg tmpdepfile1=$dir$base.u 235fb23d3a8Smrg tmpdepfile2=$dir$base.u 236fb23d3a8Smrg tmpdepfile3=$dir$base.u 23764ce7165Smrg "$@" -M 23864ce7165Smrg fi 23964ce7165Smrg stat=$? 24064ce7165Smrg 24164ce7165Smrg if test $stat -eq 0; then : 24264ce7165Smrg else 243fb23d3a8Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24464ce7165Smrg exit $stat 24564ce7165Smrg fi 24664ce7165Smrg 247fb23d3a8Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248fb23d3a8Smrg do 249fb23d3a8Smrg test -f "$tmpdepfile" && break 250fb23d3a8Smrg done 25164ce7165Smrg if test -f "$tmpdepfile"; then 25264ce7165Smrg # Each line is of the form `foo.o: dependent.h'. 25364ce7165Smrg # Do two passes, one to just change these to 25464ce7165Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 255fb23d3a8Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256fb23d3a8Smrg # That's a tab and a space in the []. 257fb23d3a8Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25864ce7165Smrg else 25964ce7165Smrg # The sourcefile does not contain any dependencies, so just 26064ce7165Smrg # store a dummy comment line, to avoid errors with the Makefile 26164ce7165Smrg # "include basename.Plo" scheme. 26264ce7165Smrg echo "#dummy" > "$depfile" 26364ce7165Smrg fi 26464ce7165Smrg rm -f "$tmpdepfile" 26564ce7165Smrg ;; 26664ce7165Smrg 26764ce7165Smrgicc) 26864ce7165Smrg # Intel's C compiler understands `-MD -MF file'. However on 26964ce7165Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 27064ce7165Smrg # ICC 7.0 will fill foo.d with something like 27164ce7165Smrg # foo.o: sub/foo.c 27264ce7165Smrg # foo.o: sub/foo.h 27364ce7165Smrg # which is wrong. We want: 27464ce7165Smrg # sub/foo.o: sub/foo.c 27564ce7165Smrg # sub/foo.o: sub/foo.h 27664ce7165Smrg # sub/foo.c: 27764ce7165Smrg # sub/foo.h: 27864ce7165Smrg # ICC 7.1 will output 27964ce7165Smrg # foo.o: sub/foo.c sub/foo.h 28064ce7165Smrg # and will wrap long lines using \ : 28164ce7165Smrg # foo.o: sub/foo.c ... \ 28264ce7165Smrg # sub/foo.h ... \ 28364ce7165Smrg # ... 28464ce7165Smrg 28564ce7165Smrg "$@" -MD -MF "$tmpdepfile" 28664ce7165Smrg stat=$? 28764ce7165Smrg if test $stat -eq 0; then : 28864ce7165Smrg else 28964ce7165Smrg rm -f "$tmpdepfile" 29064ce7165Smrg exit $stat 29164ce7165Smrg fi 29264ce7165Smrg rm -f "$depfile" 29364ce7165Smrg # Each line is of the form `foo.o: dependent.h', 29464ce7165Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 29564ce7165Smrg # Do two passes, one to just change these to 29664ce7165Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 29764ce7165Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29864ce7165Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 29964ce7165Smrg # correctly. Breaking it into two sed invocations is a workaround. 30064ce7165Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 30164ce7165Smrg sed -e 's/$/ :/' >> "$depfile" 30264ce7165Smrg rm -f "$tmpdepfile" 30364ce7165Smrg ;; 30464ce7165Smrg 30564ce7165Smrghp2) 30664ce7165Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 30764ce7165Smrg # compilers, which have integrated preprocessors. The correct option 30864ce7165Smrg # to use with these is +Maked; it writes dependencies to a file named 30964ce7165Smrg # 'foo.d', which lands next to the object file, wherever that 31064ce7165Smrg # happens to be. 31164ce7165Smrg # Much of this is similar to the tru64 case; see comments there. 31264ce7165Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 31364ce7165Smrg test "x$dir" = "x$object" && dir= 31464ce7165Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 31564ce7165Smrg if test "$libtool" = yes; then 31664ce7165Smrg tmpdepfile1=$dir$base.d 31764ce7165Smrg tmpdepfile2=$dir.libs/$base.d 31864ce7165Smrg "$@" -Wc,+Maked 31964ce7165Smrg else 32064ce7165Smrg tmpdepfile1=$dir$base.d 32164ce7165Smrg tmpdepfile2=$dir$base.d 32264ce7165Smrg "$@" +Maked 32364ce7165Smrg fi 32464ce7165Smrg stat=$? 32564ce7165Smrg if test $stat -eq 0; then : 32664ce7165Smrg else 32764ce7165Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 32864ce7165Smrg exit $stat 32964ce7165Smrg fi 33064ce7165Smrg 33164ce7165Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 33264ce7165Smrg do 33364ce7165Smrg test -f "$tmpdepfile" && break 33464ce7165Smrg done 33564ce7165Smrg if test -f "$tmpdepfile"; then 33664ce7165Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 33764ce7165Smrg # Add `dependent.h:' lines. 338fb23d3a8Smrg sed -ne '2,${ 339fb23d3a8Smrg s/^ *// 340fb23d3a8Smrg s/ \\*$// 341fb23d3a8Smrg s/$/:/ 342fb23d3a8Smrg p 343fb23d3a8Smrg }' "$tmpdepfile" >> "$depfile" 34464ce7165Smrg else 34564ce7165Smrg echo "#dummy" > "$depfile" 34664ce7165Smrg fi 34764ce7165Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 34864ce7165Smrg ;; 34964ce7165Smrg 35064ce7165Smrgtru64) 35164ce7165Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 35264ce7165Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 35364ce7165Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 35464ce7165Smrg # dependencies in `foo.d' instead, so we check for that too. 35564ce7165Smrg # Subdirectories are respected. 35664ce7165Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 35764ce7165Smrg test "x$dir" = "x$object" && dir= 35864ce7165Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 35964ce7165Smrg 36064ce7165Smrg if test "$libtool" = yes; then 36164ce7165Smrg # With Tru64 cc, shared objects can also be used to make a 36264ce7165Smrg # static library. This mechanism is used in libtool 1.4 series to 36364ce7165Smrg # handle both shared and static libraries in a single compilation. 36464ce7165Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 36564ce7165Smrg # 36664ce7165Smrg # With libtool 1.5 this exception was removed, and libtool now 36764ce7165Smrg # generates 2 separate objects for the 2 libraries. These two 36864ce7165Smrg # compilations output dependencies in $dir.libs/$base.o.d and 36964ce7165Smrg # in $dir$base.o.d. We have to check for both files, because 37064ce7165Smrg # one of the two compilations can be disabled. We should prefer 37164ce7165Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 37264ce7165Smrg # automatically cleaned when .libs/ is deleted, while ignoring 37364ce7165Smrg # the former would cause a distcleancheck panic. 37464ce7165Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 37564ce7165Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 37664ce7165Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 37764ce7165Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 37864ce7165Smrg "$@" -Wc,-MD 37964ce7165Smrg else 38064ce7165Smrg tmpdepfile1=$dir$base.o.d 38164ce7165Smrg tmpdepfile2=$dir$base.d 38264ce7165Smrg tmpdepfile3=$dir$base.d 38364ce7165Smrg tmpdepfile4=$dir$base.d 38464ce7165Smrg "$@" -MD 38564ce7165Smrg fi 38664ce7165Smrg 38764ce7165Smrg stat=$? 38864ce7165Smrg if test $stat -eq 0; then : 38964ce7165Smrg else 39064ce7165Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39164ce7165Smrg exit $stat 39264ce7165Smrg fi 39364ce7165Smrg 39464ce7165Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39564ce7165Smrg do 39664ce7165Smrg test -f "$tmpdepfile" && break 39764ce7165Smrg done 39864ce7165Smrg if test -f "$tmpdepfile"; then 39964ce7165Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 40064ce7165Smrg # That's a tab and a space in the []. 40164ce7165Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 40264ce7165Smrg else 40364ce7165Smrg echo "#dummy" > "$depfile" 40464ce7165Smrg fi 40564ce7165Smrg rm -f "$tmpdepfile" 40664ce7165Smrg ;; 40764ce7165Smrg 40864ce7165Smrg#nosideeffect) 40964ce7165Smrg # This comment above is used by automake to tell side-effect 41064ce7165Smrg # dependency tracking mechanisms from slower ones. 41164ce7165Smrg 41264ce7165Smrgdashmstdout) 41364ce7165Smrg # Important note: in order to support this mode, a compiler *must* 41464ce7165Smrg # always write the preprocessed file to stdout, regardless of -o. 41564ce7165Smrg "$@" || exit $? 41664ce7165Smrg 41764ce7165Smrg # Remove the call to Libtool. 41864ce7165Smrg if test "$libtool" = yes; then 419fb23d3a8Smrg while test "X$1" != 'X--mode=compile'; do 42064ce7165Smrg shift 42164ce7165Smrg done 42264ce7165Smrg shift 42364ce7165Smrg fi 42464ce7165Smrg 42564ce7165Smrg # Remove `-o $object'. 42664ce7165Smrg IFS=" " 42764ce7165Smrg for arg 42864ce7165Smrg do 42964ce7165Smrg case $arg in 43064ce7165Smrg -o) 43164ce7165Smrg shift 43264ce7165Smrg ;; 43364ce7165Smrg $object) 43464ce7165Smrg shift 43564ce7165Smrg ;; 43664ce7165Smrg *) 43764ce7165Smrg set fnord "$@" "$arg" 43864ce7165Smrg shift # fnord 43964ce7165Smrg shift # $arg 44064ce7165Smrg ;; 44164ce7165Smrg esac 44264ce7165Smrg done 44364ce7165Smrg 44464ce7165Smrg test -z "$dashmflag" && dashmflag=-M 44564ce7165Smrg # Require at least two characters before searching for `:' 44664ce7165Smrg # in the target name. This is to cope with DOS-style filenames: 44764ce7165Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 44864ce7165Smrg "$@" $dashmflag | 44964ce7165Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 45064ce7165Smrg rm -f "$depfile" 45164ce7165Smrg cat < "$tmpdepfile" > "$depfile" 45264ce7165Smrg tr ' ' ' 45364ce7165Smrg' < "$tmpdepfile" | \ 45464ce7165Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 45564ce7165Smrg## correctly. Breaking it into two sed invocations is a workaround. 45664ce7165Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 45764ce7165Smrg rm -f "$tmpdepfile" 45864ce7165Smrg ;; 45964ce7165Smrg 46064ce7165SmrgdashXmstdout) 46164ce7165Smrg # This case only exists to satisfy depend.m4. It is never actually 46264ce7165Smrg # run, as this mode is specially recognized in the preamble. 46364ce7165Smrg exit 1 46464ce7165Smrg ;; 46564ce7165Smrg 46664ce7165Smrgmakedepend) 46764ce7165Smrg "$@" || exit $? 46864ce7165Smrg # Remove any Libtool call 46964ce7165Smrg if test "$libtool" = yes; then 470fb23d3a8Smrg while test "X$1" != 'X--mode=compile'; do 47164ce7165Smrg shift 47264ce7165Smrg done 47364ce7165Smrg shift 47464ce7165Smrg fi 47564ce7165Smrg # X makedepend 47664ce7165Smrg shift 477fb23d3a8Smrg cleared=no eat=no 478fb23d3a8Smrg for arg 479fb23d3a8Smrg do 48064ce7165Smrg case $cleared in 48164ce7165Smrg no) 48264ce7165Smrg set ""; shift 48364ce7165Smrg cleared=yes ;; 48464ce7165Smrg esac 485fb23d3a8Smrg if test $eat = yes; then 486fb23d3a8Smrg eat=no 487fb23d3a8Smrg continue 488fb23d3a8Smrg fi 48964ce7165Smrg case "$arg" in 49064ce7165Smrg -D*|-I*) 49164ce7165Smrg set fnord "$@" "$arg"; shift ;; 49264ce7165Smrg # Strip any option that makedepend may not understand. Remove 49364ce7165Smrg # the object too, otherwise makedepend will parse it as a source file. 494fb23d3a8Smrg -arch) 495fb23d3a8Smrg eat=yes ;; 49664ce7165Smrg -*|$object) 49764ce7165Smrg ;; 49864ce7165Smrg *) 49964ce7165Smrg set fnord "$@" "$arg"; shift ;; 50064ce7165Smrg esac 50164ce7165Smrg done 502fb23d3a8Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 50364ce7165Smrg touch "$tmpdepfile" 50464ce7165Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 50564ce7165Smrg rm -f "$depfile" 50664ce7165Smrg cat < "$tmpdepfile" > "$depfile" 50764ce7165Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 50864ce7165Smrg' | \ 50964ce7165Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 51064ce7165Smrg## correctly. Breaking it into two sed invocations is a workaround. 51164ce7165Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51264ce7165Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 51364ce7165Smrg ;; 51464ce7165Smrg 51564ce7165Smrgcpp) 51664ce7165Smrg # Important note: in order to support this mode, a compiler *must* 51764ce7165Smrg # always write the preprocessed file to stdout. 51864ce7165Smrg "$@" || exit $? 51964ce7165Smrg 52064ce7165Smrg # Remove the call to Libtool. 52164ce7165Smrg if test "$libtool" = yes; then 522fb23d3a8Smrg while test "X$1" != 'X--mode=compile'; do 52364ce7165Smrg shift 52464ce7165Smrg done 52564ce7165Smrg shift 52664ce7165Smrg fi 52764ce7165Smrg 52864ce7165Smrg # Remove `-o $object'. 52964ce7165Smrg IFS=" " 53064ce7165Smrg for arg 53164ce7165Smrg do 53264ce7165Smrg case $arg in 53364ce7165Smrg -o) 53464ce7165Smrg shift 53564ce7165Smrg ;; 53664ce7165Smrg $object) 53764ce7165Smrg shift 53864ce7165Smrg ;; 53964ce7165Smrg *) 54064ce7165Smrg set fnord "$@" "$arg" 54164ce7165Smrg shift # fnord 54264ce7165Smrg shift # $arg 54364ce7165Smrg ;; 54464ce7165Smrg esac 54564ce7165Smrg done 54664ce7165Smrg 54764ce7165Smrg "$@" -E | 54864ce7165Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 54964ce7165Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 55064ce7165Smrg sed '$ s: \\$::' > "$tmpdepfile" 55164ce7165Smrg rm -f "$depfile" 55264ce7165Smrg echo "$object : \\" > "$depfile" 55364ce7165Smrg cat < "$tmpdepfile" >> "$depfile" 55464ce7165Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 55564ce7165Smrg rm -f "$tmpdepfile" 55664ce7165Smrg ;; 55764ce7165Smrg 55864ce7165Smrgmsvisualcpp) 55964ce7165Smrg # Important note: in order to support this mode, a compiler *must* 560fb23d3a8Smrg # always write the preprocessed file to stdout. 56164ce7165Smrg "$@" || exit $? 562fb23d3a8Smrg 563fb23d3a8Smrg # Remove the call to Libtool. 564fb23d3a8Smrg if test "$libtool" = yes; then 565fb23d3a8Smrg while test "X$1" != 'X--mode=compile'; do 566fb23d3a8Smrg shift 567fb23d3a8Smrg done 568fb23d3a8Smrg shift 569fb23d3a8Smrg fi 570fb23d3a8Smrg 57164ce7165Smrg IFS=" " 57264ce7165Smrg for arg 57364ce7165Smrg do 57464ce7165Smrg case "$arg" in 575fb23d3a8Smrg -o) 576fb23d3a8Smrg shift 577fb23d3a8Smrg ;; 578fb23d3a8Smrg $object) 579fb23d3a8Smrg shift 580fb23d3a8Smrg ;; 58164ce7165Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 58264ce7165Smrg set fnord "$@" 58364ce7165Smrg shift 58464ce7165Smrg shift 58564ce7165Smrg ;; 58664ce7165Smrg *) 58764ce7165Smrg set fnord "$@" "$arg" 58864ce7165Smrg shift 58964ce7165Smrg shift 59064ce7165Smrg ;; 59164ce7165Smrg esac 59264ce7165Smrg done 593fb23d3a8Smrg "$@" -E 2>/dev/null | 594fb23d3a8Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 59564ce7165Smrg rm -f "$depfile" 59664ce7165Smrg echo "$object : \\" > "$depfile" 597fb23d3a8Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 59864ce7165Smrg echo " " >> "$depfile" 599fb23d3a8Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 60064ce7165Smrg rm -f "$tmpdepfile" 60164ce7165Smrg ;; 60264ce7165Smrg 603fb23d3a8Smrgmsvcmsys) 604fb23d3a8Smrg # This case exists only to let depend.m4 do its work. It works by 605fb23d3a8Smrg # looking at the text of this script. This case will never be run, 606fb23d3a8Smrg # since it is checked for above. 607fb23d3a8Smrg exit 1 608fb23d3a8Smrg ;; 609fb23d3a8Smrg 61064ce7165Smrgnone) 61164ce7165Smrg exec "$@" 61264ce7165Smrg ;; 61364ce7165Smrg 61464ce7165Smrg*) 61564ce7165Smrg echo "Unknown depmode $depmode" 1>&2 61664ce7165Smrg exit 1 61764ce7165Smrg ;; 61864ce7165Smrgesac 61964ce7165Smrg 62064ce7165Smrgexit 0 62164ce7165Smrg 62264ce7165Smrg# Local Variables: 62364ce7165Smrg# mode: shell-script 62464ce7165Smrg# sh-indentation: 2 62564ce7165Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 62664ce7165Smrg# time-stamp-start: "scriptversion=" 62764ce7165Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628fb23d3a8Smrg# time-stamp-time-zone: "UTC" 629fb23d3a8Smrg# time-stamp-end: "; # UTC" 63064ce7165Smrg# End: 631