depcomp revision 786a6f21
11d54945dSmrg#! /bin/sh 21d54945dSmrg# depcomp - compile a program generating dependencies as side-effects 31d54945dSmrg 4786a6f21Smrgscriptversion=2007-03-29.01 51d54945dSmrg 6786a6f21Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software 7ba85709eSmrg# Foundation, Inc. 81d54945dSmrg 91d54945dSmrg# This program is free software; you can redistribute it and/or modify 101d54945dSmrg# it under the terms of the GNU General Public License as published by 111d54945dSmrg# the Free Software Foundation; either version 2, or (at your option) 121d54945dSmrg# any later version. 131d54945dSmrg 141d54945dSmrg# This program is distributed in the hope that it will be useful, 151d54945dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 161d54945dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 171d54945dSmrg# GNU General Public License for more details. 181d54945dSmrg 191d54945dSmrg# You should have received a copy of the GNU General Public License 201d54945dSmrg# along with this program; if not, write to the Free Software 211d54945dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 221d54945dSmrg# 02110-1301, USA. 231d54945dSmrg 241d54945dSmrg# As a special exception to the GNU General Public License, if you 251d54945dSmrg# distribute this file as part of a program that contains a 261d54945dSmrg# configuration script generated by Autoconf, you may include it under 271d54945dSmrg# the same distribution terms that you use for the rest of that program. 281d54945dSmrg 291d54945dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 301d54945dSmrg 311d54945dSmrgcase $1 in 321d54945dSmrg '') 331d54945dSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 341d54945dSmrg exit 1; 351d54945dSmrg ;; 361d54945dSmrg -h | --h*) 371d54945dSmrg cat <<\EOF 381d54945dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 391d54945dSmrg 401d54945dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 411d54945dSmrgas side-effects. 421d54945dSmrg 431d54945dSmrgEnvironment variables: 441d54945dSmrg depmode Dependency tracking mode. 451d54945dSmrg source Source file read by `PROGRAMS ARGS'. 461d54945dSmrg object Object file output by `PROGRAMS ARGS'. 471d54945dSmrg DEPDIR directory where to store dependencies. 481d54945dSmrg depfile Dependency file to output. 491d54945dSmrg tmpdepfile Temporary file to use when outputing dependencies. 501d54945dSmrg libtool Whether libtool is used (yes/no). 511d54945dSmrg 521d54945dSmrgReport bugs to <bug-automake@gnu.org>. 531d54945dSmrgEOF 541d54945dSmrg exit $? 551d54945dSmrg ;; 561d54945dSmrg -v | --v*) 571d54945dSmrg echo "depcomp $scriptversion" 581d54945dSmrg exit $? 591d54945dSmrg ;; 601d54945dSmrgesac 611d54945dSmrg 621d54945dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 631d54945dSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 641d54945dSmrg exit 1 651d54945dSmrgfi 661d54945dSmrg 671d54945dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 681d54945dSmrgdepfile=${depfile-`echo "$object" | 691d54945dSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 701d54945dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 711d54945dSmrg 721d54945dSmrgrm -f "$tmpdepfile" 731d54945dSmrg 741d54945dSmrg# Some modes work just like other modes, but use different flags. We 751d54945dSmrg# parameterize here, but still list the modes in the big case below, 761d54945dSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 771d54945dSmrg# here, because this file can only contain one case statement. 781d54945dSmrgif test "$depmode" = hp; then 791d54945dSmrg # HP compiler uses -M and no extra arg. 801d54945dSmrg gccflag=-M 811d54945dSmrg depmode=gcc 821d54945dSmrgfi 831d54945dSmrg 841d54945dSmrgif test "$depmode" = dashXmstdout; then 851d54945dSmrg # This is just like dashmstdout with a different argument. 861d54945dSmrg dashmflag=-xM 871d54945dSmrg depmode=dashmstdout 881d54945dSmrgfi 891d54945dSmrg 901d54945dSmrgcase "$depmode" in 911d54945dSmrggcc3) 921d54945dSmrg## gcc 3 implements dependency tracking that does exactly what 931d54945dSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 941d54945dSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 95ba85709eSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 96ba85709eSmrg## the command line argument order; so add the flags where they 97ba85709eSmrg## appear in depend2.am. Note that the slowdown incurred here 98ba85709eSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 99ba85709eSmrg for arg 100ba85709eSmrg do 101ba85709eSmrg case $arg in 102ba85709eSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 103ba85709eSmrg *) set fnord "$@" "$arg" ;; 104ba85709eSmrg esac 105ba85709eSmrg shift # fnord 106ba85709eSmrg shift # $arg 107ba85709eSmrg done 108ba85709eSmrg "$@" 1091d54945dSmrg stat=$? 1101d54945dSmrg if test $stat -eq 0; then : 1111d54945dSmrg else 1121d54945dSmrg rm -f "$tmpdepfile" 1131d54945dSmrg exit $stat 1141d54945dSmrg fi 1151d54945dSmrg mv "$tmpdepfile" "$depfile" 1161d54945dSmrg ;; 1171d54945dSmrg 1181d54945dSmrggcc) 1191d54945dSmrg## There are various ways to get dependency output from gcc. Here's 1201d54945dSmrg## why we pick this rather obscure method: 1211d54945dSmrg## - Don't want to use -MD because we'd like the dependencies to end 1221d54945dSmrg## up in a subdir. Having to rename by hand is ugly. 1231d54945dSmrg## (We might end up doing this anyway to support other compilers.) 1241d54945dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1251d54945dSmrg## -MM, not -M (despite what the docs say). 1261d54945dSmrg## - Using -M directly means running the compiler twice (even worse 1271d54945dSmrg## than renaming). 1281d54945dSmrg if test -z "$gccflag"; then 1291d54945dSmrg gccflag=-MD, 1301d54945dSmrg fi 1311d54945dSmrg "$@" -Wp,"$gccflag$tmpdepfile" 1321d54945dSmrg stat=$? 1331d54945dSmrg if test $stat -eq 0; then : 1341d54945dSmrg else 1351d54945dSmrg rm -f "$tmpdepfile" 1361d54945dSmrg exit $stat 1371d54945dSmrg fi 1381d54945dSmrg rm -f "$depfile" 1391d54945dSmrg echo "$object : \\" > "$depfile" 1401d54945dSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1411d54945dSmrg## The second -e expression handles DOS-style file names with drive letters. 1421d54945dSmrg sed -e 's/^[^:]*: / /' \ 1431d54945dSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1441d54945dSmrg## This next piece of magic avoids the `deleted header file' problem. 1451d54945dSmrg## The problem is that when a header file which appears in a .P file 1461d54945dSmrg## is deleted, the dependency causes make to die (because there is 1471d54945dSmrg## typically no way to rebuild the header). We avoid this by adding 1481d54945dSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 1491d54945dSmrg## this for us directly. 1501d54945dSmrg tr ' ' ' 1511d54945dSmrg' < "$tmpdepfile" | 1521d54945dSmrg## Some versions of gcc put a space before the `:'. On the theory 1531d54945dSmrg## that the space means something, we add a space to the output as 1541d54945dSmrg## well. 1551d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 1561d54945dSmrg## correctly. Breaking it into two sed invocations is a workaround. 1571d54945dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1581d54945dSmrg rm -f "$tmpdepfile" 1591d54945dSmrg ;; 1601d54945dSmrg 1611d54945dSmrghp) 1621d54945dSmrg # This case exists only to let depend.m4 do its work. It works by 1631d54945dSmrg # looking at the text of this script. This case will never be run, 1641d54945dSmrg # since it is checked for above. 1651d54945dSmrg exit 1 1661d54945dSmrg ;; 1671d54945dSmrg 1681d54945dSmrgsgi) 1691d54945dSmrg if test "$libtool" = yes; then 1701d54945dSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1711d54945dSmrg else 1721d54945dSmrg "$@" -MDupdate "$tmpdepfile" 1731d54945dSmrg fi 1741d54945dSmrg stat=$? 1751d54945dSmrg if test $stat -eq 0; then : 1761d54945dSmrg else 1771d54945dSmrg rm -f "$tmpdepfile" 1781d54945dSmrg exit $stat 1791d54945dSmrg fi 1801d54945dSmrg rm -f "$depfile" 1811d54945dSmrg 1821d54945dSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1831d54945dSmrg echo "$object : \\" > "$depfile" 1841d54945dSmrg 1851d54945dSmrg # Clip off the initial element (the dependent). Don't try to be 1861d54945dSmrg # clever and replace this with sed code, as IRIX sed won't handle 1871d54945dSmrg # lines with more than a fixed number of characters (4096 in 1881d54945dSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1891d54945dSmrg # the IRIX cc adds comments like `#:fec' to the end of the 1901d54945dSmrg # dependency line. 1911d54945dSmrg tr ' ' ' 1921d54945dSmrg' < "$tmpdepfile" \ 1931d54945dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1941d54945dSmrg tr ' 1951d54945dSmrg' ' ' >> $depfile 1961d54945dSmrg echo >> $depfile 1971d54945dSmrg 1981d54945dSmrg # The second pass generates a dummy entry for each header file. 1991d54945dSmrg tr ' ' ' 2001d54945dSmrg' < "$tmpdepfile" \ 2011d54945dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2021d54945dSmrg >> $depfile 2031d54945dSmrg else 2041d54945dSmrg # The sourcefile does not contain any dependencies, so just 2051d54945dSmrg # store a dummy comment line, to avoid errors with the Makefile 2061d54945dSmrg # "include basename.Plo" scheme. 2071d54945dSmrg echo "#dummy" > "$depfile" 2081d54945dSmrg fi 2091d54945dSmrg rm -f "$tmpdepfile" 2101d54945dSmrg ;; 2111d54945dSmrg 2121d54945dSmrgaix) 2131d54945dSmrg # The C for AIX Compiler uses -M and outputs the dependencies 2141d54945dSmrg # in a .u file. In older versions, this file always lives in the 2151d54945dSmrg # current directory. Also, the AIX compiler puts `$object:' at the 2161d54945dSmrg # start of each line; $object doesn't have directory information. 2171d54945dSmrg # Version 6 uses the directory in both cases. 218786a6f21Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 219786a6f21Smrg test "x$dir" = "x$object" && dir= 220786a6f21Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2211d54945dSmrg if test "$libtool" = yes; then 222786a6f21Smrg tmpdepfile1=$dir$base.u 223786a6f21Smrg tmpdepfile2=$base.u 224786a6f21Smrg tmpdepfile3=$dir.libs/$base.u 2251d54945dSmrg "$@" -Wc,-M 2261d54945dSmrg else 227786a6f21Smrg tmpdepfile1=$dir$base.u 228786a6f21Smrg tmpdepfile2=$dir$base.u 229786a6f21Smrg tmpdepfile3=$dir$base.u 2301d54945dSmrg "$@" -M 2311d54945dSmrg fi 2321d54945dSmrg stat=$? 2331d54945dSmrg 2341d54945dSmrg if test $stat -eq 0; then : 2351d54945dSmrg else 236786a6f21Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2371d54945dSmrg exit $stat 2381d54945dSmrg fi 2391d54945dSmrg 240786a6f21Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 241786a6f21Smrg do 242786a6f21Smrg test -f "$tmpdepfile" && break 243786a6f21Smrg done 2441d54945dSmrg if test -f "$tmpdepfile"; then 2451d54945dSmrg # Each line is of the form `foo.o: dependent.h'. 2461d54945dSmrg # Do two passes, one to just change these to 2471d54945dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 248786a6f21Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 249786a6f21Smrg # That's a tab and a space in the []. 250786a6f21Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2511d54945dSmrg else 2521d54945dSmrg # The sourcefile does not contain any dependencies, so just 2531d54945dSmrg # store a dummy comment line, to avoid errors with the Makefile 2541d54945dSmrg # "include basename.Plo" scheme. 2551d54945dSmrg echo "#dummy" > "$depfile" 2561d54945dSmrg fi 2571d54945dSmrg rm -f "$tmpdepfile" 2581d54945dSmrg ;; 2591d54945dSmrg 2601d54945dSmrgicc) 2611d54945dSmrg # Intel's C compiler understands `-MD -MF file'. However on 2621d54945dSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2631d54945dSmrg # ICC 7.0 will fill foo.d with something like 2641d54945dSmrg # foo.o: sub/foo.c 2651d54945dSmrg # foo.o: sub/foo.h 2661d54945dSmrg # which is wrong. We want: 2671d54945dSmrg # sub/foo.o: sub/foo.c 2681d54945dSmrg # sub/foo.o: sub/foo.h 2691d54945dSmrg # sub/foo.c: 2701d54945dSmrg # sub/foo.h: 2711d54945dSmrg # ICC 7.1 will output 2721d54945dSmrg # foo.o: sub/foo.c sub/foo.h 2731d54945dSmrg # and will wrap long lines using \ : 2741d54945dSmrg # foo.o: sub/foo.c ... \ 2751d54945dSmrg # sub/foo.h ... \ 2761d54945dSmrg # ... 2771d54945dSmrg 2781d54945dSmrg "$@" -MD -MF "$tmpdepfile" 2791d54945dSmrg stat=$? 2801d54945dSmrg if test $stat -eq 0; then : 2811d54945dSmrg else 2821d54945dSmrg rm -f "$tmpdepfile" 2831d54945dSmrg exit $stat 2841d54945dSmrg fi 2851d54945dSmrg rm -f "$depfile" 2861d54945dSmrg # Each line is of the form `foo.o: dependent.h', 2871d54945dSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2881d54945dSmrg # Do two passes, one to just change these to 2891d54945dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2901d54945dSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2911d54945dSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 2921d54945dSmrg # correctly. Breaking it into two sed invocations is a workaround. 2931d54945dSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2941d54945dSmrg sed -e 's/$/ :/' >> "$depfile" 2951d54945dSmrg rm -f "$tmpdepfile" 2961d54945dSmrg ;; 2971d54945dSmrg 298ba85709eSmrghp2) 299ba85709eSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 300ba85709eSmrg # compilers, which have integrated preprocessors. The correct option 301ba85709eSmrg # to use with these is +Maked; it writes dependencies to a file named 302ba85709eSmrg # 'foo.d', which lands next to the object file, wherever that 303ba85709eSmrg # happens to be. 304ba85709eSmrg # Much of this is similar to the tru64 case; see comments there. 305ba85709eSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 306ba85709eSmrg test "x$dir" = "x$object" && dir= 307ba85709eSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 308ba85709eSmrg if test "$libtool" = yes; then 309ba85709eSmrg tmpdepfile1=$dir$base.d 310ba85709eSmrg tmpdepfile2=$dir.libs/$base.d 311ba85709eSmrg "$@" -Wc,+Maked 312ba85709eSmrg else 313ba85709eSmrg tmpdepfile1=$dir$base.d 314ba85709eSmrg tmpdepfile2=$dir$base.d 315ba85709eSmrg "$@" +Maked 316ba85709eSmrg fi 317ba85709eSmrg stat=$? 318ba85709eSmrg if test $stat -eq 0; then : 319ba85709eSmrg else 320ba85709eSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 321ba85709eSmrg exit $stat 322ba85709eSmrg fi 323ba85709eSmrg 324ba85709eSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 325ba85709eSmrg do 326ba85709eSmrg test -f "$tmpdepfile" && break 327ba85709eSmrg done 328ba85709eSmrg if test -f "$tmpdepfile"; then 329ba85709eSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 330ba85709eSmrg # Add `dependent.h:' lines. 331ba85709eSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 332ba85709eSmrg else 333ba85709eSmrg echo "#dummy" > "$depfile" 334ba85709eSmrg fi 335ba85709eSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 336ba85709eSmrg ;; 337ba85709eSmrg 3381d54945dSmrgtru64) 3391d54945dSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 3401d54945dSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3411d54945dSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3421d54945dSmrg # dependencies in `foo.d' instead, so we check for that too. 3431d54945dSmrg # Subdirectories are respected. 3441d54945dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3451d54945dSmrg test "x$dir" = "x$object" && dir= 3461d54945dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3471d54945dSmrg 3481d54945dSmrg if test "$libtool" = yes; then 3491d54945dSmrg # With Tru64 cc, shared objects can also be used to make a 350ba85709eSmrg # static library. This mechanism is used in libtool 1.4 series to 3511d54945dSmrg # handle both shared and static libraries in a single compilation. 3521d54945dSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3531d54945dSmrg # 3541d54945dSmrg # With libtool 1.5 this exception was removed, and libtool now 3551d54945dSmrg # generates 2 separate objects for the 2 libraries. These two 356ba85709eSmrg # compilations output dependencies in $dir.libs/$base.o.d and 3571d54945dSmrg # in $dir$base.o.d. We have to check for both files, because 3581d54945dSmrg # one of the two compilations can be disabled. We should prefer 3591d54945dSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3601d54945dSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3611d54945dSmrg # the former would cause a distcleancheck panic. 3621d54945dSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3631d54945dSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3641d54945dSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3651d54945dSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3661d54945dSmrg "$@" -Wc,-MD 3671d54945dSmrg else 3681d54945dSmrg tmpdepfile1=$dir$base.o.d 3691d54945dSmrg tmpdepfile2=$dir$base.d 3701d54945dSmrg tmpdepfile3=$dir$base.d 3711d54945dSmrg tmpdepfile4=$dir$base.d 3721d54945dSmrg "$@" -MD 3731d54945dSmrg fi 3741d54945dSmrg 3751d54945dSmrg stat=$? 3761d54945dSmrg if test $stat -eq 0; then : 3771d54945dSmrg else 3781d54945dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3791d54945dSmrg exit $stat 3801d54945dSmrg fi 3811d54945dSmrg 3821d54945dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3831d54945dSmrg do 3841d54945dSmrg test -f "$tmpdepfile" && break 3851d54945dSmrg done 3861d54945dSmrg if test -f "$tmpdepfile"; then 3871d54945dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 3881d54945dSmrg # That's a tab and a space in the []. 3891d54945dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 3901d54945dSmrg else 3911d54945dSmrg echo "#dummy" > "$depfile" 3921d54945dSmrg fi 3931d54945dSmrg rm -f "$tmpdepfile" 3941d54945dSmrg ;; 3951d54945dSmrg 3961d54945dSmrg#nosideeffect) 3971d54945dSmrg # This comment above is used by automake to tell side-effect 3981d54945dSmrg # dependency tracking mechanisms from slower ones. 3991d54945dSmrg 4001d54945dSmrgdashmstdout) 4011d54945dSmrg # Important note: in order to support this mode, a compiler *must* 4021d54945dSmrg # always write the preprocessed file to stdout, regardless of -o. 4031d54945dSmrg "$@" || exit $? 4041d54945dSmrg 4051d54945dSmrg # Remove the call to Libtool. 4061d54945dSmrg if test "$libtool" = yes; then 4071d54945dSmrg while test $1 != '--mode=compile'; do 4081d54945dSmrg shift 4091d54945dSmrg done 4101d54945dSmrg shift 4111d54945dSmrg fi 4121d54945dSmrg 4131d54945dSmrg # Remove `-o $object'. 4141d54945dSmrg IFS=" " 4151d54945dSmrg for arg 4161d54945dSmrg do 4171d54945dSmrg case $arg in 4181d54945dSmrg -o) 4191d54945dSmrg shift 4201d54945dSmrg ;; 4211d54945dSmrg $object) 4221d54945dSmrg shift 4231d54945dSmrg ;; 4241d54945dSmrg *) 4251d54945dSmrg set fnord "$@" "$arg" 4261d54945dSmrg shift # fnord 4271d54945dSmrg shift # $arg 4281d54945dSmrg ;; 4291d54945dSmrg esac 4301d54945dSmrg done 4311d54945dSmrg 4321d54945dSmrg test -z "$dashmflag" && dashmflag=-M 4331d54945dSmrg # Require at least two characters before searching for `:' 4341d54945dSmrg # in the target name. This is to cope with DOS-style filenames: 4351d54945dSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4361d54945dSmrg "$@" $dashmflag | 4371d54945dSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4381d54945dSmrg rm -f "$depfile" 4391d54945dSmrg cat < "$tmpdepfile" > "$depfile" 4401d54945dSmrg tr ' ' ' 4411d54945dSmrg' < "$tmpdepfile" | \ 4421d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4431d54945dSmrg## correctly. Breaking it into two sed invocations is a workaround. 4441d54945dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4451d54945dSmrg rm -f "$tmpdepfile" 4461d54945dSmrg ;; 4471d54945dSmrg 4481d54945dSmrgdashXmstdout) 4491d54945dSmrg # This case only exists to satisfy depend.m4. It is never actually 4501d54945dSmrg # run, as this mode is specially recognized in the preamble. 4511d54945dSmrg exit 1 4521d54945dSmrg ;; 4531d54945dSmrg 4541d54945dSmrgmakedepend) 4551d54945dSmrg "$@" || exit $? 4561d54945dSmrg # Remove any Libtool call 4571d54945dSmrg if test "$libtool" = yes; then 4581d54945dSmrg while test $1 != '--mode=compile'; do 4591d54945dSmrg shift 4601d54945dSmrg done 4611d54945dSmrg shift 4621d54945dSmrg fi 4631d54945dSmrg # X makedepend 4641d54945dSmrg shift 4651d54945dSmrg cleared=no 4661d54945dSmrg for arg in "$@"; do 4671d54945dSmrg case $cleared in 4681d54945dSmrg no) 4691d54945dSmrg set ""; shift 4701d54945dSmrg cleared=yes ;; 4711d54945dSmrg esac 4721d54945dSmrg case "$arg" in 4731d54945dSmrg -D*|-I*) 4741d54945dSmrg set fnord "$@" "$arg"; shift ;; 4751d54945dSmrg # Strip any option that makedepend may not understand. Remove 4761d54945dSmrg # the object too, otherwise makedepend will parse it as a source file. 4771d54945dSmrg -*|$object) 4781d54945dSmrg ;; 4791d54945dSmrg *) 4801d54945dSmrg set fnord "$@" "$arg"; shift ;; 4811d54945dSmrg esac 4821d54945dSmrg done 4831d54945dSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 4841d54945dSmrg touch "$tmpdepfile" 4851d54945dSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 4861d54945dSmrg rm -f "$depfile" 4871d54945dSmrg cat < "$tmpdepfile" > "$depfile" 4881d54945dSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 4891d54945dSmrg' | \ 4901d54945dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4911d54945dSmrg## correctly. Breaking it into two sed invocations is a workaround. 4921d54945dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4931d54945dSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 4941d54945dSmrg ;; 4951d54945dSmrg 4961d54945dSmrgcpp) 4971d54945dSmrg # Important note: in order to support this mode, a compiler *must* 4981d54945dSmrg # always write the preprocessed file to stdout. 4991d54945dSmrg "$@" || exit $? 5001d54945dSmrg 5011d54945dSmrg # Remove the call to Libtool. 5021d54945dSmrg if test "$libtool" = yes; then 5031d54945dSmrg while test $1 != '--mode=compile'; do 5041d54945dSmrg shift 5051d54945dSmrg done 5061d54945dSmrg shift 5071d54945dSmrg fi 5081d54945dSmrg 5091d54945dSmrg # Remove `-o $object'. 5101d54945dSmrg IFS=" " 5111d54945dSmrg for arg 5121d54945dSmrg do 5131d54945dSmrg case $arg in 5141d54945dSmrg -o) 5151d54945dSmrg shift 5161d54945dSmrg ;; 5171d54945dSmrg $object) 5181d54945dSmrg shift 5191d54945dSmrg ;; 5201d54945dSmrg *) 5211d54945dSmrg set fnord "$@" "$arg" 5221d54945dSmrg shift # fnord 5231d54945dSmrg shift # $arg 5241d54945dSmrg ;; 5251d54945dSmrg esac 5261d54945dSmrg done 5271d54945dSmrg 5281d54945dSmrg "$@" -E | 5291d54945dSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5301d54945dSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5311d54945dSmrg sed '$ s: \\$::' > "$tmpdepfile" 5321d54945dSmrg rm -f "$depfile" 5331d54945dSmrg echo "$object : \\" > "$depfile" 5341d54945dSmrg cat < "$tmpdepfile" >> "$depfile" 5351d54945dSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5361d54945dSmrg rm -f "$tmpdepfile" 5371d54945dSmrg ;; 5381d54945dSmrg 5391d54945dSmrgmsvisualcpp) 5401d54945dSmrg # Important note: in order to support this mode, a compiler *must* 5411d54945dSmrg # always write the preprocessed file to stdout, regardless of -o, 5421d54945dSmrg # because we must use -o when running libtool. 5431d54945dSmrg "$@" || exit $? 5441d54945dSmrg IFS=" " 5451d54945dSmrg for arg 5461d54945dSmrg do 5471d54945dSmrg case "$arg" in 5481d54945dSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5491d54945dSmrg set fnord "$@" 5501d54945dSmrg shift 5511d54945dSmrg shift 5521d54945dSmrg ;; 5531d54945dSmrg *) 5541d54945dSmrg set fnord "$@" "$arg" 5551d54945dSmrg shift 5561d54945dSmrg shift 5571d54945dSmrg ;; 5581d54945dSmrg esac 5591d54945dSmrg done 5601d54945dSmrg "$@" -E | 5611d54945dSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 5621d54945dSmrg rm -f "$depfile" 5631d54945dSmrg echo "$object : \\" > "$depfile" 5641d54945dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5651d54945dSmrg echo " " >> "$depfile" 5661d54945dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 5671d54945dSmrg rm -f "$tmpdepfile" 5681d54945dSmrg ;; 5691d54945dSmrg 5701d54945dSmrgnone) 5711d54945dSmrg exec "$@" 5721d54945dSmrg ;; 5731d54945dSmrg 5741d54945dSmrg*) 5751d54945dSmrg echo "Unknown depmode $depmode" 1>&2 5761d54945dSmrg exit 1 5771d54945dSmrg ;; 5781d54945dSmrgesac 5791d54945dSmrg 5801d54945dSmrgexit 0 5811d54945dSmrg 5821d54945dSmrg# Local Variables: 5831d54945dSmrg# mode: shell-script 5841d54945dSmrg# sh-indentation: 2 5851d54945dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 5861d54945dSmrg# time-stamp-start: "scriptversion=" 5871d54945dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 5881d54945dSmrg# time-stamp-end: "$" 5891d54945dSmrg# End: 590