depcomp revision 191cded7
1191cded7Smrg#! /bin/sh 2191cded7Smrg# depcomp - compile a program generating dependencies as side-effects 3191cded7Smrg 4191cded7Smrgscriptversion=2005-07-09.11 5191cded7Smrg 6191cded7Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 7191cded7Smrg 8191cded7Smrg# This program is free software; you can redistribute it and/or modify 9191cded7Smrg# it under the terms of the GNU General Public License as published by 10191cded7Smrg# the Free Software Foundation; either version 2, or (at your option) 11191cded7Smrg# any later version. 12191cded7Smrg 13191cded7Smrg# This program is distributed in the hope that it will be useful, 14191cded7Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 15191cded7Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16191cded7Smrg# GNU General Public License for more details. 17191cded7Smrg 18191cded7Smrg# You should have received a copy of the GNU General Public License 19191cded7Smrg# along with this program; if not, write to the Free Software 20191cded7Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21191cded7Smrg# 02110-1301, USA. 22191cded7Smrg 23191cded7Smrg# As a special exception to the GNU General Public License, if you 24191cded7Smrg# distribute this file as part of a program that contains a 25191cded7Smrg# configuration script generated by Autoconf, you may include it under 26191cded7Smrg# the same distribution terms that you use for the rest of that program. 27191cded7Smrg 28191cded7Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 29191cded7Smrg 30191cded7Smrgcase $1 in 31191cded7Smrg '') 32191cded7Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 33191cded7Smrg exit 1; 34191cded7Smrg ;; 35191cded7Smrg -h | --h*) 36191cded7Smrg cat <<\EOF 37191cded7SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 38191cded7Smrg 39191cded7SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 40191cded7Smrgas side-effects. 41191cded7Smrg 42191cded7SmrgEnvironment variables: 43191cded7Smrg depmode Dependency tracking mode. 44191cded7Smrg source Source file read by `PROGRAMS ARGS'. 45191cded7Smrg object Object file output by `PROGRAMS ARGS'. 46191cded7Smrg DEPDIR directory where to store dependencies. 47191cded7Smrg depfile Dependency file to output. 48191cded7Smrg tmpdepfile Temporary file to use when outputing dependencies. 49191cded7Smrg libtool Whether libtool is used (yes/no). 50191cded7Smrg 51191cded7SmrgReport bugs to <bug-automake@gnu.org>. 52191cded7SmrgEOF 53191cded7Smrg exit $? 54191cded7Smrg ;; 55191cded7Smrg -v | --v*) 56191cded7Smrg echo "depcomp $scriptversion" 57191cded7Smrg exit $? 58191cded7Smrg ;; 59191cded7Smrgesac 60191cded7Smrg 61191cded7Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 62191cded7Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 63191cded7Smrg exit 1 64191cded7Smrgfi 65191cded7Smrg 66191cded7Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 67191cded7Smrgdepfile=${depfile-`echo "$object" | 68191cded7Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 69191cded7Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 70191cded7Smrg 71191cded7Smrgrm -f "$tmpdepfile" 72191cded7Smrg 73191cded7Smrg# Some modes work just like other modes, but use different flags. We 74191cded7Smrg# parameterize here, but still list the modes in the big case below, 75191cded7Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 76191cded7Smrg# here, because this file can only contain one case statement. 77191cded7Smrgif test "$depmode" = hp; then 78191cded7Smrg # HP compiler uses -M and no extra arg. 79191cded7Smrg gccflag=-M 80191cded7Smrg depmode=gcc 81191cded7Smrgfi 82191cded7Smrg 83191cded7Smrgif test "$depmode" = dashXmstdout; then 84191cded7Smrg # This is just like dashmstdout with a different argument. 85191cded7Smrg dashmflag=-xM 86191cded7Smrg depmode=dashmstdout 87191cded7Smrgfi 88191cded7Smrg 89191cded7Smrgcase "$depmode" in 90191cded7Smrggcc3) 91191cded7Smrg## gcc 3 implements dependency tracking that does exactly what 92191cded7Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 93191cded7Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 94191cded7Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 95191cded7Smrg stat=$? 96191cded7Smrg if test $stat -eq 0; then : 97191cded7Smrg else 98191cded7Smrg rm -f "$tmpdepfile" 99191cded7Smrg exit $stat 100191cded7Smrg fi 101191cded7Smrg mv "$tmpdepfile" "$depfile" 102191cded7Smrg ;; 103191cded7Smrg 104191cded7Smrggcc) 105191cded7Smrg## There are various ways to get dependency output from gcc. Here's 106191cded7Smrg## why we pick this rather obscure method: 107191cded7Smrg## - Don't want to use -MD because we'd like the dependencies to end 108191cded7Smrg## up in a subdir. Having to rename by hand is ugly. 109191cded7Smrg## (We might end up doing this anyway to support other compilers.) 110191cded7Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 111191cded7Smrg## -MM, not -M (despite what the docs say). 112191cded7Smrg## - Using -M directly means running the compiler twice (even worse 113191cded7Smrg## than renaming). 114191cded7Smrg if test -z "$gccflag"; then 115191cded7Smrg gccflag=-MD, 116191cded7Smrg fi 117191cded7Smrg "$@" -Wp,"$gccflag$tmpdepfile" 118191cded7Smrg stat=$? 119191cded7Smrg if test $stat -eq 0; then : 120191cded7Smrg else 121191cded7Smrg rm -f "$tmpdepfile" 122191cded7Smrg exit $stat 123191cded7Smrg fi 124191cded7Smrg rm -f "$depfile" 125191cded7Smrg echo "$object : \\" > "$depfile" 126191cded7Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 127191cded7Smrg## The second -e expression handles DOS-style file names with drive letters. 128191cded7Smrg sed -e 's/^[^:]*: / /' \ 129191cded7Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 130191cded7Smrg## This next piece of magic avoids the `deleted header file' problem. 131191cded7Smrg## The problem is that when a header file which appears in a .P file 132191cded7Smrg## is deleted, the dependency causes make to die (because there is 133191cded7Smrg## typically no way to rebuild the header). We avoid this by adding 134191cded7Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 135191cded7Smrg## this for us directly. 136191cded7Smrg tr ' ' ' 137191cded7Smrg' < "$tmpdepfile" | 138191cded7Smrg## Some versions of gcc put a space before the `:'. On the theory 139191cded7Smrg## that the space means something, we add a space to the output as 140191cded7Smrg## well. 141191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 142191cded7Smrg## correctly. Breaking it into two sed invocations is a workaround. 143191cded7Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 144191cded7Smrg rm -f "$tmpdepfile" 145191cded7Smrg ;; 146191cded7Smrg 147191cded7Smrghp) 148191cded7Smrg # This case exists only to let depend.m4 do its work. It works by 149191cded7Smrg # looking at the text of this script. This case will never be run, 150191cded7Smrg # since it is checked for above. 151191cded7Smrg exit 1 152191cded7Smrg ;; 153191cded7Smrg 154191cded7Smrgsgi) 155191cded7Smrg if test "$libtool" = yes; then 156191cded7Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 157191cded7Smrg else 158191cded7Smrg "$@" -MDupdate "$tmpdepfile" 159191cded7Smrg fi 160191cded7Smrg stat=$? 161191cded7Smrg if test $stat -eq 0; then : 162191cded7Smrg else 163191cded7Smrg rm -f "$tmpdepfile" 164191cded7Smrg exit $stat 165191cded7Smrg fi 166191cded7Smrg rm -f "$depfile" 167191cded7Smrg 168191cded7Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 169191cded7Smrg echo "$object : \\" > "$depfile" 170191cded7Smrg 171191cded7Smrg # Clip off the initial element (the dependent). Don't try to be 172191cded7Smrg # clever and replace this with sed code, as IRIX sed won't handle 173191cded7Smrg # lines with more than a fixed number of characters (4096 in 174191cded7Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 175191cded7Smrg # the IRIX cc adds comments like `#:fec' to the end of the 176191cded7Smrg # dependency line. 177191cded7Smrg tr ' ' ' 178191cded7Smrg' < "$tmpdepfile" \ 179191cded7Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 180191cded7Smrg tr ' 181191cded7Smrg' ' ' >> $depfile 182191cded7Smrg echo >> $depfile 183191cded7Smrg 184191cded7Smrg # The second pass generates a dummy entry for each header file. 185191cded7Smrg tr ' ' ' 186191cded7Smrg' < "$tmpdepfile" \ 187191cded7Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 188191cded7Smrg >> $depfile 189191cded7Smrg else 190191cded7Smrg # The sourcefile does not contain any dependencies, so just 191191cded7Smrg # store a dummy comment line, to avoid errors with the Makefile 192191cded7Smrg # "include basename.Plo" scheme. 193191cded7Smrg echo "#dummy" > "$depfile" 194191cded7Smrg fi 195191cded7Smrg rm -f "$tmpdepfile" 196191cded7Smrg ;; 197191cded7Smrg 198191cded7Smrgaix) 199191cded7Smrg # The C for AIX Compiler uses -M and outputs the dependencies 200191cded7Smrg # in a .u file. In older versions, this file always lives in the 201191cded7Smrg # current directory. Also, the AIX compiler puts `$object:' at the 202191cded7Smrg # start of each line; $object doesn't have directory information. 203191cded7Smrg # Version 6 uses the directory in both cases. 204191cded7Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 205191cded7Smrg tmpdepfile="$stripped.u" 206191cded7Smrg if test "$libtool" = yes; then 207191cded7Smrg "$@" -Wc,-M 208191cded7Smrg else 209191cded7Smrg "$@" -M 210191cded7Smrg fi 211191cded7Smrg stat=$? 212191cded7Smrg 213191cded7Smrg if test -f "$tmpdepfile"; then : 214191cded7Smrg else 215191cded7Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 216191cded7Smrg tmpdepfile="$stripped.u" 217191cded7Smrg fi 218191cded7Smrg 219191cded7Smrg if test $stat -eq 0; then : 220191cded7Smrg else 221191cded7Smrg rm -f "$tmpdepfile" 222191cded7Smrg exit $stat 223191cded7Smrg fi 224191cded7Smrg 225191cded7Smrg if test -f "$tmpdepfile"; then 226191cded7Smrg outname="$stripped.o" 227191cded7Smrg # Each line is of the form `foo.o: dependent.h'. 228191cded7Smrg # Do two passes, one to just change these to 229191cded7Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 230191cded7Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 231191cded7Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 232191cded7Smrg else 233191cded7Smrg # The sourcefile does not contain any dependencies, so just 234191cded7Smrg # store a dummy comment line, to avoid errors with the Makefile 235191cded7Smrg # "include basename.Plo" scheme. 236191cded7Smrg echo "#dummy" > "$depfile" 237191cded7Smrg fi 238191cded7Smrg rm -f "$tmpdepfile" 239191cded7Smrg ;; 240191cded7Smrg 241191cded7Smrgicc) 242191cded7Smrg # Intel's C compiler understands `-MD -MF file'. However on 243191cded7Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 244191cded7Smrg # ICC 7.0 will fill foo.d with something like 245191cded7Smrg # foo.o: sub/foo.c 246191cded7Smrg # foo.o: sub/foo.h 247191cded7Smrg # which is wrong. We want: 248191cded7Smrg # sub/foo.o: sub/foo.c 249191cded7Smrg # sub/foo.o: sub/foo.h 250191cded7Smrg # sub/foo.c: 251191cded7Smrg # sub/foo.h: 252191cded7Smrg # ICC 7.1 will output 253191cded7Smrg # foo.o: sub/foo.c sub/foo.h 254191cded7Smrg # and will wrap long lines using \ : 255191cded7Smrg # foo.o: sub/foo.c ... \ 256191cded7Smrg # sub/foo.h ... \ 257191cded7Smrg # ... 258191cded7Smrg 259191cded7Smrg "$@" -MD -MF "$tmpdepfile" 260191cded7Smrg stat=$? 261191cded7Smrg if test $stat -eq 0; then : 262191cded7Smrg else 263191cded7Smrg rm -f "$tmpdepfile" 264191cded7Smrg exit $stat 265191cded7Smrg fi 266191cded7Smrg rm -f "$depfile" 267191cded7Smrg # Each line is of the form `foo.o: dependent.h', 268191cded7Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 269191cded7Smrg # Do two passes, one to just change these to 270191cded7Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 271191cded7Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 272191cded7Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 273191cded7Smrg # correctly. Breaking it into two sed invocations is a workaround. 274191cded7Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 275191cded7Smrg sed -e 's/$/ :/' >> "$depfile" 276191cded7Smrg rm -f "$tmpdepfile" 277191cded7Smrg ;; 278191cded7Smrg 279191cded7Smrgtru64) 280191cded7Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 281191cded7Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 282191cded7Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 283191cded7Smrg # dependencies in `foo.d' instead, so we check for that too. 284191cded7Smrg # Subdirectories are respected. 285191cded7Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 286191cded7Smrg test "x$dir" = "x$object" && dir= 287191cded7Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 288191cded7Smrg 289191cded7Smrg if test "$libtool" = yes; then 290191cded7Smrg # With Tru64 cc, shared objects can also be used to make a 291191cded7Smrg # static library. This mecanism is used in libtool 1.4 series to 292191cded7Smrg # handle both shared and static libraries in a single compilation. 293191cded7Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 294191cded7Smrg # 295191cded7Smrg # With libtool 1.5 this exception was removed, and libtool now 296191cded7Smrg # generates 2 separate objects for the 2 libraries. These two 297191cded7Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 298191cded7Smrg # in $dir$base.o.d. We have to check for both files, because 299191cded7Smrg # one of the two compilations can be disabled. We should prefer 300191cded7Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 301191cded7Smrg # automatically cleaned when .libs/ is deleted, while ignoring 302191cded7Smrg # the former would cause a distcleancheck panic. 303191cded7Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 304191cded7Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 305191cded7Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 306191cded7Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 307191cded7Smrg "$@" -Wc,-MD 308191cded7Smrg else 309191cded7Smrg tmpdepfile1=$dir$base.o.d 310191cded7Smrg tmpdepfile2=$dir$base.d 311191cded7Smrg tmpdepfile3=$dir$base.d 312191cded7Smrg tmpdepfile4=$dir$base.d 313191cded7Smrg "$@" -MD 314191cded7Smrg fi 315191cded7Smrg 316191cded7Smrg stat=$? 317191cded7Smrg if test $stat -eq 0; then : 318191cded7Smrg else 319191cded7Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 320191cded7Smrg exit $stat 321191cded7Smrg fi 322191cded7Smrg 323191cded7Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 324191cded7Smrg do 325191cded7Smrg test -f "$tmpdepfile" && break 326191cded7Smrg done 327191cded7Smrg if test -f "$tmpdepfile"; then 328191cded7Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 329191cded7Smrg # That's a tab and a space in the []. 330191cded7Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 331191cded7Smrg else 332191cded7Smrg echo "#dummy" > "$depfile" 333191cded7Smrg fi 334191cded7Smrg rm -f "$tmpdepfile" 335191cded7Smrg ;; 336191cded7Smrg 337191cded7Smrg#nosideeffect) 338191cded7Smrg # This comment above is used by automake to tell side-effect 339191cded7Smrg # dependency tracking mechanisms from slower ones. 340191cded7Smrg 341191cded7Smrgdashmstdout) 342191cded7Smrg # Important note: in order to support this mode, a compiler *must* 343191cded7Smrg # always write the preprocessed file to stdout, regardless of -o. 344191cded7Smrg "$@" || exit $? 345191cded7Smrg 346191cded7Smrg # Remove the call to Libtool. 347191cded7Smrg if test "$libtool" = yes; then 348191cded7Smrg while test $1 != '--mode=compile'; do 349191cded7Smrg shift 350191cded7Smrg done 351191cded7Smrg shift 352191cded7Smrg fi 353191cded7Smrg 354191cded7Smrg # Remove `-o $object'. 355191cded7Smrg IFS=" " 356191cded7Smrg for arg 357191cded7Smrg do 358191cded7Smrg case $arg in 359191cded7Smrg -o) 360191cded7Smrg shift 361191cded7Smrg ;; 362191cded7Smrg $object) 363191cded7Smrg shift 364191cded7Smrg ;; 365191cded7Smrg *) 366191cded7Smrg set fnord "$@" "$arg" 367191cded7Smrg shift # fnord 368191cded7Smrg shift # $arg 369191cded7Smrg ;; 370191cded7Smrg esac 371191cded7Smrg done 372191cded7Smrg 373191cded7Smrg test -z "$dashmflag" && dashmflag=-M 374191cded7Smrg # Require at least two characters before searching for `:' 375191cded7Smrg # in the target name. This is to cope with DOS-style filenames: 376191cded7Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 377191cded7Smrg "$@" $dashmflag | 378191cded7Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 379191cded7Smrg rm -f "$depfile" 380191cded7Smrg cat < "$tmpdepfile" > "$depfile" 381191cded7Smrg tr ' ' ' 382191cded7Smrg' < "$tmpdepfile" | \ 383191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 384191cded7Smrg## correctly. Breaking it into two sed invocations is a workaround. 385191cded7Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 386191cded7Smrg rm -f "$tmpdepfile" 387191cded7Smrg ;; 388191cded7Smrg 389191cded7SmrgdashXmstdout) 390191cded7Smrg # This case only exists to satisfy depend.m4. It is never actually 391191cded7Smrg # run, as this mode is specially recognized in the preamble. 392191cded7Smrg exit 1 393191cded7Smrg ;; 394191cded7Smrg 395191cded7Smrgmakedepend) 396191cded7Smrg "$@" || exit $? 397191cded7Smrg # Remove any Libtool call 398191cded7Smrg if test "$libtool" = yes; then 399191cded7Smrg while test $1 != '--mode=compile'; do 400191cded7Smrg shift 401191cded7Smrg done 402191cded7Smrg shift 403191cded7Smrg fi 404191cded7Smrg # X makedepend 405191cded7Smrg shift 406191cded7Smrg cleared=no 407191cded7Smrg for arg in "$@"; do 408191cded7Smrg case $cleared in 409191cded7Smrg no) 410191cded7Smrg set ""; shift 411191cded7Smrg cleared=yes ;; 412191cded7Smrg esac 413191cded7Smrg case "$arg" in 414191cded7Smrg -D*|-I*) 415191cded7Smrg set fnord "$@" "$arg"; shift ;; 416191cded7Smrg # Strip any option that makedepend may not understand. Remove 417191cded7Smrg # the object too, otherwise makedepend will parse it as a source file. 418191cded7Smrg -*|$object) 419191cded7Smrg ;; 420191cded7Smrg *) 421191cded7Smrg set fnord "$@" "$arg"; shift ;; 422191cded7Smrg esac 423191cded7Smrg done 424191cded7Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 425191cded7Smrg touch "$tmpdepfile" 426191cded7Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 427191cded7Smrg rm -f "$depfile" 428191cded7Smrg cat < "$tmpdepfile" > "$depfile" 429191cded7Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 430191cded7Smrg' | \ 431191cded7Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 432191cded7Smrg## correctly. Breaking it into two sed invocations is a workaround. 433191cded7Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 434191cded7Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 435191cded7Smrg ;; 436191cded7Smrg 437191cded7Smrgcpp) 438191cded7Smrg # Important note: in order to support this mode, a compiler *must* 439191cded7Smrg # always write the preprocessed file to stdout. 440191cded7Smrg "$@" || exit $? 441191cded7Smrg 442191cded7Smrg # Remove the call to Libtool. 443191cded7Smrg if test "$libtool" = yes; then 444191cded7Smrg while test $1 != '--mode=compile'; do 445191cded7Smrg shift 446191cded7Smrg done 447191cded7Smrg shift 448191cded7Smrg fi 449191cded7Smrg 450191cded7Smrg # Remove `-o $object'. 451191cded7Smrg IFS=" " 452191cded7Smrg for arg 453191cded7Smrg do 454191cded7Smrg case $arg in 455191cded7Smrg -o) 456191cded7Smrg shift 457191cded7Smrg ;; 458191cded7Smrg $object) 459191cded7Smrg shift 460191cded7Smrg ;; 461191cded7Smrg *) 462191cded7Smrg set fnord "$@" "$arg" 463191cded7Smrg shift # fnord 464191cded7Smrg shift # $arg 465191cded7Smrg ;; 466191cded7Smrg esac 467191cded7Smrg done 468191cded7Smrg 469191cded7Smrg "$@" -E | 470191cded7Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 471191cded7Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 472191cded7Smrg sed '$ s: \\$::' > "$tmpdepfile" 473191cded7Smrg rm -f "$depfile" 474191cded7Smrg echo "$object : \\" > "$depfile" 475191cded7Smrg cat < "$tmpdepfile" >> "$depfile" 476191cded7Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 477191cded7Smrg rm -f "$tmpdepfile" 478191cded7Smrg ;; 479191cded7Smrg 480191cded7Smrgmsvisualcpp) 481191cded7Smrg # Important note: in order to support this mode, a compiler *must* 482191cded7Smrg # always write the preprocessed file to stdout, regardless of -o, 483191cded7Smrg # because we must use -o when running libtool. 484191cded7Smrg "$@" || exit $? 485191cded7Smrg IFS=" " 486191cded7Smrg for arg 487191cded7Smrg do 488191cded7Smrg case "$arg" in 489191cded7Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 490191cded7Smrg set fnord "$@" 491191cded7Smrg shift 492191cded7Smrg shift 493191cded7Smrg ;; 494191cded7Smrg *) 495191cded7Smrg set fnord "$@" "$arg" 496191cded7Smrg shift 497191cded7Smrg shift 498191cded7Smrg ;; 499191cded7Smrg esac 500191cded7Smrg done 501191cded7Smrg "$@" -E | 502191cded7Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 503191cded7Smrg rm -f "$depfile" 504191cded7Smrg echo "$object : \\" > "$depfile" 505191cded7Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 506191cded7Smrg echo " " >> "$depfile" 507191cded7Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 508191cded7Smrg rm -f "$tmpdepfile" 509191cded7Smrg ;; 510191cded7Smrg 511191cded7Smrgnone) 512191cded7Smrg exec "$@" 513191cded7Smrg ;; 514191cded7Smrg 515191cded7Smrg*) 516191cded7Smrg echo "Unknown depmode $depmode" 1>&2 517191cded7Smrg exit 1 518191cded7Smrg ;; 519191cded7Smrgesac 520191cded7Smrg 521191cded7Smrgexit 0 522191cded7Smrg 523191cded7Smrg# Local Variables: 524191cded7Smrg# mode: shell-script 525191cded7Smrg# sh-indentation: 2 526191cded7Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 527191cded7Smrg# time-stamp-start: "scriptversion=" 528191cded7Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 529191cded7Smrg# time-stamp-end: "$" 530191cded7Smrg# End: 531