depcomp revision dc407927
13eed67faSmbalmer#! /bin/sh 23eed67faSmbalmer# depcomp - compile a program generating dependencies as side-effects 33eed67faSmbalmer 4dc407927Smrgscriptversion=2009-04-28.21; # UTC 53eed67faSmbalmer 6dc407927Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7dc407927Smrg# Software Foundation, Inc. 83eed67faSmbalmer 93eed67faSmbalmer# This program is free software; you can redistribute it and/or modify 103eed67faSmbalmer# it under the terms of the GNU General Public License as published by 113eed67faSmbalmer# the Free Software Foundation; either version 2, or (at your option) 123eed67faSmbalmer# any later version. 133eed67faSmbalmer 143eed67faSmbalmer# This program is distributed in the hope that it will be useful, 153eed67faSmbalmer# but WITHOUT ANY WARRANTY; without even the implied warranty of 163eed67faSmbalmer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 173eed67faSmbalmer# GNU General Public License for more details. 183eed67faSmbalmer 193eed67faSmbalmer# You should have received a copy of the GNU General Public License 20dc407927Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 213eed67faSmbalmer 223eed67faSmbalmer# As a special exception to the GNU General Public License, if you 233eed67faSmbalmer# distribute this file as part of a program that contains a 243eed67faSmbalmer# configuration script generated by Autoconf, you may include it under 253eed67faSmbalmer# the same distribution terms that you use for the rest of that program. 263eed67faSmbalmer 273eed67faSmbalmer# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 283eed67faSmbalmer 293eed67faSmbalmercase $1 in 303eed67faSmbalmer '') 313eed67faSmbalmer echo "$0: No command. Try \`$0 --help' for more information." 1>&2 323eed67faSmbalmer exit 1; 333eed67faSmbalmer ;; 343eed67faSmbalmer -h | --h*) 353eed67faSmbalmer cat <<\EOF 363eed67faSmbalmerUsage: depcomp [--help] [--version] PROGRAM [ARGS] 373eed67faSmbalmer 383eed67faSmbalmerRun PROGRAMS ARGS to compile a file, generating dependencies 393eed67faSmbalmeras side-effects. 403eed67faSmbalmer 413eed67faSmbalmerEnvironment variables: 423eed67faSmbalmer depmode Dependency tracking mode. 433eed67faSmbalmer source Source file read by `PROGRAMS ARGS'. 443eed67faSmbalmer object Object file output by `PROGRAMS ARGS'. 453eed67faSmbalmer DEPDIR directory where to store dependencies. 463eed67faSmbalmer depfile Dependency file to output. 473eed67faSmbalmer tmpdepfile Temporary file to use when outputing dependencies. 483eed67faSmbalmer libtool Whether libtool is used (yes/no). 493eed67faSmbalmer 503eed67faSmbalmerReport bugs to <bug-automake@gnu.org>. 513eed67faSmbalmerEOF 523eed67faSmbalmer exit $? 533eed67faSmbalmer ;; 543eed67faSmbalmer -v | --v*) 553eed67faSmbalmer echo "depcomp $scriptversion" 563eed67faSmbalmer exit $? 573eed67faSmbalmer ;; 583eed67faSmbalmeresac 593eed67faSmbalmer 603eed67faSmbalmerif test -z "$depmode" || test -z "$source" || test -z "$object"; then 613eed67faSmbalmer echo "depcomp: Variables source, object and depmode must be set" 1>&2 623eed67faSmbalmer exit 1 633eed67faSmbalmerfi 643eed67faSmbalmer 653eed67faSmbalmer# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 663eed67faSmbalmerdepfile=${depfile-`echo "$object" | 673eed67faSmbalmer sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 683eed67faSmbalmertmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 693eed67faSmbalmer 703eed67faSmbalmerrm -f "$tmpdepfile" 713eed67faSmbalmer 723eed67faSmbalmer# Some modes work just like other modes, but use different flags. We 733eed67faSmbalmer# parameterize here, but still list the modes in the big case below, 743eed67faSmbalmer# to make depend.m4 easier to write. Note that we *cannot* use a case 753eed67faSmbalmer# here, because this file can only contain one case statement. 763eed67faSmbalmerif test "$depmode" = hp; then 773eed67faSmbalmer # HP compiler uses -M and no extra arg. 783eed67faSmbalmer gccflag=-M 793eed67faSmbalmer depmode=gcc 803eed67faSmbalmerfi 813eed67faSmbalmer 823eed67faSmbalmerif test "$depmode" = dashXmstdout; then 833eed67faSmbalmer # This is just like dashmstdout with a different argument. 843eed67faSmbalmer dashmflag=-xM 853eed67faSmbalmer depmode=dashmstdout 863eed67faSmbalmerfi 873eed67faSmbalmer 88dc407927Smrgcygpath_u="cygpath -u -f -" 89dc407927Smrgif test "$depmode" = msvcmsys; then 90dc407927Smrg # This is just like msvisualcpp but w/o cygpath translation. 91dc407927Smrg # Just convert the backslash-escaped backslashes to single forward 92dc407927Smrg # slashes to satisfy depend.m4 93dc407927Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94dc407927Smrg depmode=msvisualcpp 95dc407927Smrgfi 96dc407927Smrg 973eed67faSmbalmercase "$depmode" in 983eed67faSmbalmergcc3) 993eed67faSmbalmer## gcc 3 implements dependency tracking that does exactly what 1003eed67faSmbalmer## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1013eed67faSmbalmer## it if -MD -MP comes after the -MF stuff. Hmm. 102dc407927Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 103dc407927Smrg## the command line argument order; so add the flags where they 104dc407927Smrg## appear in depend2.am. Note that the slowdown incurred here 105dc407927Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 106dc407927Smrg for arg 107dc407927Smrg do 108dc407927Smrg case $arg in 109dc407927Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 110dc407927Smrg *) set fnord "$@" "$arg" ;; 111dc407927Smrg esac 112dc407927Smrg shift # fnord 113dc407927Smrg shift # $arg 114dc407927Smrg done 115dc407927Smrg "$@" 1163eed67faSmbalmer stat=$? 1173eed67faSmbalmer if test $stat -eq 0; then : 1183eed67faSmbalmer else 1193eed67faSmbalmer rm -f "$tmpdepfile" 1203eed67faSmbalmer exit $stat 1213eed67faSmbalmer fi 1223eed67faSmbalmer mv "$tmpdepfile" "$depfile" 1233eed67faSmbalmer ;; 1243eed67faSmbalmer 1253eed67faSmbalmergcc) 1263eed67faSmbalmer## There are various ways to get dependency output from gcc. Here's 1273eed67faSmbalmer## why we pick this rather obscure method: 1283eed67faSmbalmer## - Don't want to use -MD because we'd like the dependencies to end 1293eed67faSmbalmer## up in a subdir. Having to rename by hand is ugly. 1303eed67faSmbalmer## (We might end up doing this anyway to support other compilers.) 1313eed67faSmbalmer## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1323eed67faSmbalmer## -MM, not -M (despite what the docs say). 1333eed67faSmbalmer## - Using -M directly means running the compiler twice (even worse 1343eed67faSmbalmer## than renaming). 1353eed67faSmbalmer if test -z "$gccflag"; then 1363eed67faSmbalmer gccflag=-MD, 1373eed67faSmbalmer fi 1383eed67faSmbalmer "$@" -Wp,"$gccflag$tmpdepfile" 1393eed67faSmbalmer stat=$? 1403eed67faSmbalmer if test $stat -eq 0; then : 1413eed67faSmbalmer else 1423eed67faSmbalmer rm -f "$tmpdepfile" 1433eed67faSmbalmer exit $stat 1443eed67faSmbalmer fi 1453eed67faSmbalmer rm -f "$depfile" 1463eed67faSmbalmer echo "$object : \\" > "$depfile" 1473eed67faSmbalmer alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1483eed67faSmbalmer## The second -e expression handles DOS-style file names with drive letters. 1493eed67faSmbalmer sed -e 's/^[^:]*: / /' \ 1503eed67faSmbalmer -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1513eed67faSmbalmer## This next piece of magic avoids the `deleted header file' problem. 1523eed67faSmbalmer## The problem is that when a header file which appears in a .P file 1533eed67faSmbalmer## is deleted, the dependency causes make to die (because there is 1543eed67faSmbalmer## typically no way to rebuild the header). We avoid this by adding 1553eed67faSmbalmer## dummy dependencies for each header file. Too bad gcc doesn't do 1563eed67faSmbalmer## this for us directly. 1573eed67faSmbalmer tr ' ' ' 1583eed67faSmbalmer' < "$tmpdepfile" | 1593eed67faSmbalmer## Some versions of gcc put a space before the `:'. On the theory 1603eed67faSmbalmer## that the space means something, we add a space to the output as 1613eed67faSmbalmer## well. 1623eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 1633eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 1643eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1653eed67faSmbalmer rm -f "$tmpdepfile" 1663eed67faSmbalmer ;; 1673eed67faSmbalmer 1683eed67faSmbalmerhp) 1693eed67faSmbalmer # This case exists only to let depend.m4 do its work. It works by 1703eed67faSmbalmer # looking at the text of this script. This case will never be run, 1713eed67faSmbalmer # since it is checked for above. 1723eed67faSmbalmer exit 1 1733eed67faSmbalmer ;; 1743eed67faSmbalmer 1753eed67faSmbalmersgi) 1763eed67faSmbalmer if test "$libtool" = yes; then 1773eed67faSmbalmer "$@" "-Wp,-MDupdate,$tmpdepfile" 1783eed67faSmbalmer else 1793eed67faSmbalmer "$@" -MDupdate "$tmpdepfile" 1803eed67faSmbalmer fi 1813eed67faSmbalmer stat=$? 1823eed67faSmbalmer if test $stat -eq 0; then : 1833eed67faSmbalmer else 1843eed67faSmbalmer rm -f "$tmpdepfile" 1853eed67faSmbalmer exit $stat 1863eed67faSmbalmer fi 1873eed67faSmbalmer rm -f "$depfile" 1883eed67faSmbalmer 1893eed67faSmbalmer if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1903eed67faSmbalmer echo "$object : \\" > "$depfile" 1913eed67faSmbalmer 1923eed67faSmbalmer # Clip off the initial element (the dependent). Don't try to be 1933eed67faSmbalmer # clever and replace this with sed code, as IRIX sed won't handle 1943eed67faSmbalmer # lines with more than a fixed number of characters (4096 in 1953eed67faSmbalmer # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1963eed67faSmbalmer # the IRIX cc adds comments like `#:fec' to the end of the 1973eed67faSmbalmer # dependency line. 1983eed67faSmbalmer tr ' ' ' 1993eed67faSmbalmer' < "$tmpdepfile" \ 2003eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2013eed67faSmbalmer tr ' 202dc407927Smrg' ' ' >> "$depfile" 203dc407927Smrg echo >> "$depfile" 2043eed67faSmbalmer 2053eed67faSmbalmer # The second pass generates a dummy entry for each header file. 2063eed67faSmbalmer tr ' ' ' 2073eed67faSmbalmer' < "$tmpdepfile" \ 2083eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209dc407927Smrg >> "$depfile" 2103eed67faSmbalmer else 2113eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 2123eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 2133eed67faSmbalmer # "include basename.Plo" scheme. 2143eed67faSmbalmer echo "#dummy" > "$depfile" 2153eed67faSmbalmer fi 2163eed67faSmbalmer rm -f "$tmpdepfile" 2173eed67faSmbalmer ;; 2183eed67faSmbalmer 2193eed67faSmbalmeraix) 2203eed67faSmbalmer # The C for AIX Compiler uses -M and outputs the dependencies 2213eed67faSmbalmer # in a .u file. In older versions, this file always lives in the 2223eed67faSmbalmer # current directory. Also, the AIX compiler puts `$object:' at the 2233eed67faSmbalmer # start of each line; $object doesn't have directory information. 2243eed67faSmbalmer # Version 6 uses the directory in both cases. 225dc407927Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226dc407927Smrg test "x$dir" = "x$object" && dir= 227dc407927Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2283eed67faSmbalmer if test "$libtool" = yes; then 229dc407927Smrg tmpdepfile1=$dir$base.u 230dc407927Smrg tmpdepfile2=$base.u 231dc407927Smrg tmpdepfile3=$dir.libs/$base.u 2323eed67faSmbalmer "$@" -Wc,-M 2333eed67faSmbalmer else 234dc407927Smrg tmpdepfile1=$dir$base.u 235dc407927Smrg tmpdepfile2=$dir$base.u 236dc407927Smrg tmpdepfile3=$dir$base.u 2373eed67faSmbalmer "$@" -M 2383eed67faSmbalmer fi 2393eed67faSmbalmer stat=$? 2403eed67faSmbalmer 2413eed67faSmbalmer if test $stat -eq 0; then : 2423eed67faSmbalmer else 243dc407927Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2443eed67faSmbalmer exit $stat 2453eed67faSmbalmer fi 2463eed67faSmbalmer 247dc407927Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248dc407927Smrg do 249dc407927Smrg test -f "$tmpdepfile" && break 250dc407927Smrg done 2513eed67faSmbalmer if test -f "$tmpdepfile"; then 2523eed67faSmbalmer # Each line is of the form `foo.o: dependent.h'. 2533eed67faSmbalmer # Do two passes, one to just change these to 2543eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 255dc407927Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256dc407927Smrg # That's a tab and a space in the []. 257dc407927Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2583eed67faSmbalmer else 2593eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 2603eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 2613eed67faSmbalmer # "include basename.Plo" scheme. 2623eed67faSmbalmer echo "#dummy" > "$depfile" 2633eed67faSmbalmer fi 2643eed67faSmbalmer rm -f "$tmpdepfile" 2653eed67faSmbalmer ;; 2663eed67faSmbalmer 2673eed67faSmbalmericc) 2683eed67faSmbalmer # Intel's C compiler understands `-MD -MF file'. However on 2693eed67faSmbalmer # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2703eed67faSmbalmer # ICC 7.0 will fill foo.d with something like 2713eed67faSmbalmer # foo.o: sub/foo.c 2723eed67faSmbalmer # foo.o: sub/foo.h 2733eed67faSmbalmer # which is wrong. We want: 2743eed67faSmbalmer # sub/foo.o: sub/foo.c 2753eed67faSmbalmer # sub/foo.o: sub/foo.h 2763eed67faSmbalmer # sub/foo.c: 2773eed67faSmbalmer # sub/foo.h: 2783eed67faSmbalmer # ICC 7.1 will output 2793eed67faSmbalmer # foo.o: sub/foo.c sub/foo.h 2803eed67faSmbalmer # and will wrap long lines using \ : 2813eed67faSmbalmer # foo.o: sub/foo.c ... \ 2823eed67faSmbalmer # sub/foo.h ... \ 2833eed67faSmbalmer # ... 2843eed67faSmbalmer 2853eed67faSmbalmer "$@" -MD -MF "$tmpdepfile" 2863eed67faSmbalmer stat=$? 2873eed67faSmbalmer if test $stat -eq 0; then : 2883eed67faSmbalmer else 2893eed67faSmbalmer rm -f "$tmpdepfile" 2903eed67faSmbalmer exit $stat 2913eed67faSmbalmer fi 2923eed67faSmbalmer rm -f "$depfile" 2933eed67faSmbalmer # Each line is of the form `foo.o: dependent.h', 2943eed67faSmbalmer # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2953eed67faSmbalmer # Do two passes, one to just change these to 2963eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 2973eed67faSmbalmer sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2983eed67faSmbalmer # Some versions of the HPUX 10.20 sed can't process this invocation 2993eed67faSmbalmer # correctly. Breaking it into two sed invocations is a workaround. 3003eed67faSmbalmer sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3013eed67faSmbalmer sed -e 's/$/ :/' >> "$depfile" 3023eed67faSmbalmer rm -f "$tmpdepfile" 3033eed67faSmbalmer ;; 3043eed67faSmbalmer 305dc407927Smrghp2) 306dc407927Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 307dc407927Smrg # compilers, which have integrated preprocessors. The correct option 308dc407927Smrg # to use with these is +Maked; it writes dependencies to a file named 309dc407927Smrg # 'foo.d', which lands next to the object file, wherever that 310dc407927Smrg # happens to be. 311dc407927Smrg # Much of this is similar to the tru64 case; see comments there. 312dc407927Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 313dc407927Smrg test "x$dir" = "x$object" && dir= 314dc407927Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 315dc407927Smrg if test "$libtool" = yes; then 316dc407927Smrg tmpdepfile1=$dir$base.d 317dc407927Smrg tmpdepfile2=$dir.libs/$base.d 318dc407927Smrg "$@" -Wc,+Maked 319dc407927Smrg else 320dc407927Smrg tmpdepfile1=$dir$base.d 321dc407927Smrg tmpdepfile2=$dir$base.d 322dc407927Smrg "$@" +Maked 323dc407927Smrg fi 324dc407927Smrg stat=$? 325dc407927Smrg if test $stat -eq 0; then : 326dc407927Smrg else 327dc407927Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 328dc407927Smrg exit $stat 329dc407927Smrg fi 330dc407927Smrg 331dc407927Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 332dc407927Smrg do 333dc407927Smrg test -f "$tmpdepfile" && break 334dc407927Smrg done 335dc407927Smrg if test -f "$tmpdepfile"; then 336dc407927Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 337dc407927Smrg # Add `dependent.h:' lines. 338dc407927Smrg sed -ne '2,${ 339dc407927Smrg s/^ *// 340dc407927Smrg s/ \\*$// 341dc407927Smrg s/$/:/ 342dc407927Smrg p 343dc407927Smrg }' "$tmpdepfile" >> "$depfile" 344dc407927Smrg else 345dc407927Smrg echo "#dummy" > "$depfile" 346dc407927Smrg fi 347dc407927Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 348dc407927Smrg ;; 349dc407927Smrg 3503eed67faSmbalmertru64) 3513eed67faSmbalmer # The Tru64 compiler uses -MD to generate dependencies as a side 3523eed67faSmbalmer # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3533eed67faSmbalmer # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3543eed67faSmbalmer # dependencies in `foo.d' instead, so we check for that too. 3553eed67faSmbalmer # Subdirectories are respected. 3563eed67faSmbalmer dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3573eed67faSmbalmer test "x$dir" = "x$object" && dir= 3583eed67faSmbalmer base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3593eed67faSmbalmer 3603eed67faSmbalmer if test "$libtool" = yes; then 3613eed67faSmbalmer # With Tru64 cc, shared objects can also be used to make a 362dc407927Smrg # static library. This mechanism is used in libtool 1.4 series to 3633eed67faSmbalmer # handle both shared and static libraries in a single compilation. 3643eed67faSmbalmer # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3653eed67faSmbalmer # 3663eed67faSmbalmer # With libtool 1.5 this exception was removed, and libtool now 3673eed67faSmbalmer # generates 2 separate objects for the 2 libraries. These two 368dc407927Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3693eed67faSmbalmer # in $dir$base.o.d. We have to check for both files, because 3703eed67faSmbalmer # one of the two compilations can be disabled. We should prefer 3713eed67faSmbalmer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3723eed67faSmbalmer # automatically cleaned when .libs/ is deleted, while ignoring 3733eed67faSmbalmer # the former would cause a distcleancheck panic. 3743eed67faSmbalmer tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3753eed67faSmbalmer tmpdepfile2=$dir$base.o.d # libtool 1.5 3763eed67faSmbalmer tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3773eed67faSmbalmer tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3783eed67faSmbalmer "$@" -Wc,-MD 3793eed67faSmbalmer else 3803eed67faSmbalmer tmpdepfile1=$dir$base.o.d 3813eed67faSmbalmer tmpdepfile2=$dir$base.d 3823eed67faSmbalmer tmpdepfile3=$dir$base.d 3833eed67faSmbalmer tmpdepfile4=$dir$base.d 3843eed67faSmbalmer "$@" -MD 3853eed67faSmbalmer fi 3863eed67faSmbalmer 3873eed67faSmbalmer stat=$? 3883eed67faSmbalmer if test $stat -eq 0; then : 3893eed67faSmbalmer else 3903eed67faSmbalmer rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3913eed67faSmbalmer exit $stat 3923eed67faSmbalmer fi 3933eed67faSmbalmer 3943eed67faSmbalmer for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3953eed67faSmbalmer do 3963eed67faSmbalmer test -f "$tmpdepfile" && break 3973eed67faSmbalmer done 3983eed67faSmbalmer if test -f "$tmpdepfile"; then 3993eed67faSmbalmer sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4003eed67faSmbalmer # That's a tab and a space in the []. 4013eed67faSmbalmer sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4023eed67faSmbalmer else 4033eed67faSmbalmer echo "#dummy" > "$depfile" 4043eed67faSmbalmer fi 4053eed67faSmbalmer rm -f "$tmpdepfile" 4063eed67faSmbalmer ;; 4073eed67faSmbalmer 4083eed67faSmbalmer#nosideeffect) 4093eed67faSmbalmer # This comment above is used by automake to tell side-effect 4103eed67faSmbalmer # dependency tracking mechanisms from slower ones. 4113eed67faSmbalmer 4123eed67faSmbalmerdashmstdout) 4133eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 4143eed67faSmbalmer # always write the preprocessed file to stdout, regardless of -o. 4153eed67faSmbalmer "$@" || exit $? 4163eed67faSmbalmer 4173eed67faSmbalmer # Remove the call to Libtool. 4183eed67faSmbalmer if test "$libtool" = yes; then 419dc407927Smrg while test "X$1" != 'X--mode=compile'; do 4203eed67faSmbalmer shift 4213eed67faSmbalmer done 4223eed67faSmbalmer shift 4233eed67faSmbalmer fi 4243eed67faSmbalmer 4253eed67faSmbalmer # Remove `-o $object'. 4263eed67faSmbalmer IFS=" " 4273eed67faSmbalmer for arg 4283eed67faSmbalmer do 4293eed67faSmbalmer case $arg in 4303eed67faSmbalmer -o) 4313eed67faSmbalmer shift 4323eed67faSmbalmer ;; 4333eed67faSmbalmer $object) 4343eed67faSmbalmer shift 4353eed67faSmbalmer ;; 4363eed67faSmbalmer *) 4373eed67faSmbalmer set fnord "$@" "$arg" 4383eed67faSmbalmer shift # fnord 4393eed67faSmbalmer shift # $arg 4403eed67faSmbalmer ;; 4413eed67faSmbalmer esac 4423eed67faSmbalmer done 4433eed67faSmbalmer 4443eed67faSmbalmer test -z "$dashmflag" && dashmflag=-M 4453eed67faSmbalmer # Require at least two characters before searching for `:' 4463eed67faSmbalmer # in the target name. This is to cope with DOS-style filenames: 4473eed67faSmbalmer # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4483eed67faSmbalmer "$@" $dashmflag | 4493eed67faSmbalmer sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4503eed67faSmbalmer rm -f "$depfile" 4513eed67faSmbalmer cat < "$tmpdepfile" > "$depfile" 4523eed67faSmbalmer tr ' ' ' 4533eed67faSmbalmer' < "$tmpdepfile" | \ 4543eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 4553eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 4563eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4573eed67faSmbalmer rm -f "$tmpdepfile" 4583eed67faSmbalmer ;; 4593eed67faSmbalmer 4603eed67faSmbalmerdashXmstdout) 4613eed67faSmbalmer # This case only exists to satisfy depend.m4. It is never actually 4623eed67faSmbalmer # run, as this mode is specially recognized in the preamble. 4633eed67faSmbalmer exit 1 4643eed67faSmbalmer ;; 4653eed67faSmbalmer 4663eed67faSmbalmermakedepend) 4673eed67faSmbalmer "$@" || exit $? 4683eed67faSmbalmer # Remove any Libtool call 4693eed67faSmbalmer if test "$libtool" = yes; then 470dc407927Smrg while test "X$1" != 'X--mode=compile'; do 4713eed67faSmbalmer shift 4723eed67faSmbalmer done 4733eed67faSmbalmer shift 4743eed67faSmbalmer fi 4753eed67faSmbalmer # X makedepend 4763eed67faSmbalmer shift 477dc407927Smrg cleared=no eat=no 478dc407927Smrg for arg 479dc407927Smrg do 4803eed67faSmbalmer case $cleared in 4813eed67faSmbalmer no) 4823eed67faSmbalmer set ""; shift 4833eed67faSmbalmer cleared=yes ;; 4843eed67faSmbalmer esac 485dc407927Smrg if test $eat = yes; then 486dc407927Smrg eat=no 487dc407927Smrg continue 488dc407927Smrg fi 4893eed67faSmbalmer case "$arg" in 4903eed67faSmbalmer -D*|-I*) 4913eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 4923eed67faSmbalmer # Strip any option that makedepend may not understand. Remove 4933eed67faSmbalmer # the object too, otherwise makedepend will parse it as a source file. 494dc407927Smrg -arch) 495dc407927Smrg eat=yes ;; 4963eed67faSmbalmer -*|$object) 4973eed67faSmbalmer ;; 4983eed67faSmbalmer *) 4993eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 5003eed67faSmbalmer esac 5013eed67faSmbalmer done 502dc407927Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5033eed67faSmbalmer touch "$tmpdepfile" 5043eed67faSmbalmer ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5053eed67faSmbalmer rm -f "$depfile" 5063eed67faSmbalmer cat < "$tmpdepfile" > "$depfile" 5073eed67faSmbalmer sed '1,2d' "$tmpdepfile" | tr ' ' ' 5083eed67faSmbalmer' | \ 5093eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 5103eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 5113eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5123eed67faSmbalmer rm -f "$tmpdepfile" "$tmpdepfile".bak 5133eed67faSmbalmer ;; 5143eed67faSmbalmer 5153eed67faSmbalmercpp) 5163eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 5173eed67faSmbalmer # always write the preprocessed file to stdout. 5183eed67faSmbalmer "$@" || exit $? 5193eed67faSmbalmer 5203eed67faSmbalmer # Remove the call to Libtool. 5213eed67faSmbalmer if test "$libtool" = yes; then 522dc407927Smrg while test "X$1" != 'X--mode=compile'; do 5233eed67faSmbalmer shift 5243eed67faSmbalmer done 5253eed67faSmbalmer shift 5263eed67faSmbalmer fi 5273eed67faSmbalmer 5283eed67faSmbalmer # Remove `-o $object'. 5293eed67faSmbalmer IFS=" " 5303eed67faSmbalmer for arg 5313eed67faSmbalmer do 5323eed67faSmbalmer case $arg in 5333eed67faSmbalmer -o) 5343eed67faSmbalmer shift 5353eed67faSmbalmer ;; 5363eed67faSmbalmer $object) 5373eed67faSmbalmer shift 5383eed67faSmbalmer ;; 5393eed67faSmbalmer *) 5403eed67faSmbalmer set fnord "$@" "$arg" 5413eed67faSmbalmer shift # fnord 5423eed67faSmbalmer shift # $arg 5433eed67faSmbalmer ;; 5443eed67faSmbalmer esac 5453eed67faSmbalmer done 5463eed67faSmbalmer 5473eed67faSmbalmer "$@" -E | 5483eed67faSmbalmer sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5493eed67faSmbalmer -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5503eed67faSmbalmer sed '$ s: \\$::' > "$tmpdepfile" 5513eed67faSmbalmer rm -f "$depfile" 5523eed67faSmbalmer echo "$object : \\" > "$depfile" 5533eed67faSmbalmer cat < "$tmpdepfile" >> "$depfile" 5543eed67faSmbalmer sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5553eed67faSmbalmer rm -f "$tmpdepfile" 5563eed67faSmbalmer ;; 5573eed67faSmbalmer 5583eed67faSmbalmermsvisualcpp) 5593eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 560dc407927Smrg # always write the preprocessed file to stdout. 5613eed67faSmbalmer "$@" || exit $? 562dc407927Smrg 563dc407927Smrg # Remove the call to Libtool. 564dc407927Smrg if test "$libtool" = yes; then 565dc407927Smrg while test "X$1" != 'X--mode=compile'; do 566dc407927Smrg shift 567dc407927Smrg done 568dc407927Smrg shift 569dc407927Smrg fi 570dc407927Smrg 5713eed67faSmbalmer IFS=" " 5723eed67faSmbalmer for arg 5733eed67faSmbalmer do 5743eed67faSmbalmer case "$arg" in 575dc407927Smrg -o) 576dc407927Smrg shift 577dc407927Smrg ;; 578dc407927Smrg $object) 579dc407927Smrg shift 580dc407927Smrg ;; 5813eed67faSmbalmer "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5823eed67faSmbalmer set fnord "$@" 5833eed67faSmbalmer shift 5843eed67faSmbalmer shift 5853eed67faSmbalmer ;; 5863eed67faSmbalmer *) 5873eed67faSmbalmer set fnord "$@" "$arg" 5883eed67faSmbalmer shift 5893eed67faSmbalmer shift 5903eed67faSmbalmer ;; 5913eed67faSmbalmer esac 5923eed67faSmbalmer done 593dc407927Smrg "$@" -E 2>/dev/null | 594dc407927Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5953eed67faSmbalmer rm -f "$depfile" 5963eed67faSmbalmer echo "$object : \\" > "$depfile" 597dc407927Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5983eed67faSmbalmer echo " " >> "$depfile" 599dc407927Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6003eed67faSmbalmer rm -f "$tmpdepfile" 6013eed67faSmbalmer ;; 6023eed67faSmbalmer 603dc407927Smrgmsvcmsys) 604dc407927Smrg # This case exists only to let depend.m4 do its work. It works by 605dc407927Smrg # looking at the text of this script. This case will never be run, 606dc407927Smrg # since it is checked for above. 607dc407927Smrg exit 1 608dc407927Smrg ;; 609dc407927Smrg 6103eed67faSmbalmernone) 6113eed67faSmbalmer exec "$@" 6123eed67faSmbalmer ;; 6133eed67faSmbalmer 6143eed67faSmbalmer*) 6153eed67faSmbalmer echo "Unknown depmode $depmode" 1>&2 6163eed67faSmbalmer exit 1 6173eed67faSmbalmer ;; 6183eed67faSmbalmeresac 6193eed67faSmbalmer 6203eed67faSmbalmerexit 0 6213eed67faSmbalmer 6223eed67faSmbalmer# Local Variables: 6233eed67faSmbalmer# mode: shell-script 6243eed67faSmbalmer# sh-indentation: 2 6253eed67faSmbalmer# eval: (add-hook 'write-file-hooks 'time-stamp) 6263eed67faSmbalmer# time-stamp-start: "scriptversion=" 6273eed67faSmbalmer# time-stamp-format: "%:y-%02m-%02d.%02H" 628dc407927Smrg# time-stamp-time-zone: "UTC" 629dc407927Smrg# time-stamp-end: "; # UTC" 6303eed67faSmbalmer# End: 631