depcomp revision 962c3257
1d983712dSmrg#! /bin/sh 2d983712dSmrg# depcomp - compile a program generating dependencies as side-effects 3d983712dSmrg 4962c3257Smrgscriptversion=2007-03-29.01 5d983712dSmrg 6962c3257Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software 7962c3257Smrg# Foundation, Inc. 8d983712dSmrg 9d983712dSmrg# This program is free software; you can redistribute it and/or modify 10d983712dSmrg# it under the terms of the GNU General Public License as published by 11d983712dSmrg# the Free Software Foundation; either version 2, or (at your option) 12d983712dSmrg# any later version. 13d983712dSmrg 14d983712dSmrg# This program is distributed in the hope that it will be useful, 15d983712dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16d983712dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17d983712dSmrg# GNU General Public License for more details. 18d983712dSmrg 19d983712dSmrg# You should have received a copy of the GNU General Public License 20d983712dSmrg# along with this program; if not, write to the Free Software 21d983712dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 22d983712dSmrg# 02110-1301, USA. 23d983712dSmrg 24d983712dSmrg# As a special exception to the GNU General Public License, if you 25d983712dSmrg# distribute this file as part of a program that contains a 26d983712dSmrg# configuration script generated by Autoconf, you may include it under 27d983712dSmrg# the same distribution terms that you use for the rest of that program. 28d983712dSmrg 29d983712dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 30d983712dSmrg 31d983712dSmrgcase $1 in 32d983712dSmrg '') 33d983712dSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 34d983712dSmrg exit 1; 35d983712dSmrg ;; 36d983712dSmrg -h | --h*) 37d983712dSmrg cat <<\EOF 38d983712dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 39d983712dSmrg 40d983712dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 41d983712dSmrgas side-effects. 42d983712dSmrg 43d983712dSmrgEnvironment variables: 44d983712dSmrg depmode Dependency tracking mode. 45d983712dSmrg source Source file read by `PROGRAMS ARGS'. 46d983712dSmrg object Object file output by `PROGRAMS ARGS'. 47d983712dSmrg DEPDIR directory where to store dependencies. 48d983712dSmrg depfile Dependency file to output. 49d983712dSmrg tmpdepfile Temporary file to use when outputing dependencies. 50d983712dSmrg libtool Whether libtool is used (yes/no). 51d983712dSmrg 52d983712dSmrgReport bugs to <bug-automake@gnu.org>. 53d983712dSmrgEOF 54d983712dSmrg exit $? 55d983712dSmrg ;; 56d983712dSmrg -v | --v*) 57d983712dSmrg echo "depcomp $scriptversion" 58d983712dSmrg exit $? 59d983712dSmrg ;; 60d983712dSmrgesac 61d983712dSmrg 62d983712dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 63d983712dSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 64d983712dSmrg exit 1 65d983712dSmrgfi 66d983712dSmrg 67d983712dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 68d983712dSmrgdepfile=${depfile-`echo "$object" | 69d983712dSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 70d983712dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 71d983712dSmrg 72d983712dSmrgrm -f "$tmpdepfile" 73d983712dSmrg 74d983712dSmrg# Some modes work just like other modes, but use different flags. We 75d983712dSmrg# parameterize here, but still list the modes in the big case below, 76d983712dSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 77d983712dSmrg# here, because this file can only contain one case statement. 78d983712dSmrgif test "$depmode" = hp; then 79d983712dSmrg # HP compiler uses -M and no extra arg. 80d983712dSmrg gccflag=-M 81d983712dSmrg depmode=gcc 82d983712dSmrgfi 83d983712dSmrg 84d983712dSmrgif test "$depmode" = dashXmstdout; then 85d983712dSmrg # This is just like dashmstdout with a different argument. 86d983712dSmrg dashmflag=-xM 87d983712dSmrg depmode=dashmstdout 88d983712dSmrgfi 89d983712dSmrg 90d983712dSmrgcase "$depmode" in 91d983712dSmrggcc3) 92d983712dSmrg## gcc 3 implements dependency tracking that does exactly what 93d983712dSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 94d983712dSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 95962c3257Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 96962c3257Smrg## the command line argument order; so add the flags where they 97962c3257Smrg## appear in depend2.am. Note that the slowdown incurred here 98962c3257Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 99962c3257Smrg for arg 100962c3257Smrg do 101962c3257Smrg case $arg in 102962c3257Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 103962c3257Smrg *) set fnord "$@" "$arg" ;; 104962c3257Smrg esac 105962c3257Smrg shift # fnord 106962c3257Smrg shift # $arg 107962c3257Smrg done 108962c3257Smrg "$@" 109d983712dSmrg stat=$? 110d983712dSmrg if test $stat -eq 0; then : 111d983712dSmrg else 112d983712dSmrg rm -f "$tmpdepfile" 113d983712dSmrg exit $stat 114d983712dSmrg fi 115d983712dSmrg mv "$tmpdepfile" "$depfile" 116d983712dSmrg ;; 117d983712dSmrg 118d983712dSmrggcc) 119d983712dSmrg## There are various ways to get dependency output from gcc. Here's 120d983712dSmrg## why we pick this rather obscure method: 121d983712dSmrg## - Don't want to use -MD because we'd like the dependencies to end 122d983712dSmrg## up in a subdir. Having to rename by hand is ugly. 123d983712dSmrg## (We might end up doing this anyway to support other compilers.) 124d983712dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 125d983712dSmrg## -MM, not -M (despite what the docs say). 126d983712dSmrg## - Using -M directly means running the compiler twice (even worse 127d983712dSmrg## than renaming). 128d983712dSmrg if test -z "$gccflag"; then 129d983712dSmrg gccflag=-MD, 130d983712dSmrg fi 131d983712dSmrg "$@" -Wp,"$gccflag$tmpdepfile" 132d983712dSmrg stat=$? 133d983712dSmrg if test $stat -eq 0; then : 134d983712dSmrg else 135d983712dSmrg rm -f "$tmpdepfile" 136d983712dSmrg exit $stat 137d983712dSmrg fi 138d983712dSmrg rm -f "$depfile" 139d983712dSmrg echo "$object : \\" > "$depfile" 140d983712dSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 141d983712dSmrg## The second -e expression handles DOS-style file names with drive letters. 142d983712dSmrg sed -e 's/^[^:]*: / /' \ 143d983712dSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 144d983712dSmrg## This next piece of magic avoids the `deleted header file' problem. 145d983712dSmrg## The problem is that when a header file which appears in a .P file 146d983712dSmrg## is deleted, the dependency causes make to die (because there is 147d983712dSmrg## typically no way to rebuild the header). We avoid this by adding 148d983712dSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 149d983712dSmrg## this for us directly. 150d983712dSmrg tr ' ' ' 151d983712dSmrg' < "$tmpdepfile" | 152d983712dSmrg## Some versions of gcc put a space before the `:'. On the theory 153d983712dSmrg## that the space means something, we add a space to the output as 154d983712dSmrg## well. 155d983712dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 156d983712dSmrg## correctly. Breaking it into two sed invocations is a workaround. 157d983712dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 158d983712dSmrg rm -f "$tmpdepfile" 159d983712dSmrg ;; 160d983712dSmrg 161d983712dSmrghp) 162d983712dSmrg # This case exists only to let depend.m4 do its work. It works by 163d983712dSmrg # looking at the text of this script. This case will never be run, 164d983712dSmrg # since it is checked for above. 165d983712dSmrg exit 1 166d983712dSmrg ;; 167d983712dSmrg 168d983712dSmrgsgi) 169d983712dSmrg if test "$libtool" = yes; then 170d983712dSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 171d983712dSmrg else 172d983712dSmrg "$@" -MDupdate "$tmpdepfile" 173d983712dSmrg fi 174d983712dSmrg stat=$? 175d983712dSmrg if test $stat -eq 0; then : 176d983712dSmrg else 177d983712dSmrg rm -f "$tmpdepfile" 178d983712dSmrg exit $stat 179d983712dSmrg fi 180d983712dSmrg rm -f "$depfile" 181d983712dSmrg 182d983712dSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 183d983712dSmrg echo "$object : \\" > "$depfile" 184d983712dSmrg 185d983712dSmrg # Clip off the initial element (the dependent). Don't try to be 186d983712dSmrg # clever and replace this with sed code, as IRIX sed won't handle 187d983712dSmrg # lines with more than a fixed number of characters (4096 in 188d983712dSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 189d983712dSmrg # the IRIX cc adds comments like `#:fec' to the end of the 190d983712dSmrg # dependency line. 191d983712dSmrg tr ' ' ' 192d983712dSmrg' < "$tmpdepfile" \ 193d983712dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 194d983712dSmrg tr ' 195d983712dSmrg' ' ' >> $depfile 196d983712dSmrg echo >> $depfile 197d983712dSmrg 198d983712dSmrg # The second pass generates a dummy entry for each header file. 199d983712dSmrg tr ' ' ' 200d983712dSmrg' < "$tmpdepfile" \ 201d983712dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 202d983712dSmrg >> $depfile 203d983712dSmrg else 204d983712dSmrg # The sourcefile does not contain any dependencies, so just 205d983712dSmrg # store a dummy comment line, to avoid errors with the Makefile 206d983712dSmrg # "include basename.Plo" scheme. 207d983712dSmrg echo "#dummy" > "$depfile" 208d983712dSmrg fi 209d983712dSmrg rm -f "$tmpdepfile" 210d983712dSmrg ;; 211d983712dSmrg 212d983712dSmrgaix) 213d983712dSmrg # The C for AIX Compiler uses -M and outputs the dependencies 214d983712dSmrg # in a .u file. In older versions, this file always lives in the 215d983712dSmrg # current directory. Also, the AIX compiler puts `$object:' at the 216d983712dSmrg # start of each line; $object doesn't have directory information. 217d983712dSmrg # Version 6 uses the directory in both cases. 218962c3257Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 219962c3257Smrg test "x$dir" = "x$object" && dir= 220962c3257Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 221d983712dSmrg if test "$libtool" = yes; then 222962c3257Smrg tmpdepfile1=$dir$base.u 223962c3257Smrg tmpdepfile2=$base.u 224962c3257Smrg tmpdepfile3=$dir.libs/$base.u 225d983712dSmrg "$@" -Wc,-M 226d983712dSmrg else 227962c3257Smrg tmpdepfile1=$dir$base.u 228962c3257Smrg tmpdepfile2=$dir$base.u 229962c3257Smrg tmpdepfile3=$dir$base.u 230d983712dSmrg "$@" -M 231d983712dSmrg fi 232d983712dSmrg stat=$? 233d983712dSmrg 234d983712dSmrg if test $stat -eq 0; then : 235d983712dSmrg else 236962c3257Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 237d983712dSmrg exit $stat 238d983712dSmrg fi 239d983712dSmrg 240962c3257Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 241962c3257Smrg do 242962c3257Smrg test -f "$tmpdepfile" && break 243962c3257Smrg done 244d983712dSmrg if test -f "$tmpdepfile"; then 245d983712dSmrg # Each line is of the form `foo.o: dependent.h'. 246d983712dSmrg # Do two passes, one to just change these to 247d983712dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 248962c3257Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 249962c3257Smrg # That's a tab and a space in the []. 250962c3257Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 251d983712dSmrg else 252d983712dSmrg # The sourcefile does not contain any dependencies, so just 253d983712dSmrg # store a dummy comment line, to avoid errors with the Makefile 254d983712dSmrg # "include basename.Plo" scheme. 255d983712dSmrg echo "#dummy" > "$depfile" 256d983712dSmrg fi 257d983712dSmrg rm -f "$tmpdepfile" 258d983712dSmrg ;; 259d983712dSmrg 260d983712dSmrgicc) 261d983712dSmrg # Intel's C compiler understands `-MD -MF file'. However on 262d983712dSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 263d983712dSmrg # ICC 7.0 will fill foo.d with something like 264d983712dSmrg # foo.o: sub/foo.c 265d983712dSmrg # foo.o: sub/foo.h 266d983712dSmrg # which is wrong. We want: 267d983712dSmrg # sub/foo.o: sub/foo.c 268d983712dSmrg # sub/foo.o: sub/foo.h 269d983712dSmrg # sub/foo.c: 270d983712dSmrg # sub/foo.h: 271d983712dSmrg # ICC 7.1 will output 272d983712dSmrg # foo.o: sub/foo.c sub/foo.h 273d983712dSmrg # and will wrap long lines using \ : 274d983712dSmrg # foo.o: sub/foo.c ... \ 275d983712dSmrg # sub/foo.h ... \ 276d983712dSmrg # ... 277d983712dSmrg 278d983712dSmrg "$@" -MD -MF "$tmpdepfile" 279d983712dSmrg stat=$? 280d983712dSmrg if test $stat -eq 0; then : 281d983712dSmrg else 282d983712dSmrg rm -f "$tmpdepfile" 283d983712dSmrg exit $stat 284d983712dSmrg fi 285d983712dSmrg rm -f "$depfile" 286d983712dSmrg # Each line is of the form `foo.o: dependent.h', 287d983712dSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 288d983712dSmrg # Do two passes, one to just change these to 289d983712dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 290d983712dSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 291d983712dSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 292d983712dSmrg # correctly. Breaking it into two sed invocations is a workaround. 293d983712dSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 294d983712dSmrg sed -e 's/$/ :/' >> "$depfile" 295d983712dSmrg rm -f "$tmpdepfile" 296d983712dSmrg ;; 297d983712dSmrg 298962c3257Smrghp2) 299962c3257Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 300962c3257Smrg # compilers, which have integrated preprocessors. The correct option 301962c3257Smrg # to use with these is +Maked; it writes dependencies to a file named 302962c3257Smrg # 'foo.d', which lands next to the object file, wherever that 303962c3257Smrg # happens to be. 304962c3257Smrg # Much of this is similar to the tru64 case; see comments there. 305962c3257Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 306962c3257Smrg test "x$dir" = "x$object" && dir= 307962c3257Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 308962c3257Smrg if test "$libtool" = yes; then 309962c3257Smrg tmpdepfile1=$dir$base.d 310962c3257Smrg tmpdepfile2=$dir.libs/$base.d 311962c3257Smrg "$@" -Wc,+Maked 312962c3257Smrg else 313962c3257Smrg tmpdepfile1=$dir$base.d 314962c3257Smrg tmpdepfile2=$dir$base.d 315962c3257Smrg "$@" +Maked 316962c3257Smrg fi 317962c3257Smrg stat=$? 318962c3257Smrg if test $stat -eq 0; then : 319962c3257Smrg else 320962c3257Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 321962c3257Smrg exit $stat 322962c3257Smrg fi 323962c3257Smrg 324962c3257Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 325962c3257Smrg do 326962c3257Smrg test -f "$tmpdepfile" && break 327962c3257Smrg done 328962c3257Smrg if test -f "$tmpdepfile"; then 329962c3257Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 330962c3257Smrg # Add `dependent.h:' lines. 331962c3257Smrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 332962c3257Smrg else 333962c3257Smrg echo "#dummy" > "$depfile" 334962c3257Smrg fi 335962c3257Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 336962c3257Smrg ;; 337962c3257Smrg 338d983712dSmrgtru64) 339d983712dSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 340d983712dSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 341d983712dSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 342d983712dSmrg # dependencies in `foo.d' instead, so we check for that too. 343d983712dSmrg # Subdirectories are respected. 344d983712dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 345d983712dSmrg test "x$dir" = "x$object" && dir= 346d983712dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 347d983712dSmrg 348d983712dSmrg if test "$libtool" = yes; then 349d983712dSmrg # With Tru64 cc, shared objects can also be used to make a 350962c3257Smrg # static library. This mechanism is used in libtool 1.4 series to 351d983712dSmrg # handle both shared and static libraries in a single compilation. 352d983712dSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 353d983712dSmrg # 354d983712dSmrg # With libtool 1.5 this exception was removed, and libtool now 355d983712dSmrg # generates 2 separate objects for the 2 libraries. These two 356962c3257Smrg # compilations output dependencies in $dir.libs/$base.o.d and 357d983712dSmrg # in $dir$base.o.d. We have to check for both files, because 358d983712dSmrg # one of the two compilations can be disabled. We should prefer 359d983712dSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 360d983712dSmrg # automatically cleaned when .libs/ is deleted, while ignoring 361d983712dSmrg # the former would cause a distcleancheck panic. 362d983712dSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 363d983712dSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 364d983712dSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 365d983712dSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 366d983712dSmrg "$@" -Wc,-MD 367d983712dSmrg else 368d983712dSmrg tmpdepfile1=$dir$base.o.d 369d983712dSmrg tmpdepfile2=$dir$base.d 370d983712dSmrg tmpdepfile3=$dir$base.d 371d983712dSmrg tmpdepfile4=$dir$base.d 372d983712dSmrg "$@" -MD 373d983712dSmrg fi 374d983712dSmrg 375d983712dSmrg stat=$? 376d983712dSmrg if test $stat -eq 0; then : 377d983712dSmrg else 378d983712dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 379d983712dSmrg exit $stat 380d983712dSmrg fi 381d983712dSmrg 382d983712dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 383d983712dSmrg do 384d983712dSmrg test -f "$tmpdepfile" && break 385d983712dSmrg done 386d983712dSmrg if test -f "$tmpdepfile"; then 387d983712dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 388d983712dSmrg # That's a tab and a space in the []. 389d983712dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 390d983712dSmrg else 391d983712dSmrg echo "#dummy" > "$depfile" 392d983712dSmrg fi 393d983712dSmrg rm -f "$tmpdepfile" 394d983712dSmrg ;; 395d983712dSmrg 396d983712dSmrg#nosideeffect) 397d983712dSmrg # This comment above is used by automake to tell side-effect 398d983712dSmrg # dependency tracking mechanisms from slower ones. 399d983712dSmrg 400d983712dSmrgdashmstdout) 401d983712dSmrg # Important note: in order to support this mode, a compiler *must* 402d983712dSmrg # always write the preprocessed file to stdout, regardless of -o. 403d983712dSmrg "$@" || exit $? 404d983712dSmrg 405d983712dSmrg # Remove the call to Libtool. 406d983712dSmrg if test "$libtool" = yes; then 407d983712dSmrg while test $1 != '--mode=compile'; do 408d983712dSmrg shift 409d983712dSmrg done 410d983712dSmrg shift 411d983712dSmrg fi 412d983712dSmrg 413d983712dSmrg # Remove `-o $object'. 414d983712dSmrg IFS=" " 415d983712dSmrg for arg 416d983712dSmrg do 417d983712dSmrg case $arg in 418d983712dSmrg -o) 419d983712dSmrg shift 420d983712dSmrg ;; 421d983712dSmrg $object) 422d983712dSmrg shift 423d983712dSmrg ;; 424d983712dSmrg *) 425d983712dSmrg set fnord "$@" "$arg" 426d983712dSmrg shift # fnord 427d983712dSmrg shift # $arg 428d983712dSmrg ;; 429d983712dSmrg esac 430d983712dSmrg done 431d983712dSmrg 432d983712dSmrg test -z "$dashmflag" && dashmflag=-M 433d983712dSmrg # Require at least two characters before searching for `:' 434d983712dSmrg # in the target name. This is to cope with DOS-style filenames: 435d983712dSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 436d983712dSmrg "$@" $dashmflag | 437d983712dSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 438d983712dSmrg rm -f "$depfile" 439d983712dSmrg cat < "$tmpdepfile" > "$depfile" 440d983712dSmrg tr ' ' ' 441d983712dSmrg' < "$tmpdepfile" | \ 442d983712dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 443d983712dSmrg## correctly. Breaking it into two sed invocations is a workaround. 444d983712dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 445d983712dSmrg rm -f "$tmpdepfile" 446d983712dSmrg ;; 447d983712dSmrg 448d983712dSmrgdashXmstdout) 449d983712dSmrg # This case only exists to satisfy depend.m4. It is never actually 450d983712dSmrg # run, as this mode is specially recognized in the preamble. 451d983712dSmrg exit 1 452d983712dSmrg ;; 453d983712dSmrg 454d983712dSmrgmakedepend) 455d983712dSmrg "$@" || exit $? 456d983712dSmrg # Remove any Libtool call 457d983712dSmrg if test "$libtool" = yes; then 458d983712dSmrg while test $1 != '--mode=compile'; do 459d983712dSmrg shift 460d983712dSmrg done 461d983712dSmrg shift 462d983712dSmrg fi 463d983712dSmrg # X makedepend 464d983712dSmrg shift 465d983712dSmrg cleared=no 466d983712dSmrg for arg in "$@"; do 467d983712dSmrg case $cleared in 468d983712dSmrg no) 469d983712dSmrg set ""; shift 470d983712dSmrg cleared=yes ;; 471d983712dSmrg esac 472d983712dSmrg case "$arg" in 473d983712dSmrg -D*|-I*) 474d983712dSmrg set fnord "$@" "$arg"; shift ;; 475d983712dSmrg # Strip any option that makedepend may not understand. Remove 476d983712dSmrg # the object too, otherwise makedepend will parse it as a source file. 477d983712dSmrg -*|$object) 478d983712dSmrg ;; 479d983712dSmrg *) 480d983712dSmrg set fnord "$@" "$arg"; shift ;; 481d983712dSmrg esac 482d983712dSmrg done 483d983712dSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 484d983712dSmrg touch "$tmpdepfile" 485d983712dSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 486d983712dSmrg rm -f "$depfile" 487d983712dSmrg cat < "$tmpdepfile" > "$depfile" 488d983712dSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 489d983712dSmrg' | \ 490d983712dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 491d983712dSmrg## correctly. Breaking it into two sed invocations is a workaround. 492d983712dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 493d983712dSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 494d983712dSmrg ;; 495d983712dSmrg 496d983712dSmrgcpp) 497d983712dSmrg # Important note: in order to support this mode, a compiler *must* 498d983712dSmrg # always write the preprocessed file to stdout. 499d983712dSmrg "$@" || exit $? 500d983712dSmrg 501d983712dSmrg # Remove the call to Libtool. 502d983712dSmrg if test "$libtool" = yes; then 503d983712dSmrg while test $1 != '--mode=compile'; do 504d983712dSmrg shift 505d983712dSmrg done 506d983712dSmrg shift 507d983712dSmrg fi 508d983712dSmrg 509d983712dSmrg # Remove `-o $object'. 510d983712dSmrg IFS=" " 511d983712dSmrg for arg 512d983712dSmrg do 513d983712dSmrg case $arg in 514d983712dSmrg -o) 515d983712dSmrg shift 516d983712dSmrg ;; 517d983712dSmrg $object) 518d983712dSmrg shift 519d983712dSmrg ;; 520d983712dSmrg *) 521d983712dSmrg set fnord "$@" "$arg" 522d983712dSmrg shift # fnord 523d983712dSmrg shift # $arg 524d983712dSmrg ;; 525d983712dSmrg esac 526d983712dSmrg done 527d983712dSmrg 528d983712dSmrg "$@" -E | 529d983712dSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 530d983712dSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 531d983712dSmrg sed '$ s: \\$::' > "$tmpdepfile" 532d983712dSmrg rm -f "$depfile" 533d983712dSmrg echo "$object : \\" > "$depfile" 534d983712dSmrg cat < "$tmpdepfile" >> "$depfile" 535d983712dSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 536d983712dSmrg rm -f "$tmpdepfile" 537d983712dSmrg ;; 538d983712dSmrg 539d983712dSmrgmsvisualcpp) 540d983712dSmrg # Important note: in order to support this mode, a compiler *must* 541d983712dSmrg # always write the preprocessed file to stdout, regardless of -o, 542d983712dSmrg # because we must use -o when running libtool. 543d983712dSmrg "$@" || exit $? 544d983712dSmrg IFS=" " 545d983712dSmrg for arg 546d983712dSmrg do 547d983712dSmrg case "$arg" in 548d983712dSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 549d983712dSmrg set fnord "$@" 550d983712dSmrg shift 551d983712dSmrg shift 552d983712dSmrg ;; 553d983712dSmrg *) 554d983712dSmrg set fnord "$@" "$arg" 555d983712dSmrg shift 556d983712dSmrg shift 557d983712dSmrg ;; 558d983712dSmrg esac 559d983712dSmrg done 560d983712dSmrg "$@" -E | 561d983712dSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 562d983712dSmrg rm -f "$depfile" 563d983712dSmrg echo "$object : \\" > "$depfile" 564d983712dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 565d983712dSmrg echo " " >> "$depfile" 566d983712dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 567d983712dSmrg rm -f "$tmpdepfile" 568d983712dSmrg ;; 569d983712dSmrg 570d983712dSmrgnone) 571d983712dSmrg exec "$@" 572d983712dSmrg ;; 573d983712dSmrg 574d983712dSmrg*) 575d983712dSmrg echo "Unknown depmode $depmode" 1>&2 576d983712dSmrg exit 1 577d983712dSmrg ;; 578d983712dSmrgesac 579d983712dSmrg 580d983712dSmrgexit 0 581d983712dSmrg 582d983712dSmrg# Local Variables: 583d983712dSmrg# mode: shell-script 584d983712dSmrg# sh-indentation: 2 585d983712dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 586d983712dSmrg# time-stamp-start: "scriptversion=" 587d983712dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 588d983712dSmrg# time-stamp-end: "$" 589d983712dSmrg# End: 590