depcomp revision a9274bcd
166fe65f6Smrg#! /bin/sh 266fe65f6Smrg# depcomp - compile a program generating dependencies as side-effects 366fe65f6Smrg 4a9274bcdSmrgscriptversion=2009-04-28.21; # UTC 566fe65f6Smrg 6a9274bcdSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7a9274bcdSmrg# Software Foundation, Inc. 866fe65f6Smrg 966fe65f6Smrg# This program is free software; you can redistribute it and/or modify 1066fe65f6Smrg# it under the terms of the GNU General Public License as published by 1166fe65f6Smrg# the Free Software Foundation; either version 2, or (at your option) 1266fe65f6Smrg# any later version. 1366fe65f6Smrg 1466fe65f6Smrg# This program is distributed in the hope that it will be useful, 1566fe65f6Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1666fe65f6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1766fe65f6Smrg# GNU General Public License for more details. 1866fe65f6Smrg 1966fe65f6Smrg# You should have received a copy of the GNU General Public License 20a9274bcdSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2166fe65f6Smrg 2266fe65f6Smrg# As a special exception to the GNU General Public License, if you 2366fe65f6Smrg# distribute this file as part of a program that contains a 2466fe65f6Smrg# configuration script generated by Autoconf, you may include it under 2566fe65f6Smrg# the same distribution terms that you use for the rest of that program. 2666fe65f6Smrg 2766fe65f6Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2866fe65f6Smrg 2966fe65f6Smrgcase $1 in 3066fe65f6Smrg '') 3166fe65f6Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3266fe65f6Smrg exit 1; 3366fe65f6Smrg ;; 3466fe65f6Smrg -h | --h*) 3566fe65f6Smrg cat <<\EOF 3666fe65f6SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3766fe65f6Smrg 3866fe65f6SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3966fe65f6Smrgas side-effects. 4066fe65f6Smrg 4166fe65f6SmrgEnvironment variables: 4266fe65f6Smrg depmode Dependency tracking mode. 4366fe65f6Smrg source Source file read by `PROGRAMS ARGS'. 4466fe65f6Smrg object Object file output by `PROGRAMS ARGS'. 4566fe65f6Smrg DEPDIR directory where to store dependencies. 4666fe65f6Smrg depfile Dependency file to output. 4766fe65f6Smrg tmpdepfile Temporary file to use when outputing dependencies. 4866fe65f6Smrg libtool Whether libtool is used (yes/no). 4966fe65f6Smrg 5066fe65f6SmrgReport bugs to <bug-automake@gnu.org>. 5166fe65f6SmrgEOF 5266fe65f6Smrg exit $? 5366fe65f6Smrg ;; 5466fe65f6Smrg -v | --v*) 5566fe65f6Smrg echo "depcomp $scriptversion" 5666fe65f6Smrg exit $? 5766fe65f6Smrg ;; 5866fe65f6Smrgesac 5966fe65f6Smrg 6066fe65f6Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6166fe65f6Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6266fe65f6Smrg exit 1 6366fe65f6Smrgfi 6466fe65f6Smrg 6566fe65f6Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6666fe65f6Smrgdepfile=${depfile-`echo "$object" | 6766fe65f6Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6866fe65f6Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6966fe65f6Smrg 7066fe65f6Smrgrm -f "$tmpdepfile" 7166fe65f6Smrg 7266fe65f6Smrg# Some modes work just like other modes, but use different flags. We 7366fe65f6Smrg# parameterize here, but still list the modes in the big case below, 7466fe65f6Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7566fe65f6Smrg# here, because this file can only contain one case statement. 7666fe65f6Smrgif test "$depmode" = hp; then 7766fe65f6Smrg # HP compiler uses -M and no extra arg. 7866fe65f6Smrg gccflag=-M 7966fe65f6Smrg depmode=gcc 8066fe65f6Smrgfi 8166fe65f6Smrg 8266fe65f6Smrgif test "$depmode" = dashXmstdout; then 8366fe65f6Smrg # This is just like dashmstdout with a different argument. 8466fe65f6Smrg dashmflag=-xM 8566fe65f6Smrg depmode=dashmstdout 8666fe65f6Smrgfi 8766fe65f6Smrg 88a9274bcdSmrgcygpath_u="cygpath -u -f -" 89a9274bcdSmrgif test "$depmode" = msvcmsys; then 90a9274bcdSmrg # This is just like msvisualcpp but w/o cygpath translation. 91a9274bcdSmrg # Just convert the backslash-escaped backslashes to single forward 92a9274bcdSmrg # slashes to satisfy depend.m4 93a9274bcdSmrg cygpath_u="sed s,\\\\\\\\,/,g" 94a9274bcdSmrg depmode=msvisualcpp 95a9274bcdSmrgfi 96a9274bcdSmrg 9766fe65f6Smrgcase "$depmode" in 9866fe65f6Smrggcc3) 9966fe65f6Smrg## gcc 3 implements dependency tracking that does exactly what 10066fe65f6Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10166fe65f6Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 10289d09728Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 10389d09728Smrg## the command line argument order; so add the flags where they 10489d09728Smrg## appear in depend2.am. Note that the slowdown incurred here 10589d09728Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 10689d09728Smrg for arg 10789d09728Smrg do 10889d09728Smrg case $arg in 10989d09728Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 11089d09728Smrg *) set fnord "$@" "$arg" ;; 11189d09728Smrg esac 11289d09728Smrg shift # fnord 11389d09728Smrg shift # $arg 11489d09728Smrg done 11589d09728Smrg "$@" 11666fe65f6Smrg stat=$? 11766fe65f6Smrg if test $stat -eq 0; then : 11866fe65f6Smrg else 11966fe65f6Smrg rm -f "$tmpdepfile" 12066fe65f6Smrg exit $stat 12166fe65f6Smrg fi 12266fe65f6Smrg mv "$tmpdepfile" "$depfile" 12366fe65f6Smrg ;; 12466fe65f6Smrg 12566fe65f6Smrggcc) 12666fe65f6Smrg## There are various ways to get dependency output from gcc. Here's 12766fe65f6Smrg## why we pick this rather obscure method: 12866fe65f6Smrg## - Don't want to use -MD because we'd like the dependencies to end 12966fe65f6Smrg## up in a subdir. Having to rename by hand is ugly. 13066fe65f6Smrg## (We might end up doing this anyway to support other compilers.) 13166fe65f6Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 13266fe65f6Smrg## -MM, not -M (despite what the docs say). 13366fe65f6Smrg## - Using -M directly means running the compiler twice (even worse 13466fe65f6Smrg## than renaming). 13566fe65f6Smrg if test -z "$gccflag"; then 13666fe65f6Smrg gccflag=-MD, 13766fe65f6Smrg fi 13866fe65f6Smrg "$@" -Wp,"$gccflag$tmpdepfile" 13966fe65f6Smrg stat=$? 14066fe65f6Smrg if test $stat -eq 0; then : 14166fe65f6Smrg else 14266fe65f6Smrg rm -f "$tmpdepfile" 14366fe65f6Smrg exit $stat 14466fe65f6Smrg fi 14566fe65f6Smrg rm -f "$depfile" 14666fe65f6Smrg echo "$object : \\" > "$depfile" 14766fe65f6Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14866fe65f6Smrg## The second -e expression handles DOS-style file names with drive letters. 14966fe65f6Smrg sed -e 's/^[^:]*: / /' \ 15066fe65f6Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15166fe65f6Smrg## This next piece of magic avoids the `deleted header file' problem. 15266fe65f6Smrg## The problem is that when a header file which appears in a .P file 15366fe65f6Smrg## is deleted, the dependency causes make to die (because there is 15466fe65f6Smrg## typically no way to rebuild the header). We avoid this by adding 15566fe65f6Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 15666fe65f6Smrg## this for us directly. 15766fe65f6Smrg tr ' ' ' 15866fe65f6Smrg' < "$tmpdepfile" | 15966fe65f6Smrg## Some versions of gcc put a space before the `:'. On the theory 16066fe65f6Smrg## that the space means something, we add a space to the output as 16166fe65f6Smrg## well. 16266fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 16366fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 16466fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 16566fe65f6Smrg rm -f "$tmpdepfile" 16666fe65f6Smrg ;; 16766fe65f6Smrg 16866fe65f6Smrghp) 16966fe65f6Smrg # This case exists only to let depend.m4 do its work. It works by 17066fe65f6Smrg # looking at the text of this script. This case will never be run, 17166fe65f6Smrg # since it is checked for above. 17266fe65f6Smrg exit 1 17366fe65f6Smrg ;; 17466fe65f6Smrg 17566fe65f6Smrgsgi) 17666fe65f6Smrg if test "$libtool" = yes; then 17766fe65f6Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17866fe65f6Smrg else 17966fe65f6Smrg "$@" -MDupdate "$tmpdepfile" 18066fe65f6Smrg fi 18166fe65f6Smrg stat=$? 18266fe65f6Smrg if test $stat -eq 0; then : 18366fe65f6Smrg else 18466fe65f6Smrg rm -f "$tmpdepfile" 18566fe65f6Smrg exit $stat 18666fe65f6Smrg fi 18766fe65f6Smrg rm -f "$depfile" 18866fe65f6Smrg 18966fe65f6Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 19066fe65f6Smrg echo "$object : \\" > "$depfile" 19166fe65f6Smrg 19266fe65f6Smrg # Clip off the initial element (the dependent). Don't try to be 19366fe65f6Smrg # clever and replace this with sed code, as IRIX sed won't handle 19466fe65f6Smrg # lines with more than a fixed number of characters (4096 in 19566fe65f6Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 19666fe65f6Smrg # the IRIX cc adds comments like `#:fec' to the end of the 19766fe65f6Smrg # dependency line. 19866fe65f6Smrg tr ' ' ' 19966fe65f6Smrg' < "$tmpdepfile" \ 20066fe65f6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 20166fe65f6Smrg tr ' 202a9274bcdSmrg' ' ' >> "$depfile" 203a9274bcdSmrg echo >> "$depfile" 20466fe65f6Smrg 20566fe65f6Smrg # The second pass generates a dummy entry for each header file. 20666fe65f6Smrg tr ' ' ' 20766fe65f6Smrg' < "$tmpdepfile" \ 20866fe65f6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209a9274bcdSmrg >> "$depfile" 21066fe65f6Smrg else 21166fe65f6Smrg # The sourcefile does not contain any dependencies, so just 21266fe65f6Smrg # store a dummy comment line, to avoid errors with the Makefile 21366fe65f6Smrg # "include basename.Plo" scheme. 21466fe65f6Smrg echo "#dummy" > "$depfile" 21566fe65f6Smrg fi 21666fe65f6Smrg rm -f "$tmpdepfile" 21766fe65f6Smrg ;; 21866fe65f6Smrg 21966fe65f6Smrgaix) 22066fe65f6Smrg # The C for AIX Compiler uses -M and outputs the dependencies 22166fe65f6Smrg # in a .u file. In older versions, this file always lives in the 22266fe65f6Smrg # current directory. Also, the AIX compiler puts `$object:' at the 22366fe65f6Smrg # start of each line; $object doesn't have directory information. 22466fe65f6Smrg # Version 6 uses the directory in both cases. 22589d09728Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 22689d09728Smrg test "x$dir" = "x$object" && dir= 22789d09728Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22866fe65f6Smrg if test "$libtool" = yes; then 22989d09728Smrg tmpdepfile1=$dir$base.u 23089d09728Smrg tmpdepfile2=$base.u 23189d09728Smrg tmpdepfile3=$dir.libs/$base.u 23266fe65f6Smrg "$@" -Wc,-M 23366fe65f6Smrg else 23489d09728Smrg tmpdepfile1=$dir$base.u 23589d09728Smrg tmpdepfile2=$dir$base.u 23689d09728Smrg tmpdepfile3=$dir$base.u 23766fe65f6Smrg "$@" -M 23866fe65f6Smrg fi 23966fe65f6Smrg stat=$? 24066fe65f6Smrg 24166fe65f6Smrg if test $stat -eq 0; then : 24266fe65f6Smrg else 24389d09728Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24466fe65f6Smrg exit $stat 24566fe65f6Smrg fi 24666fe65f6Smrg 24789d09728Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24889d09728Smrg do 24989d09728Smrg test -f "$tmpdepfile" && break 25089d09728Smrg done 25166fe65f6Smrg if test -f "$tmpdepfile"; then 25266fe65f6Smrg # Each line is of the form `foo.o: dependent.h'. 25366fe65f6Smrg # Do two passes, one to just change these to 25466fe65f6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 25589d09728Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 25689d09728Smrg # That's a tab and a space in the []. 25789d09728Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25866fe65f6Smrg else 25966fe65f6Smrg # The sourcefile does not contain any dependencies, so just 26066fe65f6Smrg # store a dummy comment line, to avoid errors with the Makefile 26166fe65f6Smrg # "include basename.Plo" scheme. 26266fe65f6Smrg echo "#dummy" > "$depfile" 26366fe65f6Smrg fi 26466fe65f6Smrg rm -f "$tmpdepfile" 26566fe65f6Smrg ;; 26666fe65f6Smrg 26766fe65f6Smrgicc) 26866fe65f6Smrg # Intel's C compiler understands `-MD -MF file'. However on 26966fe65f6Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 27066fe65f6Smrg # ICC 7.0 will fill foo.d with something like 27166fe65f6Smrg # foo.o: sub/foo.c 27266fe65f6Smrg # foo.o: sub/foo.h 27366fe65f6Smrg # which is wrong. We want: 27466fe65f6Smrg # sub/foo.o: sub/foo.c 27566fe65f6Smrg # sub/foo.o: sub/foo.h 27666fe65f6Smrg # sub/foo.c: 27766fe65f6Smrg # sub/foo.h: 27866fe65f6Smrg # ICC 7.1 will output 27966fe65f6Smrg # foo.o: sub/foo.c sub/foo.h 28066fe65f6Smrg # and will wrap long lines using \ : 28166fe65f6Smrg # foo.o: sub/foo.c ... \ 28266fe65f6Smrg # sub/foo.h ... \ 28366fe65f6Smrg # ... 28466fe65f6Smrg 28566fe65f6Smrg "$@" -MD -MF "$tmpdepfile" 28666fe65f6Smrg stat=$? 28766fe65f6Smrg if test $stat -eq 0; then : 28866fe65f6Smrg else 28966fe65f6Smrg rm -f "$tmpdepfile" 29066fe65f6Smrg exit $stat 29166fe65f6Smrg fi 29266fe65f6Smrg rm -f "$depfile" 29366fe65f6Smrg # Each line is of the form `foo.o: dependent.h', 29466fe65f6Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 29566fe65f6Smrg # Do two passes, one to just change these to 29666fe65f6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 29766fe65f6Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29866fe65f6Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 29966fe65f6Smrg # correctly. Breaking it into two sed invocations is a workaround. 30066fe65f6Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 30166fe65f6Smrg sed -e 's/$/ :/' >> "$depfile" 30266fe65f6Smrg rm -f "$tmpdepfile" 30366fe65f6Smrg ;; 30466fe65f6Smrg 30589d09728Smrghp2) 30689d09728Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 30789d09728Smrg # compilers, which have integrated preprocessors. The correct option 30889d09728Smrg # to use with these is +Maked; it writes dependencies to a file named 30989d09728Smrg # 'foo.d', which lands next to the object file, wherever that 31089d09728Smrg # happens to be. 31189d09728Smrg # Much of this is similar to the tru64 case; see comments there. 31289d09728Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 31389d09728Smrg test "x$dir" = "x$object" && dir= 31489d09728Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 31589d09728Smrg if test "$libtool" = yes; then 31689d09728Smrg tmpdepfile1=$dir$base.d 31789d09728Smrg tmpdepfile2=$dir.libs/$base.d 31889d09728Smrg "$@" -Wc,+Maked 31989d09728Smrg else 32089d09728Smrg tmpdepfile1=$dir$base.d 32189d09728Smrg tmpdepfile2=$dir$base.d 32289d09728Smrg "$@" +Maked 32389d09728Smrg fi 32489d09728Smrg stat=$? 32589d09728Smrg if test $stat -eq 0; then : 32689d09728Smrg else 32789d09728Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 32889d09728Smrg exit $stat 32989d09728Smrg fi 33089d09728Smrg 33189d09728Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 33289d09728Smrg do 33389d09728Smrg test -f "$tmpdepfile" && break 33489d09728Smrg done 33589d09728Smrg if test -f "$tmpdepfile"; then 33689d09728Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 33789d09728Smrg # Add `dependent.h:' lines. 338a9274bcdSmrg sed -ne '2,${ 339a9274bcdSmrg s/^ *// 340a9274bcdSmrg s/ \\*$// 341a9274bcdSmrg s/$/:/ 342a9274bcdSmrg p 343a9274bcdSmrg }' "$tmpdepfile" >> "$depfile" 34489d09728Smrg else 34589d09728Smrg echo "#dummy" > "$depfile" 34689d09728Smrg fi 34789d09728Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 34889d09728Smrg ;; 34989d09728Smrg 35066fe65f6Smrgtru64) 35166fe65f6Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 35266fe65f6Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 35366fe65f6Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 35466fe65f6Smrg # dependencies in `foo.d' instead, so we check for that too. 35566fe65f6Smrg # Subdirectories are respected. 35666fe65f6Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 35766fe65f6Smrg test "x$dir" = "x$object" && dir= 35866fe65f6Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 35966fe65f6Smrg 36066fe65f6Smrg if test "$libtool" = yes; then 36166fe65f6Smrg # With Tru64 cc, shared objects can also be used to make a 36289d09728Smrg # static library. This mechanism is used in libtool 1.4 series to 36366fe65f6Smrg # handle both shared and static libraries in a single compilation. 36466fe65f6Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 36566fe65f6Smrg # 36666fe65f6Smrg # With libtool 1.5 this exception was removed, and libtool now 36766fe65f6Smrg # generates 2 separate objects for the 2 libraries. These two 36889d09728Smrg # compilations output dependencies in $dir.libs/$base.o.d and 36966fe65f6Smrg # in $dir$base.o.d. We have to check for both files, because 37066fe65f6Smrg # one of the two compilations can be disabled. We should prefer 37166fe65f6Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 37266fe65f6Smrg # automatically cleaned when .libs/ is deleted, while ignoring 37366fe65f6Smrg # the former would cause a distcleancheck panic. 37466fe65f6Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 37566fe65f6Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 37666fe65f6Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 37766fe65f6Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 37866fe65f6Smrg "$@" -Wc,-MD 37966fe65f6Smrg else 38066fe65f6Smrg tmpdepfile1=$dir$base.o.d 38166fe65f6Smrg tmpdepfile2=$dir$base.d 38266fe65f6Smrg tmpdepfile3=$dir$base.d 38366fe65f6Smrg tmpdepfile4=$dir$base.d 38466fe65f6Smrg "$@" -MD 38566fe65f6Smrg fi 38666fe65f6Smrg 38766fe65f6Smrg stat=$? 38866fe65f6Smrg if test $stat -eq 0; then : 38966fe65f6Smrg else 39066fe65f6Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39166fe65f6Smrg exit $stat 39266fe65f6Smrg fi 39366fe65f6Smrg 39466fe65f6Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39566fe65f6Smrg do 39666fe65f6Smrg test -f "$tmpdepfile" && break 39766fe65f6Smrg done 39866fe65f6Smrg if test -f "$tmpdepfile"; then 39966fe65f6Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 40066fe65f6Smrg # That's a tab and a space in the []. 40166fe65f6Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 40266fe65f6Smrg else 40366fe65f6Smrg echo "#dummy" > "$depfile" 40466fe65f6Smrg fi 40566fe65f6Smrg rm -f "$tmpdepfile" 40666fe65f6Smrg ;; 40766fe65f6Smrg 40866fe65f6Smrg#nosideeffect) 40966fe65f6Smrg # This comment above is used by automake to tell side-effect 41066fe65f6Smrg # dependency tracking mechanisms from slower ones. 41166fe65f6Smrg 41266fe65f6Smrgdashmstdout) 41366fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 41466fe65f6Smrg # always write the preprocessed file to stdout, regardless of -o. 41566fe65f6Smrg "$@" || exit $? 41666fe65f6Smrg 41766fe65f6Smrg # Remove the call to Libtool. 41866fe65f6Smrg if test "$libtool" = yes; then 419a9274bcdSmrg while test "X$1" != 'X--mode=compile'; do 42066fe65f6Smrg shift 42166fe65f6Smrg done 42266fe65f6Smrg shift 42366fe65f6Smrg fi 42466fe65f6Smrg 42566fe65f6Smrg # Remove `-o $object'. 42666fe65f6Smrg IFS=" " 42766fe65f6Smrg for arg 42866fe65f6Smrg do 42966fe65f6Smrg case $arg in 43066fe65f6Smrg -o) 43166fe65f6Smrg shift 43266fe65f6Smrg ;; 43366fe65f6Smrg $object) 43466fe65f6Smrg shift 43566fe65f6Smrg ;; 43666fe65f6Smrg *) 43766fe65f6Smrg set fnord "$@" "$arg" 43866fe65f6Smrg shift # fnord 43966fe65f6Smrg shift # $arg 44066fe65f6Smrg ;; 44166fe65f6Smrg esac 44266fe65f6Smrg done 44366fe65f6Smrg 44466fe65f6Smrg test -z "$dashmflag" && dashmflag=-M 44566fe65f6Smrg # Require at least two characters before searching for `:' 44666fe65f6Smrg # in the target name. This is to cope with DOS-style filenames: 44766fe65f6Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 44866fe65f6Smrg "$@" $dashmflag | 44966fe65f6Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 45066fe65f6Smrg rm -f "$depfile" 45166fe65f6Smrg cat < "$tmpdepfile" > "$depfile" 45266fe65f6Smrg tr ' ' ' 45366fe65f6Smrg' < "$tmpdepfile" | \ 45466fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 45566fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 45666fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 45766fe65f6Smrg rm -f "$tmpdepfile" 45866fe65f6Smrg ;; 45966fe65f6Smrg 46066fe65f6SmrgdashXmstdout) 46166fe65f6Smrg # This case only exists to satisfy depend.m4. It is never actually 46266fe65f6Smrg # run, as this mode is specially recognized in the preamble. 46366fe65f6Smrg exit 1 46466fe65f6Smrg ;; 46566fe65f6Smrg 46666fe65f6Smrgmakedepend) 46766fe65f6Smrg "$@" || exit $? 46866fe65f6Smrg # Remove any Libtool call 46966fe65f6Smrg if test "$libtool" = yes; then 470a9274bcdSmrg while test "X$1" != 'X--mode=compile'; do 47166fe65f6Smrg shift 47266fe65f6Smrg done 47366fe65f6Smrg shift 47466fe65f6Smrg fi 47566fe65f6Smrg # X makedepend 47666fe65f6Smrg shift 477a9274bcdSmrg cleared=no eat=no 478a9274bcdSmrg for arg 479a9274bcdSmrg do 48066fe65f6Smrg case $cleared in 48166fe65f6Smrg no) 48266fe65f6Smrg set ""; shift 48366fe65f6Smrg cleared=yes ;; 48466fe65f6Smrg esac 485a9274bcdSmrg if test $eat = yes; then 486a9274bcdSmrg eat=no 487a9274bcdSmrg continue 488a9274bcdSmrg fi 48966fe65f6Smrg case "$arg" in 49066fe65f6Smrg -D*|-I*) 49166fe65f6Smrg set fnord "$@" "$arg"; shift ;; 49266fe65f6Smrg # Strip any option that makedepend may not understand. Remove 49366fe65f6Smrg # the object too, otherwise makedepend will parse it as a source file. 494a9274bcdSmrg -arch) 495a9274bcdSmrg eat=yes ;; 49666fe65f6Smrg -*|$object) 49766fe65f6Smrg ;; 49866fe65f6Smrg *) 49966fe65f6Smrg set fnord "$@" "$arg"; shift ;; 50066fe65f6Smrg esac 50166fe65f6Smrg done 502a9274bcdSmrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 50366fe65f6Smrg touch "$tmpdepfile" 50466fe65f6Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 50566fe65f6Smrg rm -f "$depfile" 50666fe65f6Smrg cat < "$tmpdepfile" > "$depfile" 50766fe65f6Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 50866fe65f6Smrg' | \ 50966fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 51066fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 51166fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51266fe65f6Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 51366fe65f6Smrg ;; 51466fe65f6Smrg 51566fe65f6Smrgcpp) 51666fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 51766fe65f6Smrg # always write the preprocessed file to stdout. 51866fe65f6Smrg "$@" || exit $? 51966fe65f6Smrg 52066fe65f6Smrg # Remove the call to Libtool. 52166fe65f6Smrg if test "$libtool" = yes; then 522a9274bcdSmrg while test "X$1" != 'X--mode=compile'; do 52366fe65f6Smrg shift 52466fe65f6Smrg done 52566fe65f6Smrg shift 52666fe65f6Smrg fi 52766fe65f6Smrg 52866fe65f6Smrg # Remove `-o $object'. 52966fe65f6Smrg IFS=" " 53066fe65f6Smrg for arg 53166fe65f6Smrg do 53266fe65f6Smrg case $arg in 53366fe65f6Smrg -o) 53466fe65f6Smrg shift 53566fe65f6Smrg ;; 53666fe65f6Smrg $object) 53766fe65f6Smrg shift 53866fe65f6Smrg ;; 53966fe65f6Smrg *) 54066fe65f6Smrg set fnord "$@" "$arg" 54166fe65f6Smrg shift # fnord 54266fe65f6Smrg shift # $arg 54366fe65f6Smrg ;; 54466fe65f6Smrg esac 54566fe65f6Smrg done 54666fe65f6Smrg 54766fe65f6Smrg "$@" -E | 54866fe65f6Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 54966fe65f6Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 55066fe65f6Smrg sed '$ s: \\$::' > "$tmpdepfile" 55166fe65f6Smrg rm -f "$depfile" 55266fe65f6Smrg echo "$object : \\" > "$depfile" 55366fe65f6Smrg cat < "$tmpdepfile" >> "$depfile" 55466fe65f6Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 55566fe65f6Smrg rm -f "$tmpdepfile" 55666fe65f6Smrg ;; 55766fe65f6Smrg 55866fe65f6Smrgmsvisualcpp) 55966fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 560a9274bcdSmrg # always write the preprocessed file to stdout. 56166fe65f6Smrg "$@" || exit $? 562a9274bcdSmrg 563a9274bcdSmrg # Remove the call to Libtool. 564a9274bcdSmrg if test "$libtool" = yes; then 565a9274bcdSmrg while test "X$1" != 'X--mode=compile'; do 566a9274bcdSmrg shift 567a9274bcdSmrg done 568a9274bcdSmrg shift 569a9274bcdSmrg fi 570a9274bcdSmrg 57166fe65f6Smrg IFS=" " 57266fe65f6Smrg for arg 57366fe65f6Smrg do 57466fe65f6Smrg case "$arg" in 575a9274bcdSmrg -o) 576a9274bcdSmrg shift 577a9274bcdSmrg ;; 578a9274bcdSmrg $object) 579a9274bcdSmrg shift 580a9274bcdSmrg ;; 58166fe65f6Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 58266fe65f6Smrg set fnord "$@" 58366fe65f6Smrg shift 58466fe65f6Smrg shift 58566fe65f6Smrg ;; 58666fe65f6Smrg *) 58766fe65f6Smrg set fnord "$@" "$arg" 58866fe65f6Smrg shift 58966fe65f6Smrg shift 59066fe65f6Smrg ;; 59166fe65f6Smrg esac 59266fe65f6Smrg done 593a9274bcdSmrg "$@" -E 2>/dev/null | 594a9274bcdSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 59566fe65f6Smrg rm -f "$depfile" 59666fe65f6Smrg echo "$object : \\" > "$depfile" 597a9274bcdSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 59866fe65f6Smrg echo " " >> "$depfile" 599a9274bcdSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 60066fe65f6Smrg rm -f "$tmpdepfile" 60166fe65f6Smrg ;; 60266fe65f6Smrg 603a9274bcdSmrgmsvcmsys) 604a9274bcdSmrg # This case exists only to let depend.m4 do its work. It works by 605a9274bcdSmrg # looking at the text of this script. This case will never be run, 606a9274bcdSmrg # since it is checked for above. 607a9274bcdSmrg exit 1 608a9274bcdSmrg ;; 609a9274bcdSmrg 61066fe65f6Smrgnone) 61166fe65f6Smrg exec "$@" 61266fe65f6Smrg ;; 61366fe65f6Smrg 61466fe65f6Smrg*) 61566fe65f6Smrg echo "Unknown depmode $depmode" 1>&2 61666fe65f6Smrg exit 1 61766fe65f6Smrg ;; 61866fe65f6Smrgesac 61966fe65f6Smrg 62066fe65f6Smrgexit 0 62166fe65f6Smrg 62266fe65f6Smrg# Local Variables: 62366fe65f6Smrg# mode: shell-script 62466fe65f6Smrg# sh-indentation: 2 62566fe65f6Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 62666fe65f6Smrg# time-stamp-start: "scriptversion=" 62766fe65f6Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628a9274bcdSmrg# time-stamp-time-zone: "UTC" 629a9274bcdSmrg# time-stamp-end: "; # UTC" 63066fe65f6Smrg# End: 631