depcomp revision 9f606849
19f606849Smrg#! /bin/sh 29f606849Smrg# depcomp - compile a program generating dependencies as side-effects 39f606849Smrg 49f606849Smrgscriptversion=2006-10-15.18 59f606849Smrg 69f606849Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software 79f606849Smrg# Foundation, Inc. 89f606849Smrg 99f606849Smrg# This program is free software; you can redistribute it and/or modify 109f606849Smrg# it under the terms of the GNU General Public License as published by 119f606849Smrg# the Free Software Foundation; either version 2, or (at your option) 129f606849Smrg# any later version. 139f606849Smrg 149f606849Smrg# This program is distributed in the hope that it will be useful, 159f606849Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 169f606849Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 179f606849Smrg# GNU General Public License for more details. 189f606849Smrg 199f606849Smrg# You should have received a copy of the GNU General Public License 209f606849Smrg# along with this program; if not, write to the Free Software 219f606849Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 229f606849Smrg# 02110-1301, USA. 239f606849Smrg 249f606849Smrg# As a special exception to the GNU General Public License, if you 259f606849Smrg# distribute this file as part of a program that contains a 269f606849Smrg# configuration script generated by Autoconf, you may include it under 279f606849Smrg# the same distribution terms that you use for the rest of that program. 289f606849Smrg 299f606849Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 309f606849Smrg 319f606849Smrgcase $1 in 329f606849Smrg '') 339f606849Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 349f606849Smrg exit 1; 359f606849Smrg ;; 369f606849Smrg -h | --h*) 379f606849Smrg cat <<\EOF 389f606849SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 399f606849Smrg 409f606849SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 419f606849Smrgas side-effects. 429f606849Smrg 439f606849SmrgEnvironment variables: 449f606849Smrg depmode Dependency tracking mode. 459f606849Smrg source Source file read by `PROGRAMS ARGS'. 469f606849Smrg object Object file output by `PROGRAMS ARGS'. 479f606849Smrg DEPDIR directory where to store dependencies. 489f606849Smrg depfile Dependency file to output. 499f606849Smrg tmpdepfile Temporary file to use when outputing dependencies. 509f606849Smrg libtool Whether libtool is used (yes/no). 519f606849Smrg 529f606849SmrgReport bugs to <bug-automake@gnu.org>. 539f606849SmrgEOF 549f606849Smrg exit $? 559f606849Smrg ;; 569f606849Smrg -v | --v*) 579f606849Smrg echo "depcomp $scriptversion" 589f606849Smrg exit $? 599f606849Smrg ;; 609f606849Smrgesac 619f606849Smrg 629f606849Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 639f606849Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 649f606849Smrg exit 1 659f606849Smrgfi 669f606849Smrg 679f606849Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 689f606849Smrgdepfile=${depfile-`echo "$object" | 699f606849Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 709f606849Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 719f606849Smrg 729f606849Smrgrm -f "$tmpdepfile" 739f606849Smrg 749f606849Smrg# Some modes work just like other modes, but use different flags. We 759f606849Smrg# parameterize here, but still list the modes in the big case below, 769f606849Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 779f606849Smrg# here, because this file can only contain one case statement. 789f606849Smrgif test "$depmode" = hp; then 799f606849Smrg # HP compiler uses -M and no extra arg. 809f606849Smrg gccflag=-M 819f606849Smrg depmode=gcc 829f606849Smrgfi 839f606849Smrg 849f606849Smrgif test "$depmode" = dashXmstdout; then 859f606849Smrg # This is just like dashmstdout with a different argument. 869f606849Smrg dashmflag=-xM 879f606849Smrg depmode=dashmstdout 889f606849Smrgfi 899f606849Smrg 909f606849Smrgcase "$depmode" in 919f606849Smrggcc3) 929f606849Smrg## gcc 3 implements dependency tracking that does exactly what 939f606849Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 949f606849Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 959f606849Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 969f606849Smrg## the command line argument order; so add the flags where they 979f606849Smrg## appear in depend2.am. Note that the slowdown incurred here 989f606849Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 999f606849Smrg for arg 1009f606849Smrg do 1019f606849Smrg case $arg in 1029f606849Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1039f606849Smrg *) set fnord "$@" "$arg" ;; 1049f606849Smrg esac 1059f606849Smrg shift # fnord 1069f606849Smrg shift # $arg 1079f606849Smrg done 1089f606849Smrg "$@" 1099f606849Smrg stat=$? 1109f606849Smrg if test $stat -eq 0; then : 1119f606849Smrg else 1129f606849Smrg rm -f "$tmpdepfile" 1139f606849Smrg exit $stat 1149f606849Smrg fi 1159f606849Smrg mv "$tmpdepfile" "$depfile" 1169f606849Smrg ;; 1179f606849Smrg 1189f606849Smrggcc) 1199f606849Smrg## There are various ways to get dependency output from gcc. Here's 1209f606849Smrg## why we pick this rather obscure method: 1219f606849Smrg## - Don't want to use -MD because we'd like the dependencies to end 1229f606849Smrg## up in a subdir. Having to rename by hand is ugly. 1239f606849Smrg## (We might end up doing this anyway to support other compilers.) 1249f606849Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1259f606849Smrg## -MM, not -M (despite what the docs say). 1269f606849Smrg## - Using -M directly means running the compiler twice (even worse 1279f606849Smrg## than renaming). 1289f606849Smrg if test -z "$gccflag"; then 1299f606849Smrg gccflag=-MD, 1309f606849Smrg fi 1319f606849Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1329f606849Smrg stat=$? 1339f606849Smrg if test $stat -eq 0; then : 1349f606849Smrg else 1359f606849Smrg rm -f "$tmpdepfile" 1369f606849Smrg exit $stat 1379f606849Smrg fi 1389f606849Smrg rm -f "$depfile" 1399f606849Smrg echo "$object : \\" > "$depfile" 1409f606849Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1419f606849Smrg## The second -e expression handles DOS-style file names with drive letters. 1429f606849Smrg sed -e 's/^[^:]*: / /' \ 1439f606849Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1449f606849Smrg## This next piece of magic avoids the `deleted header file' problem. 1459f606849Smrg## The problem is that when a header file which appears in a .P file 1469f606849Smrg## is deleted, the dependency causes make to die (because there is 1479f606849Smrg## typically no way to rebuild the header). We avoid this by adding 1489f606849Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1499f606849Smrg## this for us directly. 1509f606849Smrg tr ' ' ' 1519f606849Smrg' < "$tmpdepfile" | 1529f606849Smrg## Some versions of gcc put a space before the `:'. On the theory 1539f606849Smrg## that the space means something, we add a space to the output as 1549f606849Smrg## well. 1559f606849Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1569f606849Smrg## correctly. Breaking it into two sed invocations is a workaround. 1579f606849Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1589f606849Smrg rm -f "$tmpdepfile" 1599f606849Smrg ;; 1609f606849Smrg 1619f606849Smrghp) 1629f606849Smrg # This case exists only to let depend.m4 do its work. It works by 1639f606849Smrg # looking at the text of this script. This case will never be run, 1649f606849Smrg # since it is checked for above. 1659f606849Smrg exit 1 1669f606849Smrg ;; 1679f606849Smrg 1689f606849Smrgsgi) 1699f606849Smrg if test "$libtool" = yes; then 1709f606849Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1719f606849Smrg else 1729f606849Smrg "$@" -MDupdate "$tmpdepfile" 1739f606849Smrg fi 1749f606849Smrg stat=$? 1759f606849Smrg if test $stat -eq 0; then : 1769f606849Smrg else 1779f606849Smrg rm -f "$tmpdepfile" 1789f606849Smrg exit $stat 1799f606849Smrg fi 1809f606849Smrg rm -f "$depfile" 1819f606849Smrg 1829f606849Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1839f606849Smrg echo "$object : \\" > "$depfile" 1849f606849Smrg 1859f606849Smrg # Clip off the initial element (the dependent). Don't try to be 1869f606849Smrg # clever and replace this with sed code, as IRIX sed won't handle 1879f606849Smrg # lines with more than a fixed number of characters (4096 in 1889f606849Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1899f606849Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1909f606849Smrg # dependency line. 1919f606849Smrg tr ' ' ' 1929f606849Smrg' < "$tmpdepfile" \ 1939f606849Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1949f606849Smrg tr ' 1959f606849Smrg' ' ' >> $depfile 1969f606849Smrg echo >> $depfile 1979f606849Smrg 1989f606849Smrg # The second pass generates a dummy entry for each header file. 1999f606849Smrg tr ' ' ' 2009f606849Smrg' < "$tmpdepfile" \ 2019f606849Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2029f606849Smrg >> $depfile 2039f606849Smrg else 2049f606849Smrg # The sourcefile does not contain any dependencies, so just 2059f606849Smrg # store a dummy comment line, to avoid errors with the Makefile 2069f606849Smrg # "include basename.Plo" scheme. 2079f606849Smrg echo "#dummy" > "$depfile" 2089f606849Smrg fi 2099f606849Smrg rm -f "$tmpdepfile" 2109f606849Smrg ;; 2119f606849Smrg 2129f606849Smrgaix) 2139f606849Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2149f606849Smrg # in a .u file. In older versions, this file always lives in the 2159f606849Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2169f606849Smrg # start of each line; $object doesn't have directory information. 2179f606849Smrg # Version 6 uses the directory in both cases. 2189f606849Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 2199f606849Smrg tmpdepfile="$stripped.u" 2209f606849Smrg if test "$libtool" = yes; then 2219f606849Smrg "$@" -Wc,-M 2229f606849Smrg else 2239f606849Smrg "$@" -M 2249f606849Smrg fi 2259f606849Smrg stat=$? 2269f606849Smrg 2279f606849Smrg if test -f "$tmpdepfile"; then : 2289f606849Smrg else 2299f606849Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 2309f606849Smrg tmpdepfile="$stripped.u" 2319f606849Smrg fi 2329f606849Smrg 2339f606849Smrg if test $stat -eq 0; then : 2349f606849Smrg else 2359f606849Smrg rm -f "$tmpdepfile" 2369f606849Smrg exit $stat 2379f606849Smrg fi 2389f606849Smrg 2399f606849Smrg if test -f "$tmpdepfile"; then 2409f606849Smrg outname="$stripped.o" 2419f606849Smrg # Each line is of the form `foo.o: dependent.h'. 2429f606849Smrg # Do two passes, one to just change these to 2439f606849Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2449f606849Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 2459f606849Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 2469f606849Smrg else 2479f606849Smrg # The sourcefile does not contain any dependencies, so just 2489f606849Smrg # store a dummy comment line, to avoid errors with the Makefile 2499f606849Smrg # "include basename.Plo" scheme. 2509f606849Smrg echo "#dummy" > "$depfile" 2519f606849Smrg fi 2529f606849Smrg rm -f "$tmpdepfile" 2539f606849Smrg ;; 2549f606849Smrg 2559f606849Smrgicc) 2569f606849Smrg # Intel's C compiler understands `-MD -MF file'. However on 2579f606849Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2589f606849Smrg # ICC 7.0 will fill foo.d with something like 2599f606849Smrg # foo.o: sub/foo.c 2609f606849Smrg # foo.o: sub/foo.h 2619f606849Smrg # which is wrong. We want: 2629f606849Smrg # sub/foo.o: sub/foo.c 2639f606849Smrg # sub/foo.o: sub/foo.h 2649f606849Smrg # sub/foo.c: 2659f606849Smrg # sub/foo.h: 2669f606849Smrg # ICC 7.1 will output 2679f606849Smrg # foo.o: sub/foo.c sub/foo.h 2689f606849Smrg # and will wrap long lines using \ : 2699f606849Smrg # foo.o: sub/foo.c ... \ 2709f606849Smrg # sub/foo.h ... \ 2719f606849Smrg # ... 2729f606849Smrg 2739f606849Smrg "$@" -MD -MF "$tmpdepfile" 2749f606849Smrg stat=$? 2759f606849Smrg if test $stat -eq 0; then : 2769f606849Smrg else 2779f606849Smrg rm -f "$tmpdepfile" 2789f606849Smrg exit $stat 2799f606849Smrg fi 2809f606849Smrg rm -f "$depfile" 2819f606849Smrg # Each line is of the form `foo.o: dependent.h', 2829f606849Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2839f606849Smrg # Do two passes, one to just change these to 2849f606849Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2859f606849Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2869f606849Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2879f606849Smrg # correctly. Breaking it into two sed invocations is a workaround. 2889f606849Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2899f606849Smrg sed -e 's/$/ :/' >> "$depfile" 2909f606849Smrg rm -f "$tmpdepfile" 2919f606849Smrg ;; 2929f606849Smrg 2939f606849Smrghp2) 2949f606849Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 2959f606849Smrg # compilers, which have integrated preprocessors. The correct option 2969f606849Smrg # to use with these is +Maked; it writes dependencies to a file named 2979f606849Smrg # 'foo.d', which lands next to the object file, wherever that 2989f606849Smrg # happens to be. 2999f606849Smrg # Much of this is similar to the tru64 case; see comments there. 3009f606849Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3019f606849Smrg test "x$dir" = "x$object" && dir= 3029f606849Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3039f606849Smrg if test "$libtool" = yes; then 3049f606849Smrg tmpdepfile1=$dir$base.d 3059f606849Smrg tmpdepfile2=$dir.libs/$base.d 3069f606849Smrg "$@" -Wc,+Maked 3079f606849Smrg else 3089f606849Smrg tmpdepfile1=$dir$base.d 3099f606849Smrg tmpdepfile2=$dir$base.d 3109f606849Smrg "$@" +Maked 3119f606849Smrg fi 3129f606849Smrg stat=$? 3139f606849Smrg if test $stat -eq 0; then : 3149f606849Smrg else 3159f606849Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3169f606849Smrg exit $stat 3179f606849Smrg fi 3189f606849Smrg 3199f606849Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3209f606849Smrg do 3219f606849Smrg test -f "$tmpdepfile" && break 3229f606849Smrg done 3239f606849Smrg if test -f "$tmpdepfile"; then 3249f606849Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3259f606849Smrg # Add `dependent.h:' lines. 3269f606849Smrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 3279f606849Smrg else 3289f606849Smrg echo "#dummy" > "$depfile" 3299f606849Smrg fi 3309f606849Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3319f606849Smrg ;; 3329f606849Smrg 3339f606849Smrgtru64) 3349f606849Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 3359f606849Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3369f606849Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3379f606849Smrg # dependencies in `foo.d' instead, so we check for that too. 3389f606849Smrg # Subdirectories are respected. 3399f606849Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3409f606849Smrg test "x$dir" = "x$object" && dir= 3419f606849Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3429f606849Smrg 3439f606849Smrg if test "$libtool" = yes; then 3449f606849Smrg # With Tru64 cc, shared objects can also be used to make a 3459f606849Smrg # static library. This mechanism is used in libtool 1.4 series to 3469f606849Smrg # handle both shared and static libraries in a single compilation. 3479f606849Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3489f606849Smrg # 3499f606849Smrg # With libtool 1.5 this exception was removed, and libtool now 3509f606849Smrg # generates 2 separate objects for the 2 libraries. These two 3519f606849Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3529f606849Smrg # in $dir$base.o.d. We have to check for both files, because 3539f606849Smrg # one of the two compilations can be disabled. We should prefer 3549f606849Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3559f606849Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3569f606849Smrg # the former would cause a distcleancheck panic. 3579f606849Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3589f606849Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3599f606849Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3609f606849Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3619f606849Smrg "$@" -Wc,-MD 3629f606849Smrg else 3639f606849Smrg tmpdepfile1=$dir$base.o.d 3649f606849Smrg tmpdepfile2=$dir$base.d 3659f606849Smrg tmpdepfile3=$dir$base.d 3669f606849Smrg tmpdepfile4=$dir$base.d 3679f606849Smrg "$@" -MD 3689f606849Smrg fi 3699f606849Smrg 3709f606849Smrg stat=$? 3719f606849Smrg if test $stat -eq 0; then : 3729f606849Smrg else 3739f606849Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3749f606849Smrg exit $stat 3759f606849Smrg fi 3769f606849Smrg 3779f606849Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3789f606849Smrg do 3799f606849Smrg test -f "$tmpdepfile" && break 3809f606849Smrg done 3819f606849Smrg if test -f "$tmpdepfile"; then 3829f606849Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 3839f606849Smrg # That's a tab and a space in the []. 3849f606849Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 3859f606849Smrg else 3869f606849Smrg echo "#dummy" > "$depfile" 3879f606849Smrg fi 3889f606849Smrg rm -f "$tmpdepfile" 3899f606849Smrg ;; 3909f606849Smrg 3919f606849Smrg#nosideeffect) 3929f606849Smrg # This comment above is used by automake to tell side-effect 3939f606849Smrg # dependency tracking mechanisms from slower ones. 3949f606849Smrg 3959f606849Smrgdashmstdout) 3969f606849Smrg # Important note: in order to support this mode, a compiler *must* 3979f606849Smrg # always write the preprocessed file to stdout, regardless of -o. 3989f606849Smrg "$@" || exit $? 3999f606849Smrg 4009f606849Smrg # Remove the call to Libtool. 4019f606849Smrg if test "$libtool" = yes; then 4029f606849Smrg while test $1 != '--mode=compile'; do 4039f606849Smrg shift 4049f606849Smrg done 4059f606849Smrg shift 4069f606849Smrg fi 4079f606849Smrg 4089f606849Smrg # Remove `-o $object'. 4099f606849Smrg IFS=" " 4109f606849Smrg for arg 4119f606849Smrg do 4129f606849Smrg case $arg in 4139f606849Smrg -o) 4149f606849Smrg shift 4159f606849Smrg ;; 4169f606849Smrg $object) 4179f606849Smrg shift 4189f606849Smrg ;; 4199f606849Smrg *) 4209f606849Smrg set fnord "$@" "$arg" 4219f606849Smrg shift # fnord 4229f606849Smrg shift # $arg 4239f606849Smrg ;; 4249f606849Smrg esac 4259f606849Smrg done 4269f606849Smrg 4279f606849Smrg test -z "$dashmflag" && dashmflag=-M 4289f606849Smrg # Require at least two characters before searching for `:' 4299f606849Smrg # in the target name. This is to cope with DOS-style filenames: 4309f606849Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4319f606849Smrg "$@" $dashmflag | 4329f606849Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4339f606849Smrg rm -f "$depfile" 4349f606849Smrg cat < "$tmpdepfile" > "$depfile" 4359f606849Smrg tr ' ' ' 4369f606849Smrg' < "$tmpdepfile" | \ 4379f606849Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4389f606849Smrg## correctly. Breaking it into two sed invocations is a workaround. 4399f606849Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4409f606849Smrg rm -f "$tmpdepfile" 4419f606849Smrg ;; 4429f606849Smrg 4439f606849SmrgdashXmstdout) 4449f606849Smrg # This case only exists to satisfy depend.m4. It is never actually 4459f606849Smrg # run, as this mode is specially recognized in the preamble. 4469f606849Smrg exit 1 4479f606849Smrg ;; 4489f606849Smrg 4499f606849Smrgmakedepend) 4509f606849Smrg "$@" || exit $? 4519f606849Smrg # Remove any Libtool call 4529f606849Smrg if test "$libtool" = yes; then 4539f606849Smrg while test $1 != '--mode=compile'; do 4549f606849Smrg shift 4559f606849Smrg done 4569f606849Smrg shift 4579f606849Smrg fi 4589f606849Smrg # X makedepend 4599f606849Smrg shift 4609f606849Smrg cleared=no 4619f606849Smrg for arg in "$@"; do 4629f606849Smrg case $cleared in 4639f606849Smrg no) 4649f606849Smrg set ""; shift 4659f606849Smrg cleared=yes ;; 4669f606849Smrg esac 4679f606849Smrg case "$arg" in 4689f606849Smrg -D*|-I*) 4699f606849Smrg set fnord "$@" "$arg"; shift ;; 4709f606849Smrg # Strip any option that makedepend may not understand. Remove 4719f606849Smrg # the object too, otherwise makedepend will parse it as a source file. 4729f606849Smrg -*|$object) 4739f606849Smrg ;; 4749f606849Smrg *) 4759f606849Smrg set fnord "$@" "$arg"; shift ;; 4769f606849Smrg esac 4779f606849Smrg done 4789f606849Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 4799f606849Smrg touch "$tmpdepfile" 4809f606849Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 4819f606849Smrg rm -f "$depfile" 4829f606849Smrg cat < "$tmpdepfile" > "$depfile" 4839f606849Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 4849f606849Smrg' | \ 4859f606849Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4869f606849Smrg## correctly. Breaking it into two sed invocations is a workaround. 4879f606849Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4889f606849Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 4899f606849Smrg ;; 4909f606849Smrg 4919f606849Smrgcpp) 4929f606849Smrg # Important note: in order to support this mode, a compiler *must* 4939f606849Smrg # always write the preprocessed file to stdout. 4949f606849Smrg "$@" || exit $? 4959f606849Smrg 4969f606849Smrg # Remove the call to Libtool. 4979f606849Smrg if test "$libtool" = yes; then 4989f606849Smrg while test $1 != '--mode=compile'; do 4999f606849Smrg shift 5009f606849Smrg done 5019f606849Smrg shift 5029f606849Smrg fi 5039f606849Smrg 5049f606849Smrg # Remove `-o $object'. 5059f606849Smrg IFS=" " 5069f606849Smrg for arg 5079f606849Smrg do 5089f606849Smrg case $arg in 5099f606849Smrg -o) 5109f606849Smrg shift 5119f606849Smrg ;; 5129f606849Smrg $object) 5139f606849Smrg shift 5149f606849Smrg ;; 5159f606849Smrg *) 5169f606849Smrg set fnord "$@" "$arg" 5179f606849Smrg shift # fnord 5189f606849Smrg shift # $arg 5199f606849Smrg ;; 5209f606849Smrg esac 5219f606849Smrg done 5229f606849Smrg 5239f606849Smrg "$@" -E | 5249f606849Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5259f606849Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5269f606849Smrg sed '$ s: \\$::' > "$tmpdepfile" 5279f606849Smrg rm -f "$depfile" 5289f606849Smrg echo "$object : \\" > "$depfile" 5299f606849Smrg cat < "$tmpdepfile" >> "$depfile" 5309f606849Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5319f606849Smrg rm -f "$tmpdepfile" 5329f606849Smrg ;; 5339f606849Smrg 5349f606849Smrgmsvisualcpp) 5359f606849Smrg # Important note: in order to support this mode, a compiler *must* 5369f606849Smrg # always write the preprocessed file to stdout, regardless of -o, 5379f606849Smrg # because we must use -o when running libtool. 5389f606849Smrg "$@" || exit $? 5399f606849Smrg IFS=" " 5409f606849Smrg for arg 5419f606849Smrg do 5429f606849Smrg case "$arg" in 5439f606849Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5449f606849Smrg set fnord "$@" 5459f606849Smrg shift 5469f606849Smrg shift 5479f606849Smrg ;; 5489f606849Smrg *) 5499f606849Smrg set fnord "$@" "$arg" 5509f606849Smrg shift 5519f606849Smrg shift 5529f606849Smrg ;; 5539f606849Smrg esac 5549f606849Smrg done 5559f606849Smrg "$@" -E | 5569f606849Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 5579f606849Smrg rm -f "$depfile" 5589f606849Smrg echo "$object : \\" > "$depfile" 5599f606849Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5609f606849Smrg echo " " >> "$depfile" 5619f606849Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 5629f606849Smrg rm -f "$tmpdepfile" 5639f606849Smrg ;; 5649f606849Smrg 5659f606849Smrgnone) 5669f606849Smrg exec "$@" 5679f606849Smrg ;; 5689f606849Smrg 5699f606849Smrg*) 5709f606849Smrg echo "Unknown depmode $depmode" 1>&2 5719f606849Smrg exit 1 5729f606849Smrg ;; 5739f606849Smrgesac 5749f606849Smrg 5759f606849Smrgexit 0 5769f606849Smrg 5779f606849Smrg# Local Variables: 5789f606849Smrg# mode: shell-script 5799f606849Smrg# sh-indentation: 2 5809f606849Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 5819f606849Smrg# time-stamp-start: "scriptversion=" 5829f606849Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 5839f606849Smrg# time-stamp-end: "$" 5849f606849Smrg# End: 585