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