depcomp revision a73423d7
150806d53Smrg#! /bin/sh 250806d53Smrg# depcomp - compile a program generating dependencies as side-effects 350806d53Smrg 4a73423d7Smrgscriptversion=2011-12-04.11; # UTC 550806d53Smrg 6a73423d7Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 7a73423d7Smrg# 2011 Free Software Foundation, Inc. 850806d53Smrg 950806d53Smrg# This program is free software; you can redistribute it and/or modify 1050806d53Smrg# it under the terms of the GNU General Public License as published by 1150806d53Smrg# the Free Software Foundation; either version 2, or (at your option) 1250806d53Smrg# any later version. 1350806d53Smrg 1450806d53Smrg# This program is distributed in the hope that it will be useful, 1550806d53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1650806d53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1750806d53Smrg# GNU General Public License for more details. 1850806d53Smrg 1950806d53Smrg# You should have received a copy of the GNU General Public License 20a73423d7Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2150806d53Smrg 2250806d53Smrg# As a special exception to the GNU General Public License, if you 2350806d53Smrg# distribute this file as part of a program that contains a 2450806d53Smrg# configuration script generated by Autoconf, you may include it under 2550806d53Smrg# the same distribution terms that you use for the rest of that program. 2650806d53Smrg 2750806d53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2850806d53Smrg 2950806d53Smrgcase $1 in 3050806d53Smrg '') 3150806d53Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3250806d53Smrg exit 1; 3350806d53Smrg ;; 3450806d53Smrg -h | --h*) 3550806d53Smrg cat <<\EOF 3650806d53SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3750806d53Smrg 3850806d53SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3950806d53Smrgas side-effects. 4050806d53Smrg 4150806d53SmrgEnvironment variables: 4250806d53Smrg depmode Dependency tracking mode. 4350806d53Smrg source Source file read by `PROGRAMS ARGS'. 4450806d53Smrg object Object file output by `PROGRAMS ARGS'. 4550806d53Smrg DEPDIR directory where to store dependencies. 4650806d53Smrg depfile Dependency file to output. 47a73423d7Smrg tmpdepfile Temporary file to use when outputting dependencies. 4850806d53Smrg libtool Whether libtool is used (yes/no). 4950806d53Smrg 5050806d53SmrgReport bugs to <bug-automake@gnu.org>. 5150806d53SmrgEOF 5250806d53Smrg exit $? 5350806d53Smrg ;; 5450806d53Smrg -v | --v*) 5550806d53Smrg echo "depcomp $scriptversion" 5650806d53Smrg exit $? 5750806d53Smrg ;; 5850806d53Smrgesac 5950806d53Smrg 6050806d53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6150806d53Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6250806d53Smrg exit 1 6350806d53Smrgfi 6450806d53Smrg 6550806d53Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6650806d53Smrgdepfile=${depfile-`echo "$object" | 6750806d53Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6850806d53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6950806d53Smrg 7050806d53Smrgrm -f "$tmpdepfile" 7150806d53Smrg 7250806d53Smrg# Some modes work just like other modes, but use different flags. We 7350806d53Smrg# parameterize here, but still list the modes in the big case below, 7450806d53Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7550806d53Smrg# here, because this file can only contain one case statement. 7650806d53Smrgif test "$depmode" = hp; then 7750806d53Smrg # HP compiler uses -M and no extra arg. 7850806d53Smrg gccflag=-M 7950806d53Smrg depmode=gcc 8050806d53Smrgfi 8150806d53Smrg 8250806d53Smrgif test "$depmode" = dashXmstdout; then 8350806d53Smrg # This is just like dashmstdout with a different argument. 8450806d53Smrg dashmflag=-xM 8550806d53Smrg depmode=dashmstdout 8650806d53Smrgfi 8750806d53Smrg 88a73423d7Smrgcygpath_u="cygpath -u -f -" 89a73423d7Smrgif test "$depmode" = msvcmsys; then 90a73423d7Smrg # This is just like msvisualcpp but w/o cygpath translation. 91a73423d7Smrg # Just convert the backslash-escaped backslashes to single forward 92a73423d7Smrg # slashes to satisfy depend.m4 93a73423d7Smrg cygpath_u='sed s,\\\\,/,g' 94a73423d7Smrg depmode=msvisualcpp 95a73423d7Smrgfi 96a73423d7Smrg 97a73423d7Smrgif test "$depmode" = msvc7msys; then 98a73423d7Smrg # This is just like msvc7 but w/o cygpath translation. 99a73423d7Smrg # Just convert the backslash-escaped backslashes to single forward 100a73423d7Smrg # slashes to satisfy depend.m4 101a73423d7Smrg cygpath_u='sed s,\\\\,/,g' 102a73423d7Smrg depmode=msvc7 103a73423d7Smrgfi 104a73423d7Smrg 10550806d53Smrgcase "$depmode" in 10650806d53Smrggcc3) 10750806d53Smrg## gcc 3 implements dependency tracking that does exactly what 10850806d53Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10950806d53Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1107965d9acSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1117965d9acSmrg## the command line argument order; so add the flags where they 1127965d9acSmrg## appear in depend2.am. Note that the slowdown incurred here 1137965d9acSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1147965d9acSmrg for arg 1157965d9acSmrg do 1167965d9acSmrg case $arg in 1177965d9acSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1187965d9acSmrg *) set fnord "$@" "$arg" ;; 1197965d9acSmrg esac 1207965d9acSmrg shift # fnord 1217965d9acSmrg shift # $arg 1227965d9acSmrg done 1237965d9acSmrg "$@" 12450806d53Smrg stat=$? 12550806d53Smrg if test $stat -eq 0; then : 12650806d53Smrg else 12750806d53Smrg rm -f "$tmpdepfile" 12850806d53Smrg exit $stat 12950806d53Smrg fi 13050806d53Smrg mv "$tmpdepfile" "$depfile" 13150806d53Smrg ;; 13250806d53Smrg 13350806d53Smrggcc) 13450806d53Smrg## There are various ways to get dependency output from gcc. Here's 13550806d53Smrg## why we pick this rather obscure method: 13650806d53Smrg## - Don't want to use -MD because we'd like the dependencies to end 13750806d53Smrg## up in a subdir. Having to rename by hand is ugly. 13850806d53Smrg## (We might end up doing this anyway to support other compilers.) 13950806d53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 14050806d53Smrg## -MM, not -M (despite what the docs say). 14150806d53Smrg## - Using -M directly means running the compiler twice (even worse 14250806d53Smrg## than renaming). 14350806d53Smrg if test -z "$gccflag"; then 14450806d53Smrg gccflag=-MD, 14550806d53Smrg fi 14650806d53Smrg "$@" -Wp,"$gccflag$tmpdepfile" 14750806d53Smrg stat=$? 14850806d53Smrg if test $stat -eq 0; then : 14950806d53Smrg else 15050806d53Smrg rm -f "$tmpdepfile" 15150806d53Smrg exit $stat 15250806d53Smrg fi 15350806d53Smrg rm -f "$depfile" 15450806d53Smrg echo "$object : \\" > "$depfile" 15550806d53Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 15650806d53Smrg## The second -e expression handles DOS-style file names with drive letters. 15750806d53Smrg sed -e 's/^[^:]*: / /' \ 15850806d53Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15950806d53Smrg## This next piece of magic avoids the `deleted header file' problem. 16050806d53Smrg## The problem is that when a header file which appears in a .P file 16150806d53Smrg## is deleted, the dependency causes make to die (because there is 16250806d53Smrg## typically no way to rebuild the header). We avoid this by adding 16350806d53Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 16450806d53Smrg## this for us directly. 16550806d53Smrg tr ' ' ' 16650806d53Smrg' < "$tmpdepfile" | 16750806d53Smrg## Some versions of gcc put a space before the `:'. On the theory 16850806d53Smrg## that the space means something, we add a space to the output as 169a73423d7Smrg## well. hp depmode also adds that space, but also prefixes the VPATH 170a73423d7Smrg## to the object. Take care to not repeat it in the output. 17150806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 17250806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 173a73423d7Smrg sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 174a73423d7Smrg | sed -e 's/$/ :/' >> "$depfile" 17550806d53Smrg rm -f "$tmpdepfile" 17650806d53Smrg ;; 17750806d53Smrg 17850806d53Smrghp) 17950806d53Smrg # This case exists only to let depend.m4 do its work. It works by 18050806d53Smrg # looking at the text of this script. This case will never be run, 18150806d53Smrg # since it is checked for above. 18250806d53Smrg exit 1 18350806d53Smrg ;; 18450806d53Smrg 18550806d53Smrgsgi) 18650806d53Smrg if test "$libtool" = yes; then 18750806d53Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 18850806d53Smrg else 18950806d53Smrg "$@" -MDupdate "$tmpdepfile" 19050806d53Smrg fi 19150806d53Smrg stat=$? 19250806d53Smrg if test $stat -eq 0; then : 19350806d53Smrg else 19450806d53Smrg rm -f "$tmpdepfile" 19550806d53Smrg exit $stat 19650806d53Smrg fi 19750806d53Smrg rm -f "$depfile" 19850806d53Smrg 19950806d53Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 20050806d53Smrg echo "$object : \\" > "$depfile" 20150806d53Smrg 20250806d53Smrg # Clip off the initial element (the dependent). Don't try to be 20350806d53Smrg # clever and replace this with sed code, as IRIX sed won't handle 20450806d53Smrg # lines with more than a fixed number of characters (4096 in 20550806d53Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 20650806d53Smrg # the IRIX cc adds comments like `#:fec' to the end of the 20750806d53Smrg # dependency line. 20850806d53Smrg tr ' ' ' 20950806d53Smrg' < "$tmpdepfile" \ 21050806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 21150806d53Smrg tr ' 212a73423d7Smrg' ' ' >> "$depfile" 213a73423d7Smrg echo >> "$depfile" 21450806d53Smrg 21550806d53Smrg # The second pass generates a dummy entry for each header file. 21650806d53Smrg tr ' ' ' 21750806d53Smrg' < "$tmpdepfile" \ 21850806d53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 219a73423d7Smrg >> "$depfile" 22050806d53Smrg else 22150806d53Smrg # The sourcefile does not contain any dependencies, so just 22250806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 22350806d53Smrg # "include basename.Plo" scheme. 22450806d53Smrg echo "#dummy" > "$depfile" 22550806d53Smrg fi 22650806d53Smrg rm -f "$tmpdepfile" 22750806d53Smrg ;; 22850806d53Smrg 22950806d53Smrgaix) 23050806d53Smrg # The C for AIX Compiler uses -M and outputs the dependencies 23150806d53Smrg # in a .u file. In older versions, this file always lives in the 23250806d53Smrg # current directory. Also, the AIX compiler puts `$object:' at the 23350806d53Smrg # start of each line; $object doesn't have directory information. 23450806d53Smrg # Version 6 uses the directory in both cases. 2357965d9acSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2367965d9acSmrg test "x$dir" = "x$object" && dir= 2377965d9acSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 23850806d53Smrg if test "$libtool" = yes; then 2397965d9acSmrg tmpdepfile1=$dir$base.u 2407965d9acSmrg tmpdepfile2=$base.u 2417965d9acSmrg tmpdepfile3=$dir.libs/$base.u 24250806d53Smrg "$@" -Wc,-M 24350806d53Smrg else 2447965d9acSmrg tmpdepfile1=$dir$base.u 2457965d9acSmrg tmpdepfile2=$dir$base.u 2467965d9acSmrg tmpdepfile3=$dir$base.u 24750806d53Smrg "$@" -M 24850806d53Smrg fi 24950806d53Smrg stat=$? 25050806d53Smrg 25150806d53Smrg if test $stat -eq 0; then : 25250806d53Smrg else 2537965d9acSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 25450806d53Smrg exit $stat 25550806d53Smrg fi 25650806d53Smrg 2577965d9acSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2587965d9acSmrg do 2597965d9acSmrg test -f "$tmpdepfile" && break 2607965d9acSmrg done 26150806d53Smrg if test -f "$tmpdepfile"; then 26250806d53Smrg # Each line is of the form `foo.o: dependent.h'. 26350806d53Smrg # Do two passes, one to just change these to 26450806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2657965d9acSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2667965d9acSmrg # That's a tab and a space in the []. 2677965d9acSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 26850806d53Smrg else 26950806d53Smrg # The sourcefile does not contain any dependencies, so just 27050806d53Smrg # store a dummy comment line, to avoid errors with the Makefile 27150806d53Smrg # "include basename.Plo" scheme. 27250806d53Smrg echo "#dummy" > "$depfile" 27350806d53Smrg fi 27450806d53Smrg rm -f "$tmpdepfile" 27550806d53Smrg ;; 27650806d53Smrg 27750806d53Smrgicc) 27850806d53Smrg # Intel's C compiler understands `-MD -MF file'. However on 27950806d53Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 28050806d53Smrg # ICC 7.0 will fill foo.d with something like 28150806d53Smrg # foo.o: sub/foo.c 28250806d53Smrg # foo.o: sub/foo.h 28350806d53Smrg # which is wrong. We want: 28450806d53Smrg # sub/foo.o: sub/foo.c 28550806d53Smrg # sub/foo.o: sub/foo.h 28650806d53Smrg # sub/foo.c: 28750806d53Smrg # sub/foo.h: 28850806d53Smrg # ICC 7.1 will output 28950806d53Smrg # foo.o: sub/foo.c sub/foo.h 29050806d53Smrg # and will wrap long lines using \ : 29150806d53Smrg # foo.o: sub/foo.c ... \ 29250806d53Smrg # sub/foo.h ... \ 29350806d53Smrg # ... 29450806d53Smrg 29550806d53Smrg "$@" -MD -MF "$tmpdepfile" 29650806d53Smrg stat=$? 29750806d53Smrg if test $stat -eq 0; then : 29850806d53Smrg else 29950806d53Smrg rm -f "$tmpdepfile" 30050806d53Smrg exit $stat 30150806d53Smrg fi 30250806d53Smrg rm -f "$depfile" 30350806d53Smrg # Each line is of the form `foo.o: dependent.h', 30450806d53Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 30550806d53Smrg # Do two passes, one to just change these to 30650806d53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 30750806d53Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 30850806d53Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 30950806d53Smrg # correctly. Breaking it into two sed invocations is a workaround. 31050806d53Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 31150806d53Smrg sed -e 's/$/ :/' >> "$depfile" 31250806d53Smrg rm -f "$tmpdepfile" 31350806d53Smrg ;; 31450806d53Smrg 3157965d9acSmrghp2) 3167965d9acSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3177965d9acSmrg # compilers, which have integrated preprocessors. The correct option 3187965d9acSmrg # to use with these is +Maked; it writes dependencies to a file named 3197965d9acSmrg # 'foo.d', which lands next to the object file, wherever that 3207965d9acSmrg # happens to be. 3217965d9acSmrg # Much of this is similar to the tru64 case; see comments there. 3227965d9acSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3237965d9acSmrg test "x$dir" = "x$object" && dir= 3247965d9acSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3257965d9acSmrg if test "$libtool" = yes; then 3267965d9acSmrg tmpdepfile1=$dir$base.d 3277965d9acSmrg tmpdepfile2=$dir.libs/$base.d 3287965d9acSmrg "$@" -Wc,+Maked 3297965d9acSmrg else 3307965d9acSmrg tmpdepfile1=$dir$base.d 3317965d9acSmrg tmpdepfile2=$dir$base.d 3327965d9acSmrg "$@" +Maked 3337965d9acSmrg fi 3347965d9acSmrg stat=$? 3357965d9acSmrg if test $stat -eq 0; then : 3367965d9acSmrg else 3377965d9acSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3387965d9acSmrg exit $stat 3397965d9acSmrg fi 3407965d9acSmrg 3417965d9acSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3427965d9acSmrg do 3437965d9acSmrg test -f "$tmpdepfile" && break 3447965d9acSmrg done 3457965d9acSmrg if test -f "$tmpdepfile"; then 3467965d9acSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3477965d9acSmrg # Add `dependent.h:' lines. 348a73423d7Smrg sed -ne '2,${ 349a73423d7Smrg s/^ *// 350a73423d7Smrg s/ \\*$// 351a73423d7Smrg s/$/:/ 352a73423d7Smrg p 353a73423d7Smrg }' "$tmpdepfile" >> "$depfile" 3547965d9acSmrg else 3557965d9acSmrg echo "#dummy" > "$depfile" 3567965d9acSmrg fi 3577965d9acSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3587965d9acSmrg ;; 3597965d9acSmrg 36050806d53Smrgtru64) 36150806d53Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 36250806d53Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 36350806d53Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 36450806d53Smrg # dependencies in `foo.d' instead, so we check for that too. 36550806d53Smrg # Subdirectories are respected. 36650806d53Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 36750806d53Smrg test "x$dir" = "x$object" && dir= 36850806d53Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 36950806d53Smrg 37050806d53Smrg if test "$libtool" = yes; then 37150806d53Smrg # With Tru64 cc, shared objects can also be used to make a 3727965d9acSmrg # static library. This mechanism is used in libtool 1.4 series to 37350806d53Smrg # handle both shared and static libraries in a single compilation. 37450806d53Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 37550806d53Smrg # 37650806d53Smrg # With libtool 1.5 this exception was removed, and libtool now 37750806d53Smrg # generates 2 separate objects for the 2 libraries. These two 3787965d9acSmrg # compilations output dependencies in $dir.libs/$base.o.d and 37950806d53Smrg # in $dir$base.o.d. We have to check for both files, because 38050806d53Smrg # one of the two compilations can be disabled. We should prefer 38150806d53Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 38250806d53Smrg # automatically cleaned when .libs/ is deleted, while ignoring 38350806d53Smrg # the former would cause a distcleancheck panic. 38450806d53Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 38550806d53Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 38650806d53Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 38750806d53Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 38850806d53Smrg "$@" -Wc,-MD 38950806d53Smrg else 39050806d53Smrg tmpdepfile1=$dir$base.o.d 39150806d53Smrg tmpdepfile2=$dir$base.d 39250806d53Smrg tmpdepfile3=$dir$base.d 39350806d53Smrg tmpdepfile4=$dir$base.d 39450806d53Smrg "$@" -MD 39550806d53Smrg fi 39650806d53Smrg 39750806d53Smrg stat=$? 39850806d53Smrg if test $stat -eq 0; then : 39950806d53Smrg else 40050806d53Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40150806d53Smrg exit $stat 40250806d53Smrg fi 40350806d53Smrg 40450806d53Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40550806d53Smrg do 40650806d53Smrg test -f "$tmpdepfile" && break 40750806d53Smrg done 40850806d53Smrg if test -f "$tmpdepfile"; then 40950806d53Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 41050806d53Smrg # That's a tab and a space in the []. 41150806d53Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 41250806d53Smrg else 41350806d53Smrg echo "#dummy" > "$depfile" 41450806d53Smrg fi 41550806d53Smrg rm -f "$tmpdepfile" 41650806d53Smrg ;; 41750806d53Smrg 418a73423d7Smrgmsvc7) 419a73423d7Smrg if test "$libtool" = yes; then 420a73423d7Smrg showIncludes=-Wc,-showIncludes 421a73423d7Smrg else 422a73423d7Smrg showIncludes=-showIncludes 423a73423d7Smrg fi 424a73423d7Smrg "$@" $showIncludes > "$tmpdepfile" 425a73423d7Smrg stat=$? 426a73423d7Smrg grep -v '^Note: including file: ' "$tmpdepfile" 427a73423d7Smrg if test "$stat" = 0; then : 428a73423d7Smrg else 429a73423d7Smrg rm -f "$tmpdepfile" 430a73423d7Smrg exit $stat 431a73423d7Smrg fi 432a73423d7Smrg rm -f "$depfile" 433a73423d7Smrg echo "$object : \\" > "$depfile" 434a73423d7Smrg # The first sed program below extracts the file names and escapes 435a73423d7Smrg # backslashes for cygpath. The second sed program outputs the file 436a73423d7Smrg # name when reading, but also accumulates all include files in the 437a73423d7Smrg # hold buffer in order to output them again at the end. This only 438a73423d7Smrg # works with sed implementations that can handle large buffers. 439a73423d7Smrg sed < "$tmpdepfile" -n ' 440a73423d7Smrg/^Note: including file: *\(.*\)/ { 441a73423d7Smrg s//\1/ 442a73423d7Smrg s/\\/\\\\/g 443a73423d7Smrg p 444a73423d7Smrg}' | $cygpath_u | sort -u | sed -n ' 445a73423d7Smrgs/ /\\ /g 446a73423d7Smrgs/\(.*\)/ \1 \\/p 447a73423d7Smrgs/.\(.*\) \\/\1:/ 448a73423d7SmrgH 449a73423d7Smrg$ { 450a73423d7Smrg s/.*/ / 451a73423d7Smrg G 452a73423d7Smrg p 453a73423d7Smrg}' >> "$depfile" 454a73423d7Smrg rm -f "$tmpdepfile" 455a73423d7Smrg ;; 456a73423d7Smrg 457a73423d7Smrgmsvc7msys) 458a73423d7Smrg # This case exists only to let depend.m4 do its work. It works by 459a73423d7Smrg # looking at the text of this script. This case will never be run, 460a73423d7Smrg # since it is checked for above. 461a73423d7Smrg exit 1 462a73423d7Smrg ;; 463a73423d7Smrg 46450806d53Smrg#nosideeffect) 46550806d53Smrg # This comment above is used by automake to tell side-effect 46650806d53Smrg # dependency tracking mechanisms from slower ones. 46750806d53Smrg 46850806d53Smrgdashmstdout) 46950806d53Smrg # Important note: in order to support this mode, a compiler *must* 47050806d53Smrg # always write the preprocessed file to stdout, regardless of -o. 47150806d53Smrg "$@" || exit $? 47250806d53Smrg 47350806d53Smrg # Remove the call to Libtool. 47450806d53Smrg if test "$libtool" = yes; then 475a73423d7Smrg while test "X$1" != 'X--mode=compile'; do 47650806d53Smrg shift 47750806d53Smrg done 47850806d53Smrg shift 47950806d53Smrg fi 48050806d53Smrg 48150806d53Smrg # Remove `-o $object'. 48250806d53Smrg IFS=" " 48350806d53Smrg for arg 48450806d53Smrg do 48550806d53Smrg case $arg in 48650806d53Smrg -o) 48750806d53Smrg shift 48850806d53Smrg ;; 48950806d53Smrg $object) 49050806d53Smrg shift 49150806d53Smrg ;; 49250806d53Smrg *) 49350806d53Smrg set fnord "$@" "$arg" 49450806d53Smrg shift # fnord 49550806d53Smrg shift # $arg 49650806d53Smrg ;; 49750806d53Smrg esac 49850806d53Smrg done 49950806d53Smrg 50050806d53Smrg test -z "$dashmflag" && dashmflag=-M 50150806d53Smrg # Require at least two characters before searching for `:' 50250806d53Smrg # in the target name. This is to cope with DOS-style filenames: 50350806d53Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 50450806d53Smrg "$@" $dashmflag | 50550806d53Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 50650806d53Smrg rm -f "$depfile" 50750806d53Smrg cat < "$tmpdepfile" > "$depfile" 50850806d53Smrg tr ' ' ' 50950806d53Smrg' < "$tmpdepfile" | \ 51050806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 51150806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 51250806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51350806d53Smrg rm -f "$tmpdepfile" 51450806d53Smrg ;; 51550806d53Smrg 51650806d53SmrgdashXmstdout) 51750806d53Smrg # This case only exists to satisfy depend.m4. It is never actually 51850806d53Smrg # run, as this mode is specially recognized in the preamble. 51950806d53Smrg exit 1 52050806d53Smrg ;; 52150806d53Smrg 52250806d53Smrgmakedepend) 52350806d53Smrg "$@" || exit $? 52450806d53Smrg # Remove any Libtool call 52550806d53Smrg if test "$libtool" = yes; then 526a73423d7Smrg while test "X$1" != 'X--mode=compile'; do 52750806d53Smrg shift 52850806d53Smrg done 52950806d53Smrg shift 53050806d53Smrg fi 53150806d53Smrg # X makedepend 53250806d53Smrg shift 533a73423d7Smrg cleared=no eat=no 534a73423d7Smrg for arg 535a73423d7Smrg do 53650806d53Smrg case $cleared in 53750806d53Smrg no) 53850806d53Smrg set ""; shift 53950806d53Smrg cleared=yes ;; 54050806d53Smrg esac 541a73423d7Smrg if test $eat = yes; then 542a73423d7Smrg eat=no 543a73423d7Smrg continue 544a73423d7Smrg fi 54550806d53Smrg case "$arg" in 54650806d53Smrg -D*|-I*) 54750806d53Smrg set fnord "$@" "$arg"; shift ;; 54850806d53Smrg # Strip any option that makedepend may not understand. Remove 54950806d53Smrg # the object too, otherwise makedepend will parse it as a source file. 550a73423d7Smrg -arch) 551a73423d7Smrg eat=yes ;; 55250806d53Smrg -*|$object) 55350806d53Smrg ;; 55450806d53Smrg *) 55550806d53Smrg set fnord "$@" "$arg"; shift ;; 55650806d53Smrg esac 55750806d53Smrg done 558a73423d7Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 55950806d53Smrg touch "$tmpdepfile" 56050806d53Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 56150806d53Smrg rm -f "$depfile" 562a73423d7Smrg # makedepend may prepend the VPATH from the source file name to the object. 563a73423d7Smrg # No need to regex-escape $object, excess matching of '.' is harmless. 564a73423d7Smrg sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 56550806d53Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 56650806d53Smrg' | \ 56750806d53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 56850806d53Smrg## correctly. Breaking it into two sed invocations is a workaround. 56950806d53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 57050806d53Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 57150806d53Smrg ;; 57250806d53Smrg 57350806d53Smrgcpp) 57450806d53Smrg # Important note: in order to support this mode, a compiler *must* 57550806d53Smrg # always write the preprocessed file to stdout. 57650806d53Smrg "$@" || exit $? 57750806d53Smrg 57850806d53Smrg # Remove the call to Libtool. 57950806d53Smrg if test "$libtool" = yes; then 580a73423d7Smrg while test "X$1" != 'X--mode=compile'; do 58150806d53Smrg shift 58250806d53Smrg done 58350806d53Smrg shift 58450806d53Smrg fi 58550806d53Smrg 58650806d53Smrg # Remove `-o $object'. 58750806d53Smrg IFS=" " 58850806d53Smrg for arg 58950806d53Smrg do 59050806d53Smrg case $arg in 59150806d53Smrg -o) 59250806d53Smrg shift 59350806d53Smrg ;; 59450806d53Smrg $object) 59550806d53Smrg shift 59650806d53Smrg ;; 59750806d53Smrg *) 59850806d53Smrg set fnord "$@" "$arg" 59950806d53Smrg shift # fnord 60050806d53Smrg shift # $arg 60150806d53Smrg ;; 60250806d53Smrg esac 60350806d53Smrg done 60450806d53Smrg 60550806d53Smrg "$@" -E | 60650806d53Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 60750806d53Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 60850806d53Smrg sed '$ s: \\$::' > "$tmpdepfile" 60950806d53Smrg rm -f "$depfile" 61050806d53Smrg echo "$object : \\" > "$depfile" 61150806d53Smrg cat < "$tmpdepfile" >> "$depfile" 61250806d53Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 61350806d53Smrg rm -f "$tmpdepfile" 61450806d53Smrg ;; 61550806d53Smrg 61650806d53Smrgmsvisualcpp) 61750806d53Smrg # Important note: in order to support this mode, a compiler *must* 618a73423d7Smrg # always write the preprocessed file to stdout. 61950806d53Smrg "$@" || exit $? 620a73423d7Smrg 621a73423d7Smrg # Remove the call to Libtool. 622a73423d7Smrg if test "$libtool" = yes; then 623a73423d7Smrg while test "X$1" != 'X--mode=compile'; do 624a73423d7Smrg shift 625a73423d7Smrg done 626a73423d7Smrg shift 627a73423d7Smrg fi 628a73423d7Smrg 62950806d53Smrg IFS=" " 63050806d53Smrg for arg 63150806d53Smrg do 63250806d53Smrg case "$arg" in 633a73423d7Smrg -o) 634a73423d7Smrg shift 635a73423d7Smrg ;; 636a73423d7Smrg $object) 637a73423d7Smrg shift 638a73423d7Smrg ;; 63950806d53Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 64050806d53Smrg set fnord "$@" 64150806d53Smrg shift 64250806d53Smrg shift 64350806d53Smrg ;; 64450806d53Smrg *) 64550806d53Smrg set fnord "$@" "$arg" 64650806d53Smrg shift 64750806d53Smrg shift 64850806d53Smrg ;; 64950806d53Smrg esac 65050806d53Smrg done 651a73423d7Smrg "$@" -E 2>/dev/null | 652a73423d7Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 65350806d53Smrg rm -f "$depfile" 65450806d53Smrg echo "$object : \\" > "$depfile" 655a73423d7Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 65650806d53Smrg echo " " >> "$depfile" 657a73423d7Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 65850806d53Smrg rm -f "$tmpdepfile" 65950806d53Smrg ;; 66050806d53Smrg 661a73423d7Smrgmsvcmsys) 662a73423d7Smrg # This case exists only to let depend.m4 do its work. It works by 663a73423d7Smrg # looking at the text of this script. This case will never be run, 664a73423d7Smrg # since it is checked for above. 665a73423d7Smrg exit 1 666a73423d7Smrg ;; 667a73423d7Smrg 66850806d53Smrgnone) 66950806d53Smrg exec "$@" 67050806d53Smrg ;; 67150806d53Smrg 67250806d53Smrg*) 67350806d53Smrg echo "Unknown depmode $depmode" 1>&2 67450806d53Smrg exit 1 67550806d53Smrg ;; 67650806d53Smrgesac 67750806d53Smrg 67850806d53Smrgexit 0 67950806d53Smrg 68050806d53Smrg# Local Variables: 68150806d53Smrg# mode: shell-script 68250806d53Smrg# sh-indentation: 2 68350806d53Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 68450806d53Smrg# time-stamp-start: "scriptversion=" 68550806d53Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 686a73423d7Smrg# time-stamp-time-zone: "UTC" 687a73423d7Smrg# time-stamp-end: "; # UTC" 68850806d53Smrg# End: 689