depcomp revision b4ee4795
11ab64890Smrg#! /bin/sh 21ab64890Smrg# depcomp - compile a program generating dependencies as side-effects 31ab64890Smrg 4b4ee4795Smrgscriptversion=2009-04-28.21; # UTC 51ab64890Smrg 6b4ee4795Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7b4ee4795Smrg# Software Foundation, Inc. 81ab64890Smrg 91ab64890Smrg# This program is free software; you can redistribute it and/or modify 101ab64890Smrg# it under the terms of the GNU General Public License as published by 111ab64890Smrg# the Free Software Foundation; either version 2, or (at your option) 121ab64890Smrg# any later version. 131ab64890Smrg 141ab64890Smrg# This program is distributed in the hope that it will be useful, 151ab64890Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 161ab64890Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 171ab64890Smrg# GNU General Public License for more details. 181ab64890Smrg 191ab64890Smrg# You should have received a copy of the GNU General Public License 20b4ee4795Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 211ab64890Smrg 221ab64890Smrg# As a special exception to the GNU General Public License, if you 231ab64890Smrg# distribute this file as part of a program that contains a 241ab64890Smrg# configuration script generated by Autoconf, you may include it under 251ab64890Smrg# the same distribution terms that you use for the rest of that program. 261ab64890Smrg 271ab64890Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 281ab64890Smrg 291ab64890Smrgcase $1 in 301ab64890Smrg '') 311ab64890Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 321ab64890Smrg exit 1; 331ab64890Smrg ;; 341ab64890Smrg -h | --h*) 351ab64890Smrg cat <<\EOF 361ab64890SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 371ab64890Smrg 381ab64890SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 391ab64890Smrgas side-effects. 401ab64890Smrg 411ab64890SmrgEnvironment variables: 421ab64890Smrg depmode Dependency tracking mode. 431ab64890Smrg source Source file read by `PROGRAMS ARGS'. 441ab64890Smrg object Object file output by `PROGRAMS ARGS'. 451ab64890Smrg DEPDIR directory where to store dependencies. 461ab64890Smrg depfile Dependency file to output. 471ab64890Smrg tmpdepfile Temporary file to use when outputing dependencies. 481ab64890Smrg libtool Whether libtool is used (yes/no). 491ab64890Smrg 501ab64890SmrgReport bugs to <bug-automake@gnu.org>. 511ab64890SmrgEOF 521ab64890Smrg exit $? 531ab64890Smrg ;; 541ab64890Smrg -v | --v*) 551ab64890Smrg echo "depcomp $scriptversion" 561ab64890Smrg exit $? 571ab64890Smrg ;; 581ab64890Smrgesac 591ab64890Smrg 601ab64890Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 611ab64890Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 621ab64890Smrg exit 1 631ab64890Smrgfi 641ab64890Smrg 651ab64890Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 661ab64890Smrgdepfile=${depfile-`echo "$object" | 671ab64890Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 681ab64890Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 691ab64890Smrg 701ab64890Smrgrm -f "$tmpdepfile" 711ab64890Smrg 721ab64890Smrg# Some modes work just like other modes, but use different flags. We 731ab64890Smrg# parameterize here, but still list the modes in the big case below, 741ab64890Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 751ab64890Smrg# here, because this file can only contain one case statement. 761ab64890Smrgif test "$depmode" = hp; then 771ab64890Smrg # HP compiler uses -M and no extra arg. 781ab64890Smrg gccflag=-M 791ab64890Smrg depmode=gcc 801ab64890Smrgfi 811ab64890Smrg 821ab64890Smrgif test "$depmode" = dashXmstdout; then 831ab64890Smrg # This is just like dashmstdout with a different argument. 841ab64890Smrg dashmflag=-xM 851ab64890Smrg depmode=dashmstdout 861ab64890Smrgfi 871ab64890Smrg 88b4ee4795Smrgcygpath_u="cygpath -u -f -" 89b4ee4795Smrgif test "$depmode" = msvcmsys; then 90b4ee4795Smrg # This is just like msvisualcpp but w/o cygpath translation. 91b4ee4795Smrg # Just convert the backslash-escaped backslashes to single forward 92b4ee4795Smrg # slashes to satisfy depend.m4 93b4ee4795Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94b4ee4795Smrg depmode=msvisualcpp 95b4ee4795Smrgfi 96b4ee4795Smrg 971ab64890Smrgcase "$depmode" in 981ab64890Smrggcc3) 991ab64890Smrg## gcc 3 implements dependency tracking that does exactly what 1001ab64890Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1011ab64890Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1021ab64890Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1031ab64890Smrg## the command line argument order; so add the flags where they 1041ab64890Smrg## appear in depend2.am. Note that the slowdown incurred here 1051ab64890Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1061ab64890Smrg for arg 1071ab64890Smrg do 1081ab64890Smrg case $arg in 1091ab64890Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1101ab64890Smrg *) set fnord "$@" "$arg" ;; 1111ab64890Smrg esac 1121ab64890Smrg shift # fnord 1131ab64890Smrg shift # $arg 1141ab64890Smrg done 1151ab64890Smrg "$@" 1161ab64890Smrg stat=$? 1171ab64890Smrg if test $stat -eq 0; then : 1181ab64890Smrg else 1191ab64890Smrg rm -f "$tmpdepfile" 1201ab64890Smrg exit $stat 1211ab64890Smrg fi 1221ab64890Smrg mv "$tmpdepfile" "$depfile" 1231ab64890Smrg ;; 1241ab64890Smrg 1251ab64890Smrggcc) 1261ab64890Smrg## There are various ways to get dependency output from gcc. Here's 1271ab64890Smrg## why we pick this rather obscure method: 1281ab64890Smrg## - Don't want to use -MD because we'd like the dependencies to end 1291ab64890Smrg## up in a subdir. Having to rename by hand is ugly. 1301ab64890Smrg## (We might end up doing this anyway to support other compilers.) 1311ab64890Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1321ab64890Smrg## -MM, not -M (despite what the docs say). 1331ab64890Smrg## - Using -M directly means running the compiler twice (even worse 1341ab64890Smrg## than renaming). 1351ab64890Smrg if test -z "$gccflag"; then 1361ab64890Smrg gccflag=-MD, 1371ab64890Smrg fi 1381ab64890Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1391ab64890Smrg stat=$? 1401ab64890Smrg if test $stat -eq 0; then : 1411ab64890Smrg else 1421ab64890Smrg rm -f "$tmpdepfile" 1431ab64890Smrg exit $stat 1441ab64890Smrg fi 1451ab64890Smrg rm -f "$depfile" 1461ab64890Smrg echo "$object : \\" > "$depfile" 1471ab64890Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1481ab64890Smrg## The second -e expression handles DOS-style file names with drive letters. 1491ab64890Smrg sed -e 's/^[^:]*: / /' \ 1501ab64890Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1511ab64890Smrg## This next piece of magic avoids the `deleted header file' problem. 1521ab64890Smrg## The problem is that when a header file which appears in a .P file 1531ab64890Smrg## is deleted, the dependency causes make to die (because there is 1541ab64890Smrg## typically no way to rebuild the header). We avoid this by adding 1551ab64890Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1561ab64890Smrg## this for us directly. 1571ab64890Smrg tr ' ' ' 1581ab64890Smrg' < "$tmpdepfile" | 1591ab64890Smrg## Some versions of gcc put a space before the `:'. On the theory 1601ab64890Smrg## that the space means something, we add a space to the output as 1611ab64890Smrg## well. 1621ab64890Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1631ab64890Smrg## correctly. Breaking it into two sed invocations is a workaround. 1641ab64890Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1651ab64890Smrg rm -f "$tmpdepfile" 1661ab64890Smrg ;; 1671ab64890Smrg 1681ab64890Smrghp) 1691ab64890Smrg # This case exists only to let depend.m4 do its work. It works by 1701ab64890Smrg # looking at the text of this script. This case will never be run, 1711ab64890Smrg # since it is checked for above. 1721ab64890Smrg exit 1 1731ab64890Smrg ;; 1741ab64890Smrg 1751ab64890Smrgsgi) 1761ab64890Smrg if test "$libtool" = yes; then 1771ab64890Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1781ab64890Smrg else 1791ab64890Smrg "$@" -MDupdate "$tmpdepfile" 1801ab64890Smrg fi 1811ab64890Smrg stat=$? 1821ab64890Smrg if test $stat -eq 0; then : 1831ab64890Smrg else 1841ab64890Smrg rm -f "$tmpdepfile" 1851ab64890Smrg exit $stat 1861ab64890Smrg fi 1871ab64890Smrg rm -f "$depfile" 1881ab64890Smrg 1891ab64890Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1901ab64890Smrg echo "$object : \\" > "$depfile" 1911ab64890Smrg 1921ab64890Smrg # Clip off the initial element (the dependent). Don't try to be 1931ab64890Smrg # clever and replace this with sed code, as IRIX sed won't handle 1941ab64890Smrg # lines with more than a fixed number of characters (4096 in 1951ab64890Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1961ab64890Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1971ab64890Smrg # dependency line. 1981ab64890Smrg tr ' ' ' 1991ab64890Smrg' < "$tmpdepfile" \ 2001ab64890Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2011ab64890Smrg tr ' 202b4ee4795Smrg' ' ' >> "$depfile" 203b4ee4795Smrg echo >> "$depfile" 2041ab64890Smrg 2051ab64890Smrg # The second pass generates a dummy entry for each header file. 2061ab64890Smrg tr ' ' ' 2071ab64890Smrg' < "$tmpdepfile" \ 2081ab64890Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209b4ee4795Smrg >> "$depfile" 2101ab64890Smrg else 2111ab64890Smrg # The sourcefile does not contain any dependencies, so just 2121ab64890Smrg # store a dummy comment line, to avoid errors with the Makefile 2131ab64890Smrg # "include basename.Plo" scheme. 2141ab64890Smrg echo "#dummy" > "$depfile" 2151ab64890Smrg fi 2161ab64890Smrg rm -f "$tmpdepfile" 2171ab64890Smrg ;; 2181ab64890Smrg 2191ab64890Smrgaix) 2201ab64890Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2211ab64890Smrg # in a .u file. In older versions, this file always lives in the 2221ab64890Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2231ab64890Smrg # start of each line; $object doesn't have directory information. 2241ab64890Smrg # Version 6 uses the directory in both cases. 2251ab64890Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2261ab64890Smrg test "x$dir" = "x$object" && dir= 2271ab64890Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2281ab64890Smrg if test "$libtool" = yes; then 2291ab64890Smrg tmpdepfile1=$dir$base.u 2301ab64890Smrg tmpdepfile2=$base.u 2311ab64890Smrg tmpdepfile3=$dir.libs/$base.u 2321ab64890Smrg "$@" -Wc,-M 2331ab64890Smrg else 2341ab64890Smrg tmpdepfile1=$dir$base.u 2351ab64890Smrg tmpdepfile2=$dir$base.u 2361ab64890Smrg tmpdepfile3=$dir$base.u 2371ab64890Smrg "$@" -M 2381ab64890Smrg fi 2391ab64890Smrg stat=$? 2401ab64890Smrg 2411ab64890Smrg if test $stat -eq 0; then : 2421ab64890Smrg else 2431ab64890Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2441ab64890Smrg exit $stat 2451ab64890Smrg fi 2461ab64890Smrg 2471ab64890Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2481ab64890Smrg do 2491ab64890Smrg test -f "$tmpdepfile" && break 2501ab64890Smrg done 2511ab64890Smrg if test -f "$tmpdepfile"; then 2521ab64890Smrg # Each line is of the form `foo.o: dependent.h'. 2531ab64890Smrg # Do two passes, one to just change these to 2541ab64890Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2551ab64890Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2561ab64890Smrg # That's a tab and a space in the []. 2571ab64890Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2581ab64890Smrg else 2591ab64890Smrg # The sourcefile does not contain any dependencies, so just 2601ab64890Smrg # store a dummy comment line, to avoid errors with the Makefile 2611ab64890Smrg # "include basename.Plo" scheme. 2621ab64890Smrg echo "#dummy" > "$depfile" 2631ab64890Smrg fi 2641ab64890Smrg rm -f "$tmpdepfile" 2651ab64890Smrg ;; 2661ab64890Smrg 2671ab64890Smrgicc) 2681ab64890Smrg # Intel's C compiler understands `-MD -MF file'. However on 2691ab64890Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2701ab64890Smrg # ICC 7.0 will fill foo.d with something like 2711ab64890Smrg # foo.o: sub/foo.c 2721ab64890Smrg # foo.o: sub/foo.h 2731ab64890Smrg # which is wrong. We want: 2741ab64890Smrg # sub/foo.o: sub/foo.c 2751ab64890Smrg # sub/foo.o: sub/foo.h 2761ab64890Smrg # sub/foo.c: 2771ab64890Smrg # sub/foo.h: 2781ab64890Smrg # ICC 7.1 will output 2791ab64890Smrg # foo.o: sub/foo.c sub/foo.h 2801ab64890Smrg # and will wrap long lines using \ : 2811ab64890Smrg # foo.o: sub/foo.c ... \ 2821ab64890Smrg # sub/foo.h ... \ 2831ab64890Smrg # ... 2841ab64890Smrg 2851ab64890Smrg "$@" -MD -MF "$tmpdepfile" 2861ab64890Smrg stat=$? 2871ab64890Smrg if test $stat -eq 0; then : 2881ab64890Smrg else 2891ab64890Smrg rm -f "$tmpdepfile" 2901ab64890Smrg exit $stat 2911ab64890Smrg fi 2921ab64890Smrg rm -f "$depfile" 2931ab64890Smrg # Each line is of the form `foo.o: dependent.h', 2941ab64890Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2951ab64890Smrg # Do two passes, one to just change these to 2961ab64890Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2971ab64890Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2981ab64890Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2991ab64890Smrg # correctly. Breaking it into two sed invocations is a workaround. 3001ab64890Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3011ab64890Smrg sed -e 's/$/ :/' >> "$depfile" 3021ab64890Smrg rm -f "$tmpdepfile" 3031ab64890Smrg ;; 3041ab64890Smrg 3051ab64890Smrghp2) 3061ab64890Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3071ab64890Smrg # compilers, which have integrated preprocessors. The correct option 3081ab64890Smrg # to use with these is +Maked; it writes dependencies to a file named 3091ab64890Smrg # 'foo.d', which lands next to the object file, wherever that 3101ab64890Smrg # happens to be. 3111ab64890Smrg # Much of this is similar to the tru64 case; see comments there. 3121ab64890Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3131ab64890Smrg test "x$dir" = "x$object" && dir= 3141ab64890Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3151ab64890Smrg if test "$libtool" = yes; then 3161ab64890Smrg tmpdepfile1=$dir$base.d 3171ab64890Smrg tmpdepfile2=$dir.libs/$base.d 3181ab64890Smrg "$@" -Wc,+Maked 3191ab64890Smrg else 3201ab64890Smrg tmpdepfile1=$dir$base.d 3211ab64890Smrg tmpdepfile2=$dir$base.d 3221ab64890Smrg "$@" +Maked 3231ab64890Smrg fi 3241ab64890Smrg stat=$? 3251ab64890Smrg if test $stat -eq 0; then : 3261ab64890Smrg else 3271ab64890Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3281ab64890Smrg exit $stat 3291ab64890Smrg fi 3301ab64890Smrg 3311ab64890Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3321ab64890Smrg do 3331ab64890Smrg test -f "$tmpdepfile" && break 3341ab64890Smrg done 3351ab64890Smrg if test -f "$tmpdepfile"; then 3361ab64890Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3371ab64890Smrg # Add `dependent.h:' lines. 338b4ee4795Smrg sed -ne '2,${ 339b4ee4795Smrg s/^ *// 340b4ee4795Smrg s/ \\*$// 341b4ee4795Smrg s/$/:/ 342b4ee4795Smrg p 343b4ee4795Smrg }' "$tmpdepfile" >> "$depfile" 3441ab64890Smrg else 3451ab64890Smrg echo "#dummy" > "$depfile" 3461ab64890Smrg fi 3471ab64890Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3481ab64890Smrg ;; 3491ab64890Smrg 3501ab64890Smrgtru64) 3511ab64890Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 3521ab64890Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3531ab64890Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3541ab64890Smrg # dependencies in `foo.d' instead, so we check for that too. 3551ab64890Smrg # Subdirectories are respected. 3561ab64890Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3571ab64890Smrg test "x$dir" = "x$object" && dir= 3581ab64890Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3591ab64890Smrg 3601ab64890Smrg if test "$libtool" = yes; then 3611ab64890Smrg # With Tru64 cc, shared objects can also be used to make a 3621ab64890Smrg # static library. This mechanism is used in libtool 1.4 series to 3631ab64890Smrg # handle both shared and static libraries in a single compilation. 3641ab64890Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3651ab64890Smrg # 3661ab64890Smrg # With libtool 1.5 this exception was removed, and libtool now 3671ab64890Smrg # generates 2 separate objects for the 2 libraries. These two 3681ab64890Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3691ab64890Smrg # in $dir$base.o.d. We have to check for both files, because 3701ab64890Smrg # one of the two compilations can be disabled. We should prefer 3711ab64890Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3721ab64890Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3731ab64890Smrg # the former would cause a distcleancheck panic. 3741ab64890Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3751ab64890Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3761ab64890Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3771ab64890Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3781ab64890Smrg "$@" -Wc,-MD 3791ab64890Smrg else 3801ab64890Smrg tmpdepfile1=$dir$base.o.d 3811ab64890Smrg tmpdepfile2=$dir$base.d 3821ab64890Smrg tmpdepfile3=$dir$base.d 3831ab64890Smrg tmpdepfile4=$dir$base.d 3841ab64890Smrg "$@" -MD 3851ab64890Smrg fi 3861ab64890Smrg 3871ab64890Smrg stat=$? 3881ab64890Smrg if test $stat -eq 0; then : 3891ab64890Smrg else 3901ab64890Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3911ab64890Smrg exit $stat 3921ab64890Smrg fi 3931ab64890Smrg 3941ab64890Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3951ab64890Smrg do 3961ab64890Smrg test -f "$tmpdepfile" && break 3971ab64890Smrg done 3981ab64890Smrg if test -f "$tmpdepfile"; then 3991ab64890Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4001ab64890Smrg # That's a tab and a space in the []. 4011ab64890Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4021ab64890Smrg else 4031ab64890Smrg echo "#dummy" > "$depfile" 4041ab64890Smrg fi 4051ab64890Smrg rm -f "$tmpdepfile" 4061ab64890Smrg ;; 4071ab64890Smrg 4081ab64890Smrg#nosideeffect) 4091ab64890Smrg # This comment above is used by automake to tell side-effect 4101ab64890Smrg # dependency tracking mechanisms from slower ones. 4111ab64890Smrg 4121ab64890Smrgdashmstdout) 4131ab64890Smrg # Important note: in order to support this mode, a compiler *must* 4141ab64890Smrg # always write the preprocessed file to stdout, regardless of -o. 4151ab64890Smrg "$@" || exit $? 4161ab64890Smrg 4171ab64890Smrg # Remove the call to Libtool. 4181ab64890Smrg if test "$libtool" = yes; then 419b4ee4795Smrg while test "X$1" != 'X--mode=compile'; do 4201ab64890Smrg shift 4211ab64890Smrg done 4221ab64890Smrg shift 4231ab64890Smrg fi 4241ab64890Smrg 4251ab64890Smrg # Remove `-o $object'. 4261ab64890Smrg IFS=" " 4271ab64890Smrg for arg 4281ab64890Smrg do 4291ab64890Smrg case $arg in 4301ab64890Smrg -o) 4311ab64890Smrg shift 4321ab64890Smrg ;; 4331ab64890Smrg $object) 4341ab64890Smrg shift 4351ab64890Smrg ;; 4361ab64890Smrg *) 4371ab64890Smrg set fnord "$@" "$arg" 4381ab64890Smrg shift # fnord 4391ab64890Smrg shift # $arg 4401ab64890Smrg ;; 4411ab64890Smrg esac 4421ab64890Smrg done 4431ab64890Smrg 4441ab64890Smrg test -z "$dashmflag" && dashmflag=-M 4451ab64890Smrg # Require at least two characters before searching for `:' 4461ab64890Smrg # in the target name. This is to cope with DOS-style filenames: 4471ab64890Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4481ab64890Smrg "$@" $dashmflag | 4491ab64890Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4501ab64890Smrg rm -f "$depfile" 4511ab64890Smrg cat < "$tmpdepfile" > "$depfile" 4521ab64890Smrg tr ' ' ' 4531ab64890Smrg' < "$tmpdepfile" | \ 4541ab64890Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4551ab64890Smrg## correctly. Breaking it into two sed invocations is a workaround. 4561ab64890Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4571ab64890Smrg rm -f "$tmpdepfile" 4581ab64890Smrg ;; 4591ab64890Smrg 4601ab64890SmrgdashXmstdout) 4611ab64890Smrg # This case only exists to satisfy depend.m4. It is never actually 4621ab64890Smrg # run, as this mode is specially recognized in the preamble. 4631ab64890Smrg exit 1 4641ab64890Smrg ;; 4651ab64890Smrg 4661ab64890Smrgmakedepend) 4671ab64890Smrg "$@" || exit $? 4681ab64890Smrg # Remove any Libtool call 4691ab64890Smrg if test "$libtool" = yes; then 470b4ee4795Smrg while test "X$1" != 'X--mode=compile'; do 4711ab64890Smrg shift 4721ab64890Smrg done 4731ab64890Smrg shift 4741ab64890Smrg fi 4751ab64890Smrg # X makedepend 4761ab64890Smrg shift 477b4ee4795Smrg cleared=no eat=no 478b4ee4795Smrg for arg 479b4ee4795Smrg do 4801ab64890Smrg case $cleared in 4811ab64890Smrg no) 4821ab64890Smrg set ""; shift 4831ab64890Smrg cleared=yes ;; 4841ab64890Smrg esac 485b4ee4795Smrg if test $eat = yes; then 486b4ee4795Smrg eat=no 487b4ee4795Smrg continue 488b4ee4795Smrg fi 4891ab64890Smrg case "$arg" in 4901ab64890Smrg -D*|-I*) 4911ab64890Smrg set fnord "$@" "$arg"; shift ;; 4921ab64890Smrg # Strip any option that makedepend may not understand. Remove 4931ab64890Smrg # the object too, otherwise makedepend will parse it as a source file. 494b4ee4795Smrg -arch) 495b4ee4795Smrg eat=yes ;; 4961ab64890Smrg -*|$object) 4971ab64890Smrg ;; 4981ab64890Smrg *) 4991ab64890Smrg set fnord "$@" "$arg"; shift ;; 5001ab64890Smrg esac 5011ab64890Smrg done 502b4ee4795Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5031ab64890Smrg touch "$tmpdepfile" 5041ab64890Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5051ab64890Smrg rm -f "$depfile" 5061ab64890Smrg cat < "$tmpdepfile" > "$depfile" 5071ab64890Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5081ab64890Smrg' | \ 5091ab64890Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 5101ab64890Smrg## correctly. Breaking it into two sed invocations is a workaround. 5111ab64890Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5121ab64890Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5131ab64890Smrg ;; 5141ab64890Smrg 5151ab64890Smrgcpp) 5161ab64890Smrg # Important note: in order to support this mode, a compiler *must* 5171ab64890Smrg # always write the preprocessed file to stdout. 5181ab64890Smrg "$@" || exit $? 5191ab64890Smrg 5201ab64890Smrg # Remove the call to Libtool. 5211ab64890Smrg if test "$libtool" = yes; then 522b4ee4795Smrg while test "X$1" != 'X--mode=compile'; do 5231ab64890Smrg shift 5241ab64890Smrg done 5251ab64890Smrg shift 5261ab64890Smrg fi 5271ab64890Smrg 5281ab64890Smrg # Remove `-o $object'. 5291ab64890Smrg IFS=" " 5301ab64890Smrg for arg 5311ab64890Smrg do 5321ab64890Smrg case $arg in 5331ab64890Smrg -o) 5341ab64890Smrg shift 5351ab64890Smrg ;; 5361ab64890Smrg $object) 5371ab64890Smrg shift 5381ab64890Smrg ;; 5391ab64890Smrg *) 5401ab64890Smrg set fnord "$@" "$arg" 5411ab64890Smrg shift # fnord 5421ab64890Smrg shift # $arg 5431ab64890Smrg ;; 5441ab64890Smrg esac 5451ab64890Smrg done 5461ab64890Smrg 5471ab64890Smrg "$@" -E | 5481ab64890Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5491ab64890Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5501ab64890Smrg sed '$ s: \\$::' > "$tmpdepfile" 5511ab64890Smrg rm -f "$depfile" 5521ab64890Smrg echo "$object : \\" > "$depfile" 5531ab64890Smrg cat < "$tmpdepfile" >> "$depfile" 5541ab64890Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5551ab64890Smrg rm -f "$tmpdepfile" 5561ab64890Smrg ;; 5571ab64890Smrg 5581ab64890Smrgmsvisualcpp) 5591ab64890Smrg # Important note: in order to support this mode, a compiler *must* 560b4ee4795Smrg # always write the preprocessed file to stdout. 5611ab64890Smrg "$@" || exit $? 562b4ee4795Smrg 563b4ee4795Smrg # Remove the call to Libtool. 564b4ee4795Smrg if test "$libtool" = yes; then 565b4ee4795Smrg while test "X$1" != 'X--mode=compile'; do 566b4ee4795Smrg shift 567b4ee4795Smrg done 568b4ee4795Smrg shift 569b4ee4795Smrg fi 570b4ee4795Smrg 5711ab64890Smrg IFS=" " 5721ab64890Smrg for arg 5731ab64890Smrg do 5741ab64890Smrg case "$arg" in 575b4ee4795Smrg -o) 576b4ee4795Smrg shift 577b4ee4795Smrg ;; 578b4ee4795Smrg $object) 579b4ee4795Smrg shift 580b4ee4795Smrg ;; 5811ab64890Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5821ab64890Smrg set fnord "$@" 5831ab64890Smrg shift 5841ab64890Smrg shift 5851ab64890Smrg ;; 5861ab64890Smrg *) 5871ab64890Smrg set fnord "$@" "$arg" 5881ab64890Smrg shift 5891ab64890Smrg shift 5901ab64890Smrg ;; 5911ab64890Smrg esac 5921ab64890Smrg done 593b4ee4795Smrg "$@" -E 2>/dev/null | 594b4ee4795Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5951ab64890Smrg rm -f "$depfile" 5961ab64890Smrg echo "$object : \\" > "$depfile" 597b4ee4795Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5981ab64890Smrg echo " " >> "$depfile" 599b4ee4795Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6001ab64890Smrg rm -f "$tmpdepfile" 6011ab64890Smrg ;; 6021ab64890Smrg 603b4ee4795Smrgmsvcmsys) 604b4ee4795Smrg # This case exists only to let depend.m4 do its work. It works by 605b4ee4795Smrg # looking at the text of this script. This case will never be run, 606b4ee4795Smrg # since it is checked for above. 607b4ee4795Smrg exit 1 608b4ee4795Smrg ;; 609b4ee4795Smrg 6101ab64890Smrgnone) 6111ab64890Smrg exec "$@" 6121ab64890Smrg ;; 6131ab64890Smrg 6141ab64890Smrg*) 6151ab64890Smrg echo "Unknown depmode $depmode" 1>&2 6161ab64890Smrg exit 1 6171ab64890Smrg ;; 6181ab64890Smrgesac 6191ab64890Smrg 6201ab64890Smrgexit 0 6211ab64890Smrg 6221ab64890Smrg# Local Variables: 6231ab64890Smrg# mode: shell-script 6241ab64890Smrg# sh-indentation: 2 6251ab64890Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6261ab64890Smrg# time-stamp-start: "scriptversion=" 6271ab64890Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628b4ee4795Smrg# time-stamp-time-zone: "UTC" 629b4ee4795Smrg# time-stamp-end: "; # UTC" 6301ab64890Smrg# End: 631