depcomp revision 3eed67fa
13eed67faSmbalmer#! /bin/sh 23eed67faSmbalmer# depcomp - compile a program generating dependencies as side-effects 33eed67faSmbalmer 43eed67faSmbalmerscriptversion=2005-07-09.11 53eed67faSmbalmer 63eed67faSmbalmer# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 73eed67faSmbalmer 83eed67faSmbalmer# This program is free software; you can redistribute it and/or modify 93eed67faSmbalmer# it under the terms of the GNU General Public License as published by 103eed67faSmbalmer# the Free Software Foundation; either version 2, or (at your option) 113eed67faSmbalmer# any later version. 123eed67faSmbalmer 133eed67faSmbalmer# This program is distributed in the hope that it will be useful, 143eed67faSmbalmer# but WITHOUT ANY WARRANTY; without even the implied warranty of 153eed67faSmbalmer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 163eed67faSmbalmer# GNU General Public License for more details. 173eed67faSmbalmer 183eed67faSmbalmer# You should have received a copy of the GNU General Public License 193eed67faSmbalmer# along with this program; if not, write to the Free Software 203eed67faSmbalmer# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 213eed67faSmbalmer# 02110-1301, USA. 223eed67faSmbalmer 233eed67faSmbalmer# As a special exception to the GNU General Public License, if you 243eed67faSmbalmer# distribute this file as part of a program that contains a 253eed67faSmbalmer# configuration script generated by Autoconf, you may include it under 263eed67faSmbalmer# the same distribution terms that you use for the rest of that program. 273eed67faSmbalmer 283eed67faSmbalmer# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 293eed67faSmbalmer 303eed67faSmbalmercase $1 in 313eed67faSmbalmer '') 323eed67faSmbalmer echo "$0: No command. Try \`$0 --help' for more information." 1>&2 333eed67faSmbalmer exit 1; 343eed67faSmbalmer ;; 353eed67faSmbalmer -h | --h*) 363eed67faSmbalmer cat <<\EOF 373eed67faSmbalmerUsage: depcomp [--help] [--version] PROGRAM [ARGS] 383eed67faSmbalmer 393eed67faSmbalmerRun PROGRAMS ARGS to compile a file, generating dependencies 403eed67faSmbalmeras side-effects. 413eed67faSmbalmer 423eed67faSmbalmerEnvironment variables: 433eed67faSmbalmer depmode Dependency tracking mode. 443eed67faSmbalmer source Source file read by `PROGRAMS ARGS'. 453eed67faSmbalmer object Object file output by `PROGRAMS ARGS'. 463eed67faSmbalmer DEPDIR directory where to store dependencies. 473eed67faSmbalmer depfile Dependency file to output. 483eed67faSmbalmer tmpdepfile Temporary file to use when outputing dependencies. 493eed67faSmbalmer libtool Whether libtool is used (yes/no). 503eed67faSmbalmer 513eed67faSmbalmerReport bugs to <bug-automake@gnu.org>. 523eed67faSmbalmerEOF 533eed67faSmbalmer exit $? 543eed67faSmbalmer ;; 553eed67faSmbalmer -v | --v*) 563eed67faSmbalmer echo "depcomp $scriptversion" 573eed67faSmbalmer exit $? 583eed67faSmbalmer ;; 593eed67faSmbalmeresac 603eed67faSmbalmer 613eed67faSmbalmerif test -z "$depmode" || test -z "$source" || test -z "$object"; then 623eed67faSmbalmer echo "depcomp: Variables source, object and depmode must be set" 1>&2 633eed67faSmbalmer exit 1 643eed67faSmbalmerfi 653eed67faSmbalmer 663eed67faSmbalmer# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 673eed67faSmbalmerdepfile=${depfile-`echo "$object" | 683eed67faSmbalmer sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 693eed67faSmbalmertmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 703eed67faSmbalmer 713eed67faSmbalmerrm -f "$tmpdepfile" 723eed67faSmbalmer 733eed67faSmbalmer# Some modes work just like other modes, but use different flags. We 743eed67faSmbalmer# parameterize here, but still list the modes in the big case below, 753eed67faSmbalmer# to make depend.m4 easier to write. Note that we *cannot* use a case 763eed67faSmbalmer# here, because this file can only contain one case statement. 773eed67faSmbalmerif test "$depmode" = hp; then 783eed67faSmbalmer # HP compiler uses -M and no extra arg. 793eed67faSmbalmer gccflag=-M 803eed67faSmbalmer depmode=gcc 813eed67faSmbalmerfi 823eed67faSmbalmer 833eed67faSmbalmerif test "$depmode" = dashXmstdout; then 843eed67faSmbalmer # This is just like dashmstdout with a different argument. 853eed67faSmbalmer dashmflag=-xM 863eed67faSmbalmer depmode=dashmstdout 873eed67faSmbalmerfi 883eed67faSmbalmer 893eed67faSmbalmercase "$depmode" in 903eed67faSmbalmergcc3) 913eed67faSmbalmer## gcc 3 implements dependency tracking that does exactly what 923eed67faSmbalmer## we want. Yay! Note: for some reason libtool 1.4 doesn't like 933eed67faSmbalmer## it if -MD -MP comes after the -MF stuff. Hmm. 943eed67faSmbalmer "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 953eed67faSmbalmer stat=$? 963eed67faSmbalmer if test $stat -eq 0; then : 973eed67faSmbalmer else 983eed67faSmbalmer rm -f "$tmpdepfile" 993eed67faSmbalmer exit $stat 1003eed67faSmbalmer fi 1013eed67faSmbalmer mv "$tmpdepfile" "$depfile" 1023eed67faSmbalmer ;; 1033eed67faSmbalmer 1043eed67faSmbalmergcc) 1053eed67faSmbalmer## There are various ways to get dependency output from gcc. Here's 1063eed67faSmbalmer## why we pick this rather obscure method: 1073eed67faSmbalmer## - Don't want to use -MD because we'd like the dependencies to end 1083eed67faSmbalmer## up in a subdir. Having to rename by hand is ugly. 1093eed67faSmbalmer## (We might end up doing this anyway to support other compilers.) 1103eed67faSmbalmer## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1113eed67faSmbalmer## -MM, not -M (despite what the docs say). 1123eed67faSmbalmer## - Using -M directly means running the compiler twice (even worse 1133eed67faSmbalmer## than renaming). 1143eed67faSmbalmer if test -z "$gccflag"; then 1153eed67faSmbalmer gccflag=-MD, 1163eed67faSmbalmer fi 1173eed67faSmbalmer "$@" -Wp,"$gccflag$tmpdepfile" 1183eed67faSmbalmer stat=$? 1193eed67faSmbalmer if test $stat -eq 0; then : 1203eed67faSmbalmer else 1213eed67faSmbalmer rm -f "$tmpdepfile" 1223eed67faSmbalmer exit $stat 1233eed67faSmbalmer fi 1243eed67faSmbalmer rm -f "$depfile" 1253eed67faSmbalmer echo "$object : \\" > "$depfile" 1263eed67faSmbalmer alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1273eed67faSmbalmer## The second -e expression handles DOS-style file names with drive letters. 1283eed67faSmbalmer sed -e 's/^[^:]*: / /' \ 1293eed67faSmbalmer -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1303eed67faSmbalmer## This next piece of magic avoids the `deleted header file' problem. 1313eed67faSmbalmer## The problem is that when a header file which appears in a .P file 1323eed67faSmbalmer## is deleted, the dependency causes make to die (because there is 1333eed67faSmbalmer## typically no way to rebuild the header). We avoid this by adding 1343eed67faSmbalmer## dummy dependencies for each header file. Too bad gcc doesn't do 1353eed67faSmbalmer## this for us directly. 1363eed67faSmbalmer tr ' ' ' 1373eed67faSmbalmer' < "$tmpdepfile" | 1383eed67faSmbalmer## Some versions of gcc put a space before the `:'. On the theory 1393eed67faSmbalmer## that the space means something, we add a space to the output as 1403eed67faSmbalmer## well. 1413eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 1423eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 1433eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1443eed67faSmbalmer rm -f "$tmpdepfile" 1453eed67faSmbalmer ;; 1463eed67faSmbalmer 1473eed67faSmbalmerhp) 1483eed67faSmbalmer # This case exists only to let depend.m4 do its work. It works by 1493eed67faSmbalmer # looking at the text of this script. This case will never be run, 1503eed67faSmbalmer # since it is checked for above. 1513eed67faSmbalmer exit 1 1523eed67faSmbalmer ;; 1533eed67faSmbalmer 1543eed67faSmbalmersgi) 1553eed67faSmbalmer if test "$libtool" = yes; then 1563eed67faSmbalmer "$@" "-Wp,-MDupdate,$tmpdepfile" 1573eed67faSmbalmer else 1583eed67faSmbalmer "$@" -MDupdate "$tmpdepfile" 1593eed67faSmbalmer fi 1603eed67faSmbalmer stat=$? 1613eed67faSmbalmer if test $stat -eq 0; then : 1623eed67faSmbalmer else 1633eed67faSmbalmer rm -f "$tmpdepfile" 1643eed67faSmbalmer exit $stat 1653eed67faSmbalmer fi 1663eed67faSmbalmer rm -f "$depfile" 1673eed67faSmbalmer 1683eed67faSmbalmer if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1693eed67faSmbalmer echo "$object : \\" > "$depfile" 1703eed67faSmbalmer 1713eed67faSmbalmer # Clip off the initial element (the dependent). Don't try to be 1723eed67faSmbalmer # clever and replace this with sed code, as IRIX sed won't handle 1733eed67faSmbalmer # lines with more than a fixed number of characters (4096 in 1743eed67faSmbalmer # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1753eed67faSmbalmer # the IRIX cc adds comments like `#:fec' to the end of the 1763eed67faSmbalmer # dependency line. 1773eed67faSmbalmer tr ' ' ' 1783eed67faSmbalmer' < "$tmpdepfile" \ 1793eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1803eed67faSmbalmer tr ' 1813eed67faSmbalmer' ' ' >> $depfile 1823eed67faSmbalmer echo >> $depfile 1833eed67faSmbalmer 1843eed67faSmbalmer # The second pass generates a dummy entry for each header file. 1853eed67faSmbalmer tr ' ' ' 1863eed67faSmbalmer' < "$tmpdepfile" \ 1873eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 1883eed67faSmbalmer >> $depfile 1893eed67faSmbalmer else 1903eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 1913eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 1923eed67faSmbalmer # "include basename.Plo" scheme. 1933eed67faSmbalmer echo "#dummy" > "$depfile" 1943eed67faSmbalmer fi 1953eed67faSmbalmer rm -f "$tmpdepfile" 1963eed67faSmbalmer ;; 1973eed67faSmbalmer 1983eed67faSmbalmeraix) 1993eed67faSmbalmer # The C for AIX Compiler uses -M and outputs the dependencies 2003eed67faSmbalmer # in a .u file. In older versions, this file always lives in the 2013eed67faSmbalmer # current directory. Also, the AIX compiler puts `$object:' at the 2023eed67faSmbalmer # start of each line; $object doesn't have directory information. 2033eed67faSmbalmer # Version 6 uses the directory in both cases. 2043eed67faSmbalmer stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 2053eed67faSmbalmer tmpdepfile="$stripped.u" 2063eed67faSmbalmer if test "$libtool" = yes; then 2073eed67faSmbalmer "$@" -Wc,-M 2083eed67faSmbalmer else 2093eed67faSmbalmer "$@" -M 2103eed67faSmbalmer fi 2113eed67faSmbalmer stat=$? 2123eed67faSmbalmer 2133eed67faSmbalmer if test -f "$tmpdepfile"; then : 2143eed67faSmbalmer else 2153eed67faSmbalmer stripped=`echo "$stripped" | sed 's,^.*/,,'` 2163eed67faSmbalmer tmpdepfile="$stripped.u" 2173eed67faSmbalmer fi 2183eed67faSmbalmer 2193eed67faSmbalmer if test $stat -eq 0; then : 2203eed67faSmbalmer else 2213eed67faSmbalmer rm -f "$tmpdepfile" 2223eed67faSmbalmer exit $stat 2233eed67faSmbalmer fi 2243eed67faSmbalmer 2253eed67faSmbalmer if test -f "$tmpdepfile"; then 2263eed67faSmbalmer outname="$stripped.o" 2273eed67faSmbalmer # Each line is of the form `foo.o: dependent.h'. 2283eed67faSmbalmer # Do two passes, one to just change these to 2293eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 2303eed67faSmbalmer sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 2313eed67faSmbalmer sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 2323eed67faSmbalmer else 2333eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 2343eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 2353eed67faSmbalmer # "include basename.Plo" scheme. 2363eed67faSmbalmer echo "#dummy" > "$depfile" 2373eed67faSmbalmer fi 2383eed67faSmbalmer rm -f "$tmpdepfile" 2393eed67faSmbalmer ;; 2403eed67faSmbalmer 2413eed67faSmbalmericc) 2423eed67faSmbalmer # Intel's C compiler understands `-MD -MF file'. However on 2433eed67faSmbalmer # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2443eed67faSmbalmer # ICC 7.0 will fill foo.d with something like 2453eed67faSmbalmer # foo.o: sub/foo.c 2463eed67faSmbalmer # foo.o: sub/foo.h 2473eed67faSmbalmer # which is wrong. We want: 2483eed67faSmbalmer # sub/foo.o: sub/foo.c 2493eed67faSmbalmer # sub/foo.o: sub/foo.h 2503eed67faSmbalmer # sub/foo.c: 2513eed67faSmbalmer # sub/foo.h: 2523eed67faSmbalmer # ICC 7.1 will output 2533eed67faSmbalmer # foo.o: sub/foo.c sub/foo.h 2543eed67faSmbalmer # and will wrap long lines using \ : 2553eed67faSmbalmer # foo.o: sub/foo.c ... \ 2563eed67faSmbalmer # sub/foo.h ... \ 2573eed67faSmbalmer # ... 2583eed67faSmbalmer 2593eed67faSmbalmer "$@" -MD -MF "$tmpdepfile" 2603eed67faSmbalmer stat=$? 2613eed67faSmbalmer if test $stat -eq 0; then : 2623eed67faSmbalmer else 2633eed67faSmbalmer rm -f "$tmpdepfile" 2643eed67faSmbalmer exit $stat 2653eed67faSmbalmer fi 2663eed67faSmbalmer rm -f "$depfile" 2673eed67faSmbalmer # Each line is of the form `foo.o: dependent.h', 2683eed67faSmbalmer # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2693eed67faSmbalmer # Do two passes, one to just change these to 2703eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 2713eed67faSmbalmer sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2723eed67faSmbalmer # Some versions of the HPUX 10.20 sed can't process this invocation 2733eed67faSmbalmer # correctly. Breaking it into two sed invocations is a workaround. 2743eed67faSmbalmer sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2753eed67faSmbalmer sed -e 's/$/ :/' >> "$depfile" 2763eed67faSmbalmer rm -f "$tmpdepfile" 2773eed67faSmbalmer ;; 2783eed67faSmbalmer 2793eed67faSmbalmertru64) 2803eed67faSmbalmer # The Tru64 compiler uses -MD to generate dependencies as a side 2813eed67faSmbalmer # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 2823eed67faSmbalmer # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 2833eed67faSmbalmer # dependencies in `foo.d' instead, so we check for that too. 2843eed67faSmbalmer # Subdirectories are respected. 2853eed67faSmbalmer dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2863eed67faSmbalmer test "x$dir" = "x$object" && dir= 2873eed67faSmbalmer base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2883eed67faSmbalmer 2893eed67faSmbalmer if test "$libtool" = yes; then 2903eed67faSmbalmer # With Tru64 cc, shared objects can also be used to make a 2913eed67faSmbalmer # static library. This mecanism is used in libtool 1.4 series to 2923eed67faSmbalmer # handle both shared and static libraries in a single compilation. 2933eed67faSmbalmer # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 2943eed67faSmbalmer # 2953eed67faSmbalmer # With libtool 1.5 this exception was removed, and libtool now 2963eed67faSmbalmer # generates 2 separate objects for the 2 libraries. These two 2973eed67faSmbalmer # compilations output dependencies in in $dir.libs/$base.o.d and 2983eed67faSmbalmer # in $dir$base.o.d. We have to check for both files, because 2993eed67faSmbalmer # one of the two compilations can be disabled. We should prefer 3003eed67faSmbalmer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3013eed67faSmbalmer # automatically cleaned when .libs/ is deleted, while ignoring 3023eed67faSmbalmer # the former would cause a distcleancheck panic. 3033eed67faSmbalmer tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3043eed67faSmbalmer tmpdepfile2=$dir$base.o.d # libtool 1.5 3053eed67faSmbalmer tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3063eed67faSmbalmer tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3073eed67faSmbalmer "$@" -Wc,-MD 3083eed67faSmbalmer else 3093eed67faSmbalmer tmpdepfile1=$dir$base.o.d 3103eed67faSmbalmer tmpdepfile2=$dir$base.d 3113eed67faSmbalmer tmpdepfile3=$dir$base.d 3123eed67faSmbalmer tmpdepfile4=$dir$base.d 3133eed67faSmbalmer "$@" -MD 3143eed67faSmbalmer fi 3153eed67faSmbalmer 3163eed67faSmbalmer stat=$? 3173eed67faSmbalmer if test $stat -eq 0; then : 3183eed67faSmbalmer else 3193eed67faSmbalmer rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3203eed67faSmbalmer exit $stat 3213eed67faSmbalmer fi 3223eed67faSmbalmer 3233eed67faSmbalmer for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3243eed67faSmbalmer do 3253eed67faSmbalmer test -f "$tmpdepfile" && break 3263eed67faSmbalmer done 3273eed67faSmbalmer if test -f "$tmpdepfile"; then 3283eed67faSmbalmer sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 3293eed67faSmbalmer # That's a tab and a space in the []. 3303eed67faSmbalmer sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 3313eed67faSmbalmer else 3323eed67faSmbalmer echo "#dummy" > "$depfile" 3333eed67faSmbalmer fi 3343eed67faSmbalmer rm -f "$tmpdepfile" 3353eed67faSmbalmer ;; 3363eed67faSmbalmer 3373eed67faSmbalmer#nosideeffect) 3383eed67faSmbalmer # This comment above is used by automake to tell side-effect 3393eed67faSmbalmer # dependency tracking mechanisms from slower ones. 3403eed67faSmbalmer 3413eed67faSmbalmerdashmstdout) 3423eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 3433eed67faSmbalmer # always write the preprocessed file to stdout, regardless of -o. 3443eed67faSmbalmer "$@" || exit $? 3453eed67faSmbalmer 3463eed67faSmbalmer # Remove the call to Libtool. 3473eed67faSmbalmer if test "$libtool" = yes; then 3483eed67faSmbalmer while test $1 != '--mode=compile'; do 3493eed67faSmbalmer shift 3503eed67faSmbalmer done 3513eed67faSmbalmer shift 3523eed67faSmbalmer fi 3533eed67faSmbalmer 3543eed67faSmbalmer # Remove `-o $object'. 3553eed67faSmbalmer IFS=" " 3563eed67faSmbalmer for arg 3573eed67faSmbalmer do 3583eed67faSmbalmer case $arg in 3593eed67faSmbalmer -o) 3603eed67faSmbalmer shift 3613eed67faSmbalmer ;; 3623eed67faSmbalmer $object) 3633eed67faSmbalmer shift 3643eed67faSmbalmer ;; 3653eed67faSmbalmer *) 3663eed67faSmbalmer set fnord "$@" "$arg" 3673eed67faSmbalmer shift # fnord 3683eed67faSmbalmer shift # $arg 3693eed67faSmbalmer ;; 3703eed67faSmbalmer esac 3713eed67faSmbalmer done 3723eed67faSmbalmer 3733eed67faSmbalmer test -z "$dashmflag" && dashmflag=-M 3743eed67faSmbalmer # Require at least two characters before searching for `:' 3753eed67faSmbalmer # in the target name. This is to cope with DOS-style filenames: 3763eed67faSmbalmer # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 3773eed67faSmbalmer "$@" $dashmflag | 3783eed67faSmbalmer sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 3793eed67faSmbalmer rm -f "$depfile" 3803eed67faSmbalmer cat < "$tmpdepfile" > "$depfile" 3813eed67faSmbalmer tr ' ' ' 3823eed67faSmbalmer' < "$tmpdepfile" | \ 3833eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 3843eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 3853eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3863eed67faSmbalmer rm -f "$tmpdepfile" 3873eed67faSmbalmer ;; 3883eed67faSmbalmer 3893eed67faSmbalmerdashXmstdout) 3903eed67faSmbalmer # This case only exists to satisfy depend.m4. It is never actually 3913eed67faSmbalmer # run, as this mode is specially recognized in the preamble. 3923eed67faSmbalmer exit 1 3933eed67faSmbalmer ;; 3943eed67faSmbalmer 3953eed67faSmbalmermakedepend) 3963eed67faSmbalmer "$@" || exit $? 3973eed67faSmbalmer # Remove any Libtool call 3983eed67faSmbalmer if test "$libtool" = yes; then 3993eed67faSmbalmer while test $1 != '--mode=compile'; do 4003eed67faSmbalmer shift 4013eed67faSmbalmer done 4023eed67faSmbalmer shift 4033eed67faSmbalmer fi 4043eed67faSmbalmer # X makedepend 4053eed67faSmbalmer shift 4063eed67faSmbalmer cleared=no 4073eed67faSmbalmer for arg in "$@"; do 4083eed67faSmbalmer case $cleared in 4093eed67faSmbalmer no) 4103eed67faSmbalmer set ""; shift 4113eed67faSmbalmer cleared=yes ;; 4123eed67faSmbalmer esac 4133eed67faSmbalmer case "$arg" in 4143eed67faSmbalmer -D*|-I*) 4153eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 4163eed67faSmbalmer # Strip any option that makedepend may not understand. Remove 4173eed67faSmbalmer # the object too, otherwise makedepend will parse it as a source file. 4183eed67faSmbalmer -*|$object) 4193eed67faSmbalmer ;; 4203eed67faSmbalmer *) 4213eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 4223eed67faSmbalmer esac 4233eed67faSmbalmer done 4243eed67faSmbalmer obj_suffix="`echo $object | sed 's/^.*\././'`" 4253eed67faSmbalmer touch "$tmpdepfile" 4263eed67faSmbalmer ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 4273eed67faSmbalmer rm -f "$depfile" 4283eed67faSmbalmer cat < "$tmpdepfile" > "$depfile" 4293eed67faSmbalmer sed '1,2d' "$tmpdepfile" | tr ' ' ' 4303eed67faSmbalmer' | \ 4313eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 4323eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 4333eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4343eed67faSmbalmer rm -f "$tmpdepfile" "$tmpdepfile".bak 4353eed67faSmbalmer ;; 4363eed67faSmbalmer 4373eed67faSmbalmercpp) 4383eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 4393eed67faSmbalmer # always write the preprocessed file to stdout. 4403eed67faSmbalmer "$@" || exit $? 4413eed67faSmbalmer 4423eed67faSmbalmer # Remove the call to Libtool. 4433eed67faSmbalmer if test "$libtool" = yes; then 4443eed67faSmbalmer while test $1 != '--mode=compile'; do 4453eed67faSmbalmer shift 4463eed67faSmbalmer done 4473eed67faSmbalmer shift 4483eed67faSmbalmer fi 4493eed67faSmbalmer 4503eed67faSmbalmer # Remove `-o $object'. 4513eed67faSmbalmer IFS=" " 4523eed67faSmbalmer for arg 4533eed67faSmbalmer do 4543eed67faSmbalmer case $arg in 4553eed67faSmbalmer -o) 4563eed67faSmbalmer shift 4573eed67faSmbalmer ;; 4583eed67faSmbalmer $object) 4593eed67faSmbalmer shift 4603eed67faSmbalmer ;; 4613eed67faSmbalmer *) 4623eed67faSmbalmer set fnord "$@" "$arg" 4633eed67faSmbalmer shift # fnord 4643eed67faSmbalmer shift # $arg 4653eed67faSmbalmer ;; 4663eed67faSmbalmer esac 4673eed67faSmbalmer done 4683eed67faSmbalmer 4693eed67faSmbalmer "$@" -E | 4703eed67faSmbalmer sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 4713eed67faSmbalmer -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 4723eed67faSmbalmer sed '$ s: \\$::' > "$tmpdepfile" 4733eed67faSmbalmer rm -f "$depfile" 4743eed67faSmbalmer echo "$object : \\" > "$depfile" 4753eed67faSmbalmer cat < "$tmpdepfile" >> "$depfile" 4763eed67faSmbalmer sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 4773eed67faSmbalmer rm -f "$tmpdepfile" 4783eed67faSmbalmer ;; 4793eed67faSmbalmer 4803eed67faSmbalmermsvisualcpp) 4813eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 4823eed67faSmbalmer # always write the preprocessed file to stdout, regardless of -o, 4833eed67faSmbalmer # because we must use -o when running libtool. 4843eed67faSmbalmer "$@" || exit $? 4853eed67faSmbalmer IFS=" " 4863eed67faSmbalmer for arg 4873eed67faSmbalmer do 4883eed67faSmbalmer case "$arg" in 4893eed67faSmbalmer "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 4903eed67faSmbalmer set fnord "$@" 4913eed67faSmbalmer shift 4923eed67faSmbalmer shift 4933eed67faSmbalmer ;; 4943eed67faSmbalmer *) 4953eed67faSmbalmer set fnord "$@" "$arg" 4963eed67faSmbalmer shift 4973eed67faSmbalmer shift 4983eed67faSmbalmer ;; 4993eed67faSmbalmer esac 5003eed67faSmbalmer done 5013eed67faSmbalmer "$@" -E | 5023eed67faSmbalmer sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 5033eed67faSmbalmer rm -f "$depfile" 5043eed67faSmbalmer echo "$object : \\" > "$depfile" 5053eed67faSmbalmer . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5063eed67faSmbalmer echo " " >> "$depfile" 5073eed67faSmbalmer . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 5083eed67faSmbalmer rm -f "$tmpdepfile" 5093eed67faSmbalmer ;; 5103eed67faSmbalmer 5113eed67faSmbalmernone) 5123eed67faSmbalmer exec "$@" 5133eed67faSmbalmer ;; 5143eed67faSmbalmer 5153eed67faSmbalmer*) 5163eed67faSmbalmer echo "Unknown depmode $depmode" 1>&2 5173eed67faSmbalmer exit 1 5183eed67faSmbalmer ;; 5193eed67faSmbalmeresac 5203eed67faSmbalmer 5213eed67faSmbalmerexit 0 5223eed67faSmbalmer 5233eed67faSmbalmer# Local Variables: 5243eed67faSmbalmer# mode: shell-script 5253eed67faSmbalmer# sh-indentation: 2 5263eed67faSmbalmer# eval: (add-hook 'write-file-hooks 'time-stamp) 5273eed67faSmbalmer# time-stamp-start: "scriptversion=" 5283eed67faSmbalmer# time-stamp-format: "%:y-%02m-%02d.%02H" 5293eed67faSmbalmer# time-stamp-end: "$" 5303eed67faSmbalmer# End: 531