depcomp revision 3e6697d4
10e20ee16Smrg#! /bin/sh 20e20ee16Smrg# depcomp - compile a program generating dependencies as side-effects 33e6697d4Smrg 43e6697d4Smrgscriptversion=2009-04-28.21; # UTC 53e6697d4Smrg 63e6697d4Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 73e6697d4Smrg# Software Foundation, Inc. 80e20ee16Smrg 90e20ee16Smrg# This program is free software; you can redistribute it and/or modify 100e20ee16Smrg# it under the terms of the GNU General Public License as published by 110e20ee16Smrg# the Free Software Foundation; either version 2, or (at your option) 120e20ee16Smrg# any later version. 130e20ee16Smrg 140e20ee16Smrg# This program is distributed in the hope that it will be useful, 150e20ee16Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 160e20ee16Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 170e20ee16Smrg# GNU General Public License for more details. 180e20ee16Smrg 190e20ee16Smrg# You should have received a copy of the GNU General Public License 203e6697d4Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 210e20ee16Smrg 220e20ee16Smrg# As a special exception to the GNU General Public License, if you 230e20ee16Smrg# distribute this file as part of a program that contains a 240e20ee16Smrg# configuration script generated by Autoconf, you may include it under 250e20ee16Smrg# the same distribution terms that you use for the rest of that program. 260e20ee16Smrg 270e20ee16Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 280e20ee16Smrg 293e6697d4Smrgcase $1 in 303e6697d4Smrg '') 313e6697d4Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 323e6697d4Smrg exit 1; 333e6697d4Smrg ;; 343e6697d4Smrg -h | --h*) 353e6697d4Smrg cat <<\EOF 363e6697d4SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 373e6697d4Smrg 383e6697d4SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 393e6697d4Smrgas side-effects. 403e6697d4Smrg 413e6697d4SmrgEnvironment variables: 423e6697d4Smrg depmode Dependency tracking mode. 433e6697d4Smrg source Source file read by `PROGRAMS ARGS'. 443e6697d4Smrg object Object file output by `PROGRAMS ARGS'. 453e6697d4Smrg DEPDIR directory where to store dependencies. 463e6697d4Smrg depfile Dependency file to output. 473e6697d4Smrg tmpdepfile Temporary file to use when outputing dependencies. 483e6697d4Smrg libtool Whether libtool is used (yes/no). 493e6697d4Smrg 503e6697d4SmrgReport bugs to <bug-automake@gnu.org>. 513e6697d4SmrgEOF 523e6697d4Smrg exit $? 533e6697d4Smrg ;; 543e6697d4Smrg -v | --v*) 553e6697d4Smrg echo "depcomp $scriptversion" 563e6697d4Smrg exit $? 573e6697d4Smrg ;; 583e6697d4Smrgesac 593e6697d4Smrg 600e20ee16Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 610e20ee16Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 620e20ee16Smrg exit 1 630e20ee16Smrgfi 640e20ee16Smrg 653e6697d4Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 663e6697d4Smrgdepfile=${depfile-`echo "$object" | 673e6697d4Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 680e20ee16Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 690e20ee16Smrg 700e20ee16Smrgrm -f "$tmpdepfile" 710e20ee16Smrg 720e20ee16Smrg# Some modes work just like other modes, but use different flags. We 730e20ee16Smrg# parameterize here, but still list the modes in the big case below, 740e20ee16Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 750e20ee16Smrg# here, because this file can only contain one case statement. 760e20ee16Smrgif test "$depmode" = hp; then 770e20ee16Smrg # HP compiler uses -M and no extra arg. 780e20ee16Smrg gccflag=-M 790e20ee16Smrg depmode=gcc 800e20ee16Smrgfi 810e20ee16Smrg 820e20ee16Smrgif test "$depmode" = dashXmstdout; then 830e20ee16Smrg # This is just like dashmstdout with a different argument. 840e20ee16Smrg dashmflag=-xM 850e20ee16Smrg depmode=dashmstdout 860e20ee16Smrgfi 870e20ee16Smrg 883e6697d4Smrgcygpath_u="cygpath -u -f -" 893e6697d4Smrgif test "$depmode" = msvcmsys; then 903e6697d4Smrg # This is just like msvisualcpp but w/o cygpath translation. 913e6697d4Smrg # Just convert the backslash-escaped backslashes to single forward 923e6697d4Smrg # slashes to satisfy depend.m4 933e6697d4Smrg cygpath_u="sed s,\\\\\\\\,/,g" 943e6697d4Smrg depmode=msvisualcpp 953e6697d4Smrgfi 963e6697d4Smrg 970e20ee16Smrgcase "$depmode" in 980e20ee16Smrggcc3) 990e20ee16Smrg## gcc 3 implements dependency tracking that does exactly what 1000e20ee16Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1010e20ee16Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1023e6697d4Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1033e6697d4Smrg## the command line argument order; so add the flags where they 1043e6697d4Smrg## appear in depend2.am. Note that the slowdown incurred here 1053e6697d4Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1063e6697d4Smrg for arg 1073e6697d4Smrg do 1083e6697d4Smrg case $arg in 1093e6697d4Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1103e6697d4Smrg *) set fnord "$@" "$arg" ;; 1113e6697d4Smrg esac 1123e6697d4Smrg shift # fnord 1133e6697d4Smrg shift # $arg 1143e6697d4Smrg done 1153e6697d4Smrg "$@" 1160e20ee16Smrg stat=$? 1170e20ee16Smrg if test $stat -eq 0; then : 1180e20ee16Smrg else 1190e20ee16Smrg rm -f "$tmpdepfile" 1200e20ee16Smrg exit $stat 1210e20ee16Smrg fi 1220e20ee16Smrg mv "$tmpdepfile" "$depfile" 1230e20ee16Smrg ;; 1240e20ee16Smrg 1250e20ee16Smrggcc) 1260e20ee16Smrg## There are various ways to get dependency output from gcc. Here's 1270e20ee16Smrg## why we pick this rather obscure method: 1280e20ee16Smrg## - Don't want to use -MD because we'd like the dependencies to end 1290e20ee16Smrg## up in a subdir. Having to rename by hand is ugly. 1300e20ee16Smrg## (We might end up doing this anyway to support other compilers.) 1310e20ee16Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1320e20ee16Smrg## -MM, not -M (despite what the docs say). 1330e20ee16Smrg## - Using -M directly means running the compiler twice (even worse 1340e20ee16Smrg## than renaming). 1350e20ee16Smrg if test -z "$gccflag"; then 1360e20ee16Smrg gccflag=-MD, 1370e20ee16Smrg fi 1380e20ee16Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1390e20ee16Smrg stat=$? 1400e20ee16Smrg if test $stat -eq 0; then : 1410e20ee16Smrg else 1420e20ee16Smrg rm -f "$tmpdepfile" 1430e20ee16Smrg exit $stat 1440e20ee16Smrg fi 1450e20ee16Smrg rm -f "$depfile" 1460e20ee16Smrg echo "$object : \\" > "$depfile" 1470e20ee16Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1480e20ee16Smrg## The second -e expression handles DOS-style file names with drive letters. 1490e20ee16Smrg sed -e 's/^[^:]*: / /' \ 1500e20ee16Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1510e20ee16Smrg## This next piece of magic avoids the `deleted header file' problem. 1520e20ee16Smrg## The problem is that when a header file which appears in a .P file 1530e20ee16Smrg## is deleted, the dependency causes make to die (because there is 1540e20ee16Smrg## typically no way to rebuild the header). We avoid this by adding 1550e20ee16Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1560e20ee16Smrg## this for us directly. 1570e20ee16Smrg tr ' ' ' 1580e20ee16Smrg' < "$tmpdepfile" | 1590e20ee16Smrg## Some versions of gcc put a space before the `:'. On the theory 1600e20ee16Smrg## that the space means something, we add a space to the output as 1610e20ee16Smrg## well. 1620e20ee16Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1630e20ee16Smrg## correctly. Breaking it into two sed invocations is a workaround. 1640e20ee16Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1650e20ee16Smrg rm -f "$tmpdepfile" 1660e20ee16Smrg ;; 1670e20ee16Smrg 1680e20ee16Smrghp) 1690e20ee16Smrg # This case exists only to let depend.m4 do its work. It works by 1700e20ee16Smrg # looking at the text of this script. This case will never be run, 1710e20ee16Smrg # since it is checked for above. 1720e20ee16Smrg exit 1 1730e20ee16Smrg ;; 1740e20ee16Smrg 1750e20ee16Smrgsgi) 1760e20ee16Smrg if test "$libtool" = yes; then 1770e20ee16Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1780e20ee16Smrg else 1790e20ee16Smrg "$@" -MDupdate "$tmpdepfile" 1800e20ee16Smrg fi 1810e20ee16Smrg stat=$? 1820e20ee16Smrg if test $stat -eq 0; then : 1830e20ee16Smrg else 1840e20ee16Smrg rm -f "$tmpdepfile" 1850e20ee16Smrg exit $stat 1860e20ee16Smrg fi 1870e20ee16Smrg rm -f "$depfile" 1880e20ee16Smrg 1890e20ee16Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1900e20ee16Smrg echo "$object : \\" > "$depfile" 1910e20ee16Smrg 1920e20ee16Smrg # Clip off the initial element (the dependent). Don't try to be 1930e20ee16Smrg # clever and replace this with sed code, as IRIX sed won't handle 1940e20ee16Smrg # lines with more than a fixed number of characters (4096 in 1950e20ee16Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1960e20ee16Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1970e20ee16Smrg # dependency line. 1980e20ee16Smrg tr ' ' ' 1990e20ee16Smrg' < "$tmpdepfile" \ 2000e20ee16Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2010e20ee16Smrg tr ' 2023e6697d4Smrg' ' ' >> "$depfile" 2033e6697d4Smrg echo >> "$depfile" 2040e20ee16Smrg 2050e20ee16Smrg # The second pass generates a dummy entry for each header file. 2060e20ee16Smrg tr ' ' ' 2070e20ee16Smrg' < "$tmpdepfile" \ 2080e20ee16Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2093e6697d4Smrg >> "$depfile" 2100e20ee16Smrg else 2110e20ee16Smrg # The sourcefile does not contain any dependencies, so just 2120e20ee16Smrg # store a dummy comment line, to avoid errors with the Makefile 2130e20ee16Smrg # "include basename.Plo" scheme. 2140e20ee16Smrg echo "#dummy" > "$depfile" 2150e20ee16Smrg fi 2160e20ee16Smrg rm -f "$tmpdepfile" 2170e20ee16Smrg ;; 2180e20ee16Smrg 2190e20ee16Smrgaix) 2200e20ee16Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2210e20ee16Smrg # in a .u file. In older versions, this file always lives in the 2220e20ee16Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2230e20ee16Smrg # start of each line; $object doesn't have directory information. 2240e20ee16Smrg # Version 6 uses the directory in both cases. 2253e6697d4Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2263e6697d4Smrg test "x$dir" = "x$object" && dir= 2273e6697d4Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2280e20ee16Smrg if test "$libtool" = yes; then 2293e6697d4Smrg tmpdepfile1=$dir$base.u 2303e6697d4Smrg tmpdepfile2=$base.u 2313e6697d4Smrg tmpdepfile3=$dir.libs/$base.u 2320e20ee16Smrg "$@" -Wc,-M 2330e20ee16Smrg else 2343e6697d4Smrg tmpdepfile1=$dir$base.u 2353e6697d4Smrg tmpdepfile2=$dir$base.u 2363e6697d4Smrg tmpdepfile3=$dir$base.u 2370e20ee16Smrg "$@" -M 2380e20ee16Smrg fi 2390e20ee16Smrg stat=$? 2400e20ee16Smrg 2410e20ee16Smrg if test $stat -eq 0; then : 2420e20ee16Smrg else 2433e6697d4Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2440e20ee16Smrg exit $stat 2450e20ee16Smrg fi 2460e20ee16Smrg 2473e6697d4Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2483e6697d4Smrg do 2493e6697d4Smrg test -f "$tmpdepfile" && break 2503e6697d4Smrg done 2510e20ee16Smrg if test -f "$tmpdepfile"; then 2520e20ee16Smrg # Each line is of the form `foo.o: dependent.h'. 2530e20ee16Smrg # Do two passes, one to just change these to 2540e20ee16Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2553e6697d4Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2563e6697d4Smrg # That's a tab and a space in the []. 2573e6697d4Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2580e20ee16Smrg else 2590e20ee16Smrg # The sourcefile does not contain any dependencies, so just 2600e20ee16Smrg # store a dummy comment line, to avoid errors with the Makefile 2610e20ee16Smrg # "include basename.Plo" scheme. 2620e20ee16Smrg echo "#dummy" > "$depfile" 2630e20ee16Smrg fi 2640e20ee16Smrg rm -f "$tmpdepfile" 2650e20ee16Smrg ;; 2660e20ee16Smrg 2670e20ee16Smrgicc) 2680e20ee16Smrg # Intel's C compiler understands `-MD -MF file'. However on 2690e20ee16Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2700e20ee16Smrg # ICC 7.0 will fill foo.d with something like 2710e20ee16Smrg # foo.o: sub/foo.c 2720e20ee16Smrg # foo.o: sub/foo.h 2730e20ee16Smrg # which is wrong. We want: 2740e20ee16Smrg # sub/foo.o: sub/foo.c 2750e20ee16Smrg # sub/foo.o: sub/foo.h 2760e20ee16Smrg # sub/foo.c: 2770e20ee16Smrg # sub/foo.h: 2780e20ee16Smrg # ICC 7.1 will output 2790e20ee16Smrg # foo.o: sub/foo.c sub/foo.h 2800e20ee16Smrg # and will wrap long lines using \ : 2810e20ee16Smrg # foo.o: sub/foo.c ... \ 2820e20ee16Smrg # sub/foo.h ... \ 2830e20ee16Smrg # ... 2840e20ee16Smrg 2850e20ee16Smrg "$@" -MD -MF "$tmpdepfile" 2860e20ee16Smrg stat=$? 2870e20ee16Smrg if test $stat -eq 0; then : 2880e20ee16Smrg else 2890e20ee16Smrg rm -f "$tmpdepfile" 2900e20ee16Smrg exit $stat 2910e20ee16Smrg fi 2920e20ee16Smrg rm -f "$depfile" 2930e20ee16Smrg # Each line is of the form `foo.o: dependent.h', 2940e20ee16Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2950e20ee16Smrg # Do two passes, one to just change these to 2960e20ee16Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2970e20ee16Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2980e20ee16Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2990e20ee16Smrg # correctly. Breaking it into two sed invocations is a workaround. 3000e20ee16Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3010e20ee16Smrg sed -e 's/$/ :/' >> "$depfile" 3020e20ee16Smrg rm -f "$tmpdepfile" 3030e20ee16Smrg ;; 3040e20ee16Smrg 3053e6697d4Smrghp2) 3063e6697d4Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3073e6697d4Smrg # compilers, which have integrated preprocessors. The correct option 3083e6697d4Smrg # to use with these is +Maked; it writes dependencies to a file named 3093e6697d4Smrg # 'foo.d', which lands next to the object file, wherever that 3103e6697d4Smrg # happens to be. 3113e6697d4Smrg # Much of this is similar to the tru64 case; see comments there. 3123e6697d4Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3133e6697d4Smrg test "x$dir" = "x$object" && dir= 3143e6697d4Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3153e6697d4Smrg if test "$libtool" = yes; then 3163e6697d4Smrg tmpdepfile1=$dir$base.d 3173e6697d4Smrg tmpdepfile2=$dir.libs/$base.d 3183e6697d4Smrg "$@" -Wc,+Maked 3193e6697d4Smrg else 3203e6697d4Smrg tmpdepfile1=$dir$base.d 3213e6697d4Smrg tmpdepfile2=$dir$base.d 3223e6697d4Smrg "$@" +Maked 3233e6697d4Smrg fi 3243e6697d4Smrg stat=$? 3253e6697d4Smrg if test $stat -eq 0; then : 3263e6697d4Smrg else 3273e6697d4Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3283e6697d4Smrg exit $stat 3293e6697d4Smrg fi 3303e6697d4Smrg 3313e6697d4Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3323e6697d4Smrg do 3333e6697d4Smrg test -f "$tmpdepfile" && break 3343e6697d4Smrg done 3353e6697d4Smrg if test -f "$tmpdepfile"; then 3363e6697d4Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3373e6697d4Smrg # Add `dependent.h:' lines. 3383e6697d4Smrg sed -ne '2,${ 3393e6697d4Smrg s/^ *// 3403e6697d4Smrg s/ \\*$// 3413e6697d4Smrg s/$/:/ 3423e6697d4Smrg p 3433e6697d4Smrg }' "$tmpdepfile" >> "$depfile" 3443e6697d4Smrg else 3453e6697d4Smrg echo "#dummy" > "$depfile" 3463e6697d4Smrg fi 3473e6697d4Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3483e6697d4Smrg ;; 3493e6697d4Smrg 3500e20ee16Smrgtru64) 3510e20ee16Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 3520e20ee16Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3530e20ee16Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3540e20ee16Smrg # dependencies in `foo.d' instead, so we check for that too. 3550e20ee16Smrg # Subdirectories are respected. 3560e20ee16Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3570e20ee16Smrg test "x$dir" = "x$object" && dir= 3580e20ee16Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3590e20ee16Smrg 3600e20ee16Smrg if test "$libtool" = yes; then 3613e6697d4Smrg # With Tru64 cc, shared objects can also be used to make a 3623e6697d4Smrg # static library. This mechanism is used in libtool 1.4 series to 3633e6697d4Smrg # handle both shared and static libraries in a single compilation. 3643e6697d4Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3653e6697d4Smrg # 3663e6697d4Smrg # With libtool 1.5 this exception was removed, and libtool now 3673e6697d4Smrg # generates 2 separate objects for the 2 libraries. These two 3683e6697d4Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3693e6697d4Smrg # in $dir$base.o.d. We have to check for both files, because 3703e6697d4Smrg # one of the two compilations can be disabled. We should prefer 3713e6697d4Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3723e6697d4Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3733e6697d4Smrg # the former would cause a distcleancheck panic. 3743e6697d4Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3753e6697d4Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3763e6697d4Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3773e6697d4Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3780e20ee16Smrg "$@" -Wc,-MD 3790e20ee16Smrg else 3803e6697d4Smrg tmpdepfile1=$dir$base.o.d 3813e6697d4Smrg tmpdepfile2=$dir$base.d 3823e6697d4Smrg tmpdepfile3=$dir$base.d 3833e6697d4Smrg tmpdepfile4=$dir$base.d 3840e20ee16Smrg "$@" -MD 3850e20ee16Smrg fi 3860e20ee16Smrg 3870e20ee16Smrg stat=$? 3880e20ee16Smrg if test $stat -eq 0; then : 3890e20ee16Smrg else 3903e6697d4Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3910e20ee16Smrg exit $stat 3920e20ee16Smrg fi 3930e20ee16Smrg 3943e6697d4Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3953e6697d4Smrg do 3963e6697d4Smrg test -f "$tmpdepfile" && break 3973e6697d4Smrg done 3980e20ee16Smrg if test -f "$tmpdepfile"; then 3990e20ee16Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4000e20ee16Smrg # That's a tab and a space in the []. 4010e20ee16Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4020e20ee16Smrg else 4030e20ee16Smrg echo "#dummy" > "$depfile" 4040e20ee16Smrg fi 4050e20ee16Smrg rm -f "$tmpdepfile" 4060e20ee16Smrg ;; 4070e20ee16Smrg 4080e20ee16Smrg#nosideeffect) 4090e20ee16Smrg # This comment above is used by automake to tell side-effect 4100e20ee16Smrg # dependency tracking mechanisms from slower ones. 4110e20ee16Smrg 4120e20ee16Smrgdashmstdout) 4130e20ee16Smrg # Important note: in order to support this mode, a compiler *must* 4140e20ee16Smrg # always write the preprocessed file to stdout, regardless of -o. 4150e20ee16Smrg "$@" || exit $? 4160e20ee16Smrg 4170e20ee16Smrg # Remove the call to Libtool. 4180e20ee16Smrg if test "$libtool" = yes; then 4193e6697d4Smrg while test "X$1" != 'X--mode=compile'; do 4200e20ee16Smrg shift 4210e20ee16Smrg done 4220e20ee16Smrg shift 4230e20ee16Smrg fi 4240e20ee16Smrg 4250e20ee16Smrg # Remove `-o $object'. 4260e20ee16Smrg IFS=" " 4270e20ee16Smrg for arg 4280e20ee16Smrg do 4290e20ee16Smrg case $arg in 4300e20ee16Smrg -o) 4310e20ee16Smrg shift 4320e20ee16Smrg ;; 4330e20ee16Smrg $object) 4340e20ee16Smrg shift 4350e20ee16Smrg ;; 4360e20ee16Smrg *) 4370e20ee16Smrg set fnord "$@" "$arg" 4380e20ee16Smrg shift # fnord 4390e20ee16Smrg shift # $arg 4400e20ee16Smrg ;; 4410e20ee16Smrg esac 4420e20ee16Smrg done 4430e20ee16Smrg 4440e20ee16Smrg test -z "$dashmflag" && dashmflag=-M 4450e20ee16Smrg # Require at least two characters before searching for `:' 4460e20ee16Smrg # in the target name. This is to cope with DOS-style filenames: 4470e20ee16Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4480e20ee16Smrg "$@" $dashmflag | 4490e20ee16Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4500e20ee16Smrg rm -f "$depfile" 4510e20ee16Smrg cat < "$tmpdepfile" > "$depfile" 4520e20ee16Smrg tr ' ' ' 4530e20ee16Smrg' < "$tmpdepfile" | \ 4540e20ee16Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4550e20ee16Smrg## correctly. Breaking it into two sed invocations is a workaround. 4560e20ee16Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4570e20ee16Smrg rm -f "$tmpdepfile" 4580e20ee16Smrg ;; 4590e20ee16Smrg 4600e20ee16SmrgdashXmstdout) 4610e20ee16Smrg # This case only exists to satisfy depend.m4. It is never actually 4620e20ee16Smrg # run, as this mode is specially recognized in the preamble. 4630e20ee16Smrg exit 1 4640e20ee16Smrg ;; 4650e20ee16Smrg 4660e20ee16Smrgmakedepend) 4670e20ee16Smrg "$@" || exit $? 4680e20ee16Smrg # Remove any Libtool call 4690e20ee16Smrg if test "$libtool" = yes; then 4703e6697d4Smrg while test "X$1" != 'X--mode=compile'; do 4710e20ee16Smrg shift 4720e20ee16Smrg done 4730e20ee16Smrg shift 4740e20ee16Smrg fi 4750e20ee16Smrg # X makedepend 4760e20ee16Smrg shift 4773e6697d4Smrg cleared=no eat=no 4783e6697d4Smrg for arg 4793e6697d4Smrg do 4800e20ee16Smrg case $cleared in 4810e20ee16Smrg no) 4820e20ee16Smrg set ""; shift 4830e20ee16Smrg cleared=yes ;; 4840e20ee16Smrg esac 4853e6697d4Smrg if test $eat = yes; then 4863e6697d4Smrg eat=no 4873e6697d4Smrg continue 4883e6697d4Smrg fi 4890e20ee16Smrg case "$arg" in 4900e20ee16Smrg -D*|-I*) 4910e20ee16Smrg set fnord "$@" "$arg"; shift ;; 4920e20ee16Smrg # Strip any option that makedepend may not understand. Remove 4930e20ee16Smrg # the object too, otherwise makedepend will parse it as a source file. 4943e6697d4Smrg -arch) 4953e6697d4Smrg eat=yes ;; 4960e20ee16Smrg -*|$object) 4970e20ee16Smrg ;; 4980e20ee16Smrg *) 4990e20ee16Smrg set fnord "$@" "$arg"; shift ;; 5000e20ee16Smrg esac 5010e20ee16Smrg done 5023e6697d4Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5030e20ee16Smrg touch "$tmpdepfile" 5040e20ee16Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5050e20ee16Smrg rm -f "$depfile" 5060e20ee16Smrg cat < "$tmpdepfile" > "$depfile" 5070e20ee16Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5080e20ee16Smrg' | \ 5090e20ee16Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 5100e20ee16Smrg## correctly. Breaking it into two sed invocations is a workaround. 5110e20ee16Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5120e20ee16Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5130e20ee16Smrg ;; 5140e20ee16Smrg 5150e20ee16Smrgcpp) 5160e20ee16Smrg # Important note: in order to support this mode, a compiler *must* 5170e20ee16Smrg # always write the preprocessed file to stdout. 5180e20ee16Smrg "$@" || exit $? 5190e20ee16Smrg 5200e20ee16Smrg # Remove the call to Libtool. 5210e20ee16Smrg if test "$libtool" = yes; then 5223e6697d4Smrg while test "X$1" != 'X--mode=compile'; do 5230e20ee16Smrg shift 5240e20ee16Smrg done 5250e20ee16Smrg shift 5260e20ee16Smrg fi 5270e20ee16Smrg 5280e20ee16Smrg # Remove `-o $object'. 5290e20ee16Smrg IFS=" " 5300e20ee16Smrg for arg 5310e20ee16Smrg do 5320e20ee16Smrg case $arg in 5330e20ee16Smrg -o) 5340e20ee16Smrg shift 5350e20ee16Smrg ;; 5360e20ee16Smrg $object) 5370e20ee16Smrg shift 5380e20ee16Smrg ;; 5390e20ee16Smrg *) 5400e20ee16Smrg set fnord "$@" "$arg" 5410e20ee16Smrg shift # fnord 5420e20ee16Smrg shift # $arg 5430e20ee16Smrg ;; 5440e20ee16Smrg esac 5450e20ee16Smrg done 5460e20ee16Smrg 5470e20ee16Smrg "$@" -E | 5483e6697d4Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5493e6697d4Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5500e20ee16Smrg sed '$ s: \\$::' > "$tmpdepfile" 5510e20ee16Smrg rm -f "$depfile" 5520e20ee16Smrg echo "$object : \\" > "$depfile" 5530e20ee16Smrg cat < "$tmpdepfile" >> "$depfile" 5540e20ee16Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5550e20ee16Smrg rm -f "$tmpdepfile" 5560e20ee16Smrg ;; 5570e20ee16Smrg 5580e20ee16Smrgmsvisualcpp) 5590e20ee16Smrg # Important note: in order to support this mode, a compiler *must* 5603e6697d4Smrg # always write the preprocessed file to stdout. 5610e20ee16Smrg "$@" || exit $? 5623e6697d4Smrg 5633e6697d4Smrg # Remove the call to Libtool. 5643e6697d4Smrg if test "$libtool" = yes; then 5653e6697d4Smrg while test "X$1" != 'X--mode=compile'; do 5663e6697d4Smrg shift 5673e6697d4Smrg done 5683e6697d4Smrg shift 5693e6697d4Smrg fi 5703e6697d4Smrg 5710e20ee16Smrg IFS=" " 5720e20ee16Smrg for arg 5730e20ee16Smrg do 5740e20ee16Smrg case "$arg" in 5753e6697d4Smrg -o) 5763e6697d4Smrg shift 5773e6697d4Smrg ;; 5783e6697d4Smrg $object) 5793e6697d4Smrg shift 5803e6697d4Smrg ;; 5810e20ee16Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5820e20ee16Smrg set fnord "$@" 5830e20ee16Smrg shift 5840e20ee16Smrg shift 5850e20ee16Smrg ;; 5860e20ee16Smrg *) 5870e20ee16Smrg set fnord "$@" "$arg" 5880e20ee16Smrg shift 5890e20ee16Smrg shift 5900e20ee16Smrg ;; 5910e20ee16Smrg esac 5920e20ee16Smrg done 5933e6697d4Smrg "$@" -E 2>/dev/null | 5943e6697d4Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5950e20ee16Smrg rm -f "$depfile" 5960e20ee16Smrg echo "$object : \\" > "$depfile" 5973e6697d4Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5980e20ee16Smrg echo " " >> "$depfile" 5993e6697d4Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6000e20ee16Smrg rm -f "$tmpdepfile" 6010e20ee16Smrg ;; 6020e20ee16Smrg 6033e6697d4Smrgmsvcmsys) 6043e6697d4Smrg # This case exists only to let depend.m4 do its work. It works by 6053e6697d4Smrg # looking at the text of this script. This case will never be run, 6063e6697d4Smrg # since it is checked for above. 6073e6697d4Smrg exit 1 6083e6697d4Smrg ;; 6093e6697d4Smrg 6100e20ee16Smrgnone) 6110e20ee16Smrg exec "$@" 6120e20ee16Smrg ;; 6130e20ee16Smrg 6140e20ee16Smrg*) 6150e20ee16Smrg echo "Unknown depmode $depmode" 1>&2 6160e20ee16Smrg exit 1 6170e20ee16Smrg ;; 6180e20ee16Smrgesac 6190e20ee16Smrg 6200e20ee16Smrgexit 0 6213e6697d4Smrg 6223e6697d4Smrg# Local Variables: 6233e6697d4Smrg# mode: shell-script 6243e6697d4Smrg# sh-indentation: 2 6253e6697d4Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6263e6697d4Smrg# time-stamp-start: "scriptversion=" 6273e6697d4Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6283e6697d4Smrg# time-stamp-time-zone: "UTC" 6293e6697d4Smrg# time-stamp-end: "; # UTC" 6303e6697d4Smrg# End: 631