depcomp revision 7706df26
17706df26Smrg#! /bin/sh 27706df26Smrg# depcomp - compile a program generating dependencies as side-effects 37706df26Smrg 47706df26Smrgscriptversion=2005-07-09.11 57706df26Smrg 67706df26Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. 77706df26Smrg 87706df26Smrg# This program is free software; you can redistribute it and/or modify 97706df26Smrg# it under the terms of the GNU General Public License as published by 107706df26Smrg# the Free Software Foundation; either version 2, or (at your option) 117706df26Smrg# any later version. 127706df26Smrg 137706df26Smrg# This program is distributed in the hope that it will be useful, 147706df26Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 157706df26Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 167706df26Smrg# GNU General Public License for more details. 177706df26Smrg 187706df26Smrg# You should have received a copy of the GNU General Public License 197706df26Smrg# along with this program; if not, write to the Free Software 207706df26Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 217706df26Smrg# 02110-1301, USA. 227706df26Smrg 237706df26Smrg# As a special exception to the GNU General Public License, if you 247706df26Smrg# distribute this file as part of a program that contains a 257706df26Smrg# configuration script generated by Autoconf, you may include it under 267706df26Smrg# the same distribution terms that you use for the rest of that program. 277706df26Smrg 287706df26Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 297706df26Smrg 307706df26Smrgcase $1 in 317706df26Smrg '') 327706df26Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 337706df26Smrg exit 1; 347706df26Smrg ;; 357706df26Smrg -h | --h*) 367706df26Smrg cat <<\EOF 377706df26SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 387706df26Smrg 397706df26SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 407706df26Smrgas side-effects. 417706df26Smrg 427706df26SmrgEnvironment variables: 437706df26Smrg depmode Dependency tracking mode. 447706df26Smrg source Source file read by `PROGRAMS ARGS'. 457706df26Smrg object Object file output by `PROGRAMS ARGS'. 467706df26Smrg DEPDIR directory where to store dependencies. 477706df26Smrg depfile Dependency file to output. 487706df26Smrg tmpdepfile Temporary file to use when outputing dependencies. 497706df26Smrg libtool Whether libtool is used (yes/no). 507706df26Smrg 517706df26SmrgReport bugs to <bug-automake@gnu.org>. 527706df26SmrgEOF 537706df26Smrg exit $? 547706df26Smrg ;; 557706df26Smrg -v | --v*) 567706df26Smrg echo "depcomp $scriptversion" 577706df26Smrg exit $? 587706df26Smrg ;; 597706df26Smrgesac 607706df26Smrg 617706df26Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 627706df26Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 637706df26Smrg exit 1 647706df26Smrgfi 657706df26Smrg 667706df26Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 677706df26Smrgdepfile=${depfile-`echo "$object" | 687706df26Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 697706df26Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 707706df26Smrg 717706df26Smrgrm -f "$tmpdepfile" 727706df26Smrg 737706df26Smrg# Some modes work just like other modes, but use different flags. We 747706df26Smrg# parameterize here, but still list the modes in the big case below, 757706df26Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 767706df26Smrg# here, because this file can only contain one case statement. 777706df26Smrgif test "$depmode" = hp; then 787706df26Smrg # HP compiler uses -M and no extra arg. 797706df26Smrg gccflag=-M 807706df26Smrg depmode=gcc 817706df26Smrgfi 827706df26Smrg 837706df26Smrgif test "$depmode" = dashXmstdout; then 847706df26Smrg # This is just like dashmstdout with a different argument. 857706df26Smrg dashmflag=-xM 867706df26Smrg depmode=dashmstdout 877706df26Smrgfi 887706df26Smrg 897706df26Smrgcase "$depmode" in 907706df26Smrggcc3) 917706df26Smrg## gcc 3 implements dependency tracking that does exactly what 927706df26Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 937706df26Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 947706df26Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 957706df26Smrg stat=$? 967706df26Smrg if test $stat -eq 0; then : 977706df26Smrg else 987706df26Smrg rm -f "$tmpdepfile" 997706df26Smrg exit $stat 1007706df26Smrg fi 1017706df26Smrg mv "$tmpdepfile" "$depfile" 1027706df26Smrg ;; 1037706df26Smrg 1047706df26Smrggcc) 1057706df26Smrg## There are various ways to get dependency output from gcc. Here's 1067706df26Smrg## why we pick this rather obscure method: 1077706df26Smrg## - Don't want to use -MD because we'd like the dependencies to end 1087706df26Smrg## up in a subdir. Having to rename by hand is ugly. 1097706df26Smrg## (We might end up doing this anyway to support other compilers.) 1107706df26Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1117706df26Smrg## -MM, not -M (despite what the docs say). 1127706df26Smrg## - Using -M directly means running the compiler twice (even worse 1137706df26Smrg## than renaming). 1147706df26Smrg if test -z "$gccflag"; then 1157706df26Smrg gccflag=-MD, 1167706df26Smrg fi 1177706df26Smrg "$@" -Wp,"$gccflag$tmpdepfile" 1187706df26Smrg stat=$? 1197706df26Smrg if test $stat -eq 0; then : 1207706df26Smrg else 1217706df26Smrg rm -f "$tmpdepfile" 1227706df26Smrg exit $stat 1237706df26Smrg fi 1247706df26Smrg rm -f "$depfile" 1257706df26Smrg echo "$object : \\" > "$depfile" 1267706df26Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1277706df26Smrg## The second -e expression handles DOS-style file names with drive letters. 1287706df26Smrg sed -e 's/^[^:]*: / /' \ 1297706df26Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1307706df26Smrg## This next piece of magic avoids the `deleted header file' problem. 1317706df26Smrg## The problem is that when a header file which appears in a .P file 1327706df26Smrg## is deleted, the dependency causes make to die (because there is 1337706df26Smrg## typically no way to rebuild the header). We avoid this by adding 1347706df26Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1357706df26Smrg## this for us directly. 1367706df26Smrg tr ' ' ' 1377706df26Smrg' < "$tmpdepfile" | 1387706df26Smrg## Some versions of gcc put a space before the `:'. On the theory 1397706df26Smrg## that the space means something, we add a space to the output as 1407706df26Smrg## well. 1417706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1427706df26Smrg## correctly. Breaking it into two sed invocations is a workaround. 1437706df26Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1447706df26Smrg rm -f "$tmpdepfile" 1457706df26Smrg ;; 1467706df26Smrg 1477706df26Smrghp) 1487706df26Smrg # This case exists only to let depend.m4 do its work. It works by 1497706df26Smrg # looking at the text of this script. This case will never be run, 1507706df26Smrg # since it is checked for above. 1517706df26Smrg exit 1 1527706df26Smrg ;; 1537706df26Smrg 1547706df26Smrgsgi) 1557706df26Smrg if test "$libtool" = yes; then 1567706df26Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1577706df26Smrg else 1587706df26Smrg "$@" -MDupdate "$tmpdepfile" 1597706df26Smrg fi 1607706df26Smrg stat=$? 1617706df26Smrg if test $stat -eq 0; then : 1627706df26Smrg else 1637706df26Smrg rm -f "$tmpdepfile" 1647706df26Smrg exit $stat 1657706df26Smrg fi 1667706df26Smrg rm -f "$depfile" 1677706df26Smrg 1687706df26Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1697706df26Smrg echo "$object : \\" > "$depfile" 1707706df26Smrg 1717706df26Smrg # Clip off the initial element (the dependent). Don't try to be 1727706df26Smrg # clever and replace this with sed code, as IRIX sed won't handle 1737706df26Smrg # lines with more than a fixed number of characters (4096 in 1747706df26Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1757706df26Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1767706df26Smrg # dependency line. 1777706df26Smrg tr ' ' ' 1787706df26Smrg' < "$tmpdepfile" \ 1797706df26Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1807706df26Smrg tr ' 1817706df26Smrg' ' ' >> $depfile 1827706df26Smrg echo >> $depfile 1837706df26Smrg 1847706df26Smrg # The second pass generates a dummy entry for each header file. 1857706df26Smrg tr ' ' ' 1867706df26Smrg' < "$tmpdepfile" \ 1877706df26Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 1887706df26Smrg >> $depfile 1897706df26Smrg else 1907706df26Smrg # The sourcefile does not contain any dependencies, so just 1917706df26Smrg # store a dummy comment line, to avoid errors with the Makefile 1927706df26Smrg # "include basename.Plo" scheme. 1937706df26Smrg echo "#dummy" > "$depfile" 1947706df26Smrg fi 1957706df26Smrg rm -f "$tmpdepfile" 1967706df26Smrg ;; 1977706df26Smrg 1987706df26Smrgaix) 1997706df26Smrg # The C for AIX Compiler uses -M and outputs the dependencies 2007706df26Smrg # in a .u file. In older versions, this file always lives in the 2017706df26Smrg # current directory. Also, the AIX compiler puts `$object:' at the 2027706df26Smrg # start of each line; $object doesn't have directory information. 2037706df26Smrg # Version 6 uses the directory in both cases. 2047706df26Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 2057706df26Smrg tmpdepfile="$stripped.u" 2067706df26Smrg if test "$libtool" = yes; then 2077706df26Smrg "$@" -Wc,-M 2087706df26Smrg else 2097706df26Smrg "$@" -M 2107706df26Smrg fi 2117706df26Smrg stat=$? 2127706df26Smrg 2137706df26Smrg if test -f "$tmpdepfile"; then : 2147706df26Smrg else 2157706df26Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 2167706df26Smrg tmpdepfile="$stripped.u" 2177706df26Smrg fi 2187706df26Smrg 2197706df26Smrg if test $stat -eq 0; then : 2207706df26Smrg else 2217706df26Smrg rm -f "$tmpdepfile" 2227706df26Smrg exit $stat 2237706df26Smrg fi 2247706df26Smrg 2257706df26Smrg if test -f "$tmpdepfile"; then 2267706df26Smrg outname="$stripped.o" 2277706df26Smrg # Each line is of the form `foo.o: dependent.h'. 2287706df26Smrg # Do two passes, one to just change these to 2297706df26Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2307706df26Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 2317706df26Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 2327706df26Smrg else 2337706df26Smrg # The sourcefile does not contain any dependencies, so just 2347706df26Smrg # store a dummy comment line, to avoid errors with the Makefile 2357706df26Smrg # "include basename.Plo" scheme. 2367706df26Smrg echo "#dummy" > "$depfile" 2377706df26Smrg fi 2387706df26Smrg rm -f "$tmpdepfile" 2397706df26Smrg ;; 2407706df26Smrg 2417706df26Smrgicc) 2427706df26Smrg # Intel's C compiler understands `-MD -MF file'. However on 2437706df26Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2447706df26Smrg # ICC 7.0 will fill foo.d with something like 2457706df26Smrg # foo.o: sub/foo.c 2467706df26Smrg # foo.o: sub/foo.h 2477706df26Smrg # which is wrong. We want: 2487706df26Smrg # sub/foo.o: sub/foo.c 2497706df26Smrg # sub/foo.o: sub/foo.h 2507706df26Smrg # sub/foo.c: 2517706df26Smrg # sub/foo.h: 2527706df26Smrg # ICC 7.1 will output 2537706df26Smrg # foo.o: sub/foo.c sub/foo.h 2547706df26Smrg # and will wrap long lines using \ : 2557706df26Smrg # foo.o: sub/foo.c ... \ 2567706df26Smrg # sub/foo.h ... \ 2577706df26Smrg # ... 2587706df26Smrg 2597706df26Smrg "$@" -MD -MF "$tmpdepfile" 2607706df26Smrg stat=$? 2617706df26Smrg if test $stat -eq 0; then : 2627706df26Smrg else 2637706df26Smrg rm -f "$tmpdepfile" 2647706df26Smrg exit $stat 2657706df26Smrg fi 2667706df26Smrg rm -f "$depfile" 2677706df26Smrg # Each line is of the form `foo.o: dependent.h', 2687706df26Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2697706df26Smrg # Do two passes, one to just change these to 2707706df26Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2717706df26Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2727706df26Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2737706df26Smrg # correctly. Breaking it into two sed invocations is a workaround. 2747706df26Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2757706df26Smrg sed -e 's/$/ :/' >> "$depfile" 2767706df26Smrg rm -f "$tmpdepfile" 2777706df26Smrg ;; 2787706df26Smrg 2797706df26Smrgtru64) 2807706df26Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 2817706df26Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 2827706df26Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 2837706df26Smrg # dependencies in `foo.d' instead, so we check for that too. 2847706df26Smrg # Subdirectories are respected. 2857706df26Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2867706df26Smrg test "x$dir" = "x$object" && dir= 2877706df26Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2887706df26Smrg 2897706df26Smrg if test "$libtool" = yes; then 2907706df26Smrg # With Tru64 cc, shared objects can also be used to make a 2917706df26Smrg # static library. This mecanism is used in libtool 1.4 series to 2927706df26Smrg # handle both shared and static libraries in a single compilation. 2937706df26Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 2947706df26Smrg # 2957706df26Smrg # With libtool 1.5 this exception was removed, and libtool now 2967706df26Smrg # generates 2 separate objects for the 2 libraries. These two 2977706df26Smrg # compilations output dependencies in in $dir.libs/$base.o.d and 2987706df26Smrg # in $dir$base.o.d. We have to check for both files, because 2997706df26Smrg # one of the two compilations can be disabled. We should prefer 3007706df26Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3017706df26Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3027706df26Smrg # the former would cause a distcleancheck panic. 3037706df26Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3047706df26Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3057706df26Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3067706df26Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3077706df26Smrg "$@" -Wc,-MD 3087706df26Smrg else 3097706df26Smrg tmpdepfile1=$dir$base.o.d 3107706df26Smrg tmpdepfile2=$dir$base.d 3117706df26Smrg tmpdepfile3=$dir$base.d 3127706df26Smrg tmpdepfile4=$dir$base.d 3137706df26Smrg "$@" -MD 3147706df26Smrg fi 3157706df26Smrg 3167706df26Smrg stat=$? 3177706df26Smrg if test $stat -eq 0; then : 3187706df26Smrg else 3197706df26Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3207706df26Smrg exit $stat 3217706df26Smrg fi 3227706df26Smrg 3237706df26Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3247706df26Smrg do 3257706df26Smrg test -f "$tmpdepfile" && break 3267706df26Smrg done 3277706df26Smrg if test -f "$tmpdepfile"; then 3287706df26Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 3297706df26Smrg # That's a tab and a space in the []. 3307706df26Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 3317706df26Smrg else 3327706df26Smrg echo "#dummy" > "$depfile" 3337706df26Smrg fi 3347706df26Smrg rm -f "$tmpdepfile" 3357706df26Smrg ;; 3367706df26Smrg 3377706df26Smrg#nosideeffect) 3387706df26Smrg # This comment above is used by automake to tell side-effect 3397706df26Smrg # dependency tracking mechanisms from slower ones. 3407706df26Smrg 3417706df26Smrgdashmstdout) 3427706df26Smrg # Important note: in order to support this mode, a compiler *must* 3437706df26Smrg # always write the preprocessed file to stdout, regardless of -o. 3447706df26Smrg "$@" || exit $? 3457706df26Smrg 3467706df26Smrg # Remove the call to Libtool. 3477706df26Smrg if test "$libtool" = yes; then 3487706df26Smrg while test $1 != '--mode=compile'; do 3497706df26Smrg shift 3507706df26Smrg done 3517706df26Smrg shift 3527706df26Smrg fi 3537706df26Smrg 3547706df26Smrg # Remove `-o $object'. 3557706df26Smrg IFS=" " 3567706df26Smrg for arg 3577706df26Smrg do 3587706df26Smrg case $arg in 3597706df26Smrg -o) 3607706df26Smrg shift 3617706df26Smrg ;; 3627706df26Smrg $object) 3637706df26Smrg shift 3647706df26Smrg ;; 3657706df26Smrg *) 3667706df26Smrg set fnord "$@" "$arg" 3677706df26Smrg shift # fnord 3687706df26Smrg shift # $arg 3697706df26Smrg ;; 3707706df26Smrg esac 3717706df26Smrg done 3727706df26Smrg 3737706df26Smrg test -z "$dashmflag" && dashmflag=-M 3747706df26Smrg # Require at least two characters before searching for `:' 3757706df26Smrg # in the target name. This is to cope with DOS-style filenames: 3767706df26Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 3777706df26Smrg "$@" $dashmflag | 3787706df26Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 3797706df26Smrg rm -f "$depfile" 3807706df26Smrg cat < "$tmpdepfile" > "$depfile" 3817706df26Smrg tr ' ' ' 3827706df26Smrg' < "$tmpdepfile" | \ 3837706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 3847706df26Smrg## correctly. Breaking it into two sed invocations is a workaround. 3857706df26Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3867706df26Smrg rm -f "$tmpdepfile" 3877706df26Smrg ;; 3887706df26Smrg 3897706df26SmrgdashXmstdout) 3907706df26Smrg # This case only exists to satisfy depend.m4. It is never actually 3917706df26Smrg # run, as this mode is specially recognized in the preamble. 3927706df26Smrg exit 1 3937706df26Smrg ;; 3947706df26Smrg 3957706df26Smrgmakedepend) 3967706df26Smrg "$@" || exit $? 3977706df26Smrg # Remove any Libtool call 3987706df26Smrg if test "$libtool" = yes; then 3997706df26Smrg while test $1 != '--mode=compile'; do 4007706df26Smrg shift 4017706df26Smrg done 4027706df26Smrg shift 4037706df26Smrg fi 4047706df26Smrg # X makedepend 4057706df26Smrg shift 4067706df26Smrg cleared=no 4077706df26Smrg for arg in "$@"; do 4087706df26Smrg case $cleared in 4097706df26Smrg no) 4107706df26Smrg set ""; shift 4117706df26Smrg cleared=yes ;; 4127706df26Smrg esac 4137706df26Smrg case "$arg" in 4147706df26Smrg -D*|-I*) 4157706df26Smrg set fnord "$@" "$arg"; shift ;; 4167706df26Smrg # Strip any option that makedepend may not understand. Remove 4177706df26Smrg # the object too, otherwise makedepend will parse it as a source file. 4187706df26Smrg -*|$object) 4197706df26Smrg ;; 4207706df26Smrg *) 4217706df26Smrg set fnord "$@" "$arg"; shift ;; 4227706df26Smrg esac 4237706df26Smrg done 4247706df26Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 4257706df26Smrg touch "$tmpdepfile" 4267706df26Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 4277706df26Smrg rm -f "$depfile" 4287706df26Smrg cat < "$tmpdepfile" > "$depfile" 4297706df26Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 4307706df26Smrg' | \ 4317706df26Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 4327706df26Smrg## correctly. Breaking it into two sed invocations is a workaround. 4337706df26Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4347706df26Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 4357706df26Smrg ;; 4367706df26Smrg 4377706df26Smrgcpp) 4387706df26Smrg # Important note: in order to support this mode, a compiler *must* 4397706df26Smrg # always write the preprocessed file to stdout. 4407706df26Smrg "$@" || exit $? 4417706df26Smrg 4427706df26Smrg # Remove the call to Libtool. 4437706df26Smrg if test "$libtool" = yes; then 4447706df26Smrg while test $1 != '--mode=compile'; do 4457706df26Smrg shift 4467706df26Smrg done 4477706df26Smrg shift 4487706df26Smrg fi 4497706df26Smrg 4507706df26Smrg # Remove `-o $object'. 4517706df26Smrg IFS=" " 4527706df26Smrg for arg 4537706df26Smrg do 4547706df26Smrg case $arg in 4557706df26Smrg -o) 4567706df26Smrg shift 4577706df26Smrg ;; 4587706df26Smrg $object) 4597706df26Smrg shift 4607706df26Smrg ;; 4617706df26Smrg *) 4627706df26Smrg set fnord "$@" "$arg" 4637706df26Smrg shift # fnord 4647706df26Smrg shift # $arg 4657706df26Smrg ;; 4667706df26Smrg esac 4677706df26Smrg done 4687706df26Smrg 4697706df26Smrg "$@" -E | 4707706df26Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 4717706df26Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 4727706df26Smrg sed '$ s: \\$::' > "$tmpdepfile" 4737706df26Smrg rm -f "$depfile" 4747706df26Smrg echo "$object : \\" > "$depfile" 4757706df26Smrg cat < "$tmpdepfile" >> "$depfile" 4767706df26Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 4777706df26Smrg rm -f "$tmpdepfile" 4787706df26Smrg ;; 4797706df26Smrg 4807706df26Smrgmsvisualcpp) 4817706df26Smrg # Important note: in order to support this mode, a compiler *must* 4827706df26Smrg # always write the preprocessed file to stdout, regardless of -o, 4837706df26Smrg # because we must use -o when running libtool. 4847706df26Smrg "$@" || exit $? 4857706df26Smrg IFS=" " 4867706df26Smrg for arg 4877706df26Smrg do 4887706df26Smrg case "$arg" in 4897706df26Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 4907706df26Smrg set fnord "$@" 4917706df26Smrg shift 4927706df26Smrg shift 4937706df26Smrg ;; 4947706df26Smrg *) 4957706df26Smrg set fnord "$@" "$arg" 4967706df26Smrg shift 4977706df26Smrg shift 4987706df26Smrg ;; 4997706df26Smrg esac 5007706df26Smrg done 5017706df26Smrg "$@" -E | 5027706df26Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 5037706df26Smrg rm -f "$depfile" 5047706df26Smrg echo "$object : \\" > "$depfile" 5057706df26Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5067706df26Smrg echo " " >> "$depfile" 5077706df26Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 5087706df26Smrg rm -f "$tmpdepfile" 5097706df26Smrg ;; 5107706df26Smrg 5117706df26Smrgnone) 5127706df26Smrg exec "$@" 5137706df26Smrg ;; 5147706df26Smrg 5157706df26Smrg*) 5167706df26Smrg echo "Unknown depmode $depmode" 1>&2 5177706df26Smrg exit 1 5187706df26Smrg ;; 5197706df26Smrgesac 5207706df26Smrg 5217706df26Smrgexit 0 5227706df26Smrg 5237706df26Smrg# Local Variables: 5247706df26Smrg# mode: shell-script 5257706df26Smrg# sh-indentation: 2 5267706df26Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 5277706df26Smrg# time-stamp-start: "scriptversion=" 5287706df26Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 5297706df26Smrg# time-stamp-end: "$" 5307706df26Smrg# End: 531