depcomp revision c05e22d7
15dfecf96Smrg#! /bin/sh 25dfecf96Smrg# depcomp - compile a program generating dependencies as side-effects 35dfecf96Smrg 4c05e22d7Smrgscriptversion=2009-04-28.21; # UTC 55dfecf96Smrg 6c05e22d7Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7c05e22d7Smrg# Software Foundation, Inc. 85dfecf96Smrg 95dfecf96Smrg# This program is free software; you can redistribute it and/or modify 105dfecf96Smrg# it under the terms of the GNU General Public License as published by 115dfecf96Smrg# the Free Software Foundation; either version 2, or (at your option) 125dfecf96Smrg# any later version. 135dfecf96Smrg 145dfecf96Smrg# This program is distributed in the hope that it will be useful, 155dfecf96Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 165dfecf96Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 175dfecf96Smrg# GNU General Public License for more details. 185dfecf96Smrg 195dfecf96Smrg# You should have received a copy of the GNU General Public License 20c05e22d7Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 215dfecf96Smrg 225dfecf96Smrg# As a special exception to the GNU General Public License, if you 235dfecf96Smrg# distribute this file as part of a program that contains a 245dfecf96Smrg# configuration script generated by Autoconf, you may include it under 255dfecf96Smrg# the same distribution terms that you use for the rest of that program. 265dfecf96Smrg 275dfecf96Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 285dfecf96Smrg 295dfecf96Smrgcase $1 in 305dfecf96Smrg '') 315dfecf96Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 325dfecf96Smrg exit 1; 335dfecf96Smrg ;; 345dfecf96Smrg -h | --h*) 355dfecf96Smrg cat <<\EOF 365dfecf96SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 375dfecf96Smrg 385dfecf96SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 395dfecf96Smrgas side-effects. 405dfecf96Smrg 415dfecf96SmrgEnvironment variables: 425dfecf96Smrg depmode Dependency tracking mode. 435dfecf96Smrg source Source file read by `PROGRAMS ARGS'. 445dfecf96Smrg object Object file output by `PROGRAMS ARGS'. 455dfecf96Smrg DEPDIR directory where to store dependencies. 465dfecf96Smrg depfile Dependency file to output. 475dfecf96Smrg tmpdepfile Temporary file to use when outputing dependencies. 485dfecf96Smrg libtool Whether libtool is used (yes/no). 495dfecf96Smrg 505dfecf96SmrgReport bugs to <bug-automake@gnu.org>. 515dfecf96SmrgEOF 525dfecf96Smrg exit $? 535dfecf96Smrg ;; 545dfecf96Smrg -v | --v*) 555dfecf96Smrg echo "depcomp $scriptversion" 565dfecf96Smrg exit $? 575dfecf96Smrg ;; 585dfecf96Smrgesac 595dfecf96Smrg 605dfecf96Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 615dfecf96Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 625dfecf96Smrg exit 1 635dfecf96Smrgfi 645dfecf96Smrg 655dfecf96Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 665dfecf96Smrgdepfile=${depfile-`echo "$object" | 675dfecf96Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 685dfecf96Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 695dfecf96Smrg 705dfecf96Smrgrm -f "$tmpdepfile" 715dfecf96Smrg 725dfecf96Smrg# Some modes work just like other modes, but use different flags. We 735dfecf96Smrg# parameterize here, but still list the modes in the big case below, 745dfecf96Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 755dfecf96Smrg# here, because this file can only contain one case statement. 765dfecf96Smrgif test "$depmode" = hp; then 775dfecf96Smrg # HP compiler uses -M and no extra arg. 785dfecf96Smrg gccflag=-M 795dfecf96Smrg depmode=gcc 805dfecf96Smrgfi 815dfecf96Smrg 825dfecf96Smrgif test "$depmode" = dashXmstdout; then 835dfecf96Smrg # This is just like dashmstdout with a different argument. 845dfecf96Smrg dashmflag=-xM 855dfecf96Smrg depmode=dashmstdout 865dfecf96Smrgfi 875dfecf96Smrg 88c05e22d7Smrgcygpath_u="cygpath -u -f -" 89c05e22d7Smrgif test "$depmode" = msvcmsys; then 90c05e22d7Smrg # This is just like msvisualcpp but w/o cygpath translation. 91c05e22d7Smrg # Just convert the backslash-escaped backslashes to single forward 92c05e22d7Smrg # slashes to satisfy depend.m4 93c05e22d7Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94c05e22d7Smrg depmode=msvisualcpp 95c05e22d7Smrgfi 96c05e22d7Smrg 975dfecf96Smrgcase "$depmode" in 985dfecf96Smrggcc3) 995dfecf96Smrg## gcc 3 implements dependency tracking that does exactly what 1005dfecf96Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1015dfecf96Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 102f14f4646Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 103f14f4646Smrg## the command line argument order; so add the flags where they 104f14f4646Smrg## appear in depend2.am. Note that the slowdown incurred here 105f14f4646Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 106f14f4646Smrg for arg 107f14f4646Smrg do 108f14f4646Smrg case $arg in 109f14f4646Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 110f14f4646Smrg *) set fnord "$@" "$arg" ;; 111f14f4646Smrg esac 112f14f4646Smrg shift # fnord 113f14f4646Smrg shift # $arg 114f14f4646Smrg done 115f14f4646Smrg "$@" 1165dfecf96Smrg stat=$? 1175dfecf96Smrg if test $stat -eq 0; then : 1185dfecf96Smrg else 1195dfecf96Smrg rm -f "$tmpdepfile" 1205dfecf96Smrg exit $stat 1215dfecf96Smrg fi 1225dfecf96Smrg mv "$tmpdepfile" "$depfile" 1235dfecf96Smrg ;; 1245dfecf96Smrg 1255dfecf96Smrggcc) 1265dfecf96Smrg## There are various ways to get dependency output from gcc. Here's 1275dfecf96Smrg## why we pick this rather obscure method: 1285dfecf96Smrg## - Don't want to use -MD because we'd like the dependencies to end 1295dfecf96Smrg## up in a subdir. Having to rename by hand is ugly. 1305dfecf96Smrg## (We might end up doing this anyway to support other compilers.) 1315dfecf96Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1325dfecf96Smrg## -MM, not -M (despite what the docs say). 1335dfecf96Smrg## - Using -M directly means running the compiler twice (even worse 1345dfecf96Smrg## than renaming). 1355dfecf96Smrg if test -z "$gccflag"; then 1365dfecf96Smrg gccflag=-MD, 1375dfecf96Smrg fi 1385dfecf96Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1395dfecf96Smrg stat=$? 1405dfecf96Smrg if test $stat -eq 0; then : 1415dfecf96Smrg else 1425dfecf96Smrg rm -f "$tmpdepfile" 1435dfecf96Smrg exit $stat 1445dfecf96Smrg fi 1455dfecf96Smrg rm -f "$depfile" 1465dfecf96Smrg echo "$object : \\" > "$depfile" 1475dfecf96Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1485dfecf96Smrg## The second -e expression handles DOS-style file names with drive letters. 1495dfecf96Smrg sed -e 's/^[^:]*: / /' \ 1505dfecf96Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1515dfecf96Smrg## This next piece of magic avoids the `deleted header file' problem. 1525dfecf96Smrg## The problem is that when a header file which appears in a .P file 1535dfecf96Smrg## is deleted, the dependency causes make to die (because there is 1545dfecf96Smrg## typically no way to rebuild the header). We avoid this by adding 1555dfecf96Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1565dfecf96Smrg## this for us directly. 1575dfecf96Smrg tr ' ' ' 1585dfecf96Smrg' < "$tmpdepfile" | 1595dfecf96Smrg## Some versions of gcc put a space before the `:'. On the theory 1605dfecf96Smrg## that the space means something, we add a space to the output as 1615dfecf96Smrg## well. 1625dfecf96Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1635dfecf96Smrg## correctly. Breaking it into two sed invocations is a workaround. 1645dfecf96Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1655dfecf96Smrg rm -f "$tmpdepfile" 1665dfecf96Smrg ;; 1675dfecf96Smrg 1685dfecf96Smrghp) 1695dfecf96Smrg # This case exists only to let depend.m4 do its work. It works by 1705dfecf96Smrg # looking at the text of this script. This case will never be run, 1715dfecf96Smrg # since it is checked for above. 1725dfecf96Smrg exit 1 1735dfecf96Smrg ;; 1745dfecf96Smrg 1755dfecf96Smrgsgi) 1765dfecf96Smrg if test "$libtool" = yes; then 1775dfecf96Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1785dfecf96Smrg else 1795dfecf96Smrg "$@" -MDupdate "$tmpdepfile" 1805dfecf96Smrg fi 1815dfecf96Smrg stat=$? 1825dfecf96Smrg if test $stat -eq 0; then : 1835dfecf96Smrg else 1845dfecf96Smrg rm -f "$tmpdepfile" 1855dfecf96Smrg exit $stat 1865dfecf96Smrg fi 1875dfecf96Smrg rm -f "$depfile" 1885dfecf96Smrg 1895dfecf96Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1905dfecf96Smrg echo "$object : \\" > "$depfile" 1915dfecf96Smrg 1925dfecf96Smrg # Clip off the initial element (the dependent). Don't try to be 1935dfecf96Smrg # clever and replace this with sed code, as IRIX sed won't handle 1945dfecf96Smrg # lines with more than a fixed number of characters (4096 in 1955dfecf96Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1965dfecf96Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1975dfecf96Smrg # dependency line. 1985dfecf96Smrg tr ' ' ' 1995dfecf96Smrg' < "$tmpdepfile" \ 2005dfecf96Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2015dfecf96Smrg tr ' 202c05e22d7Smrg' ' ' >> "$depfile" 203c05e22d7Smrg echo >> "$depfile" 2045dfecf96Smrg 2055dfecf96Smrg # The second pass generates a dummy entry for each header file. 2065dfecf96Smrg tr ' ' ' 2075dfecf96Smrg' < "$tmpdepfile" \ 2085dfecf96Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209c05e22d7Smrg >> "$depfile" 2105dfecf96Smrg else 2115dfecf96Smrg # The sourcefile does not contain any dependencies, so just 2125dfecf96Smrg # store a dummy comment line, to avoid errors with the Makefile 2135dfecf96Smrg # "include basename.Plo" scheme. 2145dfecf96Smrg echo "#dummy" > "$depfile" 2155dfecf96Smrg fi 2165dfecf96Smrg rm -f "$tmpdepfile" 2175dfecf96Smrg ;; 2185dfecf96Smrg 2195dfecf96Smrgaix) 2205dfecf96Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2215dfecf96Smrg # in a .u file. In older versions, this file always lives in the 2225dfecf96Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2235dfecf96Smrg # start of each line; $object doesn't have directory information. 2245dfecf96Smrg # Version 6 uses the directory in both cases. 225f14f4646Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226f14f4646Smrg test "x$dir" = "x$object" && dir= 227f14f4646Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2285dfecf96Smrg if test "$libtool" = yes; then 229f14f4646Smrg tmpdepfile1=$dir$base.u 230f14f4646Smrg tmpdepfile2=$base.u 231f14f4646Smrg tmpdepfile3=$dir.libs/$base.u 2325dfecf96Smrg "$@" -Wc,-M 2335dfecf96Smrg else 234f14f4646Smrg tmpdepfile1=$dir$base.u 235f14f4646Smrg tmpdepfile2=$dir$base.u 236f14f4646Smrg tmpdepfile3=$dir$base.u 2375dfecf96Smrg "$@" -M 2385dfecf96Smrg fi 2395dfecf96Smrg stat=$? 2405dfecf96Smrg 2415dfecf96Smrg if test $stat -eq 0; then : 2425dfecf96Smrg else 243f14f4646Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2445dfecf96Smrg exit $stat 2455dfecf96Smrg fi 2465dfecf96Smrg 247f14f4646Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248f14f4646Smrg do 249f14f4646Smrg test -f "$tmpdepfile" && break 250f14f4646Smrg done 2515dfecf96Smrg if test -f "$tmpdepfile"; then 2525dfecf96Smrg # Each line is of the form `foo.o: dependent.h'. 2535dfecf96Smrg # Do two passes, one to just change these to 2545dfecf96Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 255f14f4646Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256f14f4646Smrg # That's a tab and a space in the []. 257f14f4646Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2585dfecf96Smrg else 2595dfecf96Smrg # The sourcefile does not contain any dependencies, so just 2605dfecf96Smrg # store a dummy comment line, to avoid errors with the Makefile 2615dfecf96Smrg # "include basename.Plo" scheme. 2625dfecf96Smrg echo "#dummy" > "$depfile" 2635dfecf96Smrg fi 2645dfecf96Smrg rm -f "$tmpdepfile" 2655dfecf96Smrg ;; 2665dfecf96Smrg 2675dfecf96Smrgicc) 2685dfecf96Smrg # Intel's C compiler understands `-MD -MF file'. However on 2695dfecf96Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2705dfecf96Smrg # ICC 7.0 will fill foo.d with something like 2715dfecf96Smrg # foo.o: sub/foo.c 2725dfecf96Smrg # foo.o: sub/foo.h 2735dfecf96Smrg # which is wrong. We want: 2745dfecf96Smrg # sub/foo.o: sub/foo.c 2755dfecf96Smrg # sub/foo.o: sub/foo.h 2765dfecf96Smrg # sub/foo.c: 2775dfecf96Smrg # sub/foo.h: 2785dfecf96Smrg # ICC 7.1 will output 2795dfecf96Smrg # foo.o: sub/foo.c sub/foo.h 2805dfecf96Smrg # and will wrap long lines using \ : 2815dfecf96Smrg # foo.o: sub/foo.c ... \ 2825dfecf96Smrg # sub/foo.h ... \ 2835dfecf96Smrg # ... 2845dfecf96Smrg 2855dfecf96Smrg "$@" -MD -MF "$tmpdepfile" 2865dfecf96Smrg stat=$? 2875dfecf96Smrg if test $stat -eq 0; then : 2885dfecf96Smrg else 2895dfecf96Smrg rm -f "$tmpdepfile" 2905dfecf96Smrg exit $stat 2915dfecf96Smrg fi 2925dfecf96Smrg rm -f "$depfile" 2935dfecf96Smrg # Each line is of the form `foo.o: dependent.h', 2945dfecf96Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2955dfecf96Smrg # Do two passes, one to just change these to 2965dfecf96Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2975dfecf96Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2985dfecf96Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2995dfecf96Smrg # correctly. Breaking it into two sed invocations is a workaround. 3005dfecf96Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3015dfecf96Smrg sed -e 's/$/ :/' >> "$depfile" 3025dfecf96Smrg rm -f "$tmpdepfile" 3035dfecf96Smrg ;; 3045dfecf96Smrg 305f14f4646Smrghp2) 306f14f4646Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 307f14f4646Smrg # compilers, which have integrated preprocessors. The correct option 308f14f4646Smrg # to use with these is +Maked; it writes dependencies to a file named 309f14f4646Smrg # 'foo.d', which lands next to the object file, wherever that 310f14f4646Smrg # happens to be. 311f14f4646Smrg # Much of this is similar to the tru64 case; see comments there. 312f14f4646Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 313f14f4646Smrg test "x$dir" = "x$object" && dir= 314f14f4646Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 315f14f4646Smrg if test "$libtool" = yes; then 316f14f4646Smrg tmpdepfile1=$dir$base.d 317f14f4646Smrg tmpdepfile2=$dir.libs/$base.d 318f14f4646Smrg "$@" -Wc,+Maked 319f14f4646Smrg else 320f14f4646Smrg tmpdepfile1=$dir$base.d 321f14f4646Smrg tmpdepfile2=$dir$base.d 322f14f4646Smrg "$@" +Maked 323f14f4646Smrg fi 324f14f4646Smrg stat=$? 325f14f4646Smrg if test $stat -eq 0; then : 326f14f4646Smrg else 327f14f4646Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 328f14f4646Smrg exit $stat 329f14f4646Smrg fi 330f14f4646Smrg 331f14f4646Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 332f14f4646Smrg do 333f14f4646Smrg test -f "$tmpdepfile" && break 334f14f4646Smrg done 335f14f4646Smrg if test -f "$tmpdepfile"; then 336f14f4646Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 337f14f4646Smrg # Add `dependent.h:' lines. 338c05e22d7Smrg sed -ne '2,${ 339c05e22d7Smrg s/^ *// 340c05e22d7Smrg s/ \\*$// 341c05e22d7Smrg s/$/:/ 342c05e22d7Smrg p 343c05e22d7Smrg }' "$tmpdepfile" >> "$depfile" 344f14f4646Smrg else 345f14f4646Smrg echo "#dummy" > "$depfile" 346f14f4646Smrg fi 347f14f4646Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 348f14f4646Smrg ;; 349f14f4646Smrg 3505dfecf96Smrgtru64) 3515dfecf96Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 3525dfecf96Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3535dfecf96Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3545dfecf96Smrg # dependencies in `foo.d' instead, so we check for that too. 3555dfecf96Smrg # Subdirectories are respected. 3565dfecf96Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3575dfecf96Smrg test "x$dir" = "x$object" && dir= 3585dfecf96Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3595dfecf96Smrg 3605dfecf96Smrg if test "$libtool" = yes; then 3615dfecf96Smrg # With Tru64 cc, shared objects can also be used to make a 362f14f4646Smrg # static library. This mechanism is used in libtool 1.4 series to 3635dfecf96Smrg # handle both shared and static libraries in a single compilation. 3645dfecf96Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3655dfecf96Smrg # 3665dfecf96Smrg # With libtool 1.5 this exception was removed, and libtool now 3675dfecf96Smrg # generates 2 separate objects for the 2 libraries. These two 368f14f4646Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3695dfecf96Smrg # in $dir$base.o.d. We have to check for both files, because 3705dfecf96Smrg # one of the two compilations can be disabled. We should prefer 3715dfecf96Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3725dfecf96Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3735dfecf96Smrg # the former would cause a distcleancheck panic. 3745dfecf96Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3755dfecf96Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3765dfecf96Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3775dfecf96Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3785dfecf96Smrg "$@" -Wc,-MD 3795dfecf96Smrg else 3805dfecf96Smrg tmpdepfile1=$dir$base.o.d 3815dfecf96Smrg tmpdepfile2=$dir$base.d 3825dfecf96Smrg tmpdepfile3=$dir$base.d 3835dfecf96Smrg tmpdepfile4=$dir$base.d 3845dfecf96Smrg "$@" -MD 3855dfecf96Smrg fi 3865dfecf96Smrg 3875dfecf96Smrg stat=$? 3885dfecf96Smrg if test $stat -eq 0; then : 3895dfecf96Smrg else 3905dfecf96Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3915dfecf96Smrg exit $stat 3925dfecf96Smrg fi 3935dfecf96Smrg 3945dfecf96Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3955dfecf96Smrg do 3965dfecf96Smrg test -f "$tmpdepfile" && break 3975dfecf96Smrg done 3985dfecf96Smrg if test -f "$tmpdepfile"; then 3995dfecf96Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4005dfecf96Smrg # That's a tab and a space in the []. 4015dfecf96Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4025dfecf96Smrg else 4035dfecf96Smrg echo "#dummy" > "$depfile" 4045dfecf96Smrg fi 4055dfecf96Smrg rm -f "$tmpdepfile" 4065dfecf96Smrg ;; 4075dfecf96Smrg 4085dfecf96Smrg#nosideeffect) 4095dfecf96Smrg # This comment above is used by automake to tell side-effect 4105dfecf96Smrg # dependency tracking mechanisms from slower ones. 4115dfecf96Smrg 4125dfecf96Smrgdashmstdout) 4135dfecf96Smrg # Important note: in order to support this mode, a compiler *must* 4145dfecf96Smrg # always write the preprocessed file to stdout, regardless of -o. 4155dfecf96Smrg "$@" || exit $? 4165dfecf96Smrg 4175dfecf96Smrg # Remove the call to Libtool. 4185dfecf96Smrg if test "$libtool" = yes; then 419c05e22d7Smrg while test "X$1" != 'X--mode=compile'; do 4205dfecf96Smrg shift 4215dfecf96Smrg done 4225dfecf96Smrg shift 4235dfecf96Smrg fi 4245dfecf96Smrg 4255dfecf96Smrg # Remove `-o $object'. 4265dfecf96Smrg IFS=" " 4275dfecf96Smrg for arg 4285dfecf96Smrg do 4295dfecf96Smrg case $arg in 4305dfecf96Smrg -o) 4315dfecf96Smrg shift 4325dfecf96Smrg ;; 4335dfecf96Smrg $object) 4345dfecf96Smrg shift 4355dfecf96Smrg ;; 4365dfecf96Smrg *) 4375dfecf96Smrg set fnord "$@" "$arg" 4385dfecf96Smrg shift # fnord 4395dfecf96Smrg shift # $arg 4405dfecf96Smrg ;; 4415dfecf96Smrg esac 4425dfecf96Smrg done 4435dfecf96Smrg 4445dfecf96Smrg test -z "$dashmflag" && dashmflag=-M 4455dfecf96Smrg # Require at least two characters before searching for `:' 4465dfecf96Smrg # in the target name. This is to cope with DOS-style filenames: 4475dfecf96Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4485dfecf96Smrg "$@" $dashmflag | 4495dfecf96Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4505dfecf96Smrg rm -f "$depfile" 4515dfecf96Smrg cat < "$tmpdepfile" > "$depfile" 4525dfecf96Smrg tr ' ' ' 4535dfecf96Smrg' < "$tmpdepfile" | \ 4545dfecf96Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4555dfecf96Smrg## correctly. Breaking it into two sed invocations is a workaround. 4565dfecf96Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4575dfecf96Smrg rm -f "$tmpdepfile" 4585dfecf96Smrg ;; 4595dfecf96Smrg 4605dfecf96SmrgdashXmstdout) 4615dfecf96Smrg # This case only exists to satisfy depend.m4. It is never actually 4625dfecf96Smrg # run, as this mode is specially recognized in the preamble. 4635dfecf96Smrg exit 1 4645dfecf96Smrg ;; 4655dfecf96Smrg 4665dfecf96Smrgmakedepend) 4675dfecf96Smrg "$@" || exit $? 4685dfecf96Smrg # Remove any Libtool call 4695dfecf96Smrg if test "$libtool" = yes; then 470c05e22d7Smrg while test "X$1" != 'X--mode=compile'; do 4715dfecf96Smrg shift 4725dfecf96Smrg done 4735dfecf96Smrg shift 4745dfecf96Smrg fi 4755dfecf96Smrg # X makedepend 4765dfecf96Smrg shift 477c05e22d7Smrg cleared=no eat=no 478c05e22d7Smrg for arg 479c05e22d7Smrg do 4805dfecf96Smrg case $cleared in 4815dfecf96Smrg no) 4825dfecf96Smrg set ""; shift 4835dfecf96Smrg cleared=yes ;; 4845dfecf96Smrg esac 485c05e22d7Smrg if test $eat = yes; then 486c05e22d7Smrg eat=no 487c05e22d7Smrg continue 488c05e22d7Smrg fi 4895dfecf96Smrg case "$arg" in 4905dfecf96Smrg -D*|-I*) 4915dfecf96Smrg set fnord "$@" "$arg"; shift ;; 4925dfecf96Smrg # Strip any option that makedepend may not understand. Remove 4935dfecf96Smrg # the object too, otherwise makedepend will parse it as a source file. 494c05e22d7Smrg -arch) 495c05e22d7Smrg eat=yes ;; 4965dfecf96Smrg -*|$object) 4975dfecf96Smrg ;; 4985dfecf96Smrg *) 4995dfecf96Smrg set fnord "$@" "$arg"; shift ;; 5005dfecf96Smrg esac 5015dfecf96Smrg done 502c05e22d7Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5035dfecf96Smrg touch "$tmpdepfile" 5045dfecf96Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5055dfecf96Smrg rm -f "$depfile" 5065dfecf96Smrg cat < "$tmpdepfile" > "$depfile" 5075dfecf96Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5085dfecf96Smrg' | \ 5095dfecf96Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 5105dfecf96Smrg## correctly. Breaking it into two sed invocations is a workaround. 5115dfecf96Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5125dfecf96Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5135dfecf96Smrg ;; 5145dfecf96Smrg 5155dfecf96Smrgcpp) 5165dfecf96Smrg # Important note: in order to support this mode, a compiler *must* 5175dfecf96Smrg # always write the preprocessed file to stdout. 5185dfecf96Smrg "$@" || exit $? 5195dfecf96Smrg 5205dfecf96Smrg # Remove the call to Libtool. 5215dfecf96Smrg if test "$libtool" = yes; then 522c05e22d7Smrg while test "X$1" != 'X--mode=compile'; do 5235dfecf96Smrg shift 5245dfecf96Smrg done 5255dfecf96Smrg shift 5265dfecf96Smrg fi 5275dfecf96Smrg 5285dfecf96Smrg # Remove `-o $object'. 5295dfecf96Smrg IFS=" " 5305dfecf96Smrg for arg 5315dfecf96Smrg do 5325dfecf96Smrg case $arg in 5335dfecf96Smrg -o) 5345dfecf96Smrg shift 5355dfecf96Smrg ;; 5365dfecf96Smrg $object) 5375dfecf96Smrg shift 5385dfecf96Smrg ;; 5395dfecf96Smrg *) 5405dfecf96Smrg set fnord "$@" "$arg" 5415dfecf96Smrg shift # fnord 5425dfecf96Smrg shift # $arg 5435dfecf96Smrg ;; 5445dfecf96Smrg esac 5455dfecf96Smrg done 5465dfecf96Smrg 5475dfecf96Smrg "$@" -E | 5485dfecf96Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5495dfecf96Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5505dfecf96Smrg sed '$ s: \\$::' > "$tmpdepfile" 5515dfecf96Smrg rm -f "$depfile" 5525dfecf96Smrg echo "$object : \\" > "$depfile" 5535dfecf96Smrg cat < "$tmpdepfile" >> "$depfile" 5545dfecf96Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5555dfecf96Smrg rm -f "$tmpdepfile" 5565dfecf96Smrg ;; 5575dfecf96Smrg 5585dfecf96Smrgmsvisualcpp) 5595dfecf96Smrg # Important note: in order to support this mode, a compiler *must* 560c05e22d7Smrg # always write the preprocessed file to stdout. 5615dfecf96Smrg "$@" || exit $? 562c05e22d7Smrg 563c05e22d7Smrg # Remove the call to Libtool. 564c05e22d7Smrg if test "$libtool" = yes; then 565c05e22d7Smrg while test "X$1" != 'X--mode=compile'; do 566c05e22d7Smrg shift 567c05e22d7Smrg done 568c05e22d7Smrg shift 569c05e22d7Smrg fi 570c05e22d7Smrg 5715dfecf96Smrg IFS=" " 5725dfecf96Smrg for arg 5735dfecf96Smrg do 5745dfecf96Smrg case "$arg" in 575c05e22d7Smrg -o) 576c05e22d7Smrg shift 577c05e22d7Smrg ;; 578c05e22d7Smrg $object) 579c05e22d7Smrg shift 580c05e22d7Smrg ;; 5815dfecf96Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5825dfecf96Smrg set fnord "$@" 5835dfecf96Smrg shift 5845dfecf96Smrg shift 5855dfecf96Smrg ;; 5865dfecf96Smrg *) 5875dfecf96Smrg set fnord "$@" "$arg" 5885dfecf96Smrg shift 5895dfecf96Smrg shift 5905dfecf96Smrg ;; 5915dfecf96Smrg esac 5925dfecf96Smrg done 593c05e22d7Smrg "$@" -E 2>/dev/null | 594c05e22d7Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5955dfecf96Smrg rm -f "$depfile" 5965dfecf96Smrg echo "$object : \\" > "$depfile" 597c05e22d7Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5985dfecf96Smrg echo " " >> "$depfile" 599c05e22d7Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6005dfecf96Smrg rm -f "$tmpdepfile" 6015dfecf96Smrg ;; 6025dfecf96Smrg 603c05e22d7Smrgmsvcmsys) 604c05e22d7Smrg # This case exists only to let depend.m4 do its work. It works by 605c05e22d7Smrg # looking at the text of this script. This case will never be run, 606c05e22d7Smrg # since it is checked for above. 607c05e22d7Smrg exit 1 608c05e22d7Smrg ;; 609c05e22d7Smrg 6105dfecf96Smrgnone) 6115dfecf96Smrg exec "$@" 6125dfecf96Smrg ;; 6135dfecf96Smrg 6145dfecf96Smrg*) 6155dfecf96Smrg echo "Unknown depmode $depmode" 1>&2 6165dfecf96Smrg exit 1 6175dfecf96Smrg ;; 6185dfecf96Smrgesac 6195dfecf96Smrg 6205dfecf96Smrgexit 0 6215dfecf96Smrg 6225dfecf96Smrg# Local Variables: 6235dfecf96Smrg# mode: shell-script 6245dfecf96Smrg# sh-indentation: 2 6255dfecf96Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6265dfecf96Smrg# time-stamp-start: "scriptversion=" 6275dfecf96Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628c05e22d7Smrg# time-stamp-time-zone: "UTC" 629c05e22d7Smrg# time-stamp-end: "; # UTC" 6305dfecf96Smrg# End: 631