depcomp revision 66fe65f6
166fe65f6Smrg#! /bin/sh 266fe65f6Smrg# depcomp - compile a program generating dependencies as side-effects 366fe65f6Smrg 466fe65f6Smrgscriptversion=2005-07-09.11 566fe65f6Smrg 666fe65f6Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 766fe65f6Smrg 866fe65f6Smrg# This program is free software; you can redistribute it and/or modify 966fe65f6Smrg# it under the terms of the GNU General Public License as published by 1066fe65f6Smrg# the Free Software Foundation; either version 2, or (at your option) 1166fe65f6Smrg# any later version. 1266fe65f6Smrg 1366fe65f6Smrg# This program is distributed in the hope that it will be useful, 1466fe65f6Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1566fe65f6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1666fe65f6Smrg# GNU General Public License for more details. 1766fe65f6Smrg 1866fe65f6Smrg# You should have received a copy of the GNU General Public License 1966fe65f6Smrg# along with this program; if not, write to the Free Software 2066fe65f6Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2166fe65f6Smrg# 02110-1301, USA. 2266fe65f6Smrg 2366fe65f6Smrg# As a special exception to the GNU General Public License, if you 2466fe65f6Smrg# distribute this file as part of a program that contains a 2566fe65f6Smrg# configuration script generated by Autoconf, you may include it under 2666fe65f6Smrg# the same distribution terms that you use for the rest of that program. 2766fe65f6Smrg 2866fe65f6Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2966fe65f6Smrg 3066fe65f6Smrgcase $1 in 3166fe65f6Smrg '') 3266fe65f6Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3366fe65f6Smrg exit 1; 3466fe65f6Smrg ;; 3566fe65f6Smrg -h | --h*) 3666fe65f6Smrg cat <<\EOF 3766fe65f6SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3866fe65f6Smrg 3966fe65f6SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4066fe65f6Smrgas side-effects. 4166fe65f6Smrg 4266fe65f6SmrgEnvironment variables: 4366fe65f6Smrg depmode Dependency tracking mode. 4466fe65f6Smrg source Source file read by `PROGRAMS ARGS'. 4566fe65f6Smrg object Object file output by `PROGRAMS ARGS'. 4666fe65f6Smrg DEPDIR directory where to store dependencies. 4766fe65f6Smrg depfile Dependency file to output. 4866fe65f6Smrg tmpdepfile Temporary file to use when outputing dependencies. 4966fe65f6Smrg libtool Whether libtool is used (yes/no). 5066fe65f6Smrg 5166fe65f6SmrgReport bugs to <bug-automake@gnu.org>. 5266fe65f6SmrgEOF 5366fe65f6Smrg exit $? 5466fe65f6Smrg ;; 5566fe65f6Smrg -v | --v*) 5666fe65f6Smrg echo "depcomp $scriptversion" 5766fe65f6Smrg exit $? 5866fe65f6Smrg ;; 5966fe65f6Smrgesac 6066fe65f6Smrg 6166fe65f6Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6266fe65f6Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6366fe65f6Smrg exit 1 6466fe65f6Smrgfi 6566fe65f6Smrg 6666fe65f6Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6766fe65f6Smrgdepfile=${depfile-`echo "$object" | 6866fe65f6Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6966fe65f6Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7066fe65f6Smrg 7166fe65f6Smrgrm -f "$tmpdepfile" 7266fe65f6Smrg 7366fe65f6Smrg# Some modes work just like other modes, but use different flags. We 7466fe65f6Smrg# parameterize here, but still list the modes in the big case below, 7566fe65f6Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7666fe65f6Smrg# here, because this file can only contain one case statement. 7766fe65f6Smrgif test "$depmode" = hp; then 7866fe65f6Smrg # HP compiler uses -M and no extra arg. 7966fe65f6Smrg gccflag=-M 8066fe65f6Smrg depmode=gcc 8166fe65f6Smrgfi 8266fe65f6Smrg 8366fe65f6Smrgif test "$depmode" = dashXmstdout; then 8466fe65f6Smrg # This is just like dashmstdout with a different argument. 8566fe65f6Smrg dashmflag=-xM 8666fe65f6Smrg depmode=dashmstdout 8766fe65f6Smrgfi 8866fe65f6Smrg 8966fe65f6Smrgcase "$depmode" in 9066fe65f6Smrggcc3) 9166fe65f6Smrg## gcc 3 implements dependency tracking that does exactly what 9266fe65f6Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9366fe65f6Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 9466fe65f6Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 9566fe65f6Smrg stat=$? 9666fe65f6Smrg if test $stat -eq 0; then : 9766fe65f6Smrg else 9866fe65f6Smrg rm -f "$tmpdepfile" 9966fe65f6Smrg exit $stat 10066fe65f6Smrg fi 10166fe65f6Smrg mv "$tmpdepfile" "$depfile" 10266fe65f6Smrg ;; 10366fe65f6Smrg 10466fe65f6Smrggcc) 10566fe65f6Smrg## There are various ways to get dependency output from gcc. Here's 10666fe65f6Smrg## why we pick this rather obscure method: 10766fe65f6Smrg## - Don't want to use -MD because we'd like the dependencies to end 10866fe65f6Smrg## up in a subdir. Having to rename by hand is ugly. 10966fe65f6Smrg## (We might end up doing this anyway to support other compilers.) 11066fe65f6Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 11166fe65f6Smrg## -MM, not -M (despite what the docs say). 11266fe65f6Smrg## - Using -M directly means running the compiler twice (even worse 11366fe65f6Smrg## than renaming). 11466fe65f6Smrg if test -z "$gccflag"; then 11566fe65f6Smrg gccflag=-MD, 11666fe65f6Smrg fi 11766fe65f6Smrg "$@" -Wp,"$gccflag$tmpdepfile" 11866fe65f6Smrg stat=$? 11966fe65f6Smrg if test $stat -eq 0; then : 12066fe65f6Smrg else 12166fe65f6Smrg rm -f "$tmpdepfile" 12266fe65f6Smrg exit $stat 12366fe65f6Smrg fi 12466fe65f6Smrg rm -f "$depfile" 12566fe65f6Smrg echo "$object : \\" > "$depfile" 12666fe65f6Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 12766fe65f6Smrg## The second -e expression handles DOS-style file names with drive letters. 12866fe65f6Smrg sed -e 's/^[^:]*: / /' \ 12966fe65f6Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 13066fe65f6Smrg## This next piece of magic avoids the `deleted header file' problem. 13166fe65f6Smrg## The problem is that when a header file which appears in a .P file 13266fe65f6Smrg## is deleted, the dependency causes make to die (because there is 13366fe65f6Smrg## typically no way to rebuild the header). We avoid this by adding 13466fe65f6Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 13566fe65f6Smrg## this for us directly. 13666fe65f6Smrg tr ' ' ' 13766fe65f6Smrg' < "$tmpdepfile" | 13866fe65f6Smrg## Some versions of gcc put a space before the `:'. On the theory 13966fe65f6Smrg## that the space means something, we add a space to the output as 14066fe65f6Smrg## well. 14166fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 14266fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 14366fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 14466fe65f6Smrg rm -f "$tmpdepfile" 14566fe65f6Smrg ;; 14666fe65f6Smrg 14766fe65f6Smrghp) 14866fe65f6Smrg # This case exists only to let depend.m4 do its work. It works by 14966fe65f6Smrg # looking at the text of this script. This case will never be run, 15066fe65f6Smrg # since it is checked for above. 15166fe65f6Smrg exit 1 15266fe65f6Smrg ;; 15366fe65f6Smrg 15466fe65f6Smrgsgi) 15566fe65f6Smrg if test "$libtool" = yes; then 15666fe65f6Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 15766fe65f6Smrg else 15866fe65f6Smrg "$@" -MDupdate "$tmpdepfile" 15966fe65f6Smrg fi 16066fe65f6Smrg stat=$? 16166fe65f6Smrg if test $stat -eq 0; then : 16266fe65f6Smrg else 16366fe65f6Smrg rm -f "$tmpdepfile" 16466fe65f6Smrg exit $stat 16566fe65f6Smrg fi 16666fe65f6Smrg rm -f "$depfile" 16766fe65f6Smrg 16866fe65f6Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 16966fe65f6Smrg echo "$object : \\" > "$depfile" 17066fe65f6Smrg 17166fe65f6Smrg # Clip off the initial element (the dependent). Don't try to be 17266fe65f6Smrg # clever and replace this with sed code, as IRIX sed won't handle 17366fe65f6Smrg # lines with more than a fixed number of characters (4096 in 17466fe65f6Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 17566fe65f6Smrg # the IRIX cc adds comments like `#:fec' to the end of the 17666fe65f6Smrg # dependency line. 17766fe65f6Smrg tr ' ' ' 17866fe65f6Smrg' < "$tmpdepfile" \ 17966fe65f6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 18066fe65f6Smrg tr ' 18166fe65f6Smrg' ' ' >> $depfile 18266fe65f6Smrg echo >> $depfile 18366fe65f6Smrg 18466fe65f6Smrg # The second pass generates a dummy entry for each header file. 18566fe65f6Smrg tr ' ' ' 18666fe65f6Smrg' < "$tmpdepfile" \ 18766fe65f6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 18866fe65f6Smrg >> $depfile 18966fe65f6Smrg else 19066fe65f6Smrg # The sourcefile does not contain any dependencies, so just 19166fe65f6Smrg # store a dummy comment line, to avoid errors with the Makefile 19266fe65f6Smrg # "include basename.Plo" scheme. 19366fe65f6Smrg echo "#dummy" > "$depfile" 19466fe65f6Smrg fi 19566fe65f6Smrg rm -f "$tmpdepfile" 19666fe65f6Smrg ;; 19766fe65f6Smrg 19866fe65f6Smrgaix) 19966fe65f6Smrg # The C for AIX Compiler uses -M and outputs the dependencies 20066fe65f6Smrg # in a .u file. In older versions, this file always lives in the 20166fe65f6Smrg # current directory. Also, the AIX compiler puts `$object:' at the 20266fe65f6Smrg # start of each line; $object doesn't have directory information. 20366fe65f6Smrg # Version 6 uses the directory in both cases. 20466fe65f6Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 20566fe65f6Smrg tmpdepfile="$stripped.u" 20666fe65f6Smrg if test "$libtool" = yes; then 20766fe65f6Smrg "$@" -Wc,-M 20866fe65f6Smrg else 20966fe65f6Smrg "$@" -M 21066fe65f6Smrg fi 21166fe65f6Smrg stat=$? 21266fe65f6Smrg 21366fe65f6Smrg if test -f "$tmpdepfile"; then : 21466fe65f6Smrg else 21566fe65f6Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 21666fe65f6Smrg tmpdepfile="$stripped.u" 21766fe65f6Smrg fi 21866fe65f6Smrg 21966fe65f6Smrg if test $stat -eq 0; then : 22066fe65f6Smrg else 22166fe65f6Smrg rm -f "$tmpdepfile" 22266fe65f6Smrg exit $stat 22366fe65f6Smrg fi 22466fe65f6Smrg 22566fe65f6Smrg if test -f "$tmpdepfile"; then 22666fe65f6Smrg outname="$stripped.o" 22766fe65f6Smrg # Each line is of the form `foo.o: dependent.h'. 22866fe65f6Smrg # Do two passes, one to just change these to 22966fe65f6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 23066fe65f6Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 23166fe65f6Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 23266fe65f6Smrg else 23366fe65f6Smrg # The sourcefile does not contain any dependencies, so just 23466fe65f6Smrg # store a dummy comment line, to avoid errors with the Makefile 23566fe65f6Smrg # "include basename.Plo" scheme. 23666fe65f6Smrg echo "#dummy" > "$depfile" 23766fe65f6Smrg fi 23866fe65f6Smrg rm -f "$tmpdepfile" 23966fe65f6Smrg ;; 24066fe65f6Smrg 24166fe65f6Smrgicc) 24266fe65f6Smrg # Intel's C compiler understands `-MD -MF file'. However on 24366fe65f6Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 24466fe65f6Smrg # ICC 7.0 will fill foo.d with something like 24566fe65f6Smrg # foo.o: sub/foo.c 24666fe65f6Smrg # foo.o: sub/foo.h 24766fe65f6Smrg # which is wrong. We want: 24866fe65f6Smrg # sub/foo.o: sub/foo.c 24966fe65f6Smrg # sub/foo.o: sub/foo.h 25066fe65f6Smrg # sub/foo.c: 25166fe65f6Smrg # sub/foo.h: 25266fe65f6Smrg # ICC 7.1 will output 25366fe65f6Smrg # foo.o: sub/foo.c sub/foo.h 25466fe65f6Smrg # and will wrap long lines using \ : 25566fe65f6Smrg # foo.o: sub/foo.c ... \ 25666fe65f6Smrg # sub/foo.h ... \ 25766fe65f6Smrg # ... 25866fe65f6Smrg 25966fe65f6Smrg "$@" -MD -MF "$tmpdepfile" 26066fe65f6Smrg stat=$? 26166fe65f6Smrg if test $stat -eq 0; then : 26266fe65f6Smrg else 26366fe65f6Smrg rm -f "$tmpdepfile" 26466fe65f6Smrg exit $stat 26566fe65f6Smrg fi 26666fe65f6Smrg rm -f "$depfile" 26766fe65f6Smrg # Each line is of the form `foo.o: dependent.h', 26866fe65f6Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 26966fe65f6Smrg # Do two passes, one to just change these to 27066fe65f6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 27166fe65f6Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 27266fe65f6Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 27366fe65f6Smrg # correctly. Breaking it into two sed invocations is a workaround. 27466fe65f6Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 27566fe65f6Smrg sed -e 's/$/ :/' >> "$depfile" 27666fe65f6Smrg rm -f "$tmpdepfile" 27766fe65f6Smrg ;; 27866fe65f6Smrg 27966fe65f6Smrgtru64) 28066fe65f6Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 28166fe65f6Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 28266fe65f6Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 28366fe65f6Smrg # dependencies in `foo.d' instead, so we check for that too. 28466fe65f6Smrg # Subdirectories are respected. 28566fe65f6Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 28666fe65f6Smrg test "x$dir" = "x$object" && dir= 28766fe65f6Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 28866fe65f6Smrg 28966fe65f6Smrg if test "$libtool" = yes; then 29066fe65f6Smrg # With Tru64 cc, shared objects can also be used to make a 29166fe65f6Smrg # static library. This mecanism is used in libtool 1.4 series to 29266fe65f6Smrg # handle both shared and static libraries in a single compilation. 29366fe65f6Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 29466fe65f6Smrg # 29566fe65f6Smrg # With libtool 1.5 this exception was removed, and libtool now 29666fe65f6Smrg # generates 2 separate objects for the 2 libraries. These two 29766fe65f6Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 29866fe65f6Smrg # in $dir$base.o.d. We have to check for both files, because 29966fe65f6Smrg # one of the two compilations can be disabled. We should prefer 30066fe65f6Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 30166fe65f6Smrg # automatically cleaned when .libs/ is deleted, while ignoring 30266fe65f6Smrg # the former would cause a distcleancheck panic. 30366fe65f6Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 30466fe65f6Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 30566fe65f6Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 30666fe65f6Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 30766fe65f6Smrg "$@" -Wc,-MD 30866fe65f6Smrg else 30966fe65f6Smrg tmpdepfile1=$dir$base.o.d 31066fe65f6Smrg tmpdepfile2=$dir$base.d 31166fe65f6Smrg tmpdepfile3=$dir$base.d 31266fe65f6Smrg tmpdepfile4=$dir$base.d 31366fe65f6Smrg "$@" -MD 31466fe65f6Smrg fi 31566fe65f6Smrg 31666fe65f6Smrg stat=$? 31766fe65f6Smrg if test $stat -eq 0; then : 31866fe65f6Smrg else 31966fe65f6Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32066fe65f6Smrg exit $stat 32166fe65f6Smrg fi 32266fe65f6Smrg 32366fe65f6Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 32466fe65f6Smrg do 32566fe65f6Smrg test -f "$tmpdepfile" && break 32666fe65f6Smrg done 32766fe65f6Smrg if test -f "$tmpdepfile"; then 32866fe65f6Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 32966fe65f6Smrg # That's a tab and a space in the []. 33066fe65f6Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 33166fe65f6Smrg else 33266fe65f6Smrg echo "#dummy" > "$depfile" 33366fe65f6Smrg fi 33466fe65f6Smrg rm -f "$tmpdepfile" 33566fe65f6Smrg ;; 33666fe65f6Smrg 33766fe65f6Smrg#nosideeffect) 33866fe65f6Smrg # This comment above is used by automake to tell side-effect 33966fe65f6Smrg # dependency tracking mechanisms from slower ones. 34066fe65f6Smrg 34166fe65f6Smrgdashmstdout) 34266fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 34366fe65f6Smrg # always write the preprocessed file to stdout, regardless of -o. 34466fe65f6Smrg "$@" || exit $? 34566fe65f6Smrg 34666fe65f6Smrg # Remove the call to Libtool. 34766fe65f6Smrg if test "$libtool" = yes; then 34866fe65f6Smrg while test $1 != '--mode=compile'; do 34966fe65f6Smrg shift 35066fe65f6Smrg done 35166fe65f6Smrg shift 35266fe65f6Smrg fi 35366fe65f6Smrg 35466fe65f6Smrg # Remove `-o $object'. 35566fe65f6Smrg IFS=" " 35666fe65f6Smrg for arg 35766fe65f6Smrg do 35866fe65f6Smrg case $arg in 35966fe65f6Smrg -o) 36066fe65f6Smrg shift 36166fe65f6Smrg ;; 36266fe65f6Smrg $object) 36366fe65f6Smrg shift 36466fe65f6Smrg ;; 36566fe65f6Smrg *) 36666fe65f6Smrg set fnord "$@" "$arg" 36766fe65f6Smrg shift # fnord 36866fe65f6Smrg shift # $arg 36966fe65f6Smrg ;; 37066fe65f6Smrg esac 37166fe65f6Smrg done 37266fe65f6Smrg 37366fe65f6Smrg test -z "$dashmflag" && dashmflag=-M 37466fe65f6Smrg # Require at least two characters before searching for `:' 37566fe65f6Smrg # in the target name. This is to cope with DOS-style filenames: 37666fe65f6Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 37766fe65f6Smrg "$@" $dashmflag | 37866fe65f6Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 37966fe65f6Smrg rm -f "$depfile" 38066fe65f6Smrg cat < "$tmpdepfile" > "$depfile" 38166fe65f6Smrg tr ' ' ' 38266fe65f6Smrg' < "$tmpdepfile" | \ 38366fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 38466fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 38566fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 38666fe65f6Smrg rm -f "$tmpdepfile" 38766fe65f6Smrg ;; 38866fe65f6Smrg 38966fe65f6SmrgdashXmstdout) 39066fe65f6Smrg # This case only exists to satisfy depend.m4. It is never actually 39166fe65f6Smrg # run, as this mode is specially recognized in the preamble. 39266fe65f6Smrg exit 1 39366fe65f6Smrg ;; 39466fe65f6Smrg 39566fe65f6Smrgmakedepend) 39666fe65f6Smrg "$@" || exit $? 39766fe65f6Smrg # Remove any Libtool call 39866fe65f6Smrg if test "$libtool" = yes; then 39966fe65f6Smrg while test $1 != '--mode=compile'; do 40066fe65f6Smrg shift 40166fe65f6Smrg done 40266fe65f6Smrg shift 40366fe65f6Smrg fi 40466fe65f6Smrg # X makedepend 40566fe65f6Smrg shift 40666fe65f6Smrg cleared=no 40766fe65f6Smrg for arg in "$@"; do 40866fe65f6Smrg case $cleared in 40966fe65f6Smrg no) 41066fe65f6Smrg set ""; shift 41166fe65f6Smrg cleared=yes ;; 41266fe65f6Smrg esac 41366fe65f6Smrg case "$arg" in 41466fe65f6Smrg -D*|-I*) 41566fe65f6Smrg set fnord "$@" "$arg"; shift ;; 41666fe65f6Smrg # Strip any option that makedepend may not understand. Remove 41766fe65f6Smrg # the object too, otherwise makedepend will parse it as a source file. 41866fe65f6Smrg -*|$object) 41966fe65f6Smrg ;; 42066fe65f6Smrg *) 42166fe65f6Smrg set fnord "$@" "$arg"; shift ;; 42266fe65f6Smrg esac 42366fe65f6Smrg done 42466fe65f6Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 42566fe65f6Smrg touch "$tmpdepfile" 42666fe65f6Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 42766fe65f6Smrg rm -f "$depfile" 42866fe65f6Smrg cat < "$tmpdepfile" > "$depfile" 42966fe65f6Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 43066fe65f6Smrg' | \ 43166fe65f6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 43266fe65f6Smrg## correctly. Breaking it into two sed invocations is a workaround. 43366fe65f6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 43466fe65f6Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 43566fe65f6Smrg ;; 43666fe65f6Smrg 43766fe65f6Smrgcpp) 43866fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 43966fe65f6Smrg # always write the preprocessed file to stdout. 44066fe65f6Smrg "$@" || exit $? 44166fe65f6Smrg 44266fe65f6Smrg # Remove the call to Libtool. 44366fe65f6Smrg if test "$libtool" = yes; then 44466fe65f6Smrg while test $1 != '--mode=compile'; do 44566fe65f6Smrg shift 44666fe65f6Smrg done 44766fe65f6Smrg shift 44866fe65f6Smrg fi 44966fe65f6Smrg 45066fe65f6Smrg # Remove `-o $object'. 45166fe65f6Smrg IFS=" " 45266fe65f6Smrg for arg 45366fe65f6Smrg do 45466fe65f6Smrg case $arg in 45566fe65f6Smrg -o) 45666fe65f6Smrg shift 45766fe65f6Smrg ;; 45866fe65f6Smrg $object) 45966fe65f6Smrg shift 46066fe65f6Smrg ;; 46166fe65f6Smrg *) 46266fe65f6Smrg set fnord "$@" "$arg" 46366fe65f6Smrg shift # fnord 46466fe65f6Smrg shift # $arg 46566fe65f6Smrg ;; 46666fe65f6Smrg esac 46766fe65f6Smrg done 46866fe65f6Smrg 46966fe65f6Smrg "$@" -E | 47066fe65f6Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 47166fe65f6Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 47266fe65f6Smrg sed '$ s: \\$::' > "$tmpdepfile" 47366fe65f6Smrg rm -f "$depfile" 47466fe65f6Smrg echo "$object : \\" > "$depfile" 47566fe65f6Smrg cat < "$tmpdepfile" >> "$depfile" 47666fe65f6Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 47766fe65f6Smrg rm -f "$tmpdepfile" 47866fe65f6Smrg ;; 47966fe65f6Smrg 48066fe65f6Smrgmsvisualcpp) 48166fe65f6Smrg # Important note: in order to support this mode, a compiler *must* 48266fe65f6Smrg # always write the preprocessed file to stdout, regardless of -o, 48366fe65f6Smrg # because we must use -o when running libtool. 48466fe65f6Smrg "$@" || exit $? 48566fe65f6Smrg IFS=" " 48666fe65f6Smrg for arg 48766fe65f6Smrg do 48866fe65f6Smrg case "$arg" in 48966fe65f6Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 49066fe65f6Smrg set fnord "$@" 49166fe65f6Smrg shift 49266fe65f6Smrg shift 49366fe65f6Smrg ;; 49466fe65f6Smrg *) 49566fe65f6Smrg set fnord "$@" "$arg" 49666fe65f6Smrg shift 49766fe65f6Smrg shift 49866fe65f6Smrg ;; 49966fe65f6Smrg esac 50066fe65f6Smrg done 50166fe65f6Smrg "$@" -E | 50266fe65f6Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 50366fe65f6Smrg rm -f "$depfile" 50466fe65f6Smrg echo "$object : \\" > "$depfile" 50566fe65f6Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 50666fe65f6Smrg echo " " >> "$depfile" 50766fe65f6Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 50866fe65f6Smrg rm -f "$tmpdepfile" 50966fe65f6Smrg ;; 51066fe65f6Smrg 51166fe65f6Smrgnone) 51266fe65f6Smrg exec "$@" 51366fe65f6Smrg ;; 51466fe65f6Smrg 51566fe65f6Smrg*) 51666fe65f6Smrg echo "Unknown depmode $depmode" 1>&2 51766fe65f6Smrg exit 1 51866fe65f6Smrg ;; 51966fe65f6Smrgesac 52066fe65f6Smrg 52166fe65f6Smrgexit 0 52266fe65f6Smrg 52366fe65f6Smrg# Local Variables: 52466fe65f6Smrg# mode: shell-script 52566fe65f6Smrg# sh-indentation: 2 52666fe65f6Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 52766fe65f6Smrg# time-stamp-start: "scriptversion=" 52866fe65f6Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 52966fe65f6Smrg# time-stamp-end: "$" 53066fe65f6Smrg# End: 531