152f9793fSmrg#! /bin/sh 252f9793fSmrg# depcomp - compile a program generating dependencies as side-effects 352f9793fSmrg 42faa96e0Smrgscriptversion=2009-04-28.21; # UTC 552f9793fSmrg 62faa96e0Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 72faa96e0Smrg# Software Foundation, Inc. 852f9793fSmrg 952f9793fSmrg# This program is free software; you can redistribute it and/or modify 1052f9793fSmrg# it under the terms of the GNU General Public License as published by 1152f9793fSmrg# the Free Software Foundation; either version 2, or (at your option) 1252f9793fSmrg# any later version. 1352f9793fSmrg 1452f9793fSmrg# This program is distributed in the hope that it will be useful, 1552f9793fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1652f9793fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1752f9793fSmrg# GNU General Public License for more details. 1852f9793fSmrg 1952f9793fSmrg# You should have received a copy of the GNU General Public License 202faa96e0Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2152f9793fSmrg 2252f9793fSmrg# As a special exception to the GNU General Public License, if you 2352f9793fSmrg# distribute this file as part of a program that contains a 2452f9793fSmrg# configuration script generated by Autoconf, you may include it under 2552f9793fSmrg# the same distribution terms that you use for the rest of that program. 2652f9793fSmrg 2752f9793fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2852f9793fSmrg 2952f9793fSmrgcase $1 in 3052f9793fSmrg '') 3152f9793fSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3252f9793fSmrg exit 1; 3352f9793fSmrg ;; 3452f9793fSmrg -h | --h*) 3552f9793fSmrg cat <<\EOF 3652f9793fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3752f9793fSmrg 3852f9793fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3952f9793fSmrgas side-effects. 4052f9793fSmrg 4152f9793fSmrgEnvironment variables: 4252f9793fSmrg depmode Dependency tracking mode. 4352f9793fSmrg source Source file read by `PROGRAMS ARGS'. 4452f9793fSmrg object Object file output by `PROGRAMS ARGS'. 4552f9793fSmrg DEPDIR directory where to store dependencies. 4652f9793fSmrg depfile Dependency file to output. 4752f9793fSmrg tmpdepfile Temporary file to use when outputing dependencies. 4852f9793fSmrg libtool Whether libtool is used (yes/no). 4952f9793fSmrg 5052f9793fSmrgReport bugs to <bug-automake@gnu.org>. 5152f9793fSmrgEOF 5252f9793fSmrg exit $? 5352f9793fSmrg ;; 5452f9793fSmrg -v | --v*) 5552f9793fSmrg echo "depcomp $scriptversion" 5652f9793fSmrg exit $? 5752f9793fSmrg ;; 5852f9793fSmrgesac 5952f9793fSmrg 6052f9793fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6152f9793fSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6252f9793fSmrg exit 1 6352f9793fSmrgfi 6452f9793fSmrg 6552f9793fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6652f9793fSmrgdepfile=${depfile-`echo "$object" | 6752f9793fSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6852f9793fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6952f9793fSmrg 7052f9793fSmrgrm -f "$tmpdepfile" 7152f9793fSmrg 7252f9793fSmrg# Some modes work just like other modes, but use different flags. We 7352f9793fSmrg# parameterize here, but still list the modes in the big case below, 7452f9793fSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7552f9793fSmrg# here, because this file can only contain one case statement. 7652f9793fSmrgif test "$depmode" = hp; then 7752f9793fSmrg # HP compiler uses -M and no extra arg. 7852f9793fSmrg gccflag=-M 7952f9793fSmrg depmode=gcc 8052f9793fSmrgfi 8152f9793fSmrg 8252f9793fSmrgif test "$depmode" = dashXmstdout; then 8352f9793fSmrg # This is just like dashmstdout with a different argument. 8452f9793fSmrg dashmflag=-xM 8552f9793fSmrg depmode=dashmstdout 8652f9793fSmrgfi 8752f9793fSmrg 882faa96e0Smrgcygpath_u="cygpath -u -f -" 892faa96e0Smrgif test "$depmode" = msvcmsys; then 902faa96e0Smrg # This is just like msvisualcpp but w/o cygpath translation. 912faa96e0Smrg # Just convert the backslash-escaped backslashes to single forward 922faa96e0Smrg # slashes to satisfy depend.m4 932faa96e0Smrg cygpath_u="sed s,\\\\\\\\,/,g" 942faa96e0Smrg depmode=msvisualcpp 952faa96e0Smrgfi 962faa96e0Smrg 9752f9793fSmrgcase "$depmode" in 9852f9793fSmrggcc3) 9952f9793fSmrg## gcc 3 implements dependency tracking that does exactly what 10052f9793fSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10152f9793fSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 1022faa96e0Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1032faa96e0Smrg## the command line argument order; so add the flags where they 1042faa96e0Smrg## appear in depend2.am. Note that the slowdown incurred here 1052faa96e0Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1062faa96e0Smrg for arg 1072faa96e0Smrg do 1082faa96e0Smrg case $arg in 1092faa96e0Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1102faa96e0Smrg *) set fnord "$@" "$arg" ;; 1112faa96e0Smrg esac 1122faa96e0Smrg shift # fnord 1132faa96e0Smrg shift # $arg 1142faa96e0Smrg done 1152faa96e0Smrg "$@" 11652f9793fSmrg stat=$? 11752f9793fSmrg if test $stat -eq 0; then : 11852f9793fSmrg else 11952f9793fSmrg rm -f "$tmpdepfile" 12052f9793fSmrg exit $stat 12152f9793fSmrg fi 12252f9793fSmrg mv "$tmpdepfile" "$depfile" 12352f9793fSmrg ;; 12452f9793fSmrg 12552f9793fSmrggcc) 12652f9793fSmrg## There are various ways to get dependency output from gcc. Here's 12752f9793fSmrg## why we pick this rather obscure method: 12852f9793fSmrg## - Don't want to use -MD because we'd like the dependencies to end 12952f9793fSmrg## up in a subdir. Having to rename by hand is ugly. 13052f9793fSmrg## (We might end up doing this anyway to support other compilers.) 13152f9793fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 13252f9793fSmrg## -MM, not -M (despite what the docs say). 13352f9793fSmrg## - Using -M directly means running the compiler twice (even worse 13452f9793fSmrg## than renaming). 13552f9793fSmrg if test -z "$gccflag"; then 13652f9793fSmrg gccflag=-MD, 13752f9793fSmrg fi 13852f9793fSmrg "$@" -Wp,"$gccflag$tmpdepfile" 13952f9793fSmrg stat=$? 14052f9793fSmrg if test $stat -eq 0; then : 14152f9793fSmrg else 14252f9793fSmrg rm -f "$tmpdepfile" 14352f9793fSmrg exit $stat 14452f9793fSmrg fi 14552f9793fSmrg rm -f "$depfile" 14652f9793fSmrg echo "$object : \\" > "$depfile" 14752f9793fSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14852f9793fSmrg## The second -e expression handles DOS-style file names with drive letters. 14952f9793fSmrg sed -e 's/^[^:]*: / /' \ 15052f9793fSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15152f9793fSmrg## This next piece of magic avoids the `deleted header file' problem. 15252f9793fSmrg## The problem is that when a header file which appears in a .P file 15352f9793fSmrg## is deleted, the dependency causes make to die (because there is 15452f9793fSmrg## typically no way to rebuild the header). We avoid this by adding 15552f9793fSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 15652f9793fSmrg## this for us directly. 15752f9793fSmrg tr ' ' ' 15852f9793fSmrg' < "$tmpdepfile" | 15952f9793fSmrg## Some versions of gcc put a space before the `:'. On the theory 16052f9793fSmrg## that the space means something, we add a space to the output as 16152f9793fSmrg## well. 16252f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 16352f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 16452f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 16552f9793fSmrg rm -f "$tmpdepfile" 16652f9793fSmrg ;; 16752f9793fSmrg 16852f9793fSmrghp) 16952f9793fSmrg # This case exists only to let depend.m4 do its work. It works by 17052f9793fSmrg # looking at the text of this script. This case will never be run, 17152f9793fSmrg # since it is checked for above. 17252f9793fSmrg exit 1 17352f9793fSmrg ;; 17452f9793fSmrg 17552f9793fSmrgsgi) 17652f9793fSmrg if test "$libtool" = yes; then 17752f9793fSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17852f9793fSmrg else 17952f9793fSmrg "$@" -MDupdate "$tmpdepfile" 18052f9793fSmrg fi 18152f9793fSmrg stat=$? 18252f9793fSmrg if test $stat -eq 0; then : 18352f9793fSmrg else 18452f9793fSmrg rm -f "$tmpdepfile" 18552f9793fSmrg exit $stat 18652f9793fSmrg fi 18752f9793fSmrg rm -f "$depfile" 18852f9793fSmrg 18952f9793fSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 19052f9793fSmrg echo "$object : \\" > "$depfile" 19152f9793fSmrg 19252f9793fSmrg # Clip off the initial element (the dependent). Don't try to be 19352f9793fSmrg # clever and replace this with sed code, as IRIX sed won't handle 19452f9793fSmrg # lines with more than a fixed number of characters (4096 in 19552f9793fSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 19652f9793fSmrg # the IRIX cc adds comments like `#:fec' to the end of the 19752f9793fSmrg # dependency line. 19852f9793fSmrg tr ' ' ' 19952f9793fSmrg' < "$tmpdepfile" \ 20052f9793fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 20152f9793fSmrg tr ' 2022faa96e0Smrg' ' ' >> "$depfile" 2032faa96e0Smrg echo >> "$depfile" 20452f9793fSmrg 20552f9793fSmrg # The second pass generates a dummy entry for each header file. 20652f9793fSmrg tr ' ' ' 20752f9793fSmrg' < "$tmpdepfile" \ 20852f9793fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2092faa96e0Smrg >> "$depfile" 21052f9793fSmrg else 21152f9793fSmrg # The sourcefile does not contain any dependencies, so just 21252f9793fSmrg # store a dummy comment line, to avoid errors with the Makefile 21352f9793fSmrg # "include basename.Plo" scheme. 21452f9793fSmrg echo "#dummy" > "$depfile" 21552f9793fSmrg fi 21652f9793fSmrg rm -f "$tmpdepfile" 21752f9793fSmrg ;; 21852f9793fSmrg 21952f9793fSmrgaix) 22052f9793fSmrg # The C for AIX Compiler uses -M and outputs the dependencies 22152f9793fSmrg # in a .u file. In older versions, this file always lives in the 22252f9793fSmrg # current directory. Also, the AIX compiler puts `$object:' at the 22352f9793fSmrg # start of each line; $object doesn't have directory information. 22452f9793fSmrg # Version 6 uses the directory in both cases. 2252faa96e0Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2262faa96e0Smrg test "x$dir" = "x$object" && dir= 2272faa96e0Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22852f9793fSmrg if test "$libtool" = yes; then 2292faa96e0Smrg tmpdepfile1=$dir$base.u 2302faa96e0Smrg tmpdepfile2=$base.u 2312faa96e0Smrg tmpdepfile3=$dir.libs/$base.u 23252f9793fSmrg "$@" -Wc,-M 23352f9793fSmrg else 2342faa96e0Smrg tmpdepfile1=$dir$base.u 2352faa96e0Smrg tmpdepfile2=$dir$base.u 2362faa96e0Smrg tmpdepfile3=$dir$base.u 23752f9793fSmrg "$@" -M 23852f9793fSmrg fi 23952f9793fSmrg stat=$? 24052f9793fSmrg 24152f9793fSmrg if test $stat -eq 0; then : 24252f9793fSmrg else 2432faa96e0Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24452f9793fSmrg exit $stat 24552f9793fSmrg fi 24652f9793fSmrg 2472faa96e0Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2482faa96e0Smrg do 2492faa96e0Smrg test -f "$tmpdepfile" && break 2502faa96e0Smrg done 25152f9793fSmrg if test -f "$tmpdepfile"; then 25252f9793fSmrg # Each line is of the form `foo.o: dependent.h'. 25352f9793fSmrg # Do two passes, one to just change these to 25452f9793fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2552faa96e0Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2562faa96e0Smrg # That's a tab and a space in the []. 2572faa96e0Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25852f9793fSmrg else 25952f9793fSmrg # The sourcefile does not contain any dependencies, so just 26052f9793fSmrg # store a dummy comment line, to avoid errors with the Makefile 26152f9793fSmrg # "include basename.Plo" scheme. 26252f9793fSmrg echo "#dummy" > "$depfile" 26352f9793fSmrg fi 26452f9793fSmrg rm -f "$tmpdepfile" 26552f9793fSmrg ;; 26652f9793fSmrg 26752f9793fSmrgicc) 26852f9793fSmrg # Intel's C compiler understands `-MD -MF file'. However on 26952f9793fSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 27052f9793fSmrg # ICC 7.0 will fill foo.d with something like 27152f9793fSmrg # foo.o: sub/foo.c 27252f9793fSmrg # foo.o: sub/foo.h 27352f9793fSmrg # which is wrong. We want: 27452f9793fSmrg # sub/foo.o: sub/foo.c 27552f9793fSmrg # sub/foo.o: sub/foo.h 27652f9793fSmrg # sub/foo.c: 27752f9793fSmrg # sub/foo.h: 27852f9793fSmrg # ICC 7.1 will output 27952f9793fSmrg # foo.o: sub/foo.c sub/foo.h 28052f9793fSmrg # and will wrap long lines using \ : 28152f9793fSmrg # foo.o: sub/foo.c ... \ 28252f9793fSmrg # sub/foo.h ... \ 28352f9793fSmrg # ... 28452f9793fSmrg 28552f9793fSmrg "$@" -MD -MF "$tmpdepfile" 28652f9793fSmrg stat=$? 28752f9793fSmrg if test $stat -eq 0; then : 28852f9793fSmrg else 28952f9793fSmrg rm -f "$tmpdepfile" 29052f9793fSmrg exit $stat 29152f9793fSmrg fi 29252f9793fSmrg rm -f "$depfile" 29352f9793fSmrg # Each line is of the form `foo.o: dependent.h', 29452f9793fSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 29552f9793fSmrg # Do two passes, one to just change these to 29652f9793fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 29752f9793fSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29852f9793fSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 29952f9793fSmrg # correctly. Breaking it into two sed invocations is a workaround. 30052f9793fSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 30152f9793fSmrg sed -e 's/$/ :/' >> "$depfile" 30252f9793fSmrg rm -f "$tmpdepfile" 30352f9793fSmrg ;; 30452f9793fSmrg 3052faa96e0Smrghp2) 3062faa96e0Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3072faa96e0Smrg # compilers, which have integrated preprocessors. The correct option 3082faa96e0Smrg # to use with these is +Maked; it writes dependencies to a file named 3092faa96e0Smrg # 'foo.d', which lands next to the object file, wherever that 3102faa96e0Smrg # happens to be. 3112faa96e0Smrg # Much of this is similar to the tru64 case; see comments there. 3122faa96e0Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3132faa96e0Smrg test "x$dir" = "x$object" && dir= 3142faa96e0Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3152faa96e0Smrg if test "$libtool" = yes; then 3162faa96e0Smrg tmpdepfile1=$dir$base.d 3172faa96e0Smrg tmpdepfile2=$dir.libs/$base.d 3182faa96e0Smrg "$@" -Wc,+Maked 3192faa96e0Smrg else 3202faa96e0Smrg tmpdepfile1=$dir$base.d 3212faa96e0Smrg tmpdepfile2=$dir$base.d 3222faa96e0Smrg "$@" +Maked 3232faa96e0Smrg fi 3242faa96e0Smrg stat=$? 3252faa96e0Smrg if test $stat -eq 0; then : 3262faa96e0Smrg else 3272faa96e0Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3282faa96e0Smrg exit $stat 3292faa96e0Smrg fi 3302faa96e0Smrg 3312faa96e0Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3322faa96e0Smrg do 3332faa96e0Smrg test -f "$tmpdepfile" && break 3342faa96e0Smrg done 3352faa96e0Smrg if test -f "$tmpdepfile"; then 3362faa96e0Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3372faa96e0Smrg # Add `dependent.h:' lines. 3382faa96e0Smrg sed -ne '2,${ 3392faa96e0Smrg s/^ *// 3402faa96e0Smrg s/ \\*$// 3412faa96e0Smrg s/$/:/ 3422faa96e0Smrg p 3432faa96e0Smrg }' "$tmpdepfile" >> "$depfile" 3442faa96e0Smrg else 3452faa96e0Smrg echo "#dummy" > "$depfile" 3462faa96e0Smrg fi 3472faa96e0Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3482faa96e0Smrg ;; 3492faa96e0Smrg 35052f9793fSmrgtru64) 35152f9793fSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 35252f9793fSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 35352f9793fSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 35452f9793fSmrg # dependencies in `foo.d' instead, so we check for that too. 35552f9793fSmrg # Subdirectories are respected. 35652f9793fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 35752f9793fSmrg test "x$dir" = "x$object" && dir= 35852f9793fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 35952f9793fSmrg 36052f9793fSmrg if test "$libtool" = yes; then 36152f9793fSmrg # With Tru64 cc, shared objects can also be used to make a 3622faa96e0Smrg # static library. This mechanism is used in libtool 1.4 series to 36352f9793fSmrg # handle both shared and static libraries in a single compilation. 36452f9793fSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 36552f9793fSmrg # 36652f9793fSmrg # With libtool 1.5 this exception was removed, and libtool now 36752f9793fSmrg # generates 2 separate objects for the 2 libraries. These two 3682faa96e0Smrg # compilations output dependencies in $dir.libs/$base.o.d and 36952f9793fSmrg # in $dir$base.o.d. We have to check for both files, because 37052f9793fSmrg # one of the two compilations can be disabled. We should prefer 37152f9793fSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 37252f9793fSmrg # automatically cleaned when .libs/ is deleted, while ignoring 37352f9793fSmrg # the former would cause a distcleancheck panic. 37452f9793fSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 37552f9793fSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 37652f9793fSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 37752f9793fSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 37852f9793fSmrg "$@" -Wc,-MD 37952f9793fSmrg else 38052f9793fSmrg tmpdepfile1=$dir$base.o.d 38152f9793fSmrg tmpdepfile2=$dir$base.d 38252f9793fSmrg tmpdepfile3=$dir$base.d 38352f9793fSmrg tmpdepfile4=$dir$base.d 38452f9793fSmrg "$@" -MD 38552f9793fSmrg fi 38652f9793fSmrg 38752f9793fSmrg stat=$? 38852f9793fSmrg if test $stat -eq 0; then : 38952f9793fSmrg else 39052f9793fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39152f9793fSmrg exit $stat 39252f9793fSmrg fi 39352f9793fSmrg 39452f9793fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39552f9793fSmrg do 39652f9793fSmrg test -f "$tmpdepfile" && break 39752f9793fSmrg done 39852f9793fSmrg if test -f "$tmpdepfile"; then 39952f9793fSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 40052f9793fSmrg # That's a tab and a space in the []. 40152f9793fSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 40252f9793fSmrg else 40352f9793fSmrg echo "#dummy" > "$depfile" 40452f9793fSmrg fi 40552f9793fSmrg rm -f "$tmpdepfile" 40652f9793fSmrg ;; 40752f9793fSmrg 40852f9793fSmrg#nosideeffect) 40952f9793fSmrg # This comment above is used by automake to tell side-effect 41052f9793fSmrg # dependency tracking mechanisms from slower ones. 41152f9793fSmrg 41252f9793fSmrgdashmstdout) 41352f9793fSmrg # Important note: in order to support this mode, a compiler *must* 41452f9793fSmrg # always write the preprocessed file to stdout, regardless of -o. 41552f9793fSmrg "$@" || exit $? 41652f9793fSmrg 41752f9793fSmrg # Remove the call to Libtool. 41852f9793fSmrg if test "$libtool" = yes; then 4192faa96e0Smrg while test "X$1" != 'X--mode=compile'; do 42052f9793fSmrg shift 42152f9793fSmrg done 42252f9793fSmrg shift 42352f9793fSmrg fi 42452f9793fSmrg 42552f9793fSmrg # Remove `-o $object'. 42652f9793fSmrg IFS=" " 42752f9793fSmrg for arg 42852f9793fSmrg do 42952f9793fSmrg case $arg in 43052f9793fSmrg -o) 43152f9793fSmrg shift 43252f9793fSmrg ;; 43352f9793fSmrg $object) 43452f9793fSmrg shift 43552f9793fSmrg ;; 43652f9793fSmrg *) 43752f9793fSmrg set fnord "$@" "$arg" 43852f9793fSmrg shift # fnord 43952f9793fSmrg shift # $arg 44052f9793fSmrg ;; 44152f9793fSmrg esac 44252f9793fSmrg done 44352f9793fSmrg 44452f9793fSmrg test -z "$dashmflag" && dashmflag=-M 44552f9793fSmrg # Require at least two characters before searching for `:' 44652f9793fSmrg # in the target name. This is to cope with DOS-style filenames: 44752f9793fSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 44852f9793fSmrg "$@" $dashmflag | 44952f9793fSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 45052f9793fSmrg rm -f "$depfile" 45152f9793fSmrg cat < "$tmpdepfile" > "$depfile" 45252f9793fSmrg tr ' ' ' 45352f9793fSmrg' < "$tmpdepfile" | \ 45452f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 45552f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 45652f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 45752f9793fSmrg rm -f "$tmpdepfile" 45852f9793fSmrg ;; 45952f9793fSmrg 46052f9793fSmrgdashXmstdout) 46152f9793fSmrg # This case only exists to satisfy depend.m4. It is never actually 46252f9793fSmrg # run, as this mode is specially recognized in the preamble. 46352f9793fSmrg exit 1 46452f9793fSmrg ;; 46552f9793fSmrg 46652f9793fSmrgmakedepend) 46752f9793fSmrg "$@" || exit $? 46852f9793fSmrg # Remove any Libtool call 46952f9793fSmrg if test "$libtool" = yes; then 4702faa96e0Smrg while test "X$1" != 'X--mode=compile'; do 47152f9793fSmrg shift 47252f9793fSmrg done 47352f9793fSmrg shift 47452f9793fSmrg fi 47552f9793fSmrg # X makedepend 47652f9793fSmrg shift 4772faa96e0Smrg cleared=no eat=no 4782faa96e0Smrg for arg 4792faa96e0Smrg do 48052f9793fSmrg case $cleared in 48152f9793fSmrg no) 48252f9793fSmrg set ""; shift 48352f9793fSmrg cleared=yes ;; 48452f9793fSmrg esac 4852faa96e0Smrg if test $eat = yes; then 4862faa96e0Smrg eat=no 4872faa96e0Smrg continue 4882faa96e0Smrg fi 48952f9793fSmrg case "$arg" in 49052f9793fSmrg -D*|-I*) 49152f9793fSmrg set fnord "$@" "$arg"; shift ;; 49252f9793fSmrg # Strip any option that makedepend may not understand. Remove 49352f9793fSmrg # the object too, otherwise makedepend will parse it as a source file. 4942faa96e0Smrg -arch) 4952faa96e0Smrg eat=yes ;; 49652f9793fSmrg -*|$object) 49752f9793fSmrg ;; 49852f9793fSmrg *) 49952f9793fSmrg set fnord "$@" "$arg"; shift ;; 50052f9793fSmrg esac 50152f9793fSmrg done 5022faa96e0Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 50352f9793fSmrg touch "$tmpdepfile" 50452f9793fSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 50552f9793fSmrg rm -f "$depfile" 50652f9793fSmrg cat < "$tmpdepfile" > "$depfile" 50752f9793fSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 50852f9793fSmrg' | \ 50952f9793fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 51052f9793fSmrg## correctly. Breaking it into two sed invocations is a workaround. 51152f9793fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51252f9793fSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 51352f9793fSmrg ;; 51452f9793fSmrg 51552f9793fSmrgcpp) 51652f9793fSmrg # Important note: in order to support this mode, a compiler *must* 51752f9793fSmrg # always write the preprocessed file to stdout. 51852f9793fSmrg "$@" || exit $? 51952f9793fSmrg 52052f9793fSmrg # Remove the call to Libtool. 52152f9793fSmrg if test "$libtool" = yes; then 5222faa96e0Smrg while test "X$1" != 'X--mode=compile'; do 52352f9793fSmrg shift 52452f9793fSmrg done 52552f9793fSmrg shift 52652f9793fSmrg fi 52752f9793fSmrg 52852f9793fSmrg # Remove `-o $object'. 52952f9793fSmrg IFS=" " 53052f9793fSmrg for arg 53152f9793fSmrg do 53252f9793fSmrg case $arg in 53352f9793fSmrg -o) 53452f9793fSmrg shift 53552f9793fSmrg ;; 53652f9793fSmrg $object) 53752f9793fSmrg shift 53852f9793fSmrg ;; 53952f9793fSmrg *) 54052f9793fSmrg set fnord "$@" "$arg" 54152f9793fSmrg shift # fnord 54252f9793fSmrg shift # $arg 54352f9793fSmrg ;; 54452f9793fSmrg esac 54552f9793fSmrg done 54652f9793fSmrg 54752f9793fSmrg "$@" -E | 54852f9793fSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 54952f9793fSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 55052f9793fSmrg sed '$ s: \\$::' > "$tmpdepfile" 55152f9793fSmrg rm -f "$depfile" 55252f9793fSmrg echo "$object : \\" > "$depfile" 55352f9793fSmrg cat < "$tmpdepfile" >> "$depfile" 55452f9793fSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 55552f9793fSmrg rm -f "$tmpdepfile" 55652f9793fSmrg ;; 55752f9793fSmrg 55852f9793fSmrgmsvisualcpp) 55952f9793fSmrg # Important note: in order to support this mode, a compiler *must* 5602faa96e0Smrg # always write the preprocessed file to stdout. 56152f9793fSmrg "$@" || exit $? 5622faa96e0Smrg 5632faa96e0Smrg # Remove the call to Libtool. 5642faa96e0Smrg if test "$libtool" = yes; then 5652faa96e0Smrg while test "X$1" != 'X--mode=compile'; do 5662faa96e0Smrg shift 5672faa96e0Smrg done 5682faa96e0Smrg shift 5692faa96e0Smrg fi 5702faa96e0Smrg 57152f9793fSmrg IFS=" " 57252f9793fSmrg for arg 57352f9793fSmrg do 57452f9793fSmrg case "$arg" in 5752faa96e0Smrg -o) 5762faa96e0Smrg shift 5772faa96e0Smrg ;; 5782faa96e0Smrg $object) 5792faa96e0Smrg shift 5802faa96e0Smrg ;; 58152f9793fSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 58252f9793fSmrg set fnord "$@" 58352f9793fSmrg shift 58452f9793fSmrg shift 58552f9793fSmrg ;; 58652f9793fSmrg *) 58752f9793fSmrg set fnord "$@" "$arg" 58852f9793fSmrg shift 58952f9793fSmrg shift 59052f9793fSmrg ;; 59152f9793fSmrg esac 59252f9793fSmrg done 5932faa96e0Smrg "$@" -E 2>/dev/null | 5942faa96e0Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 59552f9793fSmrg rm -f "$depfile" 59652f9793fSmrg echo "$object : \\" > "$depfile" 5972faa96e0Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 59852f9793fSmrg echo " " >> "$depfile" 5992faa96e0Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 60052f9793fSmrg rm -f "$tmpdepfile" 60152f9793fSmrg ;; 60252f9793fSmrg 6032faa96e0Smrgmsvcmsys) 6042faa96e0Smrg # This case exists only to let depend.m4 do its work. It works by 6052faa96e0Smrg # looking at the text of this script. This case will never be run, 6062faa96e0Smrg # since it is checked for above. 6072faa96e0Smrg exit 1 6082faa96e0Smrg ;; 6092faa96e0Smrg 61052f9793fSmrgnone) 61152f9793fSmrg exec "$@" 61252f9793fSmrg ;; 61352f9793fSmrg 61452f9793fSmrg*) 61552f9793fSmrg echo "Unknown depmode $depmode" 1>&2 61652f9793fSmrg exit 1 61752f9793fSmrg ;; 61852f9793fSmrgesac 61952f9793fSmrg 62052f9793fSmrgexit 0 62152f9793fSmrg 62252f9793fSmrg# Local Variables: 62352f9793fSmrg# mode: shell-script 62452f9793fSmrg# sh-indentation: 2 62552f9793fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 62652f9793fSmrg# time-stamp-start: "scriptversion=" 62752f9793fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6282faa96e0Smrg# time-stamp-time-zone: "UTC" 6292faa96e0Smrg# time-stamp-end: "; # UTC" 63052f9793fSmrg# End: 631