depcomp revision 3e747e6d
13e747e6dSmrg#! /bin/sh 23e747e6dSmrg# depcomp - compile a program generating dependencies as side-effects 33e747e6dSmrg 43e747e6dSmrgscriptversion=2007-03-29.01 53e747e6dSmrg 63e747e6dSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software 73e747e6dSmrg# Foundation, Inc. 83e747e6dSmrg 93e747e6dSmrg# This program is free software; you can redistribute it and/or modify 103e747e6dSmrg# it under the terms of the GNU General Public License as published by 113e747e6dSmrg# the Free Software Foundation; either version 2, or (at your option) 123e747e6dSmrg# any later version. 133e747e6dSmrg 143e747e6dSmrg# This program is distributed in the hope that it will be useful, 153e747e6dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 163e747e6dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 173e747e6dSmrg# GNU General Public License for more details. 183e747e6dSmrg 193e747e6dSmrg# You should have received a copy of the GNU General Public License 203e747e6dSmrg# along with this program; if not, write to the Free Software 213e747e6dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 223e747e6dSmrg# 02110-1301, USA. 233e747e6dSmrg 243e747e6dSmrg# As a special exception to the GNU General Public License, if you 253e747e6dSmrg# distribute this file as part of a program that contains a 263e747e6dSmrg# configuration script generated by Autoconf, you may include it under 273e747e6dSmrg# the same distribution terms that you use for the rest of that program. 283e747e6dSmrg 293e747e6dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 303e747e6dSmrg 313e747e6dSmrgcase $1 in 323e747e6dSmrg '') 333e747e6dSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 343e747e6dSmrg exit 1; 353e747e6dSmrg ;; 363e747e6dSmrg -h | --h*) 373e747e6dSmrg cat <<\EOF 383e747e6dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 393e747e6dSmrg 403e747e6dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 413e747e6dSmrgas side-effects. 423e747e6dSmrg 433e747e6dSmrgEnvironment variables: 443e747e6dSmrg depmode Dependency tracking mode. 453e747e6dSmrg source Source file read by `PROGRAMS ARGS'. 463e747e6dSmrg object Object file output by `PROGRAMS ARGS'. 473e747e6dSmrg DEPDIR directory where to store dependencies. 483e747e6dSmrg depfile Dependency file to output. 493e747e6dSmrg tmpdepfile Temporary file to use when outputing dependencies. 503e747e6dSmrg libtool Whether libtool is used (yes/no). 513e747e6dSmrg 523e747e6dSmrgReport bugs to <bug-automake@gnu.org>. 533e747e6dSmrgEOF 543e747e6dSmrg exit $? 553e747e6dSmrg ;; 563e747e6dSmrg -v | --v*) 573e747e6dSmrg echo "depcomp $scriptversion" 583e747e6dSmrg exit $? 593e747e6dSmrg ;; 603e747e6dSmrgesac 613e747e6dSmrg 623e747e6dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 633e747e6dSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 643e747e6dSmrg exit 1 653e747e6dSmrgfi 663e747e6dSmrg 673e747e6dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 683e747e6dSmrgdepfile=${depfile-`echo "$object" | 693e747e6dSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 703e747e6dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 713e747e6dSmrg 723e747e6dSmrgrm -f "$tmpdepfile" 733e747e6dSmrg 743e747e6dSmrg# Some modes work just like other modes, but use different flags. We 753e747e6dSmrg# parameterize here, but still list the modes in the big case below, 763e747e6dSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 773e747e6dSmrg# here, because this file can only contain one case statement. 783e747e6dSmrgif test "$depmode" = hp; then 793e747e6dSmrg # HP compiler uses -M and no extra arg. 803e747e6dSmrg gccflag=-M 813e747e6dSmrg depmode=gcc 823e747e6dSmrgfi 833e747e6dSmrg 843e747e6dSmrgif test "$depmode" = dashXmstdout; then 853e747e6dSmrg # This is just like dashmstdout with a different argument. 863e747e6dSmrg dashmflag=-xM 873e747e6dSmrg depmode=dashmstdout 883e747e6dSmrgfi 893e747e6dSmrg 903e747e6dSmrgcase "$depmode" in 913e747e6dSmrggcc3) 923e747e6dSmrg## gcc 3 implements dependency tracking that does exactly what 933e747e6dSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 943e747e6dSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 953e747e6dSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 963e747e6dSmrg## the command line argument order; so add the flags where they 973e747e6dSmrg## appear in depend2.am. Note that the slowdown incurred here 983e747e6dSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 993e747e6dSmrg for arg 1003e747e6dSmrg do 1013e747e6dSmrg case $arg in 1023e747e6dSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1033e747e6dSmrg *) set fnord "$@" "$arg" ;; 1043e747e6dSmrg esac 1053e747e6dSmrg shift # fnord 1063e747e6dSmrg shift # $arg 1073e747e6dSmrg done 1083e747e6dSmrg "$@" 1093e747e6dSmrg stat=$? 1103e747e6dSmrg if test $stat -eq 0; then : 1113e747e6dSmrg else 1123e747e6dSmrg rm -f "$tmpdepfile" 1133e747e6dSmrg exit $stat 1143e747e6dSmrg fi 1153e747e6dSmrg mv "$tmpdepfile" "$depfile" 1163e747e6dSmrg ;; 1173e747e6dSmrg 1183e747e6dSmrggcc) 1193e747e6dSmrg## There are various ways to get dependency output from gcc. Here's 1203e747e6dSmrg## why we pick this rather obscure method: 1213e747e6dSmrg## - Don't want to use -MD because we'd like the dependencies to end 1223e747e6dSmrg## up in a subdir. Having to rename by hand is ugly. 1233e747e6dSmrg## (We might end up doing this anyway to support other compilers.) 1243e747e6dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1253e747e6dSmrg## -MM, not -M (despite what the docs say). 1263e747e6dSmrg## - Using -M directly means running the compiler twice (even worse 1273e747e6dSmrg## than renaming). 1283e747e6dSmrg if test -z "$gccflag"; then 1293e747e6dSmrg gccflag=-MD, 1303e747e6dSmrg fi 1313e747e6dSmrg "$@" -Wp,"$gccflag$tmpdepfile" 1323e747e6dSmrg stat=$? 1333e747e6dSmrg if test $stat -eq 0; then : 1343e747e6dSmrg else 1353e747e6dSmrg rm -f "$tmpdepfile" 1363e747e6dSmrg exit $stat 1373e747e6dSmrg fi 1383e747e6dSmrg rm -f "$depfile" 1393e747e6dSmrg echo "$object : \\" > "$depfile" 1403e747e6dSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1413e747e6dSmrg## The second -e expression handles DOS-style file names with drive letters. 1423e747e6dSmrg sed -e 's/^[^:]*: / /' \ 1433e747e6dSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1443e747e6dSmrg## This next piece of magic avoids the `deleted header file' problem. 1453e747e6dSmrg## The problem is that when a header file which appears in a .P file 1463e747e6dSmrg## is deleted, the dependency causes make to die (because there is 1473e747e6dSmrg## typically no way to rebuild the header). We avoid this by adding 1483e747e6dSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 1493e747e6dSmrg## this for us directly. 1503e747e6dSmrg tr ' ' ' 1513e747e6dSmrg' < "$tmpdepfile" | 1523e747e6dSmrg## Some versions of gcc put a space before the `:'. On the theory 1533e747e6dSmrg## that the space means something, we add a space to the output as 1543e747e6dSmrg## well. 1553e747e6dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 1563e747e6dSmrg## correctly. Breaking it into two sed invocations is a workaround. 1573e747e6dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1583e747e6dSmrg rm -f "$tmpdepfile" 1593e747e6dSmrg ;; 1603e747e6dSmrg 1613e747e6dSmrghp) 1623e747e6dSmrg # This case exists only to let depend.m4 do its work. It works by 1633e747e6dSmrg # looking at the text of this script. This case will never be run, 1643e747e6dSmrg # since it is checked for above. 1653e747e6dSmrg exit 1 1663e747e6dSmrg ;; 1673e747e6dSmrg 1683e747e6dSmrgsgi) 1693e747e6dSmrg if test "$libtool" = yes; then 1703e747e6dSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1713e747e6dSmrg else 1723e747e6dSmrg "$@" -MDupdate "$tmpdepfile" 1733e747e6dSmrg fi 1743e747e6dSmrg stat=$? 1753e747e6dSmrg if test $stat -eq 0; then : 1763e747e6dSmrg else 1773e747e6dSmrg rm -f "$tmpdepfile" 1783e747e6dSmrg exit $stat 1793e747e6dSmrg fi 1803e747e6dSmrg rm -f "$depfile" 1813e747e6dSmrg 1823e747e6dSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1833e747e6dSmrg echo "$object : \\" > "$depfile" 1843e747e6dSmrg 1853e747e6dSmrg # Clip off the initial element (the dependent). Don't try to be 1863e747e6dSmrg # clever and replace this with sed code, as IRIX sed won't handle 1873e747e6dSmrg # lines with more than a fixed number of characters (4096 in 1883e747e6dSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1893e747e6dSmrg # the IRIX cc adds comments like `#:fec' to the end of the 1903e747e6dSmrg # dependency line. 1913e747e6dSmrg tr ' ' ' 1923e747e6dSmrg' < "$tmpdepfile" \ 1933e747e6dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1943e747e6dSmrg tr ' 1953e747e6dSmrg' ' ' >> $depfile 1963e747e6dSmrg echo >> $depfile 1973e747e6dSmrg 1983e747e6dSmrg # The second pass generates a dummy entry for each header file. 1993e747e6dSmrg tr ' ' ' 2003e747e6dSmrg' < "$tmpdepfile" \ 2013e747e6dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2023e747e6dSmrg >> $depfile 2033e747e6dSmrg else 2043e747e6dSmrg # The sourcefile does not contain any dependencies, so just 2053e747e6dSmrg # store a dummy comment line, to avoid errors with the Makefile 2063e747e6dSmrg # "include basename.Plo" scheme. 2073e747e6dSmrg echo "#dummy" > "$depfile" 2083e747e6dSmrg fi 2093e747e6dSmrg rm -f "$tmpdepfile" 2103e747e6dSmrg ;; 2113e747e6dSmrg 2123e747e6dSmrgaix) 2133e747e6dSmrg # The C for AIX Compiler uses -M and outputs the dependencies 2143e747e6dSmrg # in a .u file. In older versions, this file always lives in the 2153e747e6dSmrg # current directory. Also, the AIX compiler puts `$object:' at the 2163e747e6dSmrg # start of each line; $object doesn't have directory information. 2173e747e6dSmrg # Version 6 uses the directory in both cases. 2183e747e6dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2193e747e6dSmrg test "x$dir" = "x$object" && dir= 2203e747e6dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2213e747e6dSmrg if test "$libtool" = yes; then 2223e747e6dSmrg tmpdepfile1=$dir$base.u 2233e747e6dSmrg tmpdepfile2=$base.u 2243e747e6dSmrg tmpdepfile3=$dir.libs/$base.u 2253e747e6dSmrg "$@" -Wc,-M 2263e747e6dSmrg else 2273e747e6dSmrg tmpdepfile1=$dir$base.u 2283e747e6dSmrg tmpdepfile2=$dir$base.u 2293e747e6dSmrg tmpdepfile3=$dir$base.u 2303e747e6dSmrg "$@" -M 2313e747e6dSmrg fi 2323e747e6dSmrg stat=$? 2333e747e6dSmrg 2343e747e6dSmrg if test $stat -eq 0; then : 2353e747e6dSmrg else 2363e747e6dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2373e747e6dSmrg exit $stat 2383e747e6dSmrg fi 2393e747e6dSmrg 2403e747e6dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2413e747e6dSmrg do 2423e747e6dSmrg test -f "$tmpdepfile" && break 2433e747e6dSmrg done 2443e747e6dSmrg if test -f "$tmpdepfile"; then 2453e747e6dSmrg # Each line is of the form `foo.o: dependent.h'. 2463e747e6dSmrg # Do two passes, one to just change these to 2473e747e6dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2483e747e6dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2493e747e6dSmrg # That's a tab and a space in the []. 2503e747e6dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2513e747e6dSmrg else 2523e747e6dSmrg # The sourcefile does not contain any dependencies, so just 2533e747e6dSmrg # store a dummy comment line, to avoid errors with the Makefile 2543e747e6dSmrg # "include basename.Plo" scheme. 2553e747e6dSmrg echo "#dummy" > "$depfile" 2563e747e6dSmrg fi 2573e747e6dSmrg rm -f "$tmpdepfile" 2583e747e6dSmrg ;; 2593e747e6dSmrg 2603e747e6dSmrgicc) 2613e747e6dSmrg # Intel's C compiler understands `-MD -MF file'. However on 2623e747e6dSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2633e747e6dSmrg # ICC 7.0 will fill foo.d with something like 2643e747e6dSmrg # foo.o: sub/foo.c 2653e747e6dSmrg # foo.o: sub/foo.h 2663e747e6dSmrg # which is wrong. We want: 2673e747e6dSmrg # sub/foo.o: sub/foo.c 2683e747e6dSmrg # sub/foo.o: sub/foo.h 2693e747e6dSmrg # sub/foo.c: 2703e747e6dSmrg # sub/foo.h: 2713e747e6dSmrg # ICC 7.1 will output 2723e747e6dSmrg # foo.o: sub/foo.c sub/foo.h 2733e747e6dSmrg # and will wrap long lines using \ : 2743e747e6dSmrg # foo.o: sub/foo.c ... \ 2753e747e6dSmrg # sub/foo.h ... \ 2763e747e6dSmrg # ... 2773e747e6dSmrg 2783e747e6dSmrg "$@" -MD -MF "$tmpdepfile" 2793e747e6dSmrg stat=$? 2803e747e6dSmrg if test $stat -eq 0; then : 2813e747e6dSmrg else 2823e747e6dSmrg rm -f "$tmpdepfile" 2833e747e6dSmrg exit $stat 2843e747e6dSmrg fi 2853e747e6dSmrg rm -f "$depfile" 2863e747e6dSmrg # Each line is of the form `foo.o: dependent.h', 2873e747e6dSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2883e747e6dSmrg # Do two passes, one to just change these to 2893e747e6dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2903e747e6dSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2913e747e6dSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 2923e747e6dSmrg # correctly. Breaking it into two sed invocations is a workaround. 2933e747e6dSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2943e747e6dSmrg sed -e 's/$/ :/' >> "$depfile" 2953e747e6dSmrg rm -f "$tmpdepfile" 2963e747e6dSmrg ;; 2973e747e6dSmrg 2983e747e6dSmrghp2) 2993e747e6dSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3003e747e6dSmrg # compilers, which have integrated preprocessors. The correct option 3013e747e6dSmrg # to use with these is +Maked; it writes dependencies to a file named 3023e747e6dSmrg # 'foo.d', which lands next to the object file, wherever that 3033e747e6dSmrg # happens to be. 3043e747e6dSmrg # Much of this is similar to the tru64 case; see comments there. 3053e747e6dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3063e747e6dSmrg test "x$dir" = "x$object" && dir= 3073e747e6dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3083e747e6dSmrg if test "$libtool" = yes; then 3093e747e6dSmrg tmpdepfile1=$dir$base.d 3103e747e6dSmrg tmpdepfile2=$dir.libs/$base.d 3113e747e6dSmrg "$@" -Wc,+Maked 3123e747e6dSmrg else 3133e747e6dSmrg tmpdepfile1=$dir$base.d 3143e747e6dSmrg tmpdepfile2=$dir$base.d 3153e747e6dSmrg "$@" +Maked 3163e747e6dSmrg fi 3173e747e6dSmrg stat=$? 3183e747e6dSmrg if test $stat -eq 0; then : 3193e747e6dSmrg else 3203e747e6dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3213e747e6dSmrg exit $stat 3223e747e6dSmrg fi 3233e747e6dSmrg 3243e747e6dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3253e747e6dSmrg do 3263e747e6dSmrg test -f "$tmpdepfile" && break 3273e747e6dSmrg done 3283e747e6dSmrg if test -f "$tmpdepfile"; then 3293e747e6dSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3303e747e6dSmrg # Add `dependent.h:' lines. 3313e747e6dSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 3323e747e6dSmrg else 3333e747e6dSmrg echo "#dummy" > "$depfile" 3343e747e6dSmrg fi 3353e747e6dSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3363e747e6dSmrg ;; 3373e747e6dSmrg 3383e747e6dSmrgtru64) 3393e747e6dSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 3403e747e6dSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3413e747e6dSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3423e747e6dSmrg # dependencies in `foo.d' instead, so we check for that too. 3433e747e6dSmrg # Subdirectories are respected. 3443e747e6dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3453e747e6dSmrg test "x$dir" = "x$object" && dir= 3463e747e6dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3473e747e6dSmrg 3483e747e6dSmrg if test "$libtool" = yes; then 3493e747e6dSmrg # With Tru64 cc, shared objects can also be used to make a 3503e747e6dSmrg # static library. This mechanism is used in libtool 1.4 series to 3513e747e6dSmrg # handle both shared and static libraries in a single compilation. 3523e747e6dSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3533e747e6dSmrg # 3543e747e6dSmrg # With libtool 1.5 this exception was removed, and libtool now 3553e747e6dSmrg # generates 2 separate objects for the 2 libraries. These two 3563e747e6dSmrg # compilations output dependencies in $dir.libs/$base.o.d and 3573e747e6dSmrg # in $dir$base.o.d. We have to check for both files, because 3583e747e6dSmrg # one of the two compilations can be disabled. We should prefer 3593e747e6dSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3603e747e6dSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3613e747e6dSmrg # the former would cause a distcleancheck panic. 3623e747e6dSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3633e747e6dSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3643e747e6dSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3653e747e6dSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3663e747e6dSmrg "$@" -Wc,-MD 3673e747e6dSmrg else 3683e747e6dSmrg tmpdepfile1=$dir$base.o.d 3693e747e6dSmrg tmpdepfile2=$dir$base.d 3703e747e6dSmrg tmpdepfile3=$dir$base.d 3713e747e6dSmrg tmpdepfile4=$dir$base.d 3723e747e6dSmrg "$@" -MD 3733e747e6dSmrg fi 3743e747e6dSmrg 3753e747e6dSmrg stat=$? 3763e747e6dSmrg if test $stat -eq 0; then : 3773e747e6dSmrg else 3783e747e6dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3793e747e6dSmrg exit $stat 3803e747e6dSmrg fi 3813e747e6dSmrg 3823e747e6dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3833e747e6dSmrg do 3843e747e6dSmrg test -f "$tmpdepfile" && break 3853e747e6dSmrg done 3863e747e6dSmrg if test -f "$tmpdepfile"; then 3873e747e6dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 3883e747e6dSmrg # That's a tab and a space in the []. 3893e747e6dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 3903e747e6dSmrg else 3913e747e6dSmrg echo "#dummy" > "$depfile" 3923e747e6dSmrg fi 3933e747e6dSmrg rm -f "$tmpdepfile" 3943e747e6dSmrg ;; 3953e747e6dSmrg 3963e747e6dSmrg#nosideeffect) 3973e747e6dSmrg # This comment above is used by automake to tell side-effect 3983e747e6dSmrg # dependency tracking mechanisms from slower ones. 3993e747e6dSmrg 4003e747e6dSmrgdashmstdout) 4013e747e6dSmrg # Important note: in order to support this mode, a compiler *must* 4023e747e6dSmrg # always write the preprocessed file to stdout, regardless of -o. 4033e747e6dSmrg "$@" || exit $? 4043e747e6dSmrg 4053e747e6dSmrg # Remove the call to Libtool. 4063e747e6dSmrg if test "$libtool" = yes; then 4073e747e6dSmrg while test $1 != '--mode=compile'; do 4083e747e6dSmrg shift 4093e747e6dSmrg done 4103e747e6dSmrg shift 4113e747e6dSmrg fi 4123e747e6dSmrg 4133e747e6dSmrg # Remove `-o $object'. 4143e747e6dSmrg IFS=" " 4153e747e6dSmrg for arg 4163e747e6dSmrg do 4173e747e6dSmrg case $arg in 4183e747e6dSmrg -o) 4193e747e6dSmrg shift 4203e747e6dSmrg ;; 4213e747e6dSmrg $object) 4223e747e6dSmrg shift 4233e747e6dSmrg ;; 4243e747e6dSmrg *) 4253e747e6dSmrg set fnord "$@" "$arg" 4263e747e6dSmrg shift # fnord 4273e747e6dSmrg shift # $arg 4283e747e6dSmrg ;; 4293e747e6dSmrg esac 4303e747e6dSmrg done 4313e747e6dSmrg 4323e747e6dSmrg test -z "$dashmflag" && dashmflag=-M 4333e747e6dSmrg # Require at least two characters before searching for `:' 4343e747e6dSmrg # in the target name. This is to cope with DOS-style filenames: 4353e747e6dSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4363e747e6dSmrg "$@" $dashmflag | 4373e747e6dSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4383e747e6dSmrg rm -f "$depfile" 4393e747e6dSmrg cat < "$tmpdepfile" > "$depfile" 4403e747e6dSmrg tr ' ' ' 4413e747e6dSmrg' < "$tmpdepfile" | \ 4423e747e6dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4433e747e6dSmrg## correctly. Breaking it into two sed invocations is a workaround. 4443e747e6dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4453e747e6dSmrg rm -f "$tmpdepfile" 4463e747e6dSmrg ;; 4473e747e6dSmrg 4483e747e6dSmrgdashXmstdout) 4493e747e6dSmrg # This case only exists to satisfy depend.m4. It is never actually 4503e747e6dSmrg # run, as this mode is specially recognized in the preamble. 4513e747e6dSmrg exit 1 4523e747e6dSmrg ;; 4533e747e6dSmrg 4543e747e6dSmrgmakedepend) 4553e747e6dSmrg "$@" || exit $? 4563e747e6dSmrg # Remove any Libtool call 4573e747e6dSmrg if test "$libtool" = yes; then 4583e747e6dSmrg while test $1 != '--mode=compile'; do 4593e747e6dSmrg shift 4603e747e6dSmrg done 4613e747e6dSmrg shift 4623e747e6dSmrg fi 4633e747e6dSmrg # X makedepend 4643e747e6dSmrg shift 4653e747e6dSmrg cleared=no 4663e747e6dSmrg for arg in "$@"; do 4673e747e6dSmrg case $cleared in 4683e747e6dSmrg no) 4693e747e6dSmrg set ""; shift 4703e747e6dSmrg cleared=yes ;; 4713e747e6dSmrg esac 4723e747e6dSmrg case "$arg" in 4733e747e6dSmrg -D*|-I*) 4743e747e6dSmrg set fnord "$@" "$arg"; shift ;; 4753e747e6dSmrg # Strip any option that makedepend may not understand. Remove 4763e747e6dSmrg # the object too, otherwise makedepend will parse it as a source file. 4773e747e6dSmrg -*|$object) 4783e747e6dSmrg ;; 4793e747e6dSmrg *) 4803e747e6dSmrg set fnord "$@" "$arg"; shift ;; 4813e747e6dSmrg esac 4823e747e6dSmrg done 4833e747e6dSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 4843e747e6dSmrg touch "$tmpdepfile" 4853e747e6dSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 4863e747e6dSmrg rm -f "$depfile" 4873e747e6dSmrg cat < "$tmpdepfile" > "$depfile" 4883e747e6dSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 4893e747e6dSmrg' | \ 4903e747e6dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4913e747e6dSmrg## correctly. Breaking it into two sed invocations is a workaround. 4923e747e6dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4933e747e6dSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 4943e747e6dSmrg ;; 4953e747e6dSmrg 4963e747e6dSmrgcpp) 4973e747e6dSmrg # Important note: in order to support this mode, a compiler *must* 4983e747e6dSmrg # always write the preprocessed file to stdout. 4993e747e6dSmrg "$@" || exit $? 5003e747e6dSmrg 5013e747e6dSmrg # Remove the call to Libtool. 5023e747e6dSmrg if test "$libtool" = yes; then 5033e747e6dSmrg while test $1 != '--mode=compile'; do 5043e747e6dSmrg shift 5053e747e6dSmrg done 5063e747e6dSmrg shift 5073e747e6dSmrg fi 5083e747e6dSmrg 5093e747e6dSmrg # Remove `-o $object'. 5103e747e6dSmrg IFS=" " 5113e747e6dSmrg for arg 5123e747e6dSmrg do 5133e747e6dSmrg case $arg in 5143e747e6dSmrg -o) 5153e747e6dSmrg shift 5163e747e6dSmrg ;; 5173e747e6dSmrg $object) 5183e747e6dSmrg shift 5193e747e6dSmrg ;; 5203e747e6dSmrg *) 5213e747e6dSmrg set fnord "$@" "$arg" 5223e747e6dSmrg shift # fnord 5233e747e6dSmrg shift # $arg 5243e747e6dSmrg ;; 5253e747e6dSmrg esac 5263e747e6dSmrg done 5273e747e6dSmrg 5283e747e6dSmrg "$@" -E | 5293e747e6dSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5303e747e6dSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5313e747e6dSmrg sed '$ s: \\$::' > "$tmpdepfile" 5323e747e6dSmrg rm -f "$depfile" 5333e747e6dSmrg echo "$object : \\" > "$depfile" 5343e747e6dSmrg cat < "$tmpdepfile" >> "$depfile" 5353e747e6dSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5363e747e6dSmrg rm -f "$tmpdepfile" 5373e747e6dSmrg ;; 5383e747e6dSmrg 5393e747e6dSmrgmsvisualcpp) 5403e747e6dSmrg # Important note: in order to support this mode, a compiler *must* 5413e747e6dSmrg # always write the preprocessed file to stdout, regardless of -o, 5423e747e6dSmrg # because we must use -o when running libtool. 5433e747e6dSmrg "$@" || exit $? 5443e747e6dSmrg IFS=" " 5453e747e6dSmrg for arg 5463e747e6dSmrg do 5473e747e6dSmrg case "$arg" in 5483e747e6dSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5493e747e6dSmrg set fnord "$@" 5503e747e6dSmrg shift 5513e747e6dSmrg shift 5523e747e6dSmrg ;; 5533e747e6dSmrg *) 5543e747e6dSmrg set fnord "$@" "$arg" 5553e747e6dSmrg shift 5563e747e6dSmrg shift 5573e747e6dSmrg ;; 5583e747e6dSmrg esac 5593e747e6dSmrg done 5603e747e6dSmrg "$@" -E | 5613e747e6dSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 5623e747e6dSmrg rm -f "$depfile" 5633e747e6dSmrg echo "$object : \\" > "$depfile" 5643e747e6dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5653e747e6dSmrg echo " " >> "$depfile" 5663e747e6dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 5673e747e6dSmrg rm -f "$tmpdepfile" 5683e747e6dSmrg ;; 5693e747e6dSmrg 5703e747e6dSmrgnone) 5713e747e6dSmrg exec "$@" 5723e747e6dSmrg ;; 5733e747e6dSmrg 5743e747e6dSmrg*) 5753e747e6dSmrg echo "Unknown depmode $depmode" 1>&2 5763e747e6dSmrg exit 1 5773e747e6dSmrg ;; 5783e747e6dSmrgesac 5793e747e6dSmrg 5803e747e6dSmrgexit 0 5813e747e6dSmrg 5823e747e6dSmrg# Local Variables: 5833e747e6dSmrg# mode: shell-script 5843e747e6dSmrg# sh-indentation: 2 5853e747e6dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 5863e747e6dSmrg# time-stamp-start: "scriptversion=" 5873e747e6dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 5883e747e6dSmrg# time-stamp-end: "$" 5893e747e6dSmrg# End: 590