1290001Sglebius#! /bin/sh 2290001Sglebius# depcomp - compile a program generating dependencies as side-effects 3290001Sglebius 4290001Sglebiusscriptversion=2009-04-28.21; # UTC 5290001Sglebius 6290001Sglebius# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7290001Sglebius# Software Foundation, Inc. 8290001Sglebius 9290001Sglebius# This program is free software; you can redistribute it and/or modify 10290001Sglebius# it under the terms of the GNU General Public License as published by 11290001Sglebius# the Free Software Foundation; either version 2, or (at your option) 12290001Sglebius# any later version. 13290001Sglebius 14290001Sglebius# This program is distributed in the hope that it will be useful, 15290001Sglebius# but WITHOUT ANY WARRANTY; without even the implied warranty of 16290001Sglebius# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17290001Sglebius# GNU General Public License for more details. 18290001Sglebius 19290001Sglebius# You should have received a copy of the GNU General Public License 20290001Sglebius# along with this program. If not, see <http://www.gnu.org/licenses/>. 21290001Sglebius 22290001Sglebius# As a special exception to the GNU General Public License, if you 23290001Sglebius# distribute this file as part of a program that contains a 24290001Sglebius# configuration script generated by Autoconf, you may include it under 25290001Sglebius# the same distribution terms that you use for the rest of that program. 26290001Sglebius 27290001Sglebius# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28290001Sglebius 29290001Sglebiuscase $1 in 30290001Sglebius '') 31290001Sglebius echo "$0: No command. Try \`$0 --help' for more information." 1>&2 32290001Sglebius exit 1; 33290001Sglebius ;; 34290001Sglebius -h | --h*) 35290001Sglebius cat <<\EOF 36290001SglebiusUsage: depcomp [--help] [--version] PROGRAM [ARGS] 37290001Sglebius 38290001SglebiusRun PROGRAMS ARGS to compile a file, generating dependencies 39290001Sglebiusas side-effects. 40290001Sglebius 41290001SglebiusEnvironment variables: 42290001Sglebius depmode Dependency tracking mode. 43290001Sglebius source Source file read by `PROGRAMS ARGS'. 44290001Sglebius object Object file output by `PROGRAMS ARGS'. 45290001Sglebius DEPDIR directory where to store dependencies. 46290001Sglebius depfile Dependency file to output. 47290001Sglebius tmpdepfile Temporary file to use when outputing dependencies. 48290001Sglebius libtool Whether libtool is used (yes/no). 49290001Sglebius 50290001SglebiusReport bugs to <bug-automake@gnu.org>. 51290001SglebiusEOF 52290001Sglebius exit $? 53290001Sglebius ;; 54290001Sglebius -v | --v*) 55290001Sglebius echo "depcomp $scriptversion" 56290001Sglebius exit $? 57290001Sglebius ;; 58290001Sglebiusesac 59290001Sglebius 60290001Sglebiusif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61290001Sglebius echo "depcomp: Variables source, object and depmode must be set" 1>&2 62290001Sglebius exit 1 63290001Sglebiusfi 64290001Sglebius 65290001Sglebius# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 66290001Sglebiusdepfile=${depfile-`echo "$object" | 67290001Sglebius sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68290001Sglebiustmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69290001Sglebius 70290001Sglebiusrm -f "$tmpdepfile" 71290001Sglebius 72290001Sglebius# Some modes work just like other modes, but use different flags. We 73290001Sglebius# parameterize here, but still list the modes in the big case below, 74290001Sglebius# to make depend.m4 easier to write. Note that we *cannot* use a case 75290001Sglebius# here, because this file can only contain one case statement. 76290001Sglebiusif test "$depmode" = hp; then 77290001Sglebius # HP compiler uses -M and no extra arg. 78290001Sglebius gccflag=-M 79290001Sglebius depmode=gcc 80290001Sglebiusfi 81290001Sglebius 82290001Sglebiusif test "$depmode" = dashXmstdout; then 83290001Sglebius # This is just like dashmstdout with a different argument. 84290001Sglebius dashmflag=-xM 85290001Sglebius depmode=dashmstdout 86290001Sglebiusfi 87290001Sglebius 88290001Sglebiuscygpath_u="cygpath -u -f -" 89290001Sglebiusif test "$depmode" = msvcmsys; then 90290001Sglebius # This is just like msvisualcpp but w/o cygpath translation. 91290001Sglebius # Just convert the backslash-escaped backslashes to single forward 92290001Sglebius # slashes to satisfy depend.m4 93290001Sglebius cygpath_u="sed s,\\\\\\\\,/,g" 94290001Sglebius depmode=msvisualcpp 95290001Sglebiusfi 96290001Sglebius 97290001Sglebiuscase "$depmode" in 98290001Sglebiusgcc3) 99290001Sglebius## gcc 3 implements dependency tracking that does exactly what 100290001Sglebius## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101290001Sglebius## it if -MD -MP comes after the -MF stuff. Hmm. 102290001Sglebius## Unfortunately, FreeBSD c89 acceptance of flags depends upon 103290001Sglebius## the command line argument order; so add the flags where they 104290001Sglebius## appear in depend2.am. Note that the slowdown incurred here 105290001Sglebius## affects only configure: in makefiles, %FASTDEP% shortcuts this. 106290001Sglebius for arg 107290001Sglebius do 108290001Sglebius case $arg in 109290001Sglebius -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 110290001Sglebius *) set fnord "$@" "$arg" ;; 111290001Sglebius esac 112290001Sglebius shift # fnord 113290001Sglebius shift # $arg 114290001Sglebius done 115290001Sglebius "$@" 116290001Sglebius stat=$? 117290001Sglebius if test $stat -eq 0; then : 118290001Sglebius else 119290001Sglebius rm -f "$tmpdepfile" 120290001Sglebius exit $stat 121290001Sglebius fi 122290001Sglebius mv "$tmpdepfile" "$depfile" 123290001Sglebius ;; 124290001Sglebius 125290001Sglebiusgcc) 126290001Sglebius## There are various ways to get dependency output from gcc. Here's 127290001Sglebius## why we pick this rather obscure method: 128290001Sglebius## - Don't want to use -MD because we'd like the dependencies to end 129290001Sglebius## up in a subdir. Having to rename by hand is ugly. 130290001Sglebius## (We might end up doing this anyway to support other compilers.) 131290001Sglebius## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132290001Sglebius## -MM, not -M (despite what the docs say). 133290001Sglebius## - Using -M directly means running the compiler twice (even worse 134290001Sglebius## than renaming). 135290001Sglebius if test -z "$gccflag"; then 136290001Sglebius gccflag=-MD, 137290001Sglebius fi 138290001Sglebius "$@" -Wp,"$gccflag$tmpdepfile" 139290001Sglebius stat=$? 140290001Sglebius if test $stat -eq 0; then : 141290001Sglebius else 142290001Sglebius rm -f "$tmpdepfile" 143290001Sglebius exit $stat 144290001Sglebius fi 145290001Sglebius rm -f "$depfile" 146290001Sglebius echo "$object : \\" > "$depfile" 147290001Sglebius alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148290001Sglebius## The second -e expression handles DOS-style file names with drive letters. 149290001Sglebius sed -e 's/^[^:]*: / /' \ 150290001Sglebius -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151290001Sglebius## This next piece of magic avoids the `deleted header file' problem. 152290001Sglebius## The problem is that when a header file which appears in a .P file 153290001Sglebius## is deleted, the dependency causes make to die (because there is 154290001Sglebius## typically no way to rebuild the header). We avoid this by adding 155290001Sglebius## dummy dependencies for each header file. Too bad gcc doesn't do 156290001Sglebius## this for us directly. 157290001Sglebius tr ' ' ' 158290001Sglebius' < "$tmpdepfile" | 159290001Sglebius## Some versions of gcc put a space before the `:'. On the theory 160290001Sglebius## that the space means something, we add a space to the output as 161290001Sglebius## well. 162290001Sglebius## Some versions of the HPUX 10.20 sed can't process this invocation 163290001Sglebius## correctly. Breaking it into two sed invocations is a workaround. 164290001Sglebius sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165290001Sglebius rm -f "$tmpdepfile" 166290001Sglebius ;; 167290001Sglebius 168290001Sglebiushp) 169290001Sglebius # This case exists only to let depend.m4 do its work. It works by 170290001Sglebius # looking at the text of this script. This case will never be run, 171290001Sglebius # since it is checked for above. 172290001Sglebius exit 1 173290001Sglebius ;; 174290001Sglebius 175290001Sglebiussgi) 176290001Sglebius if test "$libtool" = yes; then 177290001Sglebius "$@" "-Wp,-MDupdate,$tmpdepfile" 178290001Sglebius else 179290001Sglebius "$@" -MDupdate "$tmpdepfile" 180290001Sglebius fi 181290001Sglebius stat=$? 182290001Sglebius if test $stat -eq 0; then : 183290001Sglebius else 184290001Sglebius rm -f "$tmpdepfile" 185290001Sglebius exit $stat 186290001Sglebius fi 187290001Sglebius rm -f "$depfile" 188290001Sglebius 189290001Sglebius if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190290001Sglebius echo "$object : \\" > "$depfile" 191290001Sglebius 192290001Sglebius # Clip off the initial element (the dependent). Don't try to be 193290001Sglebius # clever and replace this with sed code, as IRIX sed won't handle 194290001Sglebius # lines with more than a fixed number of characters (4096 in 195290001Sglebius # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196290001Sglebius # the IRIX cc adds comments like `#:fec' to the end of the 197290001Sglebius # dependency line. 198290001Sglebius tr ' ' ' 199290001Sglebius' < "$tmpdepfile" \ 200290001Sglebius | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201290001Sglebius tr ' 202290001Sglebius' ' ' >> "$depfile" 203290001Sglebius echo >> "$depfile" 204290001Sglebius 205290001Sglebius # The second pass generates a dummy entry for each header file. 206290001Sglebius tr ' ' ' 207290001Sglebius' < "$tmpdepfile" \ 208290001Sglebius | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209290001Sglebius >> "$depfile" 210290001Sglebius else 211290001Sglebius # The sourcefile does not contain any dependencies, so just 212290001Sglebius # store a dummy comment line, to avoid errors with the Makefile 213290001Sglebius # "include basename.Plo" scheme. 214290001Sglebius echo "#dummy" > "$depfile" 215290001Sglebius fi 216290001Sglebius rm -f "$tmpdepfile" 217290001Sglebius ;; 218290001Sglebius 219290001Sglebiusaix) 220290001Sglebius # The C for AIX Compiler uses -M and outputs the dependencies 221290001Sglebius # in a .u file. In older versions, this file always lives in the 222290001Sglebius # current directory. Also, the AIX compiler puts `$object:' at the 223290001Sglebius # start of each line; $object doesn't have directory information. 224290001Sglebius # Version 6 uses the directory in both cases. 225290001Sglebius dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226290001Sglebius test "x$dir" = "x$object" && dir= 227290001Sglebius base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228290001Sglebius if test "$libtool" = yes; then 229290001Sglebius tmpdepfile1=$dir$base.u 230290001Sglebius tmpdepfile2=$base.u 231290001Sglebius tmpdepfile3=$dir.libs/$base.u 232290001Sglebius "$@" -Wc,-M 233290001Sglebius else 234290001Sglebius tmpdepfile1=$dir$base.u 235290001Sglebius tmpdepfile2=$dir$base.u 236290001Sglebius tmpdepfile3=$dir$base.u 237290001Sglebius "$@" -M 238290001Sglebius fi 239290001Sglebius stat=$? 240290001Sglebius 241290001Sglebius if test $stat -eq 0; then : 242290001Sglebius else 243290001Sglebius rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244290001Sglebius exit $stat 245290001Sglebius fi 246290001Sglebius 247290001Sglebius for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248290001Sglebius do 249290001Sglebius test -f "$tmpdepfile" && break 250290001Sglebius done 251290001Sglebius if test -f "$tmpdepfile"; then 252290001Sglebius # Each line is of the form `foo.o: dependent.h'. 253290001Sglebius # Do two passes, one to just change these to 254290001Sglebius # `$object: dependent.h' and one to simply `dependent.h:'. 255290001Sglebius sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256290001Sglebius # That's a tab and a space in the []. 257290001Sglebius sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258290001Sglebius else 259290001Sglebius # The sourcefile does not contain any dependencies, so just 260290001Sglebius # store a dummy comment line, to avoid errors with the Makefile 261290001Sglebius # "include basename.Plo" scheme. 262290001Sglebius echo "#dummy" > "$depfile" 263290001Sglebius fi 264290001Sglebius rm -f "$tmpdepfile" 265290001Sglebius ;; 266290001Sglebius 267290001Sglebiusicc) 268290001Sglebius # Intel's C compiler understands `-MD -MF file'. However on 269290001Sglebius # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270290001Sglebius # ICC 7.0 will fill foo.d with something like 271290001Sglebius # foo.o: sub/foo.c 272290001Sglebius # foo.o: sub/foo.h 273290001Sglebius # which is wrong. We want: 274290001Sglebius # sub/foo.o: sub/foo.c 275290001Sglebius # sub/foo.o: sub/foo.h 276290001Sglebius # sub/foo.c: 277290001Sglebius # sub/foo.h: 278290001Sglebius # ICC 7.1 will output 279290001Sglebius # foo.o: sub/foo.c sub/foo.h 280290001Sglebius # and will wrap long lines using \ : 281290001Sglebius # foo.o: sub/foo.c ... \ 282290001Sglebius # sub/foo.h ... \ 283290001Sglebius # ... 284290001Sglebius 285290001Sglebius "$@" -MD -MF "$tmpdepfile" 286290001Sglebius stat=$? 287290001Sglebius if test $stat -eq 0; then : 288290001Sglebius else 289290001Sglebius rm -f "$tmpdepfile" 290290001Sglebius exit $stat 291290001Sglebius fi 292290001Sglebius rm -f "$depfile" 293290001Sglebius # Each line is of the form `foo.o: dependent.h', 294290001Sglebius # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295290001Sglebius # Do two passes, one to just change these to 296290001Sglebius # `$object: dependent.h' and one to simply `dependent.h:'. 297290001Sglebius sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298290001Sglebius # Some versions of the HPUX 10.20 sed can't process this invocation 299290001Sglebius # correctly. Breaking it into two sed invocations is a workaround. 300290001Sglebius sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301290001Sglebius sed -e 's/$/ :/' >> "$depfile" 302290001Sglebius rm -f "$tmpdepfile" 303290001Sglebius ;; 304290001Sglebius 305290001Sglebiushp2) 306290001Sglebius # The "hp" stanza above does not work with aCC (C++) and HP's ia64 307290001Sglebius # compilers, which have integrated preprocessors. The correct option 308290001Sglebius # to use with these is +Maked; it writes dependencies to a file named 309290001Sglebius # 'foo.d', which lands next to the object file, wherever that 310290001Sglebius # happens to be. 311290001Sglebius # Much of this is similar to the tru64 case; see comments there. 312290001Sglebius dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 313290001Sglebius test "x$dir" = "x$object" && dir= 314290001Sglebius base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 315290001Sglebius if test "$libtool" = yes; then 316290001Sglebius tmpdepfile1=$dir$base.d 317290001Sglebius tmpdepfile2=$dir.libs/$base.d 318290001Sglebius "$@" -Wc,+Maked 319290001Sglebius else 320290001Sglebius tmpdepfile1=$dir$base.d 321290001Sglebius tmpdepfile2=$dir$base.d 322290001Sglebius "$@" +Maked 323290001Sglebius fi 324290001Sglebius stat=$? 325290001Sglebius if test $stat -eq 0; then : 326290001Sglebius else 327290001Sglebius rm -f "$tmpdepfile1" "$tmpdepfile2" 328290001Sglebius exit $stat 329290001Sglebius fi 330290001Sglebius 331290001Sglebius for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 332290001Sglebius do 333290001Sglebius test -f "$tmpdepfile" && break 334290001Sglebius done 335290001Sglebius if test -f "$tmpdepfile"; then 336290001Sglebius sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 337290001Sglebius # Add `dependent.h:' lines. 338290001Sglebius sed -ne '2,${ 339290001Sglebius s/^ *// 340290001Sglebius s/ \\*$// 341290001Sglebius s/$/:/ 342290001Sglebius p 343290001Sglebius }' "$tmpdepfile" >> "$depfile" 344290001Sglebius else 345290001Sglebius echo "#dummy" > "$depfile" 346290001Sglebius fi 347290001Sglebius rm -f "$tmpdepfile" "$tmpdepfile2" 348290001Sglebius ;; 349290001Sglebius 350290001Sglebiustru64) 351290001Sglebius # The Tru64 compiler uses -MD to generate dependencies as a side 352290001Sglebius # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353290001Sglebius # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354290001Sglebius # dependencies in `foo.d' instead, so we check for that too. 355290001Sglebius # Subdirectories are respected. 356290001Sglebius dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357290001Sglebius test "x$dir" = "x$object" && dir= 358290001Sglebius base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359290001Sglebius 360290001Sglebius if test "$libtool" = yes; then 361290001Sglebius # With Tru64 cc, shared objects can also be used to make a 362290001Sglebius # static library. This mechanism is used in libtool 1.4 series to 363290001Sglebius # handle both shared and static libraries in a single compilation. 364290001Sglebius # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 365290001Sglebius # 366290001Sglebius # With libtool 1.5 this exception was removed, and libtool now 367290001Sglebius # generates 2 separate objects for the 2 libraries. These two 368290001Sglebius # compilations output dependencies in $dir.libs/$base.o.d and 369290001Sglebius # in $dir$base.o.d. We have to check for both files, because 370290001Sglebius # one of the two compilations can be disabled. We should prefer 371290001Sglebius # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 372290001Sglebius # automatically cleaned when .libs/ is deleted, while ignoring 373290001Sglebius # the former would cause a distcleancheck panic. 374290001Sglebius tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 375290001Sglebius tmpdepfile2=$dir$base.o.d # libtool 1.5 376290001Sglebius tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 377290001Sglebius tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378290001Sglebius "$@" -Wc,-MD 379290001Sglebius else 380290001Sglebius tmpdepfile1=$dir$base.o.d 381290001Sglebius tmpdepfile2=$dir$base.d 382290001Sglebius tmpdepfile3=$dir$base.d 383290001Sglebius tmpdepfile4=$dir$base.d 384290001Sglebius "$@" -MD 385290001Sglebius fi 386290001Sglebius 387290001Sglebius stat=$? 388290001Sglebius if test $stat -eq 0; then : 389290001Sglebius else 390290001Sglebius rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391290001Sglebius exit $stat 392290001Sglebius fi 393290001Sglebius 394290001Sglebius for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 395290001Sglebius do 396290001Sglebius test -f "$tmpdepfile" && break 397290001Sglebius done 398290001Sglebius if test -f "$tmpdepfile"; then 399290001Sglebius sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400290001Sglebius # That's a tab and a space in the []. 401290001Sglebius sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402290001Sglebius else 403290001Sglebius echo "#dummy" > "$depfile" 404290001Sglebius fi 405290001Sglebius rm -f "$tmpdepfile" 406290001Sglebius ;; 407290001Sglebius 408290001Sglebius#nosideeffect) 409290001Sglebius # This comment above is used by automake to tell side-effect 410290001Sglebius # dependency tracking mechanisms from slower ones. 411290001Sglebius 412290001Sglebiusdashmstdout) 413290001Sglebius # Important note: in order to support this mode, a compiler *must* 414290001Sglebius # always write the preprocessed file to stdout, regardless of -o. 415290001Sglebius "$@" || exit $? 416290001Sglebius 417290001Sglebius # Remove the call to Libtool. 418290001Sglebius if test "$libtool" = yes; then 419290001Sglebius while test "X$1" != 'X--mode=compile'; do 420290001Sglebius shift 421290001Sglebius done 422290001Sglebius shift 423290001Sglebius fi 424290001Sglebius 425290001Sglebius # Remove `-o $object'. 426290001Sglebius IFS=" " 427290001Sglebius for arg 428290001Sglebius do 429290001Sglebius case $arg in 430290001Sglebius -o) 431290001Sglebius shift 432290001Sglebius ;; 433290001Sglebius $object) 434290001Sglebius shift 435290001Sglebius ;; 436290001Sglebius *) 437290001Sglebius set fnord "$@" "$arg" 438290001Sglebius shift # fnord 439290001Sglebius shift # $arg 440290001Sglebius ;; 441290001Sglebius esac 442290001Sglebius done 443290001Sglebius 444290001Sglebius test -z "$dashmflag" && dashmflag=-M 445290001Sglebius # Require at least two characters before searching for `:' 446290001Sglebius # in the target name. This is to cope with DOS-style filenames: 447290001Sglebius # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448290001Sglebius "$@" $dashmflag | 449290001Sglebius sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450290001Sglebius rm -f "$depfile" 451290001Sglebius cat < "$tmpdepfile" > "$depfile" 452290001Sglebius tr ' ' ' 453290001Sglebius' < "$tmpdepfile" | \ 454290001Sglebius## Some versions of the HPUX 10.20 sed can't process this invocation 455290001Sglebius## correctly. Breaking it into two sed invocations is a workaround. 456290001Sglebius sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457290001Sglebius rm -f "$tmpdepfile" 458290001Sglebius ;; 459290001Sglebius 460290001SglebiusdashXmstdout) 461290001Sglebius # This case only exists to satisfy depend.m4. It is never actually 462290001Sglebius # run, as this mode is specially recognized in the preamble. 463290001Sglebius exit 1 464290001Sglebius ;; 465290001Sglebius 466290001Sglebiusmakedepend) 467290001Sglebius "$@" || exit $? 468290001Sglebius # Remove any Libtool call 469290001Sglebius if test "$libtool" = yes; then 470290001Sglebius while test "X$1" != 'X--mode=compile'; do 471290001Sglebius shift 472290001Sglebius done 473290001Sglebius shift 474290001Sglebius fi 475290001Sglebius # X makedepend 476290001Sglebius shift 477290001Sglebius cleared=no eat=no 478290001Sglebius for arg 479290001Sglebius do 480290001Sglebius case $cleared in 481290001Sglebius no) 482290001Sglebius set ""; shift 483290001Sglebius cleared=yes ;; 484290001Sglebius esac 485290001Sglebius if test $eat = yes; then 486290001Sglebius eat=no 487290001Sglebius continue 488290001Sglebius fi 489290001Sglebius case "$arg" in 490290001Sglebius -D*|-I*) 491290001Sglebius set fnord "$@" "$arg"; shift ;; 492290001Sglebius # Strip any option that makedepend may not understand. Remove 493290001Sglebius # the object too, otherwise makedepend will parse it as a source file. 494290001Sglebius -arch) 495290001Sglebius eat=yes ;; 496290001Sglebius -*|$object) 497290001Sglebius ;; 498290001Sglebius *) 499290001Sglebius set fnord "$@" "$arg"; shift ;; 500290001Sglebius esac 501290001Sglebius done 502290001Sglebius obj_suffix=`echo "$object" | sed 's/^.*\././'` 503290001Sglebius touch "$tmpdepfile" 504290001Sglebius ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505290001Sglebius rm -f "$depfile" 506290001Sglebius cat < "$tmpdepfile" > "$depfile" 507290001Sglebius sed '1,2d' "$tmpdepfile" | tr ' ' ' 508290001Sglebius' | \ 509290001Sglebius## Some versions of the HPUX 10.20 sed can't process this invocation 510290001Sglebius## correctly. Breaking it into two sed invocations is a workaround. 511290001Sglebius sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512290001Sglebius rm -f "$tmpdepfile" "$tmpdepfile".bak 513290001Sglebius ;; 514290001Sglebius 515290001Sglebiuscpp) 516290001Sglebius # Important note: in order to support this mode, a compiler *must* 517290001Sglebius # always write the preprocessed file to stdout. 518290001Sglebius "$@" || exit $? 519290001Sglebius 520290001Sglebius # Remove the call to Libtool. 521290001Sglebius if test "$libtool" = yes; then 522290001Sglebius while test "X$1" != 'X--mode=compile'; do 523290001Sglebius shift 524290001Sglebius done 525290001Sglebius shift 526290001Sglebius fi 527290001Sglebius 528290001Sglebius # Remove `-o $object'. 529290001Sglebius IFS=" " 530290001Sglebius for arg 531290001Sglebius do 532290001Sglebius case $arg in 533290001Sglebius -o) 534290001Sglebius shift 535290001Sglebius ;; 536290001Sglebius $object) 537290001Sglebius shift 538290001Sglebius ;; 539290001Sglebius *) 540290001Sglebius set fnord "$@" "$arg" 541290001Sglebius shift # fnord 542290001Sglebius shift # $arg 543290001Sglebius ;; 544290001Sglebius esac 545290001Sglebius done 546290001Sglebius 547290001Sglebius "$@" -E | 548290001Sglebius sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 549290001Sglebius -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550290001Sglebius sed '$ s: \\$::' > "$tmpdepfile" 551290001Sglebius rm -f "$depfile" 552290001Sglebius echo "$object : \\" > "$depfile" 553290001Sglebius cat < "$tmpdepfile" >> "$depfile" 554290001Sglebius sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555290001Sglebius rm -f "$tmpdepfile" 556290001Sglebius ;; 557290001Sglebius 558290001Sglebiusmsvisualcpp) 559290001Sglebius # Important note: in order to support this mode, a compiler *must* 560290001Sglebius # always write the preprocessed file to stdout. 561290001Sglebius "$@" || exit $? 562290001Sglebius 563290001Sglebius # Remove the call to Libtool. 564290001Sglebius if test "$libtool" = yes; then 565290001Sglebius while test "X$1" != 'X--mode=compile'; do 566290001Sglebius shift 567290001Sglebius done 568290001Sglebius shift 569290001Sglebius fi 570290001Sglebius 571290001Sglebius IFS=" " 572290001Sglebius for arg 573290001Sglebius do 574290001Sglebius case "$arg" in 575290001Sglebius -o) 576290001Sglebius shift 577290001Sglebius ;; 578290001Sglebius $object) 579290001Sglebius shift 580290001Sglebius ;; 581290001Sglebius "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582290001Sglebius set fnord "$@" 583290001Sglebius shift 584290001Sglebius shift 585290001Sglebius ;; 586290001Sglebius *) 587290001Sglebius set fnord "$@" "$arg" 588290001Sglebius shift 589290001Sglebius shift 590290001Sglebius ;; 591290001Sglebius esac 592290001Sglebius done 593290001Sglebius "$@" -E 2>/dev/null | 594290001Sglebius sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595290001Sglebius rm -f "$depfile" 596290001Sglebius echo "$object : \\" > "$depfile" 597290001Sglebius sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598290001Sglebius echo " " >> "$depfile" 599290001Sglebius sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600290001Sglebius rm -f "$tmpdepfile" 601290001Sglebius ;; 602290001Sglebius 603290001Sglebiusmsvcmsys) 604290001Sglebius # This case exists only to let depend.m4 do its work. It works by 605290001Sglebius # looking at the text of this script. This case will never be run, 606290001Sglebius # since it is checked for above. 607290001Sglebius exit 1 608290001Sglebius ;; 609290001Sglebius 610290001Sglebiusnone) 611290001Sglebius exec "$@" 612290001Sglebius ;; 613290001Sglebius 614290001Sglebius*) 615290001Sglebius echo "Unknown depmode $depmode" 1>&2 616290001Sglebius exit 1 617290001Sglebius ;; 618290001Sglebiusesac 619290001Sglebius 620290001Sglebiusexit 0 621290001Sglebius 622290001Sglebius# Local Variables: 623290001Sglebius# mode: shell-script 624290001Sglebius# sh-indentation: 2 625290001Sglebius# eval: (add-hook 'write-file-hooks 'time-stamp) 626290001Sglebius# time-stamp-start: "scriptversion=" 627290001Sglebius# time-stamp-format: "%:y-%02m-%02d.%02H" 628290001Sglebius# time-stamp-time-zone: "UTC" 629290001Sglebius# time-stamp-end: "; # UTC" 630290001Sglebius# End: 631