depcomp revision 1a650d1e
18108eb18Smrg#! /bin/sh 28108eb18Smrg# depcomp - compile a program generating dependencies as side-effects 31a650d1eSmrg 41a650d1eSmrgscriptversion=2009-04-28.21; # UTC 51a650d1eSmrg 61a650d1eSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 71a650d1eSmrg# Software Foundation, Inc. 88108eb18Smrg 98108eb18Smrg# This program is free software; you can redistribute it and/or modify 108108eb18Smrg# it under the terms of the GNU General Public License as published by 118108eb18Smrg# the Free Software Foundation; either version 2, or (at your option) 128108eb18Smrg# any later version. 138108eb18Smrg 148108eb18Smrg# This program is distributed in the hope that it will be useful, 158108eb18Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 168108eb18Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 178108eb18Smrg# GNU General Public License for more details. 188108eb18Smrg 198108eb18Smrg# You should have received a copy of the GNU General Public License 201a650d1eSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 218108eb18Smrg 228108eb18Smrg# As a special exception to the GNU General Public License, if you 238108eb18Smrg# distribute this file as part of a program that contains a 248108eb18Smrg# configuration script generated by Autoconf, you may include it under 258108eb18Smrg# the same distribution terms that you use for the rest of that program. 268108eb18Smrg 278108eb18Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 288108eb18Smrg 291a650d1eSmrgcase $1 in 301a650d1eSmrg '') 311a650d1eSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 321a650d1eSmrg exit 1; 331a650d1eSmrg ;; 341a650d1eSmrg -h | --h*) 351a650d1eSmrg cat <<\EOF 361a650d1eSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 371a650d1eSmrg 381a650d1eSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 391a650d1eSmrgas side-effects. 401a650d1eSmrg 411a650d1eSmrgEnvironment variables: 421a650d1eSmrg depmode Dependency tracking mode. 431a650d1eSmrg source Source file read by `PROGRAMS ARGS'. 441a650d1eSmrg object Object file output by `PROGRAMS ARGS'. 451a650d1eSmrg DEPDIR directory where to store dependencies. 461a650d1eSmrg depfile Dependency file to output. 471a650d1eSmrg tmpdepfile Temporary file to use when outputing dependencies. 481a650d1eSmrg libtool Whether libtool is used (yes/no). 491a650d1eSmrg 501a650d1eSmrgReport bugs to <bug-automake@gnu.org>. 511a650d1eSmrgEOF 521a650d1eSmrg exit $? 531a650d1eSmrg ;; 541a650d1eSmrg -v | --v*) 551a650d1eSmrg echo "depcomp $scriptversion" 561a650d1eSmrg exit $? 571a650d1eSmrg ;; 581a650d1eSmrgesac 591a650d1eSmrg 608108eb18Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 618108eb18Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 628108eb18Smrg exit 1 638108eb18Smrgfi 648108eb18Smrg 651a650d1eSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 661a650d1eSmrgdepfile=${depfile-`echo "$object" | 671a650d1eSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 688108eb18Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 698108eb18Smrg 708108eb18Smrgrm -f "$tmpdepfile" 718108eb18Smrg 728108eb18Smrg# Some modes work just like other modes, but use different flags. We 738108eb18Smrg# parameterize here, but still list the modes in the big case below, 748108eb18Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 758108eb18Smrg# here, because this file can only contain one case statement. 768108eb18Smrgif test "$depmode" = hp; then 778108eb18Smrg # HP compiler uses -M and no extra arg. 788108eb18Smrg gccflag=-M 798108eb18Smrg depmode=gcc 808108eb18Smrgfi 818108eb18Smrg 828108eb18Smrgif test "$depmode" = dashXmstdout; then 838108eb18Smrg # This is just like dashmstdout with a different argument. 848108eb18Smrg dashmflag=-xM 858108eb18Smrg depmode=dashmstdout 868108eb18Smrgfi 878108eb18Smrg 881a650d1eSmrgcygpath_u="cygpath -u -f -" 891a650d1eSmrgif test "$depmode" = msvcmsys; then 901a650d1eSmrg # This is just like msvisualcpp but w/o cygpath translation. 911a650d1eSmrg # Just convert the backslash-escaped backslashes to single forward 921a650d1eSmrg # slashes to satisfy depend.m4 931a650d1eSmrg cygpath_u="sed s,\\\\\\\\,/,g" 941a650d1eSmrg depmode=msvisualcpp 951a650d1eSmrgfi 961a650d1eSmrg 978108eb18Smrgcase "$depmode" in 988108eb18Smrggcc3) 998108eb18Smrg## gcc 3 implements dependency tracking that does exactly what 1008108eb18Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1018108eb18Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1021a650d1eSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1031a650d1eSmrg## the command line argument order; so add the flags where they 1041a650d1eSmrg## appear in depend2.am. Note that the slowdown incurred here 1051a650d1eSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1061a650d1eSmrg for arg 1071a650d1eSmrg do 1081a650d1eSmrg case $arg in 1091a650d1eSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1101a650d1eSmrg *) set fnord "$@" "$arg" ;; 1111a650d1eSmrg esac 1121a650d1eSmrg shift # fnord 1131a650d1eSmrg shift # $arg 1141a650d1eSmrg done 1151a650d1eSmrg "$@" 1168108eb18Smrg stat=$? 1178108eb18Smrg if test $stat -eq 0; then : 1188108eb18Smrg else 1198108eb18Smrg rm -f "$tmpdepfile" 1208108eb18Smrg exit $stat 1218108eb18Smrg fi 1228108eb18Smrg mv "$tmpdepfile" "$depfile" 1238108eb18Smrg ;; 1248108eb18Smrg 1258108eb18Smrggcc) 1268108eb18Smrg## There are various ways to get dependency output from gcc. Here's 1278108eb18Smrg## why we pick this rather obscure method: 1288108eb18Smrg## - Don't want to use -MD because we'd like the dependencies to end 1298108eb18Smrg## up in a subdir. Having to rename by hand is ugly. 1308108eb18Smrg## (We might end up doing this anyway to support other compilers.) 1318108eb18Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1328108eb18Smrg## -MM, not -M (despite what the docs say). 1338108eb18Smrg## - Using -M directly means running the compiler twice (even worse 1348108eb18Smrg## than renaming). 1358108eb18Smrg if test -z "$gccflag"; then 1368108eb18Smrg gccflag=-MD, 1378108eb18Smrg fi 1388108eb18Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1398108eb18Smrg stat=$? 1408108eb18Smrg if test $stat -eq 0; then : 1418108eb18Smrg else 1428108eb18Smrg rm -f "$tmpdepfile" 1438108eb18Smrg exit $stat 1448108eb18Smrg fi 1458108eb18Smrg rm -f "$depfile" 1468108eb18Smrg echo "$object : \\" > "$depfile" 1478108eb18Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1488108eb18Smrg## The second -e expression handles DOS-style file names with drive letters. 1498108eb18Smrg sed -e 's/^[^:]*: / /' \ 1508108eb18Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1518108eb18Smrg## This next piece of magic avoids the `deleted header file' problem. 1528108eb18Smrg## The problem is that when a header file which appears in a .P file 1538108eb18Smrg## is deleted, the dependency causes make to die (because there is 1548108eb18Smrg## typically no way to rebuild the header). We avoid this by adding 1558108eb18Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1568108eb18Smrg## this for us directly. 1578108eb18Smrg tr ' ' ' 1588108eb18Smrg' < "$tmpdepfile" | 1598108eb18Smrg## Some versions of gcc put a space before the `:'. On the theory 1608108eb18Smrg## that the space means something, we add a space to the output as 1618108eb18Smrg## well. 1628108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1638108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 1648108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1658108eb18Smrg rm -f "$tmpdepfile" 1668108eb18Smrg ;; 1678108eb18Smrg 1688108eb18Smrghp) 1698108eb18Smrg # This case exists only to let depend.m4 do its work. It works by 1708108eb18Smrg # looking at the text of this script. This case will never be run, 1718108eb18Smrg # since it is checked for above. 1728108eb18Smrg exit 1 1738108eb18Smrg ;; 1748108eb18Smrg 1758108eb18Smrgsgi) 1768108eb18Smrg if test "$libtool" = yes; then 1778108eb18Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1788108eb18Smrg else 1798108eb18Smrg "$@" -MDupdate "$tmpdepfile" 1808108eb18Smrg fi 1818108eb18Smrg stat=$? 1828108eb18Smrg if test $stat -eq 0; then : 1838108eb18Smrg else 1848108eb18Smrg rm -f "$tmpdepfile" 1858108eb18Smrg exit $stat 1868108eb18Smrg fi 1878108eb18Smrg rm -f "$depfile" 1888108eb18Smrg 1898108eb18Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1908108eb18Smrg echo "$object : \\" > "$depfile" 1918108eb18Smrg 1928108eb18Smrg # Clip off the initial element (the dependent). Don't try to be 1938108eb18Smrg # clever and replace this with sed code, as IRIX sed won't handle 1948108eb18Smrg # lines with more than a fixed number of characters (4096 in 1958108eb18Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1968108eb18Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1978108eb18Smrg # dependency line. 1988108eb18Smrg tr ' ' ' 1998108eb18Smrg' < "$tmpdepfile" \ 2008108eb18Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2018108eb18Smrg tr ' 2021a650d1eSmrg' ' ' >> "$depfile" 2031a650d1eSmrg echo >> "$depfile" 2048108eb18Smrg 2058108eb18Smrg # The second pass generates a dummy entry for each header file. 2068108eb18Smrg tr ' ' ' 2078108eb18Smrg' < "$tmpdepfile" \ 2088108eb18Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2091a650d1eSmrg >> "$depfile" 2108108eb18Smrg else 2118108eb18Smrg # The sourcefile does not contain any dependencies, so just 2128108eb18Smrg # store a dummy comment line, to avoid errors with the Makefile 2138108eb18Smrg # "include basename.Plo" scheme. 2148108eb18Smrg echo "#dummy" > "$depfile" 2158108eb18Smrg fi 2168108eb18Smrg rm -f "$tmpdepfile" 2178108eb18Smrg ;; 2188108eb18Smrg 2198108eb18Smrgaix) 2208108eb18Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2218108eb18Smrg # in a .u file. In older versions, this file always lives in the 2228108eb18Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2238108eb18Smrg # start of each line; $object doesn't have directory information. 2248108eb18Smrg # Version 6 uses the directory in both cases. 2251a650d1eSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2261a650d1eSmrg test "x$dir" = "x$object" && dir= 2271a650d1eSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2288108eb18Smrg if test "$libtool" = yes; then 2291a650d1eSmrg tmpdepfile1=$dir$base.u 2301a650d1eSmrg tmpdepfile2=$base.u 2311a650d1eSmrg tmpdepfile3=$dir.libs/$base.u 2328108eb18Smrg "$@" -Wc,-M 2338108eb18Smrg else 2341a650d1eSmrg tmpdepfile1=$dir$base.u 2351a650d1eSmrg tmpdepfile2=$dir$base.u 2361a650d1eSmrg tmpdepfile3=$dir$base.u 2378108eb18Smrg "$@" -M 2388108eb18Smrg fi 2398108eb18Smrg stat=$? 2408108eb18Smrg 2418108eb18Smrg if test $stat -eq 0; then : 2428108eb18Smrg else 2431a650d1eSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2448108eb18Smrg exit $stat 2458108eb18Smrg fi 2468108eb18Smrg 2471a650d1eSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2481a650d1eSmrg do 2491a650d1eSmrg test -f "$tmpdepfile" && break 2501a650d1eSmrg done 2518108eb18Smrg if test -f "$tmpdepfile"; then 2528108eb18Smrg # Each line is of the form `foo.o: dependent.h'. 2538108eb18Smrg # Do two passes, one to just change these to 2548108eb18Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2551a650d1eSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2561a650d1eSmrg # That's a tab and a space in the []. 2571a650d1eSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2588108eb18Smrg else 2598108eb18Smrg # The sourcefile does not contain any dependencies, so just 2608108eb18Smrg # store a dummy comment line, to avoid errors with the Makefile 2618108eb18Smrg # "include basename.Plo" scheme. 2628108eb18Smrg echo "#dummy" > "$depfile" 2638108eb18Smrg fi 2648108eb18Smrg rm -f "$tmpdepfile" 2658108eb18Smrg ;; 2668108eb18Smrg 2678108eb18Smrgicc) 2688108eb18Smrg # Intel's C compiler understands `-MD -MF file'. However on 2698108eb18Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2708108eb18Smrg # ICC 7.0 will fill foo.d with something like 2718108eb18Smrg # foo.o: sub/foo.c 2728108eb18Smrg # foo.o: sub/foo.h 2738108eb18Smrg # which is wrong. We want: 2748108eb18Smrg # sub/foo.o: sub/foo.c 2758108eb18Smrg # sub/foo.o: sub/foo.h 2768108eb18Smrg # sub/foo.c: 2778108eb18Smrg # sub/foo.h: 2788108eb18Smrg # ICC 7.1 will output 2798108eb18Smrg # foo.o: sub/foo.c sub/foo.h 2808108eb18Smrg # and will wrap long lines using \ : 2818108eb18Smrg # foo.o: sub/foo.c ... \ 2828108eb18Smrg # sub/foo.h ... \ 2838108eb18Smrg # ... 2848108eb18Smrg 2858108eb18Smrg "$@" -MD -MF "$tmpdepfile" 2868108eb18Smrg stat=$? 2878108eb18Smrg if test $stat -eq 0; then : 2888108eb18Smrg else 2898108eb18Smrg rm -f "$tmpdepfile" 2908108eb18Smrg exit $stat 2918108eb18Smrg fi 2928108eb18Smrg rm -f "$depfile" 2938108eb18Smrg # Each line is of the form `foo.o: dependent.h', 2948108eb18Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2958108eb18Smrg # Do two passes, one to just change these to 2968108eb18Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2978108eb18Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2988108eb18Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2998108eb18Smrg # correctly. Breaking it into two sed invocations is a workaround. 3008108eb18Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3018108eb18Smrg sed -e 's/$/ :/' >> "$depfile" 3028108eb18Smrg rm -f "$tmpdepfile" 3038108eb18Smrg ;; 3048108eb18Smrg 3051a650d1eSmrghp2) 3061a650d1eSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3071a650d1eSmrg # compilers, which have integrated preprocessors. The correct option 3081a650d1eSmrg # to use with these is +Maked; it writes dependencies to a file named 3091a650d1eSmrg # 'foo.d', which lands next to the object file, wherever that 3101a650d1eSmrg # happens to be. 3111a650d1eSmrg # Much of this is similar to the tru64 case; see comments there. 3121a650d1eSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3131a650d1eSmrg test "x$dir" = "x$object" && dir= 3141a650d1eSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3151a650d1eSmrg if test "$libtool" = yes; then 3161a650d1eSmrg tmpdepfile1=$dir$base.d 3171a650d1eSmrg tmpdepfile2=$dir.libs/$base.d 3181a650d1eSmrg "$@" -Wc,+Maked 3191a650d1eSmrg else 3201a650d1eSmrg tmpdepfile1=$dir$base.d 3211a650d1eSmrg tmpdepfile2=$dir$base.d 3221a650d1eSmrg "$@" +Maked 3231a650d1eSmrg fi 3241a650d1eSmrg stat=$? 3251a650d1eSmrg if test $stat -eq 0; then : 3261a650d1eSmrg else 3271a650d1eSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3281a650d1eSmrg exit $stat 3291a650d1eSmrg fi 3301a650d1eSmrg 3311a650d1eSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3321a650d1eSmrg do 3331a650d1eSmrg test -f "$tmpdepfile" && break 3341a650d1eSmrg done 3351a650d1eSmrg if test -f "$tmpdepfile"; then 3361a650d1eSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3371a650d1eSmrg # Add `dependent.h:' lines. 3381a650d1eSmrg sed -ne '2,${ 3391a650d1eSmrg s/^ *// 3401a650d1eSmrg s/ \\*$// 3411a650d1eSmrg s/$/:/ 3421a650d1eSmrg p 3431a650d1eSmrg }' "$tmpdepfile" >> "$depfile" 3441a650d1eSmrg else 3451a650d1eSmrg echo "#dummy" > "$depfile" 3461a650d1eSmrg fi 3471a650d1eSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3481a650d1eSmrg ;; 3491a650d1eSmrg 3508108eb18Smrgtru64) 3518108eb18Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 3528108eb18Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3538108eb18Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3548108eb18Smrg # dependencies in `foo.d' instead, so we check for that too. 3558108eb18Smrg # Subdirectories are respected. 3568108eb18Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3578108eb18Smrg test "x$dir" = "x$object" && dir= 3588108eb18Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3598108eb18Smrg 3608108eb18Smrg if test "$libtool" = yes; then 3611a650d1eSmrg # With Tru64 cc, shared objects can also be used to make a 3621a650d1eSmrg # static library. This mechanism is used in libtool 1.4 series to 3631a650d1eSmrg # handle both shared and static libraries in a single compilation. 3641a650d1eSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3651a650d1eSmrg # 3661a650d1eSmrg # With libtool 1.5 this exception was removed, and libtool now 3671a650d1eSmrg # generates 2 separate objects for the 2 libraries. These two 3681a650d1eSmrg # compilations output dependencies in $dir.libs/$base.o.d and 3691a650d1eSmrg # in $dir$base.o.d. We have to check for both files, because 3701a650d1eSmrg # one of the two compilations can be disabled. We should prefer 3711a650d1eSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3721a650d1eSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3731a650d1eSmrg # the former would cause a distcleancheck panic. 3741a650d1eSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3751a650d1eSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3761a650d1eSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3771a650d1eSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3788108eb18Smrg "$@" -Wc,-MD 3798108eb18Smrg else 3801a650d1eSmrg tmpdepfile1=$dir$base.o.d 3811a650d1eSmrg tmpdepfile2=$dir$base.d 3821a650d1eSmrg tmpdepfile3=$dir$base.d 3831a650d1eSmrg tmpdepfile4=$dir$base.d 3848108eb18Smrg "$@" -MD 3858108eb18Smrg fi 3868108eb18Smrg 3878108eb18Smrg stat=$? 3888108eb18Smrg if test $stat -eq 0; then : 3898108eb18Smrg else 3901a650d1eSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3918108eb18Smrg exit $stat 3928108eb18Smrg fi 3938108eb18Smrg 3941a650d1eSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3951a650d1eSmrg do 3961a650d1eSmrg test -f "$tmpdepfile" && break 3971a650d1eSmrg done 3988108eb18Smrg if test -f "$tmpdepfile"; then 3998108eb18Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4008108eb18Smrg # That's a tab and a space in the []. 4018108eb18Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4028108eb18Smrg else 4038108eb18Smrg echo "#dummy" > "$depfile" 4048108eb18Smrg fi 4058108eb18Smrg rm -f "$tmpdepfile" 4068108eb18Smrg ;; 4078108eb18Smrg 4088108eb18Smrg#nosideeffect) 4098108eb18Smrg # This comment above is used by automake to tell side-effect 4108108eb18Smrg # dependency tracking mechanisms from slower ones. 4118108eb18Smrg 4128108eb18Smrgdashmstdout) 4138108eb18Smrg # Important note: in order to support this mode, a compiler *must* 4148108eb18Smrg # always write the preprocessed file to stdout, regardless of -o. 4158108eb18Smrg "$@" || exit $? 4168108eb18Smrg 4178108eb18Smrg # Remove the call to Libtool. 4188108eb18Smrg if test "$libtool" = yes; then 4191a650d1eSmrg while test "X$1" != 'X--mode=compile'; do 4208108eb18Smrg shift 4218108eb18Smrg done 4228108eb18Smrg shift 4238108eb18Smrg fi 4248108eb18Smrg 4258108eb18Smrg # Remove `-o $object'. 4268108eb18Smrg IFS=" " 4278108eb18Smrg for arg 4288108eb18Smrg do 4298108eb18Smrg case $arg in 4308108eb18Smrg -o) 4318108eb18Smrg shift 4328108eb18Smrg ;; 4338108eb18Smrg $object) 4348108eb18Smrg shift 4358108eb18Smrg ;; 4368108eb18Smrg *) 4378108eb18Smrg set fnord "$@" "$arg" 4388108eb18Smrg shift # fnord 4398108eb18Smrg shift # $arg 4408108eb18Smrg ;; 4418108eb18Smrg esac 4428108eb18Smrg done 4438108eb18Smrg 4448108eb18Smrg test -z "$dashmflag" && dashmflag=-M 4458108eb18Smrg # Require at least two characters before searching for `:' 4468108eb18Smrg # in the target name. This is to cope with DOS-style filenames: 4478108eb18Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4488108eb18Smrg "$@" $dashmflag | 4498108eb18Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4508108eb18Smrg rm -f "$depfile" 4518108eb18Smrg cat < "$tmpdepfile" > "$depfile" 4528108eb18Smrg tr ' ' ' 4538108eb18Smrg' < "$tmpdepfile" | \ 4548108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4558108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 4568108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4578108eb18Smrg rm -f "$tmpdepfile" 4588108eb18Smrg ;; 4598108eb18Smrg 4608108eb18SmrgdashXmstdout) 4618108eb18Smrg # This case only exists to satisfy depend.m4. It is never actually 4628108eb18Smrg # run, as this mode is specially recognized in the preamble. 4638108eb18Smrg exit 1 4648108eb18Smrg ;; 4658108eb18Smrg 4668108eb18Smrgmakedepend) 4678108eb18Smrg "$@" || exit $? 4688108eb18Smrg # Remove any Libtool call 4698108eb18Smrg if test "$libtool" = yes; then 4701a650d1eSmrg while test "X$1" != 'X--mode=compile'; do 4718108eb18Smrg shift 4728108eb18Smrg done 4738108eb18Smrg shift 4748108eb18Smrg fi 4758108eb18Smrg # X makedepend 4768108eb18Smrg shift 4771a650d1eSmrg cleared=no eat=no 4781a650d1eSmrg for arg 4791a650d1eSmrg do 4808108eb18Smrg case $cleared in 4818108eb18Smrg no) 4828108eb18Smrg set ""; shift 4838108eb18Smrg cleared=yes ;; 4848108eb18Smrg esac 4851a650d1eSmrg if test $eat = yes; then 4861a650d1eSmrg eat=no 4871a650d1eSmrg continue 4881a650d1eSmrg fi 4898108eb18Smrg case "$arg" in 4908108eb18Smrg -D*|-I*) 4918108eb18Smrg set fnord "$@" "$arg"; shift ;; 4928108eb18Smrg # Strip any option that makedepend may not understand. Remove 4938108eb18Smrg # the object too, otherwise makedepend will parse it as a source file. 4941a650d1eSmrg -arch) 4951a650d1eSmrg eat=yes ;; 4968108eb18Smrg -*|$object) 4978108eb18Smrg ;; 4988108eb18Smrg *) 4998108eb18Smrg set fnord "$@" "$arg"; shift ;; 5008108eb18Smrg esac 5018108eb18Smrg done 5021a650d1eSmrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5038108eb18Smrg touch "$tmpdepfile" 5048108eb18Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5058108eb18Smrg rm -f "$depfile" 5068108eb18Smrg cat < "$tmpdepfile" > "$depfile" 5078108eb18Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5088108eb18Smrg' | \ 5098108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 5108108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 5118108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5128108eb18Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5138108eb18Smrg ;; 5148108eb18Smrg 5158108eb18Smrgcpp) 5168108eb18Smrg # Important note: in order to support this mode, a compiler *must* 5178108eb18Smrg # always write the preprocessed file to stdout. 5188108eb18Smrg "$@" || exit $? 5198108eb18Smrg 5208108eb18Smrg # Remove the call to Libtool. 5218108eb18Smrg if test "$libtool" = yes; then 5221a650d1eSmrg while test "X$1" != 'X--mode=compile'; do 5238108eb18Smrg shift 5248108eb18Smrg done 5258108eb18Smrg shift 5268108eb18Smrg fi 5278108eb18Smrg 5288108eb18Smrg # Remove `-o $object'. 5298108eb18Smrg IFS=" " 5308108eb18Smrg for arg 5318108eb18Smrg do 5328108eb18Smrg case $arg in 5338108eb18Smrg -o) 5348108eb18Smrg shift 5358108eb18Smrg ;; 5368108eb18Smrg $object) 5378108eb18Smrg shift 5388108eb18Smrg ;; 5398108eb18Smrg *) 5408108eb18Smrg set fnord "$@" "$arg" 5418108eb18Smrg shift # fnord 5428108eb18Smrg shift # $arg 5438108eb18Smrg ;; 5448108eb18Smrg esac 5458108eb18Smrg done 5468108eb18Smrg 5478108eb18Smrg "$@" -E | 5481a650d1eSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5491a650d1eSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5508108eb18Smrg sed '$ s: \\$::' > "$tmpdepfile" 5518108eb18Smrg rm -f "$depfile" 5528108eb18Smrg echo "$object : \\" > "$depfile" 5538108eb18Smrg cat < "$tmpdepfile" >> "$depfile" 5548108eb18Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5558108eb18Smrg rm -f "$tmpdepfile" 5568108eb18Smrg ;; 5578108eb18Smrg 5588108eb18Smrgmsvisualcpp) 5598108eb18Smrg # Important note: in order to support this mode, a compiler *must* 5601a650d1eSmrg # always write the preprocessed file to stdout. 5618108eb18Smrg "$@" || exit $? 5621a650d1eSmrg 5631a650d1eSmrg # Remove the call to Libtool. 5641a650d1eSmrg if test "$libtool" = yes; then 5651a650d1eSmrg while test "X$1" != 'X--mode=compile'; do 5661a650d1eSmrg shift 5671a650d1eSmrg done 5681a650d1eSmrg shift 5691a650d1eSmrg fi 5701a650d1eSmrg 5718108eb18Smrg IFS=" " 5728108eb18Smrg for arg 5738108eb18Smrg do 5748108eb18Smrg case "$arg" in 5751a650d1eSmrg -o) 5761a650d1eSmrg shift 5771a650d1eSmrg ;; 5781a650d1eSmrg $object) 5791a650d1eSmrg shift 5801a650d1eSmrg ;; 5818108eb18Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5828108eb18Smrg set fnord "$@" 5838108eb18Smrg shift 5848108eb18Smrg shift 5858108eb18Smrg ;; 5868108eb18Smrg *) 5878108eb18Smrg set fnord "$@" "$arg" 5888108eb18Smrg shift 5898108eb18Smrg shift 5908108eb18Smrg ;; 5918108eb18Smrg esac 5928108eb18Smrg done 5931a650d1eSmrg "$@" -E 2>/dev/null | 5941a650d1eSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5958108eb18Smrg rm -f "$depfile" 5968108eb18Smrg echo "$object : \\" > "$depfile" 5971a650d1eSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5988108eb18Smrg echo " " >> "$depfile" 5991a650d1eSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6008108eb18Smrg rm -f "$tmpdepfile" 6018108eb18Smrg ;; 6028108eb18Smrg 6031a650d1eSmrgmsvcmsys) 6041a650d1eSmrg # This case exists only to let depend.m4 do its work. It works by 6051a650d1eSmrg # looking at the text of this script. This case will never be run, 6061a650d1eSmrg # since it is checked for above. 6071a650d1eSmrg exit 1 6081a650d1eSmrg ;; 6091a650d1eSmrg 6108108eb18Smrgnone) 6118108eb18Smrg exec "$@" 6128108eb18Smrg ;; 6138108eb18Smrg 6148108eb18Smrg*) 6158108eb18Smrg echo "Unknown depmode $depmode" 1>&2 6168108eb18Smrg exit 1 6178108eb18Smrg ;; 6188108eb18Smrgesac 6198108eb18Smrg 6208108eb18Smrgexit 0 6211a650d1eSmrg 6221a650d1eSmrg# Local Variables: 6231a650d1eSmrg# mode: shell-script 6241a650d1eSmrg# sh-indentation: 2 6251a650d1eSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6261a650d1eSmrg# time-stamp-start: "scriptversion=" 6271a650d1eSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6281a650d1eSmrg# time-stamp-time-zone: "UTC" 6291a650d1eSmrg# time-stamp-end: "; # UTC" 6301a650d1eSmrg# End: 631