depcomp revision 7965d9ac
150806d53Smrg#! /bin/sh 250806d53Smrg# depcomp - compile a program generating dependencies as side-effects 350806d53Smrg 47965d9acSmrgscriptversion=2007-03-29.01 550806d53Smrg 67965d9acSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software 77965d9acSmrg# Foundation, Inc. 850806d53Smrg 950806d53Smrg# This program is free software; you can redistribute it and/or modify 1050806d53Smrg# it under the terms of the GNU General Public License as published by 1150806d53Smrg# the Free Software Foundation; either version 2, or (at your option) 1250806d53Smrg# any later version. 1350806d53Smrg 1450806d53Smrg# This program is distributed in the hope that it will be useful, 1550806d53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1650806d53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1750806d53Smrg# GNU General Public License for more details. 1850806d53Smrg 1950806d53Smrg# You should have received a copy of the GNU General Public License 2050806d53Smrg# along with this program; if not, write to the Free Software 2150806d53Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2250806d53Smrg# 02110-1301, USA. 2350806d53Smrg 2450806d53Smrg# As a special exception to the GNU General Public License, if you 2550806d53Smrg# distribute this file as part of a program that contains a 2650806d53Smrg# configuration script generated by Autoconf, you may include it under 2750806d53Smrg# the same distribution terms that you use for the rest of that program. 2850806d53Smrg 2950806d53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 3050806d53Smrg 3150806d53Smrgcase $1 in 3250806d53Smrg '') 3350806d53Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3450806d53Smrg exit 1; 3550806d53Smrg ;; 3650806d53Smrg -h | --h*) 3750806d53Smrg cat <<\EOF 3850806d53SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3950806d53Smrg 4050806d53SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4150806d53Smrgas side-effects. 4250806d53Smrg 4350806d53SmrgEnvironment variables: 4450806d53Smrg depmode Dependency tracking mode. 4550806d53Smrg source Source file read by `PROGRAMS ARGS'. 4650806d53Smrg object Object file output by `PROGRAMS ARGS'. 4750806d53Smrg DEPDIR directory where to store dependencies. 4850806d53Smrg depfile Dependency file to output. 4950806d53Smrg tmpdepfile Temporary file to use when outputing dependencies. 5050806d53Smrg libtool Whether libtool is used (yes/no). 5150806d53Smrg 5250806d53SmrgReport bugs to <bug-automake@gnu.org>. 5350806d53SmrgEOF 5450806d53Smrg exit $? 5550806d53Smrg ;; 5650806d53Smrg -v | --v*) 5750806d53Smrg echo "depcomp $scriptversion" 5850806d53Smrg exit $? 5950806d53Smrg ;; 6050806d53Smrgesac 6150806d53Smrg 6250806d53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6350806d53Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6450806d53Smrg exit 1 6550806d53Smrgfi 6650806d53Smrg 6750806d53Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6850806d53Smrgdepfile=${depfile-`echo "$object" | 6950806d53Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 7050806d53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7150806d53Smrg 7250806d53Smrgrm -f "$tmpdepfile" 7350806d53Smrg 7450806d53Smrg# Some modes work just like other modes, but use different flags. We 7550806d53Smrg# parameterize here, but still list the modes in the big case below, 7650806d53Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7750806d53Smrg# here, because this file can only contain one case statement. 7850806d53Smrgif test "$depmode" = hp; then 7950806d53Smrg # HP compiler uses -M and no extra arg. 8050806d53Smrg gccflag=-M 8150806d53Smrg depmode=gcc 8250806d53Smrgfi 8350806d53Smrg 8450806d53Smrgif test "$depmode" = dashXmstdout; then 8550806d53Smrg # This is just like dashmstdout with a different argument. 8650806d53Smrg dashmflag=-xM 8750806d53Smrg depmode=dashmstdout 8850806d53Smrgfi 8950806d53Smrg 9050806d53Smrgcase "$depmode" in 9150806d53Smrggcc3) 9250806d53Smrg## gcc 3 implements dependency tracking that does exactly what 9350806d53Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9450806d53Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 957965d9acSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 967965d9acSmrg## the command line argument order; so add the flags where they 977965d9acSmrg## appear in depend2.am. Note that the slowdown incurred here 987965d9acSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 997965d9acSmrg for arg 1007965d9acSmrg do 1017965d9acSmrg case $arg in 1027965d9acSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1037965d9acSmrg *) set fnord "$@" "$arg" ;; 1047965d9acSmrg esac 1057965d9acSmrg shift # fnord 1067965d9acSmrg shift # $arg 1077965d9acSmrg done 1087965d9acSmrg "$@" 10950806d53Smrg stat=$? 11050806d53Smrg if test $stat -eq 0; then : 11150806d53Smrg else 11250806d53Smrg rm -f "$tmpdepfile" 11350806d53Smrg exit $stat 11450806d53Smrg fi 11550806d53Smrg mv "$tmpdepfile" "$depfile" 11650806d53Smrg ;; 11750806d53Smrg 11850806d53Smrggcc) 11950806d53Smrg## There are various ways to get dependency output from gcc. Here's 12050806d53Smrg## why we pick this rather obscure method: 12150806d53Smrg## - Don't want to use -MD because we'd like the dependencies to end 12250806d53Smrg## up in a subdir. Having to rename by hand is ugly. 12350806d53Smrg## (We might end up doing this anyway to support other compilers.) 12450806d53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 12550806d53Smrg## -MM, not -M (despite what the docs say). 12650806d53Smrg## - Using -M directly means running the compiler twice (even worse 12750806d53Smrg## than renaming). 12850806d53Smrg if test -z "$gccflag"; then 12950806d53Smrg gccflag=-MD, 13050806d53Smrg fi 13150806d53Smrg "$@" -Wp,"$gccflag$tmpdepfile" 13250806d53Smrg stat=$? 13350806d53Smrg if test $stat -eq 0; then : 13450806d53Smrg else 13550806d53Smrg rm -f "$tmpdepfile" 13650806d53Smrg exit $stat 13750806d53Smrg fi 13850806d53Smrg rm -f "$depfile" 13950806d53Smrg echo "$object : \\" > "$depfile" 14050806d53Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14150806d53Smrg## The second -e expression handles DOS-style file names with drive letters. 14250806d53Smrg sed -e 's/^[^:]*: / /' \ 14350806d53Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 14450806d53Smrg## This next piece of magic avoids the `deleted header file' problem. 14550806d53Smrg## The problem is that when a header file which appears in a .P file 14650806d53Smrg## is deleted, the dependency causes make to die (because there is 14750806d53Smrg## typically no way to rebuild the header). We avoid this by adding 14850806d53Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 14950806d53Smrg## this for us directly. 15050806d53Smrg tr ' ' ' 15150806d53Smrg' < "$tmpdepfile" | 15250806d53Smrg## Some versions of gcc put a space before the `:'. On the theory 15350806d53Smrg## that the space means something, we add a space to the output as 15450806d53Smrg## well. 15550806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 15650806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 15750806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 15850806d53Smrg rm -f "$tmpdepfile" 15950806d53Smrg ;; 16050806d53Smrg 16150806d53Smrghp) 16250806d53Smrg # This case exists only to let depend.m4 do its work. It works by 16350806d53Smrg # looking at the text of this script. This case will never be run, 16450806d53Smrg # since it is checked for above. 16550806d53Smrg exit 1 16650806d53Smrg ;; 16750806d53Smrg 16850806d53Smrgsgi) 16950806d53Smrg if test "$libtool" = yes; then 17050806d53Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17150806d53Smrg else 17250806d53Smrg "$@" -MDupdate "$tmpdepfile" 17350806d53Smrg fi 17450806d53Smrg stat=$? 17550806d53Smrg if test $stat -eq 0; then : 17650806d53Smrg else 17750806d53Smrg rm -f "$tmpdepfile" 17850806d53Smrg exit $stat 17950806d53Smrg fi 18050806d53Smrg rm -f "$depfile" 18150806d53Smrg 18250806d53Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 18350806d53Smrg echo "$object : \\" > "$depfile" 18450806d53Smrg 18550806d53Smrg # Clip off the initial element (the dependent). Don't try to be 18650806d53Smrg # clever and replace this with sed code, as IRIX sed won't handle 18750806d53Smrg # lines with more than a fixed number of characters (4096 in 18850806d53Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 18950806d53Smrg # the IRIX cc adds comments like `#:fec' to the end of the 19050806d53Smrg # dependency line. 19150806d53Smrg tr ' ' ' 19250806d53Smrg' < "$tmpdepfile" \ 19350806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 19450806d53Smrg tr ' 19550806d53Smrg' ' ' >> $depfile 19650806d53Smrg echo >> $depfile 19750806d53Smrg 19850806d53Smrg # The second pass generates a dummy entry for each header file. 19950806d53Smrg tr ' ' ' 20050806d53Smrg' < "$tmpdepfile" \ 20150806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 20250806d53Smrg >> $depfile 20350806d53Smrg else 20450806d53Smrg # The sourcefile does not contain any dependencies, so just 20550806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 20650806d53Smrg # "include basename.Plo" scheme. 20750806d53Smrg echo "#dummy" > "$depfile" 20850806d53Smrg fi 20950806d53Smrg rm -f "$tmpdepfile" 21050806d53Smrg ;; 21150806d53Smrg 21250806d53Smrgaix) 21350806d53Smrg # The C for AIX Compiler uses -M and outputs the dependencies 21450806d53Smrg # in a .u file. In older versions, this file always lives in the 21550806d53Smrg # current directory. Also, the AIX compiler puts `$object:' at the 21650806d53Smrg # start of each line; $object doesn't have directory information. 21750806d53Smrg # Version 6 uses the directory in both cases. 2187965d9acSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2197965d9acSmrg test "x$dir" = "x$object" && dir= 2207965d9acSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22150806d53Smrg if test "$libtool" = yes; then 2227965d9acSmrg tmpdepfile1=$dir$base.u 2237965d9acSmrg tmpdepfile2=$base.u 2247965d9acSmrg tmpdepfile3=$dir.libs/$base.u 22550806d53Smrg "$@" -Wc,-M 22650806d53Smrg else 2277965d9acSmrg tmpdepfile1=$dir$base.u 2287965d9acSmrg tmpdepfile2=$dir$base.u 2297965d9acSmrg tmpdepfile3=$dir$base.u 23050806d53Smrg "$@" -M 23150806d53Smrg fi 23250806d53Smrg stat=$? 23350806d53Smrg 23450806d53Smrg if test $stat -eq 0; then : 23550806d53Smrg else 2367965d9acSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 23750806d53Smrg exit $stat 23850806d53Smrg fi 23950806d53Smrg 2407965d9acSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2417965d9acSmrg do 2427965d9acSmrg test -f "$tmpdepfile" && break 2437965d9acSmrg done 24450806d53Smrg if test -f "$tmpdepfile"; then 24550806d53Smrg # Each line is of the form `foo.o: dependent.h'. 24650806d53Smrg # Do two passes, one to just change these to 24750806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2487965d9acSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2497965d9acSmrg # That's a tab and a space in the []. 2507965d9acSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25150806d53Smrg else 25250806d53Smrg # The sourcefile does not contain any dependencies, so just 25350806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 25450806d53Smrg # "include basename.Plo" scheme. 25550806d53Smrg echo "#dummy" > "$depfile" 25650806d53Smrg fi 25750806d53Smrg rm -f "$tmpdepfile" 25850806d53Smrg ;; 25950806d53Smrg 26050806d53Smrgicc) 26150806d53Smrg # Intel's C compiler understands `-MD -MF file'. However on 26250806d53Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 26350806d53Smrg # ICC 7.0 will fill foo.d with something like 26450806d53Smrg # foo.o: sub/foo.c 26550806d53Smrg # foo.o: sub/foo.h 26650806d53Smrg # which is wrong. We want: 26750806d53Smrg # sub/foo.o: sub/foo.c 26850806d53Smrg # sub/foo.o: sub/foo.h 26950806d53Smrg # sub/foo.c: 27050806d53Smrg # sub/foo.h: 27150806d53Smrg # ICC 7.1 will output 27250806d53Smrg # foo.o: sub/foo.c sub/foo.h 27350806d53Smrg # and will wrap long lines using \ : 27450806d53Smrg # foo.o: sub/foo.c ... \ 27550806d53Smrg # sub/foo.h ... \ 27650806d53Smrg # ... 27750806d53Smrg 27850806d53Smrg "$@" -MD -MF "$tmpdepfile" 27950806d53Smrg stat=$? 28050806d53Smrg if test $stat -eq 0; then : 28150806d53Smrg else 28250806d53Smrg rm -f "$tmpdepfile" 28350806d53Smrg exit $stat 28450806d53Smrg fi 28550806d53Smrg rm -f "$depfile" 28650806d53Smrg # Each line is of the form `foo.o: dependent.h', 28750806d53Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 28850806d53Smrg # Do two passes, one to just change these to 28950806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 29050806d53Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29150806d53Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 29250806d53Smrg # correctly. Breaking it into two sed invocations is a workaround. 29350806d53Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 29450806d53Smrg sed -e 's/$/ :/' >> "$depfile" 29550806d53Smrg rm -f "$tmpdepfile" 29650806d53Smrg ;; 29750806d53Smrg 2987965d9acSmrghp2) 2997965d9acSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3007965d9acSmrg # compilers, which have integrated preprocessors. The correct option 3017965d9acSmrg # to use with these is +Maked; it writes dependencies to a file named 3027965d9acSmrg # 'foo.d', which lands next to the object file, wherever that 3037965d9acSmrg # happens to be. 3047965d9acSmrg # Much of this is similar to the tru64 case; see comments there. 3057965d9acSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3067965d9acSmrg test "x$dir" = "x$object" && dir= 3077965d9acSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3087965d9acSmrg if test "$libtool" = yes; then 3097965d9acSmrg tmpdepfile1=$dir$base.d 3107965d9acSmrg tmpdepfile2=$dir.libs/$base.d 3117965d9acSmrg "$@" -Wc,+Maked 3127965d9acSmrg else 3137965d9acSmrg tmpdepfile1=$dir$base.d 3147965d9acSmrg tmpdepfile2=$dir$base.d 3157965d9acSmrg "$@" +Maked 3167965d9acSmrg fi 3177965d9acSmrg stat=$? 3187965d9acSmrg if test $stat -eq 0; then : 3197965d9acSmrg else 3207965d9acSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3217965d9acSmrg exit $stat 3227965d9acSmrg fi 3237965d9acSmrg 3247965d9acSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3257965d9acSmrg do 3267965d9acSmrg test -f "$tmpdepfile" && break 3277965d9acSmrg done 3287965d9acSmrg if test -f "$tmpdepfile"; then 3297965d9acSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3307965d9acSmrg # Add `dependent.h:' lines. 3317965d9acSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 3327965d9acSmrg else 3337965d9acSmrg echo "#dummy" > "$depfile" 3347965d9acSmrg fi 3357965d9acSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3367965d9acSmrg ;; 3377965d9acSmrg 33850806d53Smrgtru64) 33950806d53Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 34050806d53Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 34150806d53Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 34250806d53Smrg # dependencies in `foo.d' instead, so we check for that too. 34350806d53Smrg # Subdirectories are respected. 34450806d53Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 34550806d53Smrg test "x$dir" = "x$object" && dir= 34650806d53Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 34750806d53Smrg 34850806d53Smrg if test "$libtool" = yes; then 34950806d53Smrg # With Tru64 cc, shared objects can also be used to make a 3507965d9acSmrg # static library. This mechanism is used in libtool 1.4 series to 35150806d53Smrg # handle both shared and static libraries in a single compilation. 35250806d53Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 35350806d53Smrg # 35450806d53Smrg # With libtool 1.5 this exception was removed, and libtool now 35550806d53Smrg # generates 2 separate objects for the 2 libraries. These two 3567965d9acSmrg # compilations output dependencies in $dir.libs/$base.o.d and 35750806d53Smrg # in $dir$base.o.d. We have to check for both files, because 35850806d53Smrg # one of the two compilations can be disabled. We should prefer 35950806d53Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 36050806d53Smrg # automatically cleaned when .libs/ is deleted, while ignoring 36150806d53Smrg # the former would cause a distcleancheck panic. 36250806d53Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 36350806d53Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 36450806d53Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 36550806d53Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 36650806d53Smrg "$@" -Wc,-MD 36750806d53Smrg else 36850806d53Smrg tmpdepfile1=$dir$base.o.d 36950806d53Smrg tmpdepfile2=$dir$base.d 37050806d53Smrg tmpdepfile3=$dir$base.d 37150806d53Smrg tmpdepfile4=$dir$base.d 37250806d53Smrg "$@" -MD 37350806d53Smrg fi 37450806d53Smrg 37550806d53Smrg stat=$? 37650806d53Smrg if test $stat -eq 0; then : 37750806d53Smrg else 37850806d53Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37950806d53Smrg exit $stat 38050806d53Smrg fi 38150806d53Smrg 38250806d53Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 38350806d53Smrg do 38450806d53Smrg test -f "$tmpdepfile" && break 38550806d53Smrg done 38650806d53Smrg if test -f "$tmpdepfile"; then 38750806d53Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 38850806d53Smrg # That's a tab and a space in the []. 38950806d53Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 39050806d53Smrg else 39150806d53Smrg echo "#dummy" > "$depfile" 39250806d53Smrg fi 39350806d53Smrg rm -f "$tmpdepfile" 39450806d53Smrg ;; 39550806d53Smrg 39650806d53Smrg#nosideeffect) 39750806d53Smrg # This comment above is used by automake to tell side-effect 39850806d53Smrg # dependency tracking mechanisms from slower ones. 39950806d53Smrg 40050806d53Smrgdashmstdout) 40150806d53Smrg # Important note: in order to support this mode, a compiler *must* 40250806d53Smrg # always write the preprocessed file to stdout, regardless of -o. 40350806d53Smrg "$@" || exit $? 40450806d53Smrg 40550806d53Smrg # Remove the call to Libtool. 40650806d53Smrg if test "$libtool" = yes; then 40750806d53Smrg while test $1 != '--mode=compile'; do 40850806d53Smrg shift 40950806d53Smrg done 41050806d53Smrg shift 41150806d53Smrg fi 41250806d53Smrg 41350806d53Smrg # Remove `-o $object'. 41450806d53Smrg IFS=" " 41550806d53Smrg for arg 41650806d53Smrg do 41750806d53Smrg case $arg in 41850806d53Smrg -o) 41950806d53Smrg shift 42050806d53Smrg ;; 42150806d53Smrg $object) 42250806d53Smrg shift 42350806d53Smrg ;; 42450806d53Smrg *) 42550806d53Smrg set fnord "$@" "$arg" 42650806d53Smrg shift # fnord 42750806d53Smrg shift # $arg 42850806d53Smrg ;; 42950806d53Smrg esac 43050806d53Smrg done 43150806d53Smrg 43250806d53Smrg test -z "$dashmflag" && dashmflag=-M 43350806d53Smrg # Require at least two characters before searching for `:' 43450806d53Smrg # in the target name. This is to cope with DOS-style filenames: 43550806d53Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 43650806d53Smrg "$@" $dashmflag | 43750806d53Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 43850806d53Smrg rm -f "$depfile" 43950806d53Smrg cat < "$tmpdepfile" > "$depfile" 44050806d53Smrg tr ' ' ' 44150806d53Smrg' < "$tmpdepfile" | \ 44250806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 44350806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 44450806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 44550806d53Smrg rm -f "$tmpdepfile" 44650806d53Smrg ;; 44750806d53Smrg 44850806d53SmrgdashXmstdout) 44950806d53Smrg # This case only exists to satisfy depend.m4. It is never actually 45050806d53Smrg # run, as this mode is specially recognized in the preamble. 45150806d53Smrg exit 1 45250806d53Smrg ;; 45350806d53Smrg 45450806d53Smrgmakedepend) 45550806d53Smrg "$@" || exit $? 45650806d53Smrg # Remove any Libtool call 45750806d53Smrg if test "$libtool" = yes; then 45850806d53Smrg while test $1 != '--mode=compile'; do 45950806d53Smrg shift 46050806d53Smrg done 46150806d53Smrg shift 46250806d53Smrg fi 46350806d53Smrg # X makedepend 46450806d53Smrg shift 46550806d53Smrg cleared=no 46650806d53Smrg for arg in "$@"; do 46750806d53Smrg case $cleared in 46850806d53Smrg no) 46950806d53Smrg set ""; shift 47050806d53Smrg cleared=yes ;; 47150806d53Smrg esac 47250806d53Smrg case "$arg" in 47350806d53Smrg -D*|-I*) 47450806d53Smrg set fnord "$@" "$arg"; shift ;; 47550806d53Smrg # Strip any option that makedepend may not understand. Remove 47650806d53Smrg # the object too, otherwise makedepend will parse it as a source file. 47750806d53Smrg -*|$object) 47850806d53Smrg ;; 47950806d53Smrg *) 48050806d53Smrg set fnord "$@" "$arg"; shift ;; 48150806d53Smrg esac 48250806d53Smrg done 48350806d53Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 48450806d53Smrg touch "$tmpdepfile" 48550806d53Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 48650806d53Smrg rm -f "$depfile" 48750806d53Smrg cat < "$tmpdepfile" > "$depfile" 48850806d53Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 48950806d53Smrg' | \ 49050806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 49150806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 49250806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 49350806d53Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 49450806d53Smrg ;; 49550806d53Smrg 49650806d53Smrgcpp) 49750806d53Smrg # Important note: in order to support this mode, a compiler *must* 49850806d53Smrg # always write the preprocessed file to stdout. 49950806d53Smrg "$@" || exit $? 50050806d53Smrg 50150806d53Smrg # Remove the call to Libtool. 50250806d53Smrg if test "$libtool" = yes; then 50350806d53Smrg while test $1 != '--mode=compile'; do 50450806d53Smrg shift 50550806d53Smrg done 50650806d53Smrg shift 50750806d53Smrg fi 50850806d53Smrg 50950806d53Smrg # Remove `-o $object'. 51050806d53Smrg IFS=" " 51150806d53Smrg for arg 51250806d53Smrg do 51350806d53Smrg case $arg in 51450806d53Smrg -o) 51550806d53Smrg shift 51650806d53Smrg ;; 51750806d53Smrg $object) 51850806d53Smrg shift 51950806d53Smrg ;; 52050806d53Smrg *) 52150806d53Smrg set fnord "$@" "$arg" 52250806d53Smrg shift # fnord 52350806d53Smrg shift # $arg 52450806d53Smrg ;; 52550806d53Smrg esac 52650806d53Smrg done 52750806d53Smrg 52850806d53Smrg "$@" -E | 52950806d53Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 53050806d53Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 53150806d53Smrg sed '$ s: \\$::' > "$tmpdepfile" 53250806d53Smrg rm -f "$depfile" 53350806d53Smrg echo "$object : \\" > "$depfile" 53450806d53Smrg cat < "$tmpdepfile" >> "$depfile" 53550806d53Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 53650806d53Smrg rm -f "$tmpdepfile" 53750806d53Smrg ;; 53850806d53Smrg 53950806d53Smrgmsvisualcpp) 54050806d53Smrg # Important note: in order to support this mode, a compiler *must* 54150806d53Smrg # always write the preprocessed file to stdout, regardless of -o, 54250806d53Smrg # because we must use -o when running libtool. 54350806d53Smrg "$@" || exit $? 54450806d53Smrg IFS=" " 54550806d53Smrg for arg 54650806d53Smrg do 54750806d53Smrg case "$arg" in 54850806d53Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 54950806d53Smrg set fnord "$@" 55050806d53Smrg shift 55150806d53Smrg shift 55250806d53Smrg ;; 55350806d53Smrg *) 55450806d53Smrg set fnord "$@" "$arg" 55550806d53Smrg shift 55650806d53Smrg shift 55750806d53Smrg ;; 55850806d53Smrg esac 55950806d53Smrg done 56050806d53Smrg "$@" -E | 56150806d53Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 56250806d53Smrg rm -f "$depfile" 56350806d53Smrg echo "$object : \\" > "$depfile" 56450806d53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 56550806d53Smrg echo " " >> "$depfile" 56650806d53Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 56750806d53Smrg rm -f "$tmpdepfile" 56850806d53Smrg ;; 56950806d53Smrg 57050806d53Smrgnone) 57150806d53Smrg exec "$@" 57250806d53Smrg ;; 57350806d53Smrg 57450806d53Smrg*) 57550806d53Smrg echo "Unknown depmode $depmode" 1>&2 57650806d53Smrg exit 1 57750806d53Smrg ;; 57850806d53Smrgesac 57950806d53Smrg 58050806d53Smrgexit 0 58150806d53Smrg 58250806d53Smrg# Local Variables: 58350806d53Smrg# mode: shell-script 58450806d53Smrg# sh-indentation: 2 58550806d53Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 58650806d53Smrg# time-stamp-start: "scriptversion=" 58750806d53Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 58850806d53Smrg# time-stamp-end: "$" 58950806d53Smrg# End: 590