depcomp revision 7bd0f98d
1cbeba4aeSmrg#! /bin/sh 2cbeba4aeSmrg# depcomp - compile a program generating dependencies as side-effects 37bd0f98dSmrg 47bd0f98dSmrgscriptversion=2009-04-28.21; # UTC 57bd0f98dSmrg 67bd0f98dSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 77bd0f98dSmrg# Software Foundation, Inc. 8cbeba4aeSmrg 9cbeba4aeSmrg# This program is free software; you can redistribute it and/or modify 10cbeba4aeSmrg# it under the terms of the GNU General Public License as published by 11cbeba4aeSmrg# the Free Software Foundation; either version 2, or (at your option) 12cbeba4aeSmrg# any later version. 13cbeba4aeSmrg 14cbeba4aeSmrg# This program is distributed in the hope that it will be useful, 15cbeba4aeSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16cbeba4aeSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17cbeba4aeSmrg# GNU General Public License for more details. 18cbeba4aeSmrg 19cbeba4aeSmrg# You should have received a copy of the GNU General Public License 207bd0f98dSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21cbeba4aeSmrg 22cbeba4aeSmrg# As a special exception to the GNU General Public License, if you 23cbeba4aeSmrg# distribute this file as part of a program that contains a 24cbeba4aeSmrg# configuration script generated by Autoconf, you may include it under 25cbeba4aeSmrg# the same distribution terms that you use for the rest of that program. 26cbeba4aeSmrg 27cbeba4aeSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28cbeba4aeSmrg 297bd0f98dSmrgcase $1 in 307bd0f98dSmrg '') 317bd0f98dSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 327bd0f98dSmrg exit 1; 337bd0f98dSmrg ;; 347bd0f98dSmrg -h | --h*) 357bd0f98dSmrg cat <<\EOF 367bd0f98dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 377bd0f98dSmrg 387bd0f98dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 397bd0f98dSmrgas side-effects. 407bd0f98dSmrg 417bd0f98dSmrgEnvironment variables: 427bd0f98dSmrg depmode Dependency tracking mode. 437bd0f98dSmrg source Source file read by `PROGRAMS ARGS'. 447bd0f98dSmrg object Object file output by `PROGRAMS ARGS'. 457bd0f98dSmrg DEPDIR directory where to store dependencies. 467bd0f98dSmrg depfile Dependency file to output. 477bd0f98dSmrg tmpdepfile Temporary file to use when outputing dependencies. 487bd0f98dSmrg libtool Whether libtool is used (yes/no). 497bd0f98dSmrg 507bd0f98dSmrgReport bugs to <bug-automake@gnu.org>. 517bd0f98dSmrgEOF 527bd0f98dSmrg exit $? 537bd0f98dSmrg ;; 547bd0f98dSmrg -v | --v*) 557bd0f98dSmrg echo "depcomp $scriptversion" 567bd0f98dSmrg exit $? 577bd0f98dSmrg ;; 587bd0f98dSmrgesac 597bd0f98dSmrg 60cbeba4aeSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61cbeba4aeSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62cbeba4aeSmrg exit 1 63cbeba4aeSmrgfi 64cbeba4aeSmrg 657bd0f98dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 667bd0f98dSmrgdepfile=${depfile-`echo "$object" | 677bd0f98dSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68cbeba4aeSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69cbeba4aeSmrg 70cbeba4aeSmrgrm -f "$tmpdepfile" 71cbeba4aeSmrg 72cbeba4aeSmrg# Some modes work just like other modes, but use different flags. We 73cbeba4aeSmrg# parameterize here, but still list the modes in the big case below, 74cbeba4aeSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75cbeba4aeSmrg# here, because this file can only contain one case statement. 76cbeba4aeSmrgif test "$depmode" = hp; then 77cbeba4aeSmrg # HP compiler uses -M and no extra arg. 78cbeba4aeSmrg gccflag=-M 79cbeba4aeSmrg depmode=gcc 80cbeba4aeSmrgfi 81cbeba4aeSmrg 82cbeba4aeSmrgif test "$depmode" = dashXmstdout; then 83cbeba4aeSmrg # This is just like dashmstdout with a different argument. 84cbeba4aeSmrg dashmflag=-xM 85cbeba4aeSmrg depmode=dashmstdout 86cbeba4aeSmrgfi 87cbeba4aeSmrg 887bd0f98dSmrgcygpath_u="cygpath -u -f -" 897bd0f98dSmrgif test "$depmode" = msvcmsys; then 907bd0f98dSmrg # This is just like msvisualcpp but w/o cygpath translation. 917bd0f98dSmrg # Just convert the backslash-escaped backslashes to single forward 927bd0f98dSmrg # slashes to satisfy depend.m4 937bd0f98dSmrg cygpath_u="sed s,\\\\\\\\,/,g" 947bd0f98dSmrg depmode=msvisualcpp 957bd0f98dSmrgfi 967bd0f98dSmrg 97cbeba4aeSmrgcase "$depmode" in 98cbeba4aeSmrggcc3) 99cbeba4aeSmrg## gcc 3 implements dependency tracking that does exactly what 100cbeba4aeSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101cbeba4aeSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 1027bd0f98dSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1037bd0f98dSmrg## the command line argument order; so add the flags where they 1047bd0f98dSmrg## appear in depend2.am. Note that the slowdown incurred here 1057bd0f98dSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1067bd0f98dSmrg for arg 1077bd0f98dSmrg do 1087bd0f98dSmrg case $arg in 1097bd0f98dSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1107bd0f98dSmrg *) set fnord "$@" "$arg" ;; 1117bd0f98dSmrg esac 1127bd0f98dSmrg shift # fnord 1137bd0f98dSmrg shift # $arg 1147bd0f98dSmrg done 1157bd0f98dSmrg "$@" 116cbeba4aeSmrg stat=$? 117cbeba4aeSmrg if test $stat -eq 0; then : 118cbeba4aeSmrg else 119cbeba4aeSmrg rm -f "$tmpdepfile" 120cbeba4aeSmrg exit $stat 121cbeba4aeSmrg fi 122cbeba4aeSmrg mv "$tmpdepfile" "$depfile" 123cbeba4aeSmrg ;; 124cbeba4aeSmrg 125cbeba4aeSmrggcc) 126cbeba4aeSmrg## There are various ways to get dependency output from gcc. Here's 127cbeba4aeSmrg## why we pick this rather obscure method: 128cbeba4aeSmrg## - Don't want to use -MD because we'd like the dependencies to end 129cbeba4aeSmrg## up in a subdir. Having to rename by hand is ugly. 130cbeba4aeSmrg## (We might end up doing this anyway to support other compilers.) 131cbeba4aeSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132cbeba4aeSmrg## -MM, not -M (despite what the docs say). 133cbeba4aeSmrg## - Using -M directly means running the compiler twice (even worse 134cbeba4aeSmrg## than renaming). 135cbeba4aeSmrg if test -z "$gccflag"; then 136cbeba4aeSmrg gccflag=-MD, 137cbeba4aeSmrg fi 138cbeba4aeSmrg "$@" -Wp,"$gccflag$tmpdepfile" 139cbeba4aeSmrg stat=$? 140cbeba4aeSmrg if test $stat -eq 0; then : 141cbeba4aeSmrg else 142cbeba4aeSmrg rm -f "$tmpdepfile" 143cbeba4aeSmrg exit $stat 144cbeba4aeSmrg fi 145cbeba4aeSmrg rm -f "$depfile" 146cbeba4aeSmrg echo "$object : \\" > "$depfile" 147cbeba4aeSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148cbeba4aeSmrg## The second -e expression handles DOS-style file names with drive letters. 149cbeba4aeSmrg sed -e 's/^[^:]*: / /' \ 150cbeba4aeSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151cbeba4aeSmrg## This next piece of magic avoids the `deleted header file' problem. 152cbeba4aeSmrg## The problem is that when a header file which appears in a .P file 153cbeba4aeSmrg## is deleted, the dependency causes make to die (because there is 154cbeba4aeSmrg## typically no way to rebuild the header). We avoid this by adding 155cbeba4aeSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 156cbeba4aeSmrg## this for us directly. 157cbeba4aeSmrg tr ' ' ' 158cbeba4aeSmrg' < "$tmpdepfile" | 159cbeba4aeSmrg## Some versions of gcc put a space before the `:'. On the theory 160cbeba4aeSmrg## that the space means something, we add a space to the output as 161cbeba4aeSmrg## well. 162cbeba4aeSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 163cbeba4aeSmrg## correctly. Breaking it into two sed invocations is a workaround. 164cbeba4aeSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165cbeba4aeSmrg rm -f "$tmpdepfile" 166cbeba4aeSmrg ;; 167cbeba4aeSmrg 168cbeba4aeSmrghp) 169cbeba4aeSmrg # This case exists only to let depend.m4 do its work. It works by 170cbeba4aeSmrg # looking at the text of this script. This case will never be run, 171cbeba4aeSmrg # since it is checked for above. 172cbeba4aeSmrg exit 1 173cbeba4aeSmrg ;; 174cbeba4aeSmrg 175cbeba4aeSmrgsgi) 176cbeba4aeSmrg if test "$libtool" = yes; then 177cbeba4aeSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178cbeba4aeSmrg else 179cbeba4aeSmrg "$@" -MDupdate "$tmpdepfile" 180cbeba4aeSmrg fi 181cbeba4aeSmrg stat=$? 182cbeba4aeSmrg if test $stat -eq 0; then : 183cbeba4aeSmrg else 184cbeba4aeSmrg rm -f "$tmpdepfile" 185cbeba4aeSmrg exit $stat 186cbeba4aeSmrg fi 187cbeba4aeSmrg rm -f "$depfile" 188cbeba4aeSmrg 189cbeba4aeSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190cbeba4aeSmrg echo "$object : \\" > "$depfile" 191cbeba4aeSmrg 192cbeba4aeSmrg # Clip off the initial element (the dependent). Don't try to be 193cbeba4aeSmrg # clever and replace this with sed code, as IRIX sed won't handle 194cbeba4aeSmrg # lines with more than a fixed number of characters (4096 in 195cbeba4aeSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196cbeba4aeSmrg # the IRIX cc adds comments like `#:fec' to the end of the 197cbeba4aeSmrg # dependency line. 198cbeba4aeSmrg tr ' ' ' 199cbeba4aeSmrg' < "$tmpdepfile" \ 200cbeba4aeSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201cbeba4aeSmrg tr ' 2027bd0f98dSmrg' ' ' >> "$depfile" 2037bd0f98dSmrg echo >> "$depfile" 204cbeba4aeSmrg 205cbeba4aeSmrg # The second pass generates a dummy entry for each header file. 206cbeba4aeSmrg tr ' ' ' 207cbeba4aeSmrg' < "$tmpdepfile" \ 208cbeba4aeSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2097bd0f98dSmrg >> "$depfile" 210cbeba4aeSmrg else 211cbeba4aeSmrg # The sourcefile does not contain any dependencies, so just 212cbeba4aeSmrg # store a dummy comment line, to avoid errors with the Makefile 213cbeba4aeSmrg # "include basename.Plo" scheme. 214cbeba4aeSmrg echo "#dummy" > "$depfile" 215cbeba4aeSmrg fi 216cbeba4aeSmrg rm -f "$tmpdepfile" 217cbeba4aeSmrg ;; 218cbeba4aeSmrg 219cbeba4aeSmrgaix) 220cbeba4aeSmrg # The C for AIX Compiler uses -M and outputs the dependencies 221cbeba4aeSmrg # in a .u file. In older versions, this file always lives in the 222cbeba4aeSmrg # current directory. Also, the AIX compiler puts `$object:' at the 223cbeba4aeSmrg # start of each line; $object doesn't have directory information. 224cbeba4aeSmrg # Version 6 uses the directory in both cases. 2257bd0f98dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2267bd0f98dSmrg test "x$dir" = "x$object" && dir= 2277bd0f98dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228cbeba4aeSmrg if test "$libtool" = yes; then 2297bd0f98dSmrg tmpdepfile1=$dir$base.u 2307bd0f98dSmrg tmpdepfile2=$base.u 2317bd0f98dSmrg tmpdepfile3=$dir.libs/$base.u 232cbeba4aeSmrg "$@" -Wc,-M 233cbeba4aeSmrg else 2347bd0f98dSmrg tmpdepfile1=$dir$base.u 2357bd0f98dSmrg tmpdepfile2=$dir$base.u 2367bd0f98dSmrg tmpdepfile3=$dir$base.u 237cbeba4aeSmrg "$@" -M 238cbeba4aeSmrg fi 239cbeba4aeSmrg stat=$? 240cbeba4aeSmrg 241cbeba4aeSmrg if test $stat -eq 0; then : 242cbeba4aeSmrg else 2437bd0f98dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244cbeba4aeSmrg exit $stat 245cbeba4aeSmrg fi 246cbeba4aeSmrg 2477bd0f98dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2487bd0f98dSmrg do 2497bd0f98dSmrg test -f "$tmpdepfile" && break 2507bd0f98dSmrg done 251cbeba4aeSmrg if test -f "$tmpdepfile"; then 252cbeba4aeSmrg # Each line is of the form `foo.o: dependent.h'. 253cbeba4aeSmrg # Do two passes, one to just change these to 254cbeba4aeSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2557bd0f98dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2567bd0f98dSmrg # That's a tab and a space in the []. 2577bd0f98dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258cbeba4aeSmrg else 259cbeba4aeSmrg # The sourcefile does not contain any dependencies, so just 260cbeba4aeSmrg # store a dummy comment line, to avoid errors with the Makefile 261cbeba4aeSmrg # "include basename.Plo" scheme. 262cbeba4aeSmrg echo "#dummy" > "$depfile" 263cbeba4aeSmrg fi 264cbeba4aeSmrg rm -f "$tmpdepfile" 265cbeba4aeSmrg ;; 266cbeba4aeSmrg 267cbeba4aeSmrgicc) 268cbeba4aeSmrg # Intel's C compiler understands `-MD -MF file'. However on 269cbeba4aeSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270cbeba4aeSmrg # ICC 7.0 will fill foo.d with something like 271cbeba4aeSmrg # foo.o: sub/foo.c 272cbeba4aeSmrg # foo.o: sub/foo.h 273cbeba4aeSmrg # which is wrong. We want: 274cbeba4aeSmrg # sub/foo.o: sub/foo.c 275cbeba4aeSmrg # sub/foo.o: sub/foo.h 276cbeba4aeSmrg # sub/foo.c: 277cbeba4aeSmrg # sub/foo.h: 278cbeba4aeSmrg # ICC 7.1 will output 279cbeba4aeSmrg # foo.o: sub/foo.c sub/foo.h 280cbeba4aeSmrg # and will wrap long lines using \ : 281cbeba4aeSmrg # foo.o: sub/foo.c ... \ 282cbeba4aeSmrg # sub/foo.h ... \ 283cbeba4aeSmrg # ... 284cbeba4aeSmrg 285cbeba4aeSmrg "$@" -MD -MF "$tmpdepfile" 286cbeba4aeSmrg stat=$? 287cbeba4aeSmrg if test $stat -eq 0; then : 288cbeba4aeSmrg else 289cbeba4aeSmrg rm -f "$tmpdepfile" 290cbeba4aeSmrg exit $stat 291cbeba4aeSmrg fi 292cbeba4aeSmrg rm -f "$depfile" 293cbeba4aeSmrg # Each line is of the form `foo.o: dependent.h', 294cbeba4aeSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295cbeba4aeSmrg # Do two passes, one to just change these to 296cbeba4aeSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 297cbeba4aeSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298cbeba4aeSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 299cbeba4aeSmrg # correctly. Breaking it into two sed invocations is a workaround. 300cbeba4aeSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301cbeba4aeSmrg sed -e 's/$/ :/' >> "$depfile" 302cbeba4aeSmrg rm -f "$tmpdepfile" 303cbeba4aeSmrg ;; 304cbeba4aeSmrg 3057bd0f98dSmrghp2) 3067bd0f98dSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3077bd0f98dSmrg # compilers, which have integrated preprocessors. The correct option 3087bd0f98dSmrg # to use with these is +Maked; it writes dependencies to a file named 3097bd0f98dSmrg # 'foo.d', which lands next to the object file, wherever that 3107bd0f98dSmrg # happens to be. 3117bd0f98dSmrg # Much of this is similar to the tru64 case; see comments there. 3127bd0f98dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3137bd0f98dSmrg test "x$dir" = "x$object" && dir= 3147bd0f98dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3157bd0f98dSmrg if test "$libtool" = yes; then 3167bd0f98dSmrg tmpdepfile1=$dir$base.d 3177bd0f98dSmrg tmpdepfile2=$dir.libs/$base.d 3187bd0f98dSmrg "$@" -Wc,+Maked 3197bd0f98dSmrg else 3207bd0f98dSmrg tmpdepfile1=$dir$base.d 3217bd0f98dSmrg tmpdepfile2=$dir$base.d 3227bd0f98dSmrg "$@" +Maked 3237bd0f98dSmrg fi 3247bd0f98dSmrg stat=$? 3257bd0f98dSmrg if test $stat -eq 0; then : 3267bd0f98dSmrg else 3277bd0f98dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3287bd0f98dSmrg exit $stat 3297bd0f98dSmrg fi 3307bd0f98dSmrg 3317bd0f98dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3327bd0f98dSmrg do 3337bd0f98dSmrg test -f "$tmpdepfile" && break 3347bd0f98dSmrg done 3357bd0f98dSmrg if test -f "$tmpdepfile"; then 3367bd0f98dSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3377bd0f98dSmrg # Add `dependent.h:' lines. 3387bd0f98dSmrg sed -ne '2,${ 3397bd0f98dSmrg s/^ *// 3407bd0f98dSmrg s/ \\*$// 3417bd0f98dSmrg s/$/:/ 3427bd0f98dSmrg p 3437bd0f98dSmrg }' "$tmpdepfile" >> "$depfile" 3447bd0f98dSmrg else 3457bd0f98dSmrg echo "#dummy" > "$depfile" 3467bd0f98dSmrg fi 3477bd0f98dSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3487bd0f98dSmrg ;; 3497bd0f98dSmrg 350cbeba4aeSmrgtru64) 351cbeba4aeSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 352cbeba4aeSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353cbeba4aeSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354cbeba4aeSmrg # dependencies in `foo.d' instead, so we check for that too. 355cbeba4aeSmrg # Subdirectories are respected. 356cbeba4aeSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357cbeba4aeSmrg test "x$dir" = "x$object" && dir= 358cbeba4aeSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359cbeba4aeSmrg 360cbeba4aeSmrg if test "$libtool" = yes; then 3617bd0f98dSmrg # With Tru64 cc, shared objects can also be used to make a 3627bd0f98dSmrg # static library. This mechanism is used in libtool 1.4 series to 3637bd0f98dSmrg # handle both shared and static libraries in a single compilation. 3647bd0f98dSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3657bd0f98dSmrg # 3667bd0f98dSmrg # With libtool 1.5 this exception was removed, and libtool now 3677bd0f98dSmrg # generates 2 separate objects for the 2 libraries. These two 3687bd0f98dSmrg # compilations output dependencies in $dir.libs/$base.o.d and 3697bd0f98dSmrg # in $dir$base.o.d. We have to check for both files, because 3707bd0f98dSmrg # one of the two compilations can be disabled. We should prefer 3717bd0f98dSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3727bd0f98dSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3737bd0f98dSmrg # the former would cause a distcleancheck panic. 3747bd0f98dSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3757bd0f98dSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3767bd0f98dSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3777bd0f98dSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378cbeba4aeSmrg "$@" -Wc,-MD 379cbeba4aeSmrg else 3807bd0f98dSmrg tmpdepfile1=$dir$base.o.d 3817bd0f98dSmrg tmpdepfile2=$dir$base.d 3827bd0f98dSmrg tmpdepfile3=$dir$base.d 3837bd0f98dSmrg tmpdepfile4=$dir$base.d 384cbeba4aeSmrg "$@" -MD 385cbeba4aeSmrg fi 386cbeba4aeSmrg 387cbeba4aeSmrg stat=$? 388cbeba4aeSmrg if test $stat -eq 0; then : 389cbeba4aeSmrg else 3907bd0f98dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391cbeba4aeSmrg exit $stat 392cbeba4aeSmrg fi 393cbeba4aeSmrg 3947bd0f98dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3957bd0f98dSmrg do 3967bd0f98dSmrg test -f "$tmpdepfile" && break 3977bd0f98dSmrg done 398cbeba4aeSmrg if test -f "$tmpdepfile"; then 399cbeba4aeSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400cbeba4aeSmrg # That's a tab and a space in the []. 401cbeba4aeSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402cbeba4aeSmrg else 403cbeba4aeSmrg echo "#dummy" > "$depfile" 404cbeba4aeSmrg fi 405cbeba4aeSmrg rm -f "$tmpdepfile" 406cbeba4aeSmrg ;; 407cbeba4aeSmrg 408cbeba4aeSmrg#nosideeffect) 409cbeba4aeSmrg # This comment above is used by automake to tell side-effect 410cbeba4aeSmrg # dependency tracking mechanisms from slower ones. 411cbeba4aeSmrg 412cbeba4aeSmrgdashmstdout) 413cbeba4aeSmrg # Important note: in order to support this mode, a compiler *must* 414cbeba4aeSmrg # always write the preprocessed file to stdout, regardless of -o. 415cbeba4aeSmrg "$@" || exit $? 416cbeba4aeSmrg 417cbeba4aeSmrg # Remove the call to Libtool. 418cbeba4aeSmrg if test "$libtool" = yes; then 4197bd0f98dSmrg while test "X$1" != 'X--mode=compile'; do 420cbeba4aeSmrg shift 421cbeba4aeSmrg done 422cbeba4aeSmrg shift 423cbeba4aeSmrg fi 424cbeba4aeSmrg 425cbeba4aeSmrg # Remove `-o $object'. 426cbeba4aeSmrg IFS=" " 427cbeba4aeSmrg for arg 428cbeba4aeSmrg do 429cbeba4aeSmrg case $arg in 430cbeba4aeSmrg -o) 431cbeba4aeSmrg shift 432cbeba4aeSmrg ;; 433cbeba4aeSmrg $object) 434cbeba4aeSmrg shift 435cbeba4aeSmrg ;; 436cbeba4aeSmrg *) 437cbeba4aeSmrg set fnord "$@" "$arg" 438cbeba4aeSmrg shift # fnord 439cbeba4aeSmrg shift # $arg 440cbeba4aeSmrg ;; 441cbeba4aeSmrg esac 442cbeba4aeSmrg done 443cbeba4aeSmrg 444cbeba4aeSmrg test -z "$dashmflag" && dashmflag=-M 445cbeba4aeSmrg # Require at least two characters before searching for `:' 446cbeba4aeSmrg # in the target name. This is to cope with DOS-style filenames: 447cbeba4aeSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448cbeba4aeSmrg "$@" $dashmflag | 449cbeba4aeSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450cbeba4aeSmrg rm -f "$depfile" 451cbeba4aeSmrg cat < "$tmpdepfile" > "$depfile" 452cbeba4aeSmrg tr ' ' ' 453cbeba4aeSmrg' < "$tmpdepfile" | \ 454cbeba4aeSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 455cbeba4aeSmrg## correctly. Breaking it into two sed invocations is a workaround. 456cbeba4aeSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457cbeba4aeSmrg rm -f "$tmpdepfile" 458cbeba4aeSmrg ;; 459cbeba4aeSmrg 460cbeba4aeSmrgdashXmstdout) 461cbeba4aeSmrg # This case only exists to satisfy depend.m4. It is never actually 462cbeba4aeSmrg # run, as this mode is specially recognized in the preamble. 463cbeba4aeSmrg exit 1 464cbeba4aeSmrg ;; 465cbeba4aeSmrg 466cbeba4aeSmrgmakedepend) 467cbeba4aeSmrg "$@" || exit $? 468cbeba4aeSmrg # Remove any Libtool call 469cbeba4aeSmrg if test "$libtool" = yes; then 4707bd0f98dSmrg while test "X$1" != 'X--mode=compile'; do 471cbeba4aeSmrg shift 472cbeba4aeSmrg done 473cbeba4aeSmrg shift 474cbeba4aeSmrg fi 475cbeba4aeSmrg # X makedepend 476cbeba4aeSmrg shift 4777bd0f98dSmrg cleared=no eat=no 4787bd0f98dSmrg for arg 4797bd0f98dSmrg do 480cbeba4aeSmrg case $cleared in 481cbeba4aeSmrg no) 482cbeba4aeSmrg set ""; shift 483cbeba4aeSmrg cleared=yes ;; 484cbeba4aeSmrg esac 4857bd0f98dSmrg if test $eat = yes; then 4867bd0f98dSmrg eat=no 4877bd0f98dSmrg continue 4887bd0f98dSmrg fi 489cbeba4aeSmrg case "$arg" in 490cbeba4aeSmrg -D*|-I*) 491cbeba4aeSmrg set fnord "$@" "$arg"; shift ;; 492cbeba4aeSmrg # Strip any option that makedepend may not understand. Remove 493cbeba4aeSmrg # the object too, otherwise makedepend will parse it as a source file. 4947bd0f98dSmrg -arch) 4957bd0f98dSmrg eat=yes ;; 496cbeba4aeSmrg -*|$object) 497cbeba4aeSmrg ;; 498cbeba4aeSmrg *) 499cbeba4aeSmrg set fnord "$@" "$arg"; shift ;; 500cbeba4aeSmrg esac 501cbeba4aeSmrg done 5027bd0f98dSmrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503cbeba4aeSmrg touch "$tmpdepfile" 504cbeba4aeSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505cbeba4aeSmrg rm -f "$depfile" 506cbeba4aeSmrg cat < "$tmpdepfile" > "$depfile" 507cbeba4aeSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508cbeba4aeSmrg' | \ 509cbeba4aeSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 510cbeba4aeSmrg## correctly. Breaking it into two sed invocations is a workaround. 511cbeba4aeSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512cbeba4aeSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513cbeba4aeSmrg ;; 514cbeba4aeSmrg 515cbeba4aeSmrgcpp) 516cbeba4aeSmrg # Important note: in order to support this mode, a compiler *must* 517cbeba4aeSmrg # always write the preprocessed file to stdout. 518cbeba4aeSmrg "$@" || exit $? 519cbeba4aeSmrg 520cbeba4aeSmrg # Remove the call to Libtool. 521cbeba4aeSmrg if test "$libtool" = yes; then 5227bd0f98dSmrg while test "X$1" != 'X--mode=compile'; do 523cbeba4aeSmrg shift 524cbeba4aeSmrg done 525cbeba4aeSmrg shift 526cbeba4aeSmrg fi 527cbeba4aeSmrg 528cbeba4aeSmrg # Remove `-o $object'. 529cbeba4aeSmrg IFS=" " 530cbeba4aeSmrg for arg 531cbeba4aeSmrg do 532cbeba4aeSmrg case $arg in 533cbeba4aeSmrg -o) 534cbeba4aeSmrg shift 535cbeba4aeSmrg ;; 536cbeba4aeSmrg $object) 537cbeba4aeSmrg shift 538cbeba4aeSmrg ;; 539cbeba4aeSmrg *) 540cbeba4aeSmrg set fnord "$@" "$arg" 541cbeba4aeSmrg shift # fnord 542cbeba4aeSmrg shift # $arg 543cbeba4aeSmrg ;; 544cbeba4aeSmrg esac 545cbeba4aeSmrg done 546cbeba4aeSmrg 547cbeba4aeSmrg "$@" -E | 5487bd0f98dSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5497bd0f98dSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550cbeba4aeSmrg sed '$ s: \\$::' > "$tmpdepfile" 551cbeba4aeSmrg rm -f "$depfile" 552cbeba4aeSmrg echo "$object : \\" > "$depfile" 553cbeba4aeSmrg cat < "$tmpdepfile" >> "$depfile" 554cbeba4aeSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555cbeba4aeSmrg rm -f "$tmpdepfile" 556cbeba4aeSmrg ;; 557cbeba4aeSmrg 558cbeba4aeSmrgmsvisualcpp) 559cbeba4aeSmrg # Important note: in order to support this mode, a compiler *must* 5607bd0f98dSmrg # always write the preprocessed file to stdout. 561cbeba4aeSmrg "$@" || exit $? 5627bd0f98dSmrg 5637bd0f98dSmrg # Remove the call to Libtool. 5647bd0f98dSmrg if test "$libtool" = yes; then 5657bd0f98dSmrg while test "X$1" != 'X--mode=compile'; do 5667bd0f98dSmrg shift 5677bd0f98dSmrg done 5687bd0f98dSmrg shift 5697bd0f98dSmrg fi 5707bd0f98dSmrg 571cbeba4aeSmrg IFS=" " 572cbeba4aeSmrg for arg 573cbeba4aeSmrg do 574cbeba4aeSmrg case "$arg" in 5757bd0f98dSmrg -o) 5767bd0f98dSmrg shift 5777bd0f98dSmrg ;; 5787bd0f98dSmrg $object) 5797bd0f98dSmrg shift 5807bd0f98dSmrg ;; 581cbeba4aeSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582cbeba4aeSmrg set fnord "$@" 583cbeba4aeSmrg shift 584cbeba4aeSmrg shift 585cbeba4aeSmrg ;; 586cbeba4aeSmrg *) 587cbeba4aeSmrg set fnord "$@" "$arg" 588cbeba4aeSmrg shift 589cbeba4aeSmrg shift 590cbeba4aeSmrg ;; 591cbeba4aeSmrg esac 592cbeba4aeSmrg done 5937bd0f98dSmrg "$@" -E 2>/dev/null | 5947bd0f98dSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595cbeba4aeSmrg rm -f "$depfile" 596cbeba4aeSmrg echo "$object : \\" > "$depfile" 5977bd0f98dSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598cbeba4aeSmrg echo " " >> "$depfile" 5997bd0f98dSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600cbeba4aeSmrg rm -f "$tmpdepfile" 601cbeba4aeSmrg ;; 602cbeba4aeSmrg 6037bd0f98dSmrgmsvcmsys) 6047bd0f98dSmrg # This case exists only to let depend.m4 do its work. It works by 6057bd0f98dSmrg # looking at the text of this script. This case will never be run, 6067bd0f98dSmrg # since it is checked for above. 6077bd0f98dSmrg exit 1 6087bd0f98dSmrg ;; 6097bd0f98dSmrg 610cbeba4aeSmrgnone) 611cbeba4aeSmrg exec "$@" 612cbeba4aeSmrg ;; 613cbeba4aeSmrg 614cbeba4aeSmrg*) 615cbeba4aeSmrg echo "Unknown depmode $depmode" 1>&2 616cbeba4aeSmrg exit 1 617cbeba4aeSmrg ;; 618cbeba4aeSmrgesac 619cbeba4aeSmrg 620cbeba4aeSmrgexit 0 6217bd0f98dSmrg 6227bd0f98dSmrg# Local Variables: 6237bd0f98dSmrg# mode: shell-script 6247bd0f98dSmrg# sh-indentation: 2 6257bd0f98dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6267bd0f98dSmrg# time-stamp-start: "scriptversion=" 6277bd0f98dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6287bd0f98dSmrg# time-stamp-time-zone: "UTC" 6297bd0f98dSmrg# time-stamp-end: "; # UTC" 6307bd0f98dSmrg# End: 631