depcomp revision 56957a04
1ef981d24Smrg#! /bin/sh 2ef981d24Smrg# depcomp - compile a program generating dependencies as side-effects 3ef981d24Smrg 456957a04Smrgscriptversion=2009-04-28.21; # UTC 5ef981d24Smrg 656957a04Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 756957a04Smrg# Software Foundation, Inc. 8ef981d24Smrg 9ef981d24Smrg# This program is free software; you can redistribute it and/or modify 10ef981d24Smrg# it under the terms of the GNU General Public License as published by 11ef981d24Smrg# the Free Software Foundation; either version 2, or (at your option) 12ef981d24Smrg# any later version. 13ef981d24Smrg 14ef981d24Smrg# This program is distributed in the hope that it will be useful, 15ef981d24Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16ef981d24Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17ef981d24Smrg# GNU General Public License for more details. 18ef981d24Smrg 19ef981d24Smrg# You should have received a copy of the GNU General Public License 2056957a04Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21ef981d24Smrg 22ef981d24Smrg# As a special exception to the GNU General Public License, if you 23ef981d24Smrg# distribute this file as part of a program that contains a 24ef981d24Smrg# configuration script generated by Autoconf, you may include it under 25ef981d24Smrg# the same distribution terms that you use for the rest of that program. 26ef981d24Smrg 27ef981d24Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28ef981d24Smrg 29ef981d24Smrgcase $1 in 30ef981d24Smrg '') 31ef981d24Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 32ef981d24Smrg exit 1; 33ef981d24Smrg ;; 34ef981d24Smrg -h | --h*) 35ef981d24Smrg cat <<\EOF 36ef981d24SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 37ef981d24Smrg 38ef981d24SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 39ef981d24Smrgas side-effects. 40ef981d24Smrg 41ef981d24SmrgEnvironment variables: 42ef981d24Smrg depmode Dependency tracking mode. 43ef981d24Smrg source Source file read by `PROGRAMS ARGS'. 44ef981d24Smrg object Object file output by `PROGRAMS ARGS'. 45ef981d24Smrg DEPDIR directory where to store dependencies. 46ef981d24Smrg depfile Dependency file to output. 47ef981d24Smrg tmpdepfile Temporary file to use when outputing dependencies. 48ef981d24Smrg libtool Whether libtool is used (yes/no). 49ef981d24Smrg 50ef981d24SmrgReport bugs to <bug-automake@gnu.org>. 51ef981d24SmrgEOF 52ef981d24Smrg exit $? 53ef981d24Smrg ;; 54ef981d24Smrg -v | --v*) 55ef981d24Smrg echo "depcomp $scriptversion" 56ef981d24Smrg exit $? 57ef981d24Smrg ;; 58ef981d24Smrgesac 59ef981d24Smrg 60ef981d24Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61ef981d24Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62ef981d24Smrg exit 1 63ef981d24Smrgfi 64ef981d24Smrg 65ef981d24Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 66ef981d24Smrgdepfile=${depfile-`echo "$object" | 67ef981d24Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68ef981d24Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69ef981d24Smrg 70ef981d24Smrgrm -f "$tmpdepfile" 71ef981d24Smrg 72ef981d24Smrg# Some modes work just like other modes, but use different flags. We 73ef981d24Smrg# parameterize here, but still list the modes in the big case below, 74ef981d24Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75ef981d24Smrg# here, because this file can only contain one case statement. 76ef981d24Smrgif test "$depmode" = hp; then 77ef981d24Smrg # HP compiler uses -M and no extra arg. 78ef981d24Smrg gccflag=-M 79ef981d24Smrg depmode=gcc 80ef981d24Smrgfi 81ef981d24Smrg 82ef981d24Smrgif test "$depmode" = dashXmstdout; then 83ef981d24Smrg # This is just like dashmstdout with a different argument. 84ef981d24Smrg dashmflag=-xM 85ef981d24Smrg depmode=dashmstdout 86ef981d24Smrgfi 87ef981d24Smrg 8856957a04Smrgcygpath_u="cygpath -u -f -" 8956957a04Smrgif test "$depmode" = msvcmsys; then 9056957a04Smrg # This is just like msvisualcpp but w/o cygpath translation. 9156957a04Smrg # Just convert the backslash-escaped backslashes to single forward 9256957a04Smrg # slashes to satisfy depend.m4 9356957a04Smrg cygpath_u="sed s,\\\\\\\\,/,g" 9456957a04Smrg depmode=msvisualcpp 9556957a04Smrgfi 9656957a04Smrg 97ef981d24Smrgcase "$depmode" in 98ef981d24Smrggcc3) 99ef981d24Smrg## gcc 3 implements dependency tracking that does exactly what 100ef981d24Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101ef981d24Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 102ef981d24Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 103ef981d24Smrg## the command line argument order; so add the flags where they 104ef981d24Smrg## appear in depend2.am. Note that the slowdown incurred here 105ef981d24Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 106ef981d24Smrg for arg 107ef981d24Smrg do 108ef981d24Smrg case $arg in 109ef981d24Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 110ef981d24Smrg *) set fnord "$@" "$arg" ;; 111ef981d24Smrg esac 112ef981d24Smrg shift # fnord 113ef981d24Smrg shift # $arg 114ef981d24Smrg done 115ef981d24Smrg "$@" 116ef981d24Smrg stat=$? 117ef981d24Smrg if test $stat -eq 0; then : 118ef981d24Smrg else 119ef981d24Smrg rm -f "$tmpdepfile" 120ef981d24Smrg exit $stat 121ef981d24Smrg fi 122ef981d24Smrg mv "$tmpdepfile" "$depfile" 123ef981d24Smrg ;; 124ef981d24Smrg 125ef981d24Smrggcc) 126ef981d24Smrg## There are various ways to get dependency output from gcc. Here's 127ef981d24Smrg## why we pick this rather obscure method: 128ef981d24Smrg## - Don't want to use -MD because we'd like the dependencies to end 129ef981d24Smrg## up in a subdir. Having to rename by hand is ugly. 130ef981d24Smrg## (We might end up doing this anyway to support other compilers.) 131ef981d24Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132ef981d24Smrg## -MM, not -M (despite what the docs say). 133ef981d24Smrg## - Using -M directly means running the compiler twice (even worse 134ef981d24Smrg## than renaming). 135ef981d24Smrg if test -z "$gccflag"; then 136ef981d24Smrg gccflag=-MD, 137ef981d24Smrg fi 138ef981d24Smrg "$@" -Wp,"$gccflag$tmpdepfile" 139ef981d24Smrg stat=$? 140ef981d24Smrg if test $stat -eq 0; then : 141ef981d24Smrg else 142ef981d24Smrg rm -f "$tmpdepfile" 143ef981d24Smrg exit $stat 144ef981d24Smrg fi 145ef981d24Smrg rm -f "$depfile" 146ef981d24Smrg echo "$object : \\" > "$depfile" 147ef981d24Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148ef981d24Smrg## The second -e expression handles DOS-style file names with drive letters. 149ef981d24Smrg sed -e 's/^[^:]*: / /' \ 150ef981d24Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151ef981d24Smrg## This next piece of magic avoids the `deleted header file' problem. 152ef981d24Smrg## The problem is that when a header file which appears in a .P file 153ef981d24Smrg## is deleted, the dependency causes make to die (because there is 154ef981d24Smrg## typically no way to rebuild the header). We avoid this by adding 155ef981d24Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 156ef981d24Smrg## this for us directly. 157ef981d24Smrg tr ' ' ' 158ef981d24Smrg' < "$tmpdepfile" | 159ef981d24Smrg## Some versions of gcc put a space before the `:'. On the theory 160ef981d24Smrg## that the space means something, we add a space to the output as 161ef981d24Smrg## well. 162ef981d24Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 163ef981d24Smrg## correctly. Breaking it into two sed invocations is a workaround. 164ef981d24Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165ef981d24Smrg rm -f "$tmpdepfile" 166ef981d24Smrg ;; 167ef981d24Smrg 168ef981d24Smrghp) 169ef981d24Smrg # This case exists only to let depend.m4 do its work. It works by 170ef981d24Smrg # looking at the text of this script. This case will never be run, 171ef981d24Smrg # since it is checked for above. 172ef981d24Smrg exit 1 173ef981d24Smrg ;; 174ef981d24Smrg 175ef981d24Smrgsgi) 176ef981d24Smrg if test "$libtool" = yes; then 177ef981d24Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178ef981d24Smrg else 179ef981d24Smrg "$@" -MDupdate "$tmpdepfile" 180ef981d24Smrg fi 181ef981d24Smrg stat=$? 182ef981d24Smrg if test $stat -eq 0; then : 183ef981d24Smrg else 184ef981d24Smrg rm -f "$tmpdepfile" 185ef981d24Smrg exit $stat 186ef981d24Smrg fi 187ef981d24Smrg rm -f "$depfile" 188ef981d24Smrg 189ef981d24Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190ef981d24Smrg echo "$object : \\" > "$depfile" 191ef981d24Smrg 192ef981d24Smrg # Clip off the initial element (the dependent). Don't try to be 193ef981d24Smrg # clever and replace this with sed code, as IRIX sed won't handle 194ef981d24Smrg # lines with more than a fixed number of characters (4096 in 195ef981d24Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196ef981d24Smrg # the IRIX cc adds comments like `#:fec' to the end of the 197ef981d24Smrg # dependency line. 198ef981d24Smrg tr ' ' ' 199ef981d24Smrg' < "$tmpdepfile" \ 200ef981d24Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201ef981d24Smrg tr ' 20256957a04Smrg' ' ' >> "$depfile" 20356957a04Smrg echo >> "$depfile" 204ef981d24Smrg 205ef981d24Smrg # The second pass generates a dummy entry for each header file. 206ef981d24Smrg tr ' ' ' 207ef981d24Smrg' < "$tmpdepfile" \ 208ef981d24Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 20956957a04Smrg >> "$depfile" 210ef981d24Smrg else 211ef981d24Smrg # The sourcefile does not contain any dependencies, so just 212ef981d24Smrg # store a dummy comment line, to avoid errors with the Makefile 213ef981d24Smrg # "include basename.Plo" scheme. 214ef981d24Smrg echo "#dummy" > "$depfile" 215ef981d24Smrg fi 216ef981d24Smrg rm -f "$tmpdepfile" 217ef981d24Smrg ;; 218ef981d24Smrg 219ef981d24Smrgaix) 220ef981d24Smrg # The C for AIX Compiler uses -M and outputs the dependencies 221ef981d24Smrg # in a .u file. In older versions, this file always lives in the 222ef981d24Smrg # current directory. Also, the AIX compiler puts `$object:' at the 223ef981d24Smrg # start of each line; $object doesn't have directory information. 224ef981d24Smrg # Version 6 uses the directory in both cases. 22565eef222Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 22665eef222Smrg test "x$dir" = "x$object" && dir= 22765eef222Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228ef981d24Smrg if test "$libtool" = yes; then 22965eef222Smrg tmpdepfile1=$dir$base.u 23065eef222Smrg tmpdepfile2=$base.u 23165eef222Smrg tmpdepfile3=$dir.libs/$base.u 232ef981d24Smrg "$@" -Wc,-M 233ef981d24Smrg else 23465eef222Smrg tmpdepfile1=$dir$base.u 23565eef222Smrg tmpdepfile2=$dir$base.u 23665eef222Smrg tmpdepfile3=$dir$base.u 237ef981d24Smrg "$@" -M 238ef981d24Smrg fi 239ef981d24Smrg stat=$? 240ef981d24Smrg 241ef981d24Smrg if test $stat -eq 0; then : 242ef981d24Smrg else 24365eef222Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244ef981d24Smrg exit $stat 245ef981d24Smrg fi 246ef981d24Smrg 24765eef222Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24865eef222Smrg do 24965eef222Smrg test -f "$tmpdepfile" && break 25065eef222Smrg done 251ef981d24Smrg if test -f "$tmpdepfile"; then 252ef981d24Smrg # Each line is of the form `foo.o: dependent.h'. 253ef981d24Smrg # Do two passes, one to just change these to 254ef981d24Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 25565eef222Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 25665eef222Smrg # That's a tab and a space in the []. 25765eef222Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258ef981d24Smrg else 259ef981d24Smrg # The sourcefile does not contain any dependencies, so just 260ef981d24Smrg # store a dummy comment line, to avoid errors with the Makefile 261ef981d24Smrg # "include basename.Plo" scheme. 262ef981d24Smrg echo "#dummy" > "$depfile" 263ef981d24Smrg fi 264ef981d24Smrg rm -f "$tmpdepfile" 265ef981d24Smrg ;; 266ef981d24Smrg 267ef981d24Smrgicc) 268ef981d24Smrg # Intel's C compiler understands `-MD -MF file'. However on 269ef981d24Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270ef981d24Smrg # ICC 7.0 will fill foo.d with something like 271ef981d24Smrg # foo.o: sub/foo.c 272ef981d24Smrg # foo.o: sub/foo.h 273ef981d24Smrg # which is wrong. We want: 274ef981d24Smrg # sub/foo.o: sub/foo.c 275ef981d24Smrg # sub/foo.o: sub/foo.h 276ef981d24Smrg # sub/foo.c: 277ef981d24Smrg # sub/foo.h: 278ef981d24Smrg # ICC 7.1 will output 279ef981d24Smrg # foo.o: sub/foo.c sub/foo.h 280ef981d24Smrg # and will wrap long lines using \ : 281ef981d24Smrg # foo.o: sub/foo.c ... \ 282ef981d24Smrg # sub/foo.h ... \ 283ef981d24Smrg # ... 284ef981d24Smrg 285ef981d24Smrg "$@" -MD -MF "$tmpdepfile" 286ef981d24Smrg stat=$? 287ef981d24Smrg if test $stat -eq 0; then : 288ef981d24Smrg else 289ef981d24Smrg rm -f "$tmpdepfile" 290ef981d24Smrg exit $stat 291ef981d24Smrg fi 292ef981d24Smrg rm -f "$depfile" 293ef981d24Smrg # Each line is of the form `foo.o: dependent.h', 294ef981d24Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295ef981d24Smrg # Do two passes, one to just change these to 296ef981d24Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 297ef981d24Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298ef981d24Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 299ef981d24Smrg # correctly. Breaking it into two sed invocations is a workaround. 300ef981d24Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301ef981d24Smrg sed -e 's/$/ :/' >> "$depfile" 302ef981d24Smrg rm -f "$tmpdepfile" 303ef981d24Smrg ;; 304ef981d24Smrg 305ef981d24Smrghp2) 306ef981d24Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 307ef981d24Smrg # compilers, which have integrated preprocessors. The correct option 308ef981d24Smrg # to use with these is +Maked; it writes dependencies to a file named 309ef981d24Smrg # 'foo.d', which lands next to the object file, wherever that 310ef981d24Smrg # happens to be. 311ef981d24Smrg # Much of this is similar to the tru64 case; see comments there. 312ef981d24Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 313ef981d24Smrg test "x$dir" = "x$object" && dir= 314ef981d24Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 315ef981d24Smrg if test "$libtool" = yes; then 316ef981d24Smrg tmpdepfile1=$dir$base.d 317ef981d24Smrg tmpdepfile2=$dir.libs/$base.d 318ef981d24Smrg "$@" -Wc,+Maked 319ef981d24Smrg else 320ef981d24Smrg tmpdepfile1=$dir$base.d 321ef981d24Smrg tmpdepfile2=$dir$base.d 322ef981d24Smrg "$@" +Maked 323ef981d24Smrg fi 324ef981d24Smrg stat=$? 325ef981d24Smrg if test $stat -eq 0; then : 326ef981d24Smrg else 327ef981d24Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 328ef981d24Smrg exit $stat 329ef981d24Smrg fi 330ef981d24Smrg 331ef981d24Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 332ef981d24Smrg do 333ef981d24Smrg test -f "$tmpdepfile" && break 334ef981d24Smrg done 335ef981d24Smrg if test -f "$tmpdepfile"; then 336ef981d24Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 337ef981d24Smrg # Add `dependent.h:' lines. 33856957a04Smrg sed -ne '2,${ 33956957a04Smrg s/^ *// 34056957a04Smrg s/ \\*$// 34156957a04Smrg s/$/:/ 34256957a04Smrg p 34356957a04Smrg }' "$tmpdepfile" >> "$depfile" 344ef981d24Smrg else 345ef981d24Smrg echo "#dummy" > "$depfile" 346ef981d24Smrg fi 347ef981d24Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 348ef981d24Smrg ;; 349ef981d24Smrg 350ef981d24Smrgtru64) 351ef981d24Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 352ef981d24Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353ef981d24Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354ef981d24Smrg # dependencies in `foo.d' instead, so we check for that too. 355ef981d24Smrg # Subdirectories are respected. 356ef981d24Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357ef981d24Smrg test "x$dir" = "x$object" && dir= 358ef981d24Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359ef981d24Smrg 360ef981d24Smrg if test "$libtool" = yes; then 361ef981d24Smrg # With Tru64 cc, shared objects can also be used to make a 362ef981d24Smrg # static library. This mechanism is used in libtool 1.4 series to 363ef981d24Smrg # handle both shared and static libraries in a single compilation. 364ef981d24Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 365ef981d24Smrg # 366ef981d24Smrg # With libtool 1.5 this exception was removed, and libtool now 367ef981d24Smrg # generates 2 separate objects for the 2 libraries. These two 368ef981d24Smrg # compilations output dependencies in $dir.libs/$base.o.d and 369ef981d24Smrg # in $dir$base.o.d. We have to check for both files, because 370ef981d24Smrg # one of the two compilations can be disabled. We should prefer 371ef981d24Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 372ef981d24Smrg # automatically cleaned when .libs/ is deleted, while ignoring 373ef981d24Smrg # the former would cause a distcleancheck panic. 374ef981d24Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 375ef981d24Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 376ef981d24Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 377ef981d24Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378ef981d24Smrg "$@" -Wc,-MD 379ef981d24Smrg else 380ef981d24Smrg tmpdepfile1=$dir$base.o.d 381ef981d24Smrg tmpdepfile2=$dir$base.d 382ef981d24Smrg tmpdepfile3=$dir$base.d 383ef981d24Smrg tmpdepfile4=$dir$base.d 384ef981d24Smrg "$@" -MD 385ef981d24Smrg fi 386ef981d24Smrg 387ef981d24Smrg stat=$? 388ef981d24Smrg if test $stat -eq 0; then : 389ef981d24Smrg else 390ef981d24Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391ef981d24Smrg exit $stat 392ef981d24Smrg fi 393ef981d24Smrg 394ef981d24Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 395ef981d24Smrg do 396ef981d24Smrg test -f "$tmpdepfile" && break 397ef981d24Smrg done 398ef981d24Smrg if test -f "$tmpdepfile"; then 399ef981d24Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400ef981d24Smrg # That's a tab and a space in the []. 401ef981d24Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402ef981d24Smrg else 403ef981d24Smrg echo "#dummy" > "$depfile" 404ef981d24Smrg fi 405ef981d24Smrg rm -f "$tmpdepfile" 406ef981d24Smrg ;; 407ef981d24Smrg 408ef981d24Smrg#nosideeffect) 409ef981d24Smrg # This comment above is used by automake to tell side-effect 410ef981d24Smrg # dependency tracking mechanisms from slower ones. 411ef981d24Smrg 412ef981d24Smrgdashmstdout) 413ef981d24Smrg # Important note: in order to support this mode, a compiler *must* 414ef981d24Smrg # always write the preprocessed file to stdout, regardless of -o. 415ef981d24Smrg "$@" || exit $? 416ef981d24Smrg 417ef981d24Smrg # Remove the call to Libtool. 418ef981d24Smrg if test "$libtool" = yes; then 41956957a04Smrg while test "X$1" != 'X--mode=compile'; do 420ef981d24Smrg shift 421ef981d24Smrg done 422ef981d24Smrg shift 423ef981d24Smrg fi 424ef981d24Smrg 425ef981d24Smrg # Remove `-o $object'. 426ef981d24Smrg IFS=" " 427ef981d24Smrg for arg 428ef981d24Smrg do 429ef981d24Smrg case $arg in 430ef981d24Smrg -o) 431ef981d24Smrg shift 432ef981d24Smrg ;; 433ef981d24Smrg $object) 434ef981d24Smrg shift 435ef981d24Smrg ;; 436ef981d24Smrg *) 437ef981d24Smrg set fnord "$@" "$arg" 438ef981d24Smrg shift # fnord 439ef981d24Smrg shift # $arg 440ef981d24Smrg ;; 441ef981d24Smrg esac 442ef981d24Smrg done 443ef981d24Smrg 444ef981d24Smrg test -z "$dashmflag" && dashmflag=-M 445ef981d24Smrg # Require at least two characters before searching for `:' 446ef981d24Smrg # in the target name. This is to cope with DOS-style filenames: 447ef981d24Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448ef981d24Smrg "$@" $dashmflag | 449ef981d24Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450ef981d24Smrg rm -f "$depfile" 451ef981d24Smrg cat < "$tmpdepfile" > "$depfile" 452ef981d24Smrg tr ' ' ' 453ef981d24Smrg' < "$tmpdepfile" | \ 454ef981d24Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 455ef981d24Smrg## correctly. Breaking it into two sed invocations is a workaround. 456ef981d24Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457ef981d24Smrg rm -f "$tmpdepfile" 458ef981d24Smrg ;; 459ef981d24Smrg 460ef981d24SmrgdashXmstdout) 461ef981d24Smrg # This case only exists to satisfy depend.m4. It is never actually 462ef981d24Smrg # run, as this mode is specially recognized in the preamble. 463ef981d24Smrg exit 1 464ef981d24Smrg ;; 465ef981d24Smrg 466ef981d24Smrgmakedepend) 467ef981d24Smrg "$@" || exit $? 468ef981d24Smrg # Remove any Libtool call 469ef981d24Smrg if test "$libtool" = yes; then 47056957a04Smrg while test "X$1" != 'X--mode=compile'; do 471ef981d24Smrg shift 472ef981d24Smrg done 473ef981d24Smrg shift 474ef981d24Smrg fi 475ef981d24Smrg # X makedepend 476ef981d24Smrg shift 47756957a04Smrg cleared=no eat=no 47856957a04Smrg for arg 47956957a04Smrg do 480ef981d24Smrg case $cleared in 481ef981d24Smrg no) 482ef981d24Smrg set ""; shift 483ef981d24Smrg cleared=yes ;; 484ef981d24Smrg esac 48556957a04Smrg if test $eat = yes; then 48656957a04Smrg eat=no 48756957a04Smrg continue 48856957a04Smrg fi 489ef981d24Smrg case "$arg" in 490ef981d24Smrg -D*|-I*) 491ef981d24Smrg set fnord "$@" "$arg"; shift ;; 492ef981d24Smrg # Strip any option that makedepend may not understand. Remove 493ef981d24Smrg # the object too, otherwise makedepend will parse it as a source file. 49456957a04Smrg -arch) 49556957a04Smrg eat=yes ;; 496ef981d24Smrg -*|$object) 497ef981d24Smrg ;; 498ef981d24Smrg *) 499ef981d24Smrg set fnord "$@" "$arg"; shift ;; 500ef981d24Smrg esac 501ef981d24Smrg done 50256957a04Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503ef981d24Smrg touch "$tmpdepfile" 504ef981d24Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505ef981d24Smrg rm -f "$depfile" 506ef981d24Smrg cat < "$tmpdepfile" > "$depfile" 507ef981d24Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508ef981d24Smrg' | \ 509ef981d24Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 510ef981d24Smrg## correctly. Breaking it into two sed invocations is a workaround. 511ef981d24Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512ef981d24Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513ef981d24Smrg ;; 514ef981d24Smrg 515ef981d24Smrgcpp) 516ef981d24Smrg # Important note: in order to support this mode, a compiler *must* 517ef981d24Smrg # always write the preprocessed file to stdout. 518ef981d24Smrg "$@" || exit $? 519ef981d24Smrg 520ef981d24Smrg # Remove the call to Libtool. 521ef981d24Smrg if test "$libtool" = yes; then 52256957a04Smrg while test "X$1" != 'X--mode=compile'; do 523ef981d24Smrg shift 524ef981d24Smrg done 525ef981d24Smrg shift 526ef981d24Smrg fi 527ef981d24Smrg 528ef981d24Smrg # Remove `-o $object'. 529ef981d24Smrg IFS=" " 530ef981d24Smrg for arg 531ef981d24Smrg do 532ef981d24Smrg case $arg in 533ef981d24Smrg -o) 534ef981d24Smrg shift 535ef981d24Smrg ;; 536ef981d24Smrg $object) 537ef981d24Smrg shift 538ef981d24Smrg ;; 539ef981d24Smrg *) 540ef981d24Smrg set fnord "$@" "$arg" 541ef981d24Smrg shift # fnord 542ef981d24Smrg shift # $arg 543ef981d24Smrg ;; 544ef981d24Smrg esac 545ef981d24Smrg done 546ef981d24Smrg 547ef981d24Smrg "$@" -E | 548ef981d24Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 549ef981d24Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550ef981d24Smrg sed '$ s: \\$::' > "$tmpdepfile" 551ef981d24Smrg rm -f "$depfile" 552ef981d24Smrg echo "$object : \\" > "$depfile" 553ef981d24Smrg cat < "$tmpdepfile" >> "$depfile" 554ef981d24Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555ef981d24Smrg rm -f "$tmpdepfile" 556ef981d24Smrg ;; 557ef981d24Smrg 558ef981d24Smrgmsvisualcpp) 559ef981d24Smrg # Important note: in order to support this mode, a compiler *must* 56056957a04Smrg # always write the preprocessed file to stdout. 561ef981d24Smrg "$@" || exit $? 56256957a04Smrg 56356957a04Smrg # Remove the call to Libtool. 56456957a04Smrg if test "$libtool" = yes; then 56556957a04Smrg while test "X$1" != 'X--mode=compile'; do 56656957a04Smrg shift 56756957a04Smrg done 56856957a04Smrg shift 56956957a04Smrg fi 57056957a04Smrg 571ef981d24Smrg IFS=" " 572ef981d24Smrg for arg 573ef981d24Smrg do 574ef981d24Smrg case "$arg" in 57556957a04Smrg -o) 57656957a04Smrg shift 57756957a04Smrg ;; 57856957a04Smrg $object) 57956957a04Smrg shift 58056957a04Smrg ;; 581ef981d24Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582ef981d24Smrg set fnord "$@" 583ef981d24Smrg shift 584ef981d24Smrg shift 585ef981d24Smrg ;; 586ef981d24Smrg *) 587ef981d24Smrg set fnord "$@" "$arg" 588ef981d24Smrg shift 589ef981d24Smrg shift 590ef981d24Smrg ;; 591ef981d24Smrg esac 592ef981d24Smrg done 59356957a04Smrg "$@" -E 2>/dev/null | 59456957a04Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595ef981d24Smrg rm -f "$depfile" 596ef981d24Smrg echo "$object : \\" > "$depfile" 59756957a04Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598ef981d24Smrg echo " " >> "$depfile" 59956957a04Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600ef981d24Smrg rm -f "$tmpdepfile" 601ef981d24Smrg ;; 602ef981d24Smrg 60356957a04Smrgmsvcmsys) 60456957a04Smrg # This case exists only to let depend.m4 do its work. It works by 60556957a04Smrg # looking at the text of this script. This case will never be run, 60656957a04Smrg # since it is checked for above. 60756957a04Smrg exit 1 60856957a04Smrg ;; 60956957a04Smrg 610ef981d24Smrgnone) 611ef981d24Smrg exec "$@" 612ef981d24Smrg ;; 613ef981d24Smrg 614ef981d24Smrg*) 615ef981d24Smrg echo "Unknown depmode $depmode" 1>&2 616ef981d24Smrg exit 1 617ef981d24Smrg ;; 618ef981d24Smrgesac 619ef981d24Smrg 620ef981d24Smrgexit 0 621ef981d24Smrg 622ef981d24Smrg# Local Variables: 623ef981d24Smrg# mode: shell-script 624ef981d24Smrg# sh-indentation: 2 625ef981d24Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 626ef981d24Smrg# time-stamp-start: "scriptversion=" 627ef981d24Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 62856957a04Smrg# time-stamp-time-zone: "UTC" 62956957a04Smrg# time-stamp-end: "; # UTC" 630ef981d24Smrg# End: 631