depcomp revision 444c061a
1444c061aSmrg#! /bin/sh 2444c061aSmrg# depcomp - compile a program generating dependencies as side-effects 3444c061aSmrg 4444c061aSmrgscriptversion=2005-07-09.11 5444c061aSmrg 6444c061aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 7444c061aSmrg 8444c061aSmrg# This program is free software; you can redistribute it and/or modify 9444c061aSmrg# it under the terms of the GNU General Public License as published by 10444c061aSmrg# the Free Software Foundation; either version 2, or (at your option) 11444c061aSmrg# any later version. 12444c061aSmrg 13444c061aSmrg# This program is distributed in the hope that it will be useful, 14444c061aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 15444c061aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16444c061aSmrg# GNU General Public License for more details. 17444c061aSmrg 18444c061aSmrg# You should have received a copy of the GNU General Public License 19444c061aSmrg# along with this program; if not, write to the Free Software 20444c061aSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21444c061aSmrg# 02110-1301, USA. 22444c061aSmrg 23444c061aSmrg# As a special exception to the GNU General Public License, if you 24444c061aSmrg# distribute this file as part of a program that contains a 25444c061aSmrg# configuration script generated by Autoconf, you may include it under 26444c061aSmrg# the same distribution terms that you use for the rest of that program. 27444c061aSmrg 28444c061aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 29444c061aSmrg 30444c061aSmrgcase $1 in 31444c061aSmrg '') 32444c061aSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 33444c061aSmrg exit 1; 34444c061aSmrg ;; 35444c061aSmrg -h | --h*) 36444c061aSmrg cat <<\EOF 37444c061aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 38444c061aSmrg 39444c061aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 40444c061aSmrgas side-effects. 41444c061aSmrg 42444c061aSmrgEnvironment variables: 43444c061aSmrg depmode Dependency tracking mode. 44444c061aSmrg source Source file read by `PROGRAMS ARGS'. 45444c061aSmrg object Object file output by `PROGRAMS ARGS'. 46444c061aSmrg DEPDIR directory where to store dependencies. 47444c061aSmrg depfile Dependency file to output. 48444c061aSmrg tmpdepfile Temporary file to use when outputing dependencies. 49444c061aSmrg libtool Whether libtool is used (yes/no). 50444c061aSmrg 51444c061aSmrgReport bugs to <bug-automake@gnu.org>. 52444c061aSmrgEOF 53444c061aSmrg exit $? 54444c061aSmrg ;; 55444c061aSmrg -v | --v*) 56444c061aSmrg echo "depcomp $scriptversion" 57444c061aSmrg exit $? 58444c061aSmrg ;; 59444c061aSmrgesac 60444c061aSmrg 61444c061aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 62444c061aSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 63444c061aSmrg exit 1 64444c061aSmrgfi 65444c061aSmrg 66444c061aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 67444c061aSmrgdepfile=${depfile-`echo "$object" | 68444c061aSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 69444c061aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 70444c061aSmrg 71444c061aSmrgrm -f "$tmpdepfile" 72444c061aSmrg 73444c061aSmrg# Some modes work just like other modes, but use different flags. We 74444c061aSmrg# parameterize here, but still list the modes in the big case below, 75444c061aSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 76444c061aSmrg# here, because this file can only contain one case statement. 77444c061aSmrgif test "$depmode" = hp; then 78444c061aSmrg # HP compiler uses -M and no extra arg. 79444c061aSmrg gccflag=-M 80444c061aSmrg depmode=gcc 81444c061aSmrgfi 82444c061aSmrg 83444c061aSmrgif test "$depmode" = dashXmstdout; then 84444c061aSmrg # This is just like dashmstdout with a different argument. 85444c061aSmrg dashmflag=-xM 86444c061aSmrg depmode=dashmstdout 87444c061aSmrgfi 88444c061aSmrg 89444c061aSmrgcase "$depmode" in 90444c061aSmrggcc3) 91444c061aSmrg## gcc 3 implements dependency tracking that does exactly what 92444c061aSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 93444c061aSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 94444c061aSmrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 95444c061aSmrg stat=$? 96444c061aSmrg if test $stat -eq 0; then : 97444c061aSmrg else 98444c061aSmrg rm -f "$tmpdepfile" 99444c061aSmrg exit $stat 100444c061aSmrg fi 101444c061aSmrg mv "$tmpdepfile" "$depfile" 102444c061aSmrg ;; 103444c061aSmrg 104444c061aSmrggcc) 105444c061aSmrg## There are various ways to get dependency output from gcc. Here's 106444c061aSmrg## why we pick this rather obscure method: 107444c061aSmrg## - Don't want to use -MD because we'd like the dependencies to end 108444c061aSmrg## up in a subdir. Having to rename by hand is ugly. 109444c061aSmrg## (We might end up doing this anyway to support other compilers.) 110444c061aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 111444c061aSmrg## -MM, not -M (despite what the docs say). 112444c061aSmrg## - Using -M directly means running the compiler twice (even worse 113444c061aSmrg## than renaming). 114444c061aSmrg if test -z "$gccflag"; then 115444c061aSmrg gccflag=-MD, 116444c061aSmrg fi 117444c061aSmrg "$@" -Wp,"$gccflag$tmpdepfile" 118444c061aSmrg stat=$? 119444c061aSmrg if test $stat -eq 0; then : 120444c061aSmrg else 121444c061aSmrg rm -f "$tmpdepfile" 122444c061aSmrg exit $stat 123444c061aSmrg fi 124444c061aSmrg rm -f "$depfile" 125444c061aSmrg echo "$object : \\" > "$depfile" 126444c061aSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 127444c061aSmrg## The second -e expression handles DOS-style file names with drive letters. 128444c061aSmrg sed -e 's/^[^:]*: / /' \ 129444c061aSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 130444c061aSmrg## This next piece of magic avoids the `deleted header file' problem. 131444c061aSmrg## The problem is that when a header file which appears in a .P file 132444c061aSmrg## is deleted, the dependency causes make to die (because there is 133444c061aSmrg## typically no way to rebuild the header). We avoid this by adding 134444c061aSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 135444c061aSmrg## this for us directly. 136444c061aSmrg tr ' ' ' 137444c061aSmrg' < "$tmpdepfile" | 138444c061aSmrg## Some versions of gcc put a space before the `:'. On the theory 139444c061aSmrg## that the space means something, we add a space to the output as 140444c061aSmrg## well. 141444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 142444c061aSmrg## correctly. Breaking it into two sed invocations is a workaround. 143444c061aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 144444c061aSmrg rm -f "$tmpdepfile" 145444c061aSmrg ;; 146444c061aSmrg 147444c061aSmrghp) 148444c061aSmrg # This case exists only to let depend.m4 do its work. It works by 149444c061aSmrg # looking at the text of this script. This case will never be run, 150444c061aSmrg # since it is checked for above. 151444c061aSmrg exit 1 152444c061aSmrg ;; 153444c061aSmrg 154444c061aSmrgsgi) 155444c061aSmrg if test "$libtool" = yes; then 156444c061aSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 157444c061aSmrg else 158444c061aSmrg "$@" -MDupdate "$tmpdepfile" 159444c061aSmrg fi 160444c061aSmrg stat=$? 161444c061aSmrg if test $stat -eq 0; then : 162444c061aSmrg else 163444c061aSmrg rm -f "$tmpdepfile" 164444c061aSmrg exit $stat 165444c061aSmrg fi 166444c061aSmrg rm -f "$depfile" 167444c061aSmrg 168444c061aSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 169444c061aSmrg echo "$object : \\" > "$depfile" 170444c061aSmrg 171444c061aSmrg # Clip off the initial element (the dependent). Don't try to be 172444c061aSmrg # clever and replace this with sed code, as IRIX sed won't handle 173444c061aSmrg # lines with more than a fixed number of characters (4096 in 174444c061aSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 175444c061aSmrg # the IRIX cc adds comments like `#:fec' to the end of the 176444c061aSmrg # dependency line. 177444c061aSmrg tr ' ' ' 178444c061aSmrg' < "$tmpdepfile" \ 179444c061aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 180444c061aSmrg tr ' 181444c061aSmrg' ' ' >> $depfile 182444c061aSmrg echo >> $depfile 183444c061aSmrg 184444c061aSmrg # The second pass generates a dummy entry for each header file. 185444c061aSmrg tr ' ' ' 186444c061aSmrg' < "$tmpdepfile" \ 187444c061aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 188444c061aSmrg >> $depfile 189444c061aSmrg else 190444c061aSmrg # The sourcefile does not contain any dependencies, so just 191444c061aSmrg # store a dummy comment line, to avoid errors with the Makefile 192444c061aSmrg # "include basename.Plo" scheme. 193444c061aSmrg echo "#dummy" > "$depfile" 194444c061aSmrg fi 195444c061aSmrg rm -f "$tmpdepfile" 196444c061aSmrg ;; 197444c061aSmrg 198444c061aSmrgaix) 199444c061aSmrg # The C for AIX Compiler uses -M and outputs the dependencies 200444c061aSmrg # in a .u file. In older versions, this file always lives in the 201444c061aSmrg # current directory. Also, the AIX compiler puts `$object:' at the 202444c061aSmrg # start of each line; $object doesn't have directory information. 203444c061aSmrg # Version 6 uses the directory in both cases. 204444c061aSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 205444c061aSmrg tmpdepfile="$stripped.u" 206444c061aSmrg if test "$libtool" = yes; then 207444c061aSmrg "$@" -Wc,-M 208444c061aSmrg else 209444c061aSmrg "$@" -M 210444c061aSmrg fi 211444c061aSmrg stat=$? 212444c061aSmrg 213444c061aSmrg if test -f "$tmpdepfile"; then : 214444c061aSmrg else 215444c061aSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 216444c061aSmrg tmpdepfile="$stripped.u" 217444c061aSmrg fi 218444c061aSmrg 219444c061aSmrg if test $stat -eq 0; then : 220444c061aSmrg else 221444c061aSmrg rm -f "$tmpdepfile" 222444c061aSmrg exit $stat 223444c061aSmrg fi 224444c061aSmrg 225444c061aSmrg if test -f "$tmpdepfile"; then 226444c061aSmrg outname="$stripped.o" 227444c061aSmrg # Each line is of the form `foo.o: dependent.h'. 228444c061aSmrg # Do two passes, one to just change these to 229444c061aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 230444c061aSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 231444c061aSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 232444c061aSmrg else 233444c061aSmrg # The sourcefile does not contain any dependencies, so just 234444c061aSmrg # store a dummy comment line, to avoid errors with the Makefile 235444c061aSmrg # "include basename.Plo" scheme. 236444c061aSmrg echo "#dummy" > "$depfile" 237444c061aSmrg fi 238444c061aSmrg rm -f "$tmpdepfile" 239444c061aSmrg ;; 240444c061aSmrg 241444c061aSmrgicc) 242444c061aSmrg # Intel's C compiler understands `-MD -MF file'. However on 243444c061aSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 244444c061aSmrg # ICC 7.0 will fill foo.d with something like 245444c061aSmrg # foo.o: sub/foo.c 246444c061aSmrg # foo.o: sub/foo.h 247444c061aSmrg # which is wrong. We want: 248444c061aSmrg # sub/foo.o: sub/foo.c 249444c061aSmrg # sub/foo.o: sub/foo.h 250444c061aSmrg # sub/foo.c: 251444c061aSmrg # sub/foo.h: 252444c061aSmrg # ICC 7.1 will output 253444c061aSmrg # foo.o: sub/foo.c sub/foo.h 254444c061aSmrg # and will wrap long lines using \ : 255444c061aSmrg # foo.o: sub/foo.c ... \ 256444c061aSmrg # sub/foo.h ... \ 257444c061aSmrg # ... 258444c061aSmrg 259444c061aSmrg "$@" -MD -MF "$tmpdepfile" 260444c061aSmrg stat=$? 261444c061aSmrg if test $stat -eq 0; then : 262444c061aSmrg else 263444c061aSmrg rm -f "$tmpdepfile" 264444c061aSmrg exit $stat 265444c061aSmrg fi 266444c061aSmrg rm -f "$depfile" 267444c061aSmrg # Each line is of the form `foo.o: dependent.h', 268444c061aSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 269444c061aSmrg # Do two passes, one to just change these to 270444c061aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 271444c061aSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 272444c061aSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 273444c061aSmrg # correctly. Breaking it into two sed invocations is a workaround. 274444c061aSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 275444c061aSmrg sed -e 's/$/ :/' >> "$depfile" 276444c061aSmrg rm -f "$tmpdepfile" 277444c061aSmrg ;; 278444c061aSmrg 279444c061aSmrgtru64) 280444c061aSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 281444c061aSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 282444c061aSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 283444c061aSmrg # dependencies in `foo.d' instead, so we check for that too. 284444c061aSmrg # Subdirectories are respected. 285444c061aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 286444c061aSmrg test "x$dir" = "x$object" && dir= 287444c061aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 288444c061aSmrg 289444c061aSmrg if test "$libtool" = yes; then 290444c061aSmrg # With Tru64 cc, shared objects can also be used to make a 291444c061aSmrg # static library. This mecanism is used in libtool 1.4 series to 292444c061aSmrg # handle both shared and static libraries in a single compilation. 293444c061aSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 294444c061aSmrg # 295444c061aSmrg # With libtool 1.5 this exception was removed, and libtool now 296444c061aSmrg # generates 2 separate objects for the 2 libraries. These two 297444c061aSmrg # compilations output dependencies in in $dir.libs/$base.o.d and 298444c061aSmrg # in $dir$base.o.d. We have to check for both files, because 299444c061aSmrg # one of the two compilations can be disabled. We should prefer 300444c061aSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 301444c061aSmrg # automatically cleaned when .libs/ is deleted, while ignoring 302444c061aSmrg # the former would cause a distcleancheck panic. 303444c061aSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 304444c061aSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 305444c061aSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 306444c061aSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 307444c061aSmrg "$@" -Wc,-MD 308444c061aSmrg else 309444c061aSmrg tmpdepfile1=$dir$base.o.d 310444c061aSmrg tmpdepfile2=$dir$base.d 311444c061aSmrg tmpdepfile3=$dir$base.d 312444c061aSmrg tmpdepfile4=$dir$base.d 313444c061aSmrg "$@" -MD 314444c061aSmrg fi 315444c061aSmrg 316444c061aSmrg stat=$? 317444c061aSmrg if test $stat -eq 0; then : 318444c061aSmrg else 319444c061aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 320444c061aSmrg exit $stat 321444c061aSmrg fi 322444c061aSmrg 323444c061aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 324444c061aSmrg do 325444c061aSmrg test -f "$tmpdepfile" && break 326444c061aSmrg done 327444c061aSmrg if test -f "$tmpdepfile"; then 328444c061aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 329444c061aSmrg # That's a tab and a space in the []. 330444c061aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 331444c061aSmrg else 332444c061aSmrg echo "#dummy" > "$depfile" 333444c061aSmrg fi 334444c061aSmrg rm -f "$tmpdepfile" 335444c061aSmrg ;; 336444c061aSmrg 337444c061aSmrg#nosideeffect) 338444c061aSmrg # This comment above is used by automake to tell side-effect 339444c061aSmrg # dependency tracking mechanisms from slower ones. 340444c061aSmrg 341444c061aSmrgdashmstdout) 342444c061aSmrg # Important note: in order to support this mode, a compiler *must* 343444c061aSmrg # always write the preprocessed file to stdout, regardless of -o. 344444c061aSmrg "$@" || exit $? 345444c061aSmrg 346444c061aSmrg # Remove the call to Libtool. 347444c061aSmrg if test "$libtool" = yes; then 348444c061aSmrg while test $1 != '--mode=compile'; do 349444c061aSmrg shift 350444c061aSmrg done 351444c061aSmrg shift 352444c061aSmrg fi 353444c061aSmrg 354444c061aSmrg # Remove `-o $object'. 355444c061aSmrg IFS=" " 356444c061aSmrg for arg 357444c061aSmrg do 358444c061aSmrg case $arg in 359444c061aSmrg -o) 360444c061aSmrg shift 361444c061aSmrg ;; 362444c061aSmrg $object) 363444c061aSmrg shift 364444c061aSmrg ;; 365444c061aSmrg *) 366444c061aSmrg set fnord "$@" "$arg" 367444c061aSmrg shift # fnord 368444c061aSmrg shift # $arg 369444c061aSmrg ;; 370444c061aSmrg esac 371444c061aSmrg done 372444c061aSmrg 373444c061aSmrg test -z "$dashmflag" && dashmflag=-M 374444c061aSmrg # Require at least two characters before searching for `:' 375444c061aSmrg # in the target name. This is to cope with DOS-style filenames: 376444c061aSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 377444c061aSmrg "$@" $dashmflag | 378444c061aSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 379444c061aSmrg rm -f "$depfile" 380444c061aSmrg cat < "$tmpdepfile" > "$depfile" 381444c061aSmrg tr ' ' ' 382444c061aSmrg' < "$tmpdepfile" | \ 383444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 384444c061aSmrg## correctly. Breaking it into two sed invocations is a workaround. 385444c061aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 386444c061aSmrg rm -f "$tmpdepfile" 387444c061aSmrg ;; 388444c061aSmrg 389444c061aSmrgdashXmstdout) 390444c061aSmrg # This case only exists to satisfy depend.m4. It is never actually 391444c061aSmrg # run, as this mode is specially recognized in the preamble. 392444c061aSmrg exit 1 393444c061aSmrg ;; 394444c061aSmrg 395444c061aSmrgmakedepend) 396444c061aSmrg "$@" || exit $? 397444c061aSmrg # Remove any Libtool call 398444c061aSmrg if test "$libtool" = yes; then 399444c061aSmrg while test $1 != '--mode=compile'; do 400444c061aSmrg shift 401444c061aSmrg done 402444c061aSmrg shift 403444c061aSmrg fi 404444c061aSmrg # X makedepend 405444c061aSmrg shift 406444c061aSmrg cleared=no 407444c061aSmrg for arg in "$@"; do 408444c061aSmrg case $cleared in 409444c061aSmrg no) 410444c061aSmrg set ""; shift 411444c061aSmrg cleared=yes ;; 412444c061aSmrg esac 413444c061aSmrg case "$arg" in 414444c061aSmrg -D*|-I*) 415444c061aSmrg set fnord "$@" "$arg"; shift ;; 416444c061aSmrg # Strip any option that makedepend may not understand. Remove 417444c061aSmrg # the object too, otherwise makedepend will parse it as a source file. 418444c061aSmrg -*|$object) 419444c061aSmrg ;; 420444c061aSmrg *) 421444c061aSmrg set fnord "$@" "$arg"; shift ;; 422444c061aSmrg esac 423444c061aSmrg done 424444c061aSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 425444c061aSmrg touch "$tmpdepfile" 426444c061aSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 427444c061aSmrg rm -f "$depfile" 428444c061aSmrg cat < "$tmpdepfile" > "$depfile" 429444c061aSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 430444c061aSmrg' | \ 431444c061aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 432444c061aSmrg## correctly. Breaking it into two sed invocations is a workaround. 433444c061aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 434444c061aSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 435444c061aSmrg ;; 436444c061aSmrg 437444c061aSmrgcpp) 438444c061aSmrg # Important note: in order to support this mode, a compiler *must* 439444c061aSmrg # always write the preprocessed file to stdout. 440444c061aSmrg "$@" || exit $? 441444c061aSmrg 442444c061aSmrg # Remove the call to Libtool. 443444c061aSmrg if test "$libtool" = yes; then 444444c061aSmrg while test $1 != '--mode=compile'; do 445444c061aSmrg shift 446444c061aSmrg done 447444c061aSmrg shift 448444c061aSmrg fi 449444c061aSmrg 450444c061aSmrg # Remove `-o $object'. 451444c061aSmrg IFS=" " 452444c061aSmrg for arg 453444c061aSmrg do 454444c061aSmrg case $arg in 455444c061aSmrg -o) 456444c061aSmrg shift 457444c061aSmrg ;; 458444c061aSmrg $object) 459444c061aSmrg shift 460444c061aSmrg ;; 461444c061aSmrg *) 462444c061aSmrg set fnord "$@" "$arg" 463444c061aSmrg shift # fnord 464444c061aSmrg shift # $arg 465444c061aSmrg ;; 466444c061aSmrg esac 467444c061aSmrg done 468444c061aSmrg 469444c061aSmrg "$@" -E | 470444c061aSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 471444c061aSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 472444c061aSmrg sed '$ s: \\$::' > "$tmpdepfile" 473444c061aSmrg rm -f "$depfile" 474444c061aSmrg echo "$object : \\" > "$depfile" 475444c061aSmrg cat < "$tmpdepfile" >> "$depfile" 476444c061aSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 477444c061aSmrg rm -f "$tmpdepfile" 478444c061aSmrg ;; 479444c061aSmrg 480444c061aSmrgmsvisualcpp) 481444c061aSmrg # Important note: in order to support this mode, a compiler *must* 482444c061aSmrg # always write the preprocessed file to stdout, regardless of -o, 483444c061aSmrg # because we must use -o when running libtool. 484444c061aSmrg "$@" || exit $? 485444c061aSmrg IFS=" " 486444c061aSmrg for arg 487444c061aSmrg do 488444c061aSmrg case "$arg" in 489444c061aSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 490444c061aSmrg set fnord "$@" 491444c061aSmrg shift 492444c061aSmrg shift 493444c061aSmrg ;; 494444c061aSmrg *) 495444c061aSmrg set fnord "$@" "$arg" 496444c061aSmrg shift 497444c061aSmrg shift 498444c061aSmrg ;; 499444c061aSmrg esac 500444c061aSmrg done 501444c061aSmrg "$@" -E | 502444c061aSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 503444c061aSmrg rm -f "$depfile" 504444c061aSmrg echo "$object : \\" > "$depfile" 505444c061aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 506444c061aSmrg echo " " >> "$depfile" 507444c061aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 508444c061aSmrg rm -f "$tmpdepfile" 509444c061aSmrg ;; 510444c061aSmrg 511444c061aSmrgnone) 512444c061aSmrg exec "$@" 513444c061aSmrg ;; 514444c061aSmrg 515444c061aSmrg*) 516444c061aSmrg echo "Unknown depmode $depmode" 1>&2 517444c061aSmrg exit 1 518444c061aSmrg ;; 519444c061aSmrgesac 520444c061aSmrg 521444c061aSmrgexit 0 522444c061aSmrg 523444c061aSmrg# Local Variables: 524444c061aSmrg# mode: shell-script 525444c061aSmrg# sh-indentation: 2 526444c061aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 527444c061aSmrg# time-stamp-start: "scriptversion=" 528444c061aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 529444c061aSmrg# time-stamp-end: "$" 530444c061aSmrg# End: 531