depcomp revision 943345d3
1943345d3Smrg#! /bin/sh 2943345d3Smrg# depcomp - compile a program generating dependencies as side-effects 3943345d3Smrg 4943345d3Smrgscriptversion=2005-07-09.11 5943345d3Smrg 6943345d3Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 7943345d3Smrg 8943345d3Smrg# This program is free software; you can redistribute it and/or modify 9943345d3Smrg# it under the terms of the GNU General Public License as published by 10943345d3Smrg# the Free Software Foundation; either version 2, or (at your option) 11943345d3Smrg# any later version. 12943345d3Smrg 13943345d3Smrg# This program is distributed in the hope that it will be useful, 14943345d3Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 15943345d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16943345d3Smrg# GNU General Public License for more details. 17943345d3Smrg 18943345d3Smrg# You should have received a copy of the GNU General Public License 19943345d3Smrg# along with this program; if not, write to the Free Software 20943345d3Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21943345d3Smrg# 02110-1301, USA. 22943345d3Smrg 23943345d3Smrg# As a special exception to the GNU General Public License, if you 24943345d3Smrg# distribute this file as part of a program that contains a 25943345d3Smrg# configuration script generated by Autoconf, you may include it under 26943345d3Smrg# the same distribution terms that you use for the rest of that program. 27943345d3Smrg 28943345d3Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 29943345d3Smrg 30943345d3Smrgcase $1 in 31943345d3Smrg '') 32943345d3Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 33943345d3Smrg exit 1; 34943345d3Smrg ;; 35943345d3Smrg -h | --h*) 36943345d3Smrg cat <<\EOF 37943345d3SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 38943345d3Smrg 39943345d3SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 40943345d3Smrgas side-effects. 41943345d3Smrg 42943345d3SmrgEnvironment variables: 43943345d3Smrg depmode Dependency tracking mode. 44943345d3Smrg source Source file read by `PROGRAMS ARGS'. 45943345d3Smrg object Object file output by `PROGRAMS ARGS'. 46943345d3Smrg DEPDIR directory where to store dependencies. 47943345d3Smrg depfile Dependency file to output. 48943345d3Smrg tmpdepfile Temporary file to use when outputing dependencies. 49943345d3Smrg libtool Whether libtool is used (yes/no). 50943345d3Smrg 51943345d3SmrgReport bugs to <bug-automake@gnu.org>. 52943345d3SmrgEOF 53943345d3Smrg exit $? 54943345d3Smrg ;; 55943345d3Smrg -v | --v*) 56943345d3Smrg echo "depcomp $scriptversion" 57943345d3Smrg exit $? 58943345d3Smrg ;; 59943345d3Smrgesac 60943345d3Smrg 61943345d3Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 62943345d3Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 63943345d3Smrg exit 1 64943345d3Smrgfi 65943345d3Smrg 66943345d3Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 67943345d3Smrgdepfile=${depfile-`echo "$object" | 68943345d3Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 69943345d3Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 70943345d3Smrg 71943345d3Smrgrm -f "$tmpdepfile" 72943345d3Smrg 73943345d3Smrg# Some modes work just like other modes, but use different flags. We 74943345d3Smrg# parameterize here, but still list the modes in the big case below, 75943345d3Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 76943345d3Smrg# here, because this file can only contain one case statement. 77943345d3Smrgif test "$depmode" = hp; then 78943345d3Smrg # HP compiler uses -M and no extra arg. 79943345d3Smrg gccflag=-M 80943345d3Smrg depmode=gcc 81943345d3Smrgfi 82943345d3Smrg 83943345d3Smrgif test "$depmode" = dashXmstdout; then 84943345d3Smrg # This is just like dashmstdout with a different argument. 85943345d3Smrg dashmflag=-xM 86943345d3Smrg depmode=dashmstdout 87943345d3Smrgfi 88943345d3Smrg 89943345d3Smrgcase "$depmode" in 90943345d3Smrggcc3) 91943345d3Smrg## gcc 3 implements dependency tracking that does exactly what 92943345d3Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 93943345d3Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 94943345d3Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 95943345d3Smrg stat=$? 96943345d3Smrg if test $stat -eq 0; then : 97943345d3Smrg else 98943345d3Smrg rm -f "$tmpdepfile" 99943345d3Smrg exit $stat 100943345d3Smrg fi 101943345d3Smrg mv "$tmpdepfile" "$depfile" 102943345d3Smrg ;; 103943345d3Smrg 104943345d3Smrggcc) 105943345d3Smrg## There are various ways to get dependency output from gcc. Here's 106943345d3Smrg## why we pick this rather obscure method: 107943345d3Smrg## - Don't want to use -MD because we'd like the dependencies to end 108943345d3Smrg## up in a subdir. Having to rename by hand is ugly. 109943345d3Smrg## (We might end up doing this anyway to support other compilers.) 110943345d3Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 111943345d3Smrg## -MM, not -M (despite what the docs say). 112943345d3Smrg## - Using -M directly means running the compiler twice (even worse 113943345d3Smrg## than renaming). 114943345d3Smrg if test -z "$gccflag"; then 115943345d3Smrg gccflag=-MD, 116943345d3Smrg fi 117943345d3Smrg "$@" -Wp,"$gccflag$tmpdepfile" 118943345d3Smrg stat=$? 119943345d3Smrg if test $stat -eq 0; then : 120943345d3Smrg else 121943345d3Smrg rm -f "$tmpdepfile" 122943345d3Smrg exit $stat 123943345d3Smrg fi 124943345d3Smrg rm -f "$depfile" 125943345d3Smrg echo "$object : \\" > "$depfile" 126943345d3Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 127943345d3Smrg## The second -e expression handles DOS-style file names with drive letters. 128943345d3Smrg sed -e 's/^[^:]*: / /' \ 129943345d3Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 130943345d3Smrg## This next piece of magic avoids the `deleted header file' problem. 131943345d3Smrg## The problem is that when a header file which appears in a .P file 132943345d3Smrg## is deleted, the dependency causes make to die (because there is 133943345d3Smrg## typically no way to rebuild the header). We avoid this by adding 134943345d3Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 135943345d3Smrg## this for us directly. 136943345d3Smrg tr ' ' ' 137943345d3Smrg' < "$tmpdepfile" | 138943345d3Smrg## Some versions of gcc put a space before the `:'. On the theory 139943345d3Smrg## that the space means something, we add a space to the output as 140943345d3Smrg## well. 141943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 142943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 143943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 144943345d3Smrg rm -f "$tmpdepfile" 145943345d3Smrg ;; 146943345d3Smrg 147943345d3Smrghp) 148943345d3Smrg # This case exists only to let depend.m4 do its work. It works by 149943345d3Smrg # looking at the text of this script. This case will never be run, 150943345d3Smrg # since it is checked for above. 151943345d3Smrg exit 1 152943345d3Smrg ;; 153943345d3Smrg 154943345d3Smrgsgi) 155943345d3Smrg if test "$libtool" = yes; then 156943345d3Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 157943345d3Smrg else 158943345d3Smrg "$@" -MDupdate "$tmpdepfile" 159943345d3Smrg fi 160943345d3Smrg stat=$? 161943345d3Smrg if test $stat -eq 0; then : 162943345d3Smrg else 163943345d3Smrg rm -f "$tmpdepfile" 164943345d3Smrg exit $stat 165943345d3Smrg fi 166943345d3Smrg rm -f "$depfile" 167943345d3Smrg 168943345d3Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 169943345d3Smrg echo "$object : \\" > "$depfile" 170943345d3Smrg 171943345d3Smrg # Clip off the initial element (the dependent). Don't try to be 172943345d3Smrg # clever and replace this with sed code, as IRIX sed won't handle 173943345d3Smrg # lines with more than a fixed number of characters (4096 in 174943345d3Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 175943345d3Smrg # the IRIX cc adds comments like `#:fec' to the end of the 176943345d3Smrg # dependency line. 177943345d3Smrg tr ' ' ' 178943345d3Smrg' < "$tmpdepfile" \ 179943345d3Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 180943345d3Smrg tr ' 181943345d3Smrg' ' ' >> $depfile 182943345d3Smrg echo >> $depfile 183943345d3Smrg 184943345d3Smrg # The second pass generates a dummy entry for each header file. 185943345d3Smrg tr ' ' ' 186943345d3Smrg' < "$tmpdepfile" \ 187943345d3Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 188943345d3Smrg >> $depfile 189943345d3Smrg else 190943345d3Smrg # The sourcefile does not contain any dependencies, so just 191943345d3Smrg # store a dummy comment line, to avoid errors with the Makefile 192943345d3Smrg # "include basename.Plo" scheme. 193943345d3Smrg echo "#dummy" > "$depfile" 194943345d3Smrg fi 195943345d3Smrg rm -f "$tmpdepfile" 196943345d3Smrg ;; 197943345d3Smrg 198943345d3Smrgaix) 199943345d3Smrg # The C for AIX Compiler uses -M and outputs the dependencies 200943345d3Smrg # in a .u file. In older versions, this file always lives in the 201943345d3Smrg # current directory. Also, the AIX compiler puts `$object:' at the 202943345d3Smrg # start of each line; $object doesn't have directory information. 203943345d3Smrg # Version 6 uses the directory in both cases. 204943345d3Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 205943345d3Smrg tmpdepfile="$stripped.u" 206943345d3Smrg if test "$libtool" = yes; then 207943345d3Smrg "$@" -Wc,-M 208943345d3Smrg else 209943345d3Smrg "$@" -M 210943345d3Smrg fi 211943345d3Smrg stat=$? 212943345d3Smrg 213943345d3Smrg if test -f "$tmpdepfile"; then : 214943345d3Smrg else 215943345d3Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 216943345d3Smrg tmpdepfile="$stripped.u" 217943345d3Smrg fi 218943345d3Smrg 219943345d3Smrg if test $stat -eq 0; then : 220943345d3Smrg else 221943345d3Smrg rm -f "$tmpdepfile" 222943345d3Smrg exit $stat 223943345d3Smrg fi 224943345d3Smrg 225943345d3Smrg if test -f "$tmpdepfile"; then 226943345d3Smrg outname="$stripped.o" 227943345d3Smrg # Each line is of the form `foo.o: dependent.h'. 228943345d3Smrg # Do two passes, one to just change these to 229943345d3Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 230943345d3Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 231943345d3Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 232943345d3Smrg else 233943345d3Smrg # The sourcefile does not contain any dependencies, so just 234943345d3Smrg # store a dummy comment line, to avoid errors with the Makefile 235943345d3Smrg # "include basename.Plo" scheme. 236943345d3Smrg echo "#dummy" > "$depfile" 237943345d3Smrg fi 238943345d3Smrg rm -f "$tmpdepfile" 239943345d3Smrg ;; 240943345d3Smrg 241943345d3Smrgicc) 242943345d3Smrg # Intel's C compiler understands `-MD -MF file'. However on 243943345d3Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 244943345d3Smrg # ICC 7.0 will fill foo.d with something like 245943345d3Smrg # foo.o: sub/foo.c 246943345d3Smrg # foo.o: sub/foo.h 247943345d3Smrg # which is wrong. We want: 248943345d3Smrg # sub/foo.o: sub/foo.c 249943345d3Smrg # sub/foo.o: sub/foo.h 250943345d3Smrg # sub/foo.c: 251943345d3Smrg # sub/foo.h: 252943345d3Smrg # ICC 7.1 will output 253943345d3Smrg # foo.o: sub/foo.c sub/foo.h 254943345d3Smrg # and will wrap long lines using \ : 255943345d3Smrg # foo.o: sub/foo.c ... \ 256943345d3Smrg # sub/foo.h ... \ 257943345d3Smrg # ... 258943345d3Smrg 259943345d3Smrg "$@" -MD -MF "$tmpdepfile" 260943345d3Smrg stat=$? 261943345d3Smrg if test $stat -eq 0; then : 262943345d3Smrg else 263943345d3Smrg rm -f "$tmpdepfile" 264943345d3Smrg exit $stat 265943345d3Smrg fi 266943345d3Smrg rm -f "$depfile" 267943345d3Smrg # Each line is of the form `foo.o: dependent.h', 268943345d3Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 269943345d3Smrg # Do two passes, one to just change these to 270943345d3Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 271943345d3Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 272943345d3Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 273943345d3Smrg # correctly. Breaking it into two sed invocations is a workaround. 274943345d3Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 275943345d3Smrg sed -e 's/$/ :/' >> "$depfile" 276943345d3Smrg rm -f "$tmpdepfile" 277943345d3Smrg ;; 278943345d3Smrg 279943345d3Smrgtru64) 280943345d3Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 281943345d3Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 282943345d3Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 283943345d3Smrg # dependencies in `foo.d' instead, so we check for that too. 284943345d3Smrg # Subdirectories are respected. 285943345d3Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 286943345d3Smrg test "x$dir" = "x$object" && dir= 287943345d3Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 288943345d3Smrg 289943345d3Smrg if test "$libtool" = yes; then 290943345d3Smrg # With Tru64 cc, shared objects can also be used to make a 291943345d3Smrg # static library. This mecanism is used in libtool 1.4 series to 292943345d3Smrg # handle both shared and static libraries in a single compilation. 293943345d3Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 294943345d3Smrg # 295943345d3Smrg # With libtool 1.5 this exception was removed, and libtool now 296943345d3Smrg # generates 2 separate objects for the 2 libraries. These two 297943345d3Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 298943345d3Smrg # in $dir$base.o.d. We have to check for both files, because 299943345d3Smrg # one of the two compilations can be disabled. We should prefer 300943345d3Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 301943345d3Smrg # automatically cleaned when .libs/ is deleted, while ignoring 302943345d3Smrg # the former would cause a distcleancheck panic. 303943345d3Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 304943345d3Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 305943345d3Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 306943345d3Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 307943345d3Smrg "$@" -Wc,-MD 308943345d3Smrg else 309943345d3Smrg tmpdepfile1=$dir$base.o.d 310943345d3Smrg tmpdepfile2=$dir$base.d 311943345d3Smrg tmpdepfile3=$dir$base.d 312943345d3Smrg tmpdepfile4=$dir$base.d 313943345d3Smrg "$@" -MD 314943345d3Smrg fi 315943345d3Smrg 316943345d3Smrg stat=$? 317943345d3Smrg if test $stat -eq 0; then : 318943345d3Smrg else 319943345d3Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 320943345d3Smrg exit $stat 321943345d3Smrg fi 322943345d3Smrg 323943345d3Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 324943345d3Smrg do 325943345d3Smrg test -f "$tmpdepfile" && break 326943345d3Smrg done 327943345d3Smrg if test -f "$tmpdepfile"; then 328943345d3Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 329943345d3Smrg # That's a tab and a space in the []. 330943345d3Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 331943345d3Smrg else 332943345d3Smrg echo "#dummy" > "$depfile" 333943345d3Smrg fi 334943345d3Smrg rm -f "$tmpdepfile" 335943345d3Smrg ;; 336943345d3Smrg 337943345d3Smrg#nosideeffect) 338943345d3Smrg # This comment above is used by automake to tell side-effect 339943345d3Smrg # dependency tracking mechanisms from slower ones. 340943345d3Smrg 341943345d3Smrgdashmstdout) 342943345d3Smrg # Important note: in order to support this mode, a compiler *must* 343943345d3Smrg # always write the preprocessed file to stdout, regardless of -o. 344943345d3Smrg "$@" || exit $? 345943345d3Smrg 346943345d3Smrg # Remove the call to Libtool. 347943345d3Smrg if test "$libtool" = yes; then 348943345d3Smrg while test $1 != '--mode=compile'; do 349943345d3Smrg shift 350943345d3Smrg done 351943345d3Smrg shift 352943345d3Smrg fi 353943345d3Smrg 354943345d3Smrg # Remove `-o $object'. 355943345d3Smrg IFS=" " 356943345d3Smrg for arg 357943345d3Smrg do 358943345d3Smrg case $arg in 359943345d3Smrg -o) 360943345d3Smrg shift 361943345d3Smrg ;; 362943345d3Smrg $object) 363943345d3Smrg shift 364943345d3Smrg ;; 365943345d3Smrg *) 366943345d3Smrg set fnord "$@" "$arg" 367943345d3Smrg shift # fnord 368943345d3Smrg shift # $arg 369943345d3Smrg ;; 370943345d3Smrg esac 371943345d3Smrg done 372943345d3Smrg 373943345d3Smrg test -z "$dashmflag" && dashmflag=-M 374943345d3Smrg # Require at least two characters before searching for `:' 375943345d3Smrg # in the target name. This is to cope with DOS-style filenames: 376943345d3Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 377943345d3Smrg "$@" $dashmflag | 378943345d3Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 379943345d3Smrg rm -f "$depfile" 380943345d3Smrg cat < "$tmpdepfile" > "$depfile" 381943345d3Smrg tr ' ' ' 382943345d3Smrg' < "$tmpdepfile" | \ 383943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 384943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 385943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 386943345d3Smrg rm -f "$tmpdepfile" 387943345d3Smrg ;; 388943345d3Smrg 389943345d3SmrgdashXmstdout) 390943345d3Smrg # This case only exists to satisfy depend.m4. It is never actually 391943345d3Smrg # run, as this mode is specially recognized in the preamble. 392943345d3Smrg exit 1 393943345d3Smrg ;; 394943345d3Smrg 395943345d3Smrgmakedepend) 396943345d3Smrg "$@" || exit $? 397943345d3Smrg # Remove any Libtool call 398943345d3Smrg if test "$libtool" = yes; then 399943345d3Smrg while test $1 != '--mode=compile'; do 400943345d3Smrg shift 401943345d3Smrg done 402943345d3Smrg shift 403943345d3Smrg fi 404943345d3Smrg # X makedepend 405943345d3Smrg shift 406943345d3Smrg cleared=no 407943345d3Smrg for arg in "$@"; do 408943345d3Smrg case $cleared in 409943345d3Smrg no) 410943345d3Smrg set ""; shift 411943345d3Smrg cleared=yes ;; 412943345d3Smrg esac 413943345d3Smrg case "$arg" in 414943345d3Smrg -D*|-I*) 415943345d3Smrg set fnord "$@" "$arg"; shift ;; 416943345d3Smrg # Strip any option that makedepend may not understand. Remove 417943345d3Smrg # the object too, otherwise makedepend will parse it as a source file. 418943345d3Smrg -*|$object) 419943345d3Smrg ;; 420943345d3Smrg *) 421943345d3Smrg set fnord "$@" "$arg"; shift ;; 422943345d3Smrg esac 423943345d3Smrg done 424943345d3Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 425943345d3Smrg touch "$tmpdepfile" 426943345d3Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 427943345d3Smrg rm -f "$depfile" 428943345d3Smrg cat < "$tmpdepfile" > "$depfile" 429943345d3Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 430943345d3Smrg' | \ 431943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 432943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 433943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 434943345d3Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 435943345d3Smrg ;; 436943345d3Smrg 437943345d3Smrgcpp) 438943345d3Smrg # Important note: in order to support this mode, a compiler *must* 439943345d3Smrg # always write the preprocessed file to stdout. 440943345d3Smrg "$@" || exit $? 441943345d3Smrg 442943345d3Smrg # Remove the call to Libtool. 443943345d3Smrg if test "$libtool" = yes; then 444943345d3Smrg while test $1 != '--mode=compile'; do 445943345d3Smrg shift 446943345d3Smrg done 447943345d3Smrg shift 448943345d3Smrg fi 449943345d3Smrg 450943345d3Smrg # Remove `-o $object'. 451943345d3Smrg IFS=" " 452943345d3Smrg for arg 453943345d3Smrg do 454943345d3Smrg case $arg in 455943345d3Smrg -o) 456943345d3Smrg shift 457943345d3Smrg ;; 458943345d3Smrg $object) 459943345d3Smrg shift 460943345d3Smrg ;; 461943345d3Smrg *) 462943345d3Smrg set fnord "$@" "$arg" 463943345d3Smrg shift # fnord 464943345d3Smrg shift # $arg 465943345d3Smrg ;; 466943345d3Smrg esac 467943345d3Smrg done 468943345d3Smrg 469943345d3Smrg "$@" -E | 470943345d3Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 471943345d3Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 472943345d3Smrg sed '$ s: \\$::' > "$tmpdepfile" 473943345d3Smrg rm -f "$depfile" 474943345d3Smrg echo "$object : \\" > "$depfile" 475943345d3Smrg cat < "$tmpdepfile" >> "$depfile" 476943345d3Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 477943345d3Smrg rm -f "$tmpdepfile" 478943345d3Smrg ;; 479943345d3Smrg 480943345d3Smrgmsvisualcpp) 481943345d3Smrg # Important note: in order to support this mode, a compiler *must* 482943345d3Smrg # always write the preprocessed file to stdout, regardless of -o, 483943345d3Smrg # because we must use -o when running libtool. 484943345d3Smrg "$@" || exit $? 485943345d3Smrg IFS=" " 486943345d3Smrg for arg 487943345d3Smrg do 488943345d3Smrg case "$arg" in 489943345d3Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 490943345d3Smrg set fnord "$@" 491943345d3Smrg shift 492943345d3Smrg shift 493943345d3Smrg ;; 494943345d3Smrg *) 495943345d3Smrg set fnord "$@" "$arg" 496943345d3Smrg shift 497943345d3Smrg shift 498943345d3Smrg ;; 499943345d3Smrg esac 500943345d3Smrg done 501943345d3Smrg "$@" -E | 502943345d3Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 503943345d3Smrg rm -f "$depfile" 504943345d3Smrg echo "$object : \\" > "$depfile" 505943345d3Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 506943345d3Smrg echo " " >> "$depfile" 507943345d3Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 508943345d3Smrg rm -f "$tmpdepfile" 509943345d3Smrg ;; 510943345d3Smrg 511943345d3Smrgnone) 512943345d3Smrg exec "$@" 513943345d3Smrg ;; 514943345d3Smrg 515943345d3Smrg*) 516943345d3Smrg echo "Unknown depmode $depmode" 1>&2 517943345d3Smrg exit 1 518943345d3Smrg ;; 519943345d3Smrgesac 520943345d3Smrg 521943345d3Smrgexit 0 522943345d3Smrg 523943345d3Smrg# Local Variables: 524943345d3Smrg# mode: shell-script 525943345d3Smrg# sh-indentation: 2 526943345d3Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 527943345d3Smrg# time-stamp-start: "scriptversion=" 528943345d3Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 529943345d3Smrg# time-stamp-end: "$" 530943345d3Smrg# End: 531