depcomp revision 475c125c
105b261ecSmrg#! /bin/sh 205b261ecSmrg# depcomp - compile a program generating dependencies as side-effects 305b261ecSmrg 4475c125cSmrgscriptversion=2006-10-15.18 505b261ecSmrg 6475c125cSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software 7475c125cSmrg# Foundation, Inc. 805b261ecSmrg 905b261ecSmrg# This program is free software; you can redistribute it and/or modify 1005b261ecSmrg# it under the terms of the GNU General Public License as published by 1105b261ecSmrg# the Free Software Foundation; either version 2, or (at your option) 1205b261ecSmrg# any later version. 1305b261ecSmrg 1405b261ecSmrg# This program is distributed in the hope that it will be useful, 1505b261ecSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1605b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1705b261ecSmrg# GNU General Public License for more details. 1805b261ecSmrg 1905b261ecSmrg# You should have received a copy of the GNU General Public License 20475c125cSmrg# along with this program; if not, write to the Free Software 21475c125cSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 22475c125cSmrg# 02110-1301, USA. 2305b261ecSmrg 2405b261ecSmrg# As a special exception to the GNU General Public License, if you 2505b261ecSmrg# distribute this file as part of a program that contains a 2605b261ecSmrg# configuration script generated by Autoconf, you may include it under 2705b261ecSmrg# the same distribution terms that you use for the rest of that program. 2805b261ecSmrg 2905b261ecSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 3005b261ecSmrg 3105b261ecSmrgcase $1 in 3205b261ecSmrg '') 3305b261ecSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3405b261ecSmrg exit 1; 3505b261ecSmrg ;; 3605b261ecSmrg -h | --h*) 3705b261ecSmrg cat <<\EOF 3805b261ecSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3905b261ecSmrg 4005b261ecSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4105b261ecSmrgas side-effects. 4205b261ecSmrg 4305b261ecSmrgEnvironment variables: 4405b261ecSmrg depmode Dependency tracking mode. 4505b261ecSmrg source Source file read by `PROGRAMS ARGS'. 4605b261ecSmrg object Object file output by `PROGRAMS ARGS'. 4705b261ecSmrg DEPDIR directory where to store dependencies. 4805b261ecSmrg depfile Dependency file to output. 4905b261ecSmrg tmpdepfile Temporary file to use when outputing dependencies. 5005b261ecSmrg libtool Whether libtool is used (yes/no). 5105b261ecSmrg 5205b261ecSmrgReport bugs to <bug-automake@gnu.org>. 5305b261ecSmrgEOF 5405b261ecSmrg exit $? 5505b261ecSmrg ;; 5605b261ecSmrg -v | --v*) 5705b261ecSmrg echo "depcomp $scriptversion" 5805b261ecSmrg exit $? 5905b261ecSmrg ;; 6005b261ecSmrgesac 6105b261ecSmrg 6205b261ecSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6305b261ecSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6405b261ecSmrg exit 1 6505b261ecSmrgfi 6605b261ecSmrg 6705b261ecSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6805b261ecSmrgdepfile=${depfile-`echo "$object" | 6905b261ecSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 7005b261ecSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7105b261ecSmrg 7205b261ecSmrgrm -f "$tmpdepfile" 7305b261ecSmrg 7405b261ecSmrg# Some modes work just like other modes, but use different flags. We 7505b261ecSmrg# parameterize here, but still list the modes in the big case below, 7605b261ecSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7705b261ecSmrg# here, because this file can only contain one case statement. 7805b261ecSmrgif test "$depmode" = hp; then 7905b261ecSmrg # HP compiler uses -M and no extra arg. 8005b261ecSmrg gccflag=-M 8105b261ecSmrg depmode=gcc 8205b261ecSmrgfi 8305b261ecSmrg 8405b261ecSmrgif test "$depmode" = dashXmstdout; then 8505b261ecSmrg # This is just like dashmstdout with a different argument. 8605b261ecSmrg dashmflag=-xM 8705b261ecSmrg depmode=dashmstdout 8805b261ecSmrgfi 8905b261ecSmrg 9005b261ecSmrgcase "$depmode" in 9105b261ecSmrggcc3) 9205b261ecSmrg## gcc 3 implements dependency tracking that does exactly what 9305b261ecSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9405b261ecSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 9505b261ecSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 9605b261ecSmrg## the command line argument order; so add the flags where they 9705b261ecSmrg## appear in depend2.am. Note that the slowdown incurred here 9805b261ecSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 9905b261ecSmrg for arg 10005b261ecSmrg do 10105b261ecSmrg case $arg in 10205b261ecSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 10305b261ecSmrg *) set fnord "$@" "$arg" ;; 10405b261ecSmrg esac 10505b261ecSmrg shift # fnord 10605b261ecSmrg shift # $arg 10705b261ecSmrg done 10805b261ecSmrg "$@" 10905b261ecSmrg stat=$? 11005b261ecSmrg if test $stat -eq 0; then : 11105b261ecSmrg else 11205b261ecSmrg rm -f "$tmpdepfile" 11305b261ecSmrg exit $stat 11405b261ecSmrg fi 11505b261ecSmrg mv "$tmpdepfile" "$depfile" 11605b261ecSmrg ;; 11705b261ecSmrg 11805b261ecSmrggcc) 11905b261ecSmrg## There are various ways to get dependency output from gcc. Here's 12005b261ecSmrg## why we pick this rather obscure method: 12105b261ecSmrg## - Don't want to use -MD because we'd like the dependencies to end 12205b261ecSmrg## up in a subdir. Having to rename by hand is ugly. 12305b261ecSmrg## (We might end up doing this anyway to support other compilers.) 12405b261ecSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 12505b261ecSmrg## -MM, not -M (despite what the docs say). 12605b261ecSmrg## - Using -M directly means running the compiler twice (even worse 12705b261ecSmrg## than renaming). 12805b261ecSmrg if test -z "$gccflag"; then 12905b261ecSmrg gccflag=-MD, 13005b261ecSmrg fi 13105b261ecSmrg "$@" -Wp,"$gccflag$tmpdepfile" 13205b261ecSmrg stat=$? 13305b261ecSmrg if test $stat -eq 0; then : 13405b261ecSmrg else 13505b261ecSmrg rm -f "$tmpdepfile" 13605b261ecSmrg exit $stat 13705b261ecSmrg fi 13805b261ecSmrg rm -f "$depfile" 13905b261ecSmrg echo "$object : \\" > "$depfile" 14005b261ecSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14105b261ecSmrg## The second -e expression handles DOS-style file names with drive letters. 14205b261ecSmrg sed -e 's/^[^:]*: / /' \ 14305b261ecSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 14405b261ecSmrg## This next piece of magic avoids the `deleted header file' problem. 14505b261ecSmrg## The problem is that when a header file which appears in a .P file 14605b261ecSmrg## is deleted, the dependency causes make to die (because there is 14705b261ecSmrg## typically no way to rebuild the header). We avoid this by adding 14805b261ecSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 14905b261ecSmrg## this for us directly. 15005b261ecSmrg tr ' ' ' 15105b261ecSmrg' < "$tmpdepfile" | 15205b261ecSmrg## Some versions of gcc put a space before the `:'. On the theory 15305b261ecSmrg## that the space means something, we add a space to the output as 15405b261ecSmrg## well. 15505b261ecSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 15605b261ecSmrg## correctly. Breaking it into two sed invocations is a workaround. 15705b261ecSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 15805b261ecSmrg rm -f "$tmpdepfile" 15905b261ecSmrg ;; 16005b261ecSmrg 16105b261ecSmrghp) 16205b261ecSmrg # This case exists only to let depend.m4 do its work. It works by 16305b261ecSmrg # looking at the text of this script. This case will never be run, 16405b261ecSmrg # since it is checked for above. 16505b261ecSmrg exit 1 16605b261ecSmrg ;; 16705b261ecSmrg 16805b261ecSmrgsgi) 16905b261ecSmrg if test "$libtool" = yes; then 17005b261ecSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17105b261ecSmrg else 17205b261ecSmrg "$@" -MDupdate "$tmpdepfile" 17305b261ecSmrg fi 17405b261ecSmrg stat=$? 17505b261ecSmrg if test $stat -eq 0; then : 17605b261ecSmrg else 17705b261ecSmrg rm -f "$tmpdepfile" 17805b261ecSmrg exit $stat 17905b261ecSmrg fi 18005b261ecSmrg rm -f "$depfile" 18105b261ecSmrg 18205b261ecSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 18305b261ecSmrg echo "$object : \\" > "$depfile" 18405b261ecSmrg 18505b261ecSmrg # Clip off the initial element (the dependent). Don't try to be 18605b261ecSmrg # clever and replace this with sed code, as IRIX sed won't handle 18705b261ecSmrg # lines with more than a fixed number of characters (4096 in 18805b261ecSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 18905b261ecSmrg # the IRIX cc adds comments like `#:fec' to the end of the 19005b261ecSmrg # dependency line. 19105b261ecSmrg tr ' ' ' 19205b261ecSmrg' < "$tmpdepfile" \ 19305b261ecSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 19405b261ecSmrg tr ' 195475c125cSmrg' ' ' >> $depfile 196475c125cSmrg echo >> $depfile 19705b261ecSmrg 19805b261ecSmrg # The second pass generates a dummy entry for each header file. 19905b261ecSmrg tr ' ' ' 20005b261ecSmrg' < "$tmpdepfile" \ 20105b261ecSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 202475c125cSmrg >> $depfile 20305b261ecSmrg else 20405b261ecSmrg # The sourcefile does not contain any dependencies, so just 20505b261ecSmrg # store a dummy comment line, to avoid errors with the Makefile 20605b261ecSmrg # "include basename.Plo" scheme. 20705b261ecSmrg echo "#dummy" > "$depfile" 20805b261ecSmrg fi 20905b261ecSmrg rm -f "$tmpdepfile" 21005b261ecSmrg ;; 21105b261ecSmrg 21205b261ecSmrgaix) 21305b261ecSmrg # The C for AIX Compiler uses -M and outputs the dependencies 21405b261ecSmrg # in a .u file. In older versions, this file always lives in the 21505b261ecSmrg # current directory. Also, the AIX compiler puts `$object:' at the 21605b261ecSmrg # start of each line; $object doesn't have directory information. 21705b261ecSmrg # Version 6 uses the directory in both cases. 218475c125cSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 219475c125cSmrg tmpdepfile="$stripped.u" 22005b261ecSmrg if test "$libtool" = yes; then 22105b261ecSmrg "$@" -Wc,-M 22205b261ecSmrg else 22305b261ecSmrg "$@" -M 22405b261ecSmrg fi 22505b261ecSmrg stat=$? 22605b261ecSmrg 227475c125cSmrg if test -f "$tmpdepfile"; then : 228475c125cSmrg else 229475c125cSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 230475c125cSmrg tmpdepfile="$stripped.u" 231475c125cSmrg fi 232475c125cSmrg 23305b261ecSmrg if test $stat -eq 0; then : 23405b261ecSmrg else 235475c125cSmrg rm -f "$tmpdepfile" 23605b261ecSmrg exit $stat 23705b261ecSmrg fi 23805b261ecSmrg 23905b261ecSmrg if test -f "$tmpdepfile"; then 240475c125cSmrg outname="$stripped.o" 24105b261ecSmrg # Each line is of the form `foo.o: dependent.h'. 24205b261ecSmrg # Do two passes, one to just change these to 24305b261ecSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 244475c125cSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 245475c125cSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 24605b261ecSmrg else 24705b261ecSmrg # The sourcefile does not contain any dependencies, so just 24805b261ecSmrg # store a dummy comment line, to avoid errors with the Makefile 24905b261ecSmrg # "include basename.Plo" scheme. 25005b261ecSmrg echo "#dummy" > "$depfile" 25105b261ecSmrg fi 25205b261ecSmrg rm -f "$tmpdepfile" 25305b261ecSmrg ;; 25405b261ecSmrg 25505b261ecSmrgicc) 25605b261ecSmrg # Intel's C compiler understands `-MD -MF file'. However on 25705b261ecSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 25805b261ecSmrg # ICC 7.0 will fill foo.d with something like 25905b261ecSmrg # foo.o: sub/foo.c 26005b261ecSmrg # foo.o: sub/foo.h 26105b261ecSmrg # which is wrong. We want: 26205b261ecSmrg # sub/foo.o: sub/foo.c 26305b261ecSmrg # sub/foo.o: sub/foo.h 26405b261ecSmrg # sub/foo.c: 26505b261ecSmrg # sub/foo.h: 26605b261ecSmrg # ICC 7.1 will output 26705b261ecSmrg # foo.o: sub/foo.c sub/foo.h 26805b261ecSmrg # and will wrap long lines using \ : 26905b261ecSmrg # foo.o: sub/foo.c ... \ 27005b261ecSmrg # sub/foo.h ... \ 27105b261ecSmrg # ... 27205b261ecSmrg 27305b261ecSmrg "$@" -MD -MF "$tmpdepfile" 27405b261ecSmrg stat=$? 27505b261ecSmrg if test $stat -eq 0; then : 27605b261ecSmrg else 27705b261ecSmrg rm -f "$tmpdepfile" 27805b261ecSmrg exit $stat 27905b261ecSmrg fi 28005b261ecSmrg rm -f "$depfile" 28105b261ecSmrg # Each line is of the form `foo.o: dependent.h', 28205b261ecSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 28305b261ecSmrg # Do two passes, one to just change these to 28405b261ecSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 28505b261ecSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 28605b261ecSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 28705b261ecSmrg # correctly. Breaking it into two sed invocations is a workaround. 28805b261ecSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 28905b261ecSmrg sed -e 's/$/ :/' >> "$depfile" 29005b261ecSmrg rm -f "$tmpdepfile" 29105b261ecSmrg ;; 29205b261ecSmrg 29305b261ecSmrghp2) 29405b261ecSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 29505b261ecSmrg # compilers, which have integrated preprocessors. The correct option 29605b261ecSmrg # to use with these is +Maked; it writes dependencies to a file named 29705b261ecSmrg # 'foo.d', which lands next to the object file, wherever that 29805b261ecSmrg # happens to be. 29905b261ecSmrg # Much of this is similar to the tru64 case; see comments there. 30005b261ecSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 30105b261ecSmrg test "x$dir" = "x$object" && dir= 30205b261ecSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 30305b261ecSmrg if test "$libtool" = yes; then 30405b261ecSmrg tmpdepfile1=$dir$base.d 30505b261ecSmrg tmpdepfile2=$dir.libs/$base.d 30605b261ecSmrg "$@" -Wc,+Maked 30705b261ecSmrg else 30805b261ecSmrg tmpdepfile1=$dir$base.d 30905b261ecSmrg tmpdepfile2=$dir$base.d 31005b261ecSmrg "$@" +Maked 31105b261ecSmrg fi 31205b261ecSmrg stat=$? 31305b261ecSmrg if test $stat -eq 0; then : 31405b261ecSmrg else 31505b261ecSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 31605b261ecSmrg exit $stat 31705b261ecSmrg fi 31805b261ecSmrg 31905b261ecSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 32005b261ecSmrg do 32105b261ecSmrg test -f "$tmpdepfile" && break 32205b261ecSmrg done 32305b261ecSmrg if test -f "$tmpdepfile"; then 32405b261ecSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 32505b261ecSmrg # Add `dependent.h:' lines. 326475c125cSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 32705b261ecSmrg else 32805b261ecSmrg echo "#dummy" > "$depfile" 32905b261ecSmrg fi 33005b261ecSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 33105b261ecSmrg ;; 33205b261ecSmrg 33305b261ecSmrgtru64) 33405b261ecSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 33505b261ecSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 33605b261ecSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 33705b261ecSmrg # dependencies in `foo.d' instead, so we check for that too. 33805b261ecSmrg # Subdirectories are respected. 33905b261ecSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 34005b261ecSmrg test "x$dir" = "x$object" && dir= 34105b261ecSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 34205b261ecSmrg 34305b261ecSmrg if test "$libtool" = yes; then 34405b261ecSmrg # With Tru64 cc, shared objects can also be used to make a 34505b261ecSmrg # static library. This mechanism is used in libtool 1.4 series to 34605b261ecSmrg # handle both shared and static libraries in a single compilation. 34705b261ecSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 34805b261ecSmrg # 34905b261ecSmrg # With libtool 1.5 this exception was removed, and libtool now 35005b261ecSmrg # generates 2 separate objects for the 2 libraries. These two 35105b261ecSmrg # compilations output dependencies in $dir.libs/$base.o.d and 35205b261ecSmrg # in $dir$base.o.d. We have to check for both files, because 35305b261ecSmrg # one of the two compilations can be disabled. We should prefer 35405b261ecSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 35505b261ecSmrg # automatically cleaned when .libs/ is deleted, while ignoring 35605b261ecSmrg # the former would cause a distcleancheck panic. 35705b261ecSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 35805b261ecSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 35905b261ecSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 36005b261ecSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 36105b261ecSmrg "$@" -Wc,-MD 36205b261ecSmrg else 36305b261ecSmrg tmpdepfile1=$dir$base.o.d 36405b261ecSmrg tmpdepfile2=$dir$base.d 36505b261ecSmrg tmpdepfile3=$dir$base.d 36605b261ecSmrg tmpdepfile4=$dir$base.d 36705b261ecSmrg "$@" -MD 36805b261ecSmrg fi 36905b261ecSmrg 37005b261ecSmrg stat=$? 37105b261ecSmrg if test $stat -eq 0; then : 37205b261ecSmrg else 37305b261ecSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37405b261ecSmrg exit $stat 37505b261ecSmrg fi 37605b261ecSmrg 37705b261ecSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37805b261ecSmrg do 37905b261ecSmrg test -f "$tmpdepfile" && break 38005b261ecSmrg done 38105b261ecSmrg if test -f "$tmpdepfile"; then 38205b261ecSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 38305b261ecSmrg # That's a tab and a space in the []. 38405b261ecSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 38505b261ecSmrg else 38605b261ecSmrg echo "#dummy" > "$depfile" 38705b261ecSmrg fi 38805b261ecSmrg rm -f "$tmpdepfile" 38905b261ecSmrg ;; 39005b261ecSmrg 39105b261ecSmrg#nosideeffect) 39205b261ecSmrg # This comment above is used by automake to tell side-effect 39305b261ecSmrg # dependency tracking mechanisms from slower ones. 39405b261ecSmrg 39505b261ecSmrgdashmstdout) 39605b261ecSmrg # Important note: in order to support this mode, a compiler *must* 39705b261ecSmrg # always write the preprocessed file to stdout, regardless of -o. 39805b261ecSmrg "$@" || exit $? 39905b261ecSmrg 40005b261ecSmrg # Remove the call to Libtool. 40105b261ecSmrg if test "$libtool" = yes; then 402475c125cSmrg while test $1 != '--mode=compile'; do 40305b261ecSmrg shift 40405b261ecSmrg done 40505b261ecSmrg shift 40605b261ecSmrg fi 40705b261ecSmrg 40805b261ecSmrg # Remove `-o $object'. 40905b261ecSmrg IFS=" " 41005b261ecSmrg for arg 41105b261ecSmrg do 41205b261ecSmrg case $arg in 41305b261ecSmrg -o) 41405b261ecSmrg shift 41505b261ecSmrg ;; 41605b261ecSmrg $object) 41705b261ecSmrg shift 41805b261ecSmrg ;; 41905b261ecSmrg *) 42005b261ecSmrg set fnord "$@" "$arg" 42105b261ecSmrg shift # fnord 42205b261ecSmrg shift # $arg 42305b261ecSmrg ;; 42405b261ecSmrg esac 42505b261ecSmrg done 42605b261ecSmrg 42705b261ecSmrg test -z "$dashmflag" && dashmflag=-M 42805b261ecSmrg # Require at least two characters before searching for `:' 42905b261ecSmrg # in the target name. This is to cope with DOS-style filenames: 43005b261ecSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 43105b261ecSmrg "$@" $dashmflag | 43205b261ecSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 43305b261ecSmrg rm -f "$depfile" 43405b261ecSmrg cat < "$tmpdepfile" > "$depfile" 43505b261ecSmrg tr ' ' ' 43605b261ecSmrg' < "$tmpdepfile" | \ 43705b261ecSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 43805b261ecSmrg## correctly. Breaking it into two sed invocations is a workaround. 43905b261ecSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 44005b261ecSmrg rm -f "$tmpdepfile" 44105b261ecSmrg ;; 44205b261ecSmrg 44305b261ecSmrgdashXmstdout) 44405b261ecSmrg # This case only exists to satisfy depend.m4. It is never actually 44505b261ecSmrg # run, as this mode is specially recognized in the preamble. 44605b261ecSmrg exit 1 44705b261ecSmrg ;; 44805b261ecSmrg 44905b261ecSmrgmakedepend) 45005b261ecSmrg "$@" || exit $? 45105b261ecSmrg # Remove any Libtool call 45205b261ecSmrg if test "$libtool" = yes; then 453475c125cSmrg while test $1 != '--mode=compile'; do 45405b261ecSmrg shift 45505b261ecSmrg done 45605b261ecSmrg shift 45705b261ecSmrg fi 45805b261ecSmrg # X makedepend 45905b261ecSmrg shift 460475c125cSmrg cleared=no 461475c125cSmrg for arg in "$@"; do 46205b261ecSmrg case $cleared in 46305b261ecSmrg no) 46405b261ecSmrg set ""; shift 46505b261ecSmrg cleared=yes ;; 46605b261ecSmrg esac 46705b261ecSmrg case "$arg" in 46805b261ecSmrg -D*|-I*) 46905b261ecSmrg set fnord "$@" "$arg"; shift ;; 47005b261ecSmrg # Strip any option that makedepend may not understand. Remove 47105b261ecSmrg # the object too, otherwise makedepend will parse it as a source file. 47205b261ecSmrg -*|$object) 47305b261ecSmrg ;; 47405b261ecSmrg *) 47505b261ecSmrg set fnord "$@" "$arg"; shift ;; 47605b261ecSmrg esac 47705b261ecSmrg done 478475c125cSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 47905b261ecSmrg touch "$tmpdepfile" 48005b261ecSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 48105b261ecSmrg rm -f "$depfile" 48205b261ecSmrg cat < "$tmpdepfile" > "$depfile" 48305b261ecSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 48405b261ecSmrg' | \ 48505b261ecSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 48605b261ecSmrg## correctly. Breaking it into two sed invocations is a workaround. 48705b261ecSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 48805b261ecSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 48905b261ecSmrg ;; 49005b261ecSmrg 49105b261ecSmrgcpp) 49205b261ecSmrg # Important note: in order to support this mode, a compiler *must* 49305b261ecSmrg # always write the preprocessed file to stdout. 49405b261ecSmrg "$@" || exit $? 49505b261ecSmrg 49605b261ecSmrg # Remove the call to Libtool. 49705b261ecSmrg if test "$libtool" = yes; then 498475c125cSmrg while test $1 != '--mode=compile'; do 49905b261ecSmrg shift 50005b261ecSmrg done 50105b261ecSmrg shift 50205b261ecSmrg fi 50305b261ecSmrg 50405b261ecSmrg # Remove `-o $object'. 50505b261ecSmrg IFS=" " 50605b261ecSmrg for arg 50705b261ecSmrg do 50805b261ecSmrg case $arg in 50905b261ecSmrg -o) 51005b261ecSmrg shift 51105b261ecSmrg ;; 51205b261ecSmrg $object) 51305b261ecSmrg shift 51405b261ecSmrg ;; 51505b261ecSmrg *) 51605b261ecSmrg set fnord "$@" "$arg" 51705b261ecSmrg shift # fnord 51805b261ecSmrg shift # $arg 51905b261ecSmrg ;; 52005b261ecSmrg esac 52105b261ecSmrg done 52205b261ecSmrg 52305b261ecSmrg "$@" -E | 52405b261ecSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 52505b261ecSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 52605b261ecSmrg sed '$ s: \\$::' > "$tmpdepfile" 52705b261ecSmrg rm -f "$depfile" 52805b261ecSmrg echo "$object : \\" > "$depfile" 52905b261ecSmrg cat < "$tmpdepfile" >> "$depfile" 53005b261ecSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 53105b261ecSmrg rm -f "$tmpdepfile" 53205b261ecSmrg ;; 53305b261ecSmrg 53405b261ecSmrgmsvisualcpp) 53505b261ecSmrg # Important note: in order to support this mode, a compiler *must* 536475c125cSmrg # always write the preprocessed file to stdout, regardless of -o, 537475c125cSmrg # because we must use -o when running libtool. 53805b261ecSmrg "$@" || exit $? 53905b261ecSmrg IFS=" " 54005b261ecSmrg for arg 54105b261ecSmrg do 54205b261ecSmrg case "$arg" in 54305b261ecSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 54405b261ecSmrg set fnord "$@" 54505b261ecSmrg shift 54605b261ecSmrg shift 54705b261ecSmrg ;; 54805b261ecSmrg *) 54905b261ecSmrg set fnord "$@" "$arg" 55005b261ecSmrg shift 55105b261ecSmrg shift 55205b261ecSmrg ;; 55305b261ecSmrg esac 55405b261ecSmrg done 555475c125cSmrg "$@" -E | 556475c125cSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 55705b261ecSmrg rm -f "$depfile" 55805b261ecSmrg echo "$object : \\" > "$depfile" 559475c125cSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 56005b261ecSmrg echo " " >> "$depfile" 561475c125cSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 56205b261ecSmrg rm -f "$tmpdepfile" 56305b261ecSmrg ;; 56405b261ecSmrg 56505b261ecSmrgnone) 56605b261ecSmrg exec "$@" 56705b261ecSmrg ;; 56805b261ecSmrg 56905b261ecSmrg*) 57005b261ecSmrg echo "Unknown depmode $depmode" 1>&2 57105b261ecSmrg exit 1 57205b261ecSmrg ;; 57305b261ecSmrgesac 57405b261ecSmrg 57505b261ecSmrgexit 0 57605b261ecSmrg 57705b261ecSmrg# Local Variables: 57805b261ecSmrg# mode: shell-script 57905b261ecSmrg# sh-indentation: 2 58005b261ecSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 58105b261ecSmrg# time-stamp-start: "scriptversion=" 58205b261ecSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 583475c125cSmrg# time-stamp-end: "$" 58405b261ecSmrg# End: 585