depcomp revision 8108eb18
18108eb18Smrg#! /bin/sh 28108eb18Smrg 38108eb18Smrg# depcomp - compile a program generating dependencies as side-effects 48108eb18Smrg# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. 58108eb18Smrg 68108eb18Smrg# This program is free software; you can redistribute it and/or modify 78108eb18Smrg# it under the terms of the GNU General Public License as published by 88108eb18Smrg# the Free Software Foundation; either version 2, or (at your option) 98108eb18Smrg# any later version. 108108eb18Smrg 118108eb18Smrg# This program is distributed in the hope that it will be useful, 128108eb18Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 138108eb18Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 148108eb18Smrg# GNU General Public License for more details. 158108eb18Smrg 168108eb18Smrg# You should have received a copy of the GNU General Public License 178108eb18Smrg# along with this program; if not, write to the Free Software 188108eb18Smrg# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 198108eb18Smrg# 02111-1307, USA. 208108eb18Smrg 218108eb18Smrg# As a special exception to the GNU General Public License, if you 228108eb18Smrg# distribute this file as part of a program that contains a 238108eb18Smrg# configuration script generated by Autoconf, you may include it under 248108eb18Smrg# the same distribution terms that you use for the rest of that program. 258108eb18Smrg 268108eb18Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 278108eb18Smrg 288108eb18Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 298108eb18Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 308108eb18Smrg exit 1 318108eb18Smrgfi 328108eb18Smrg# `libtool' can also be set to `yes' or `no'. 338108eb18Smrg 348108eb18Smrgif test -z "$depfile"; then 358108eb18Smrg base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` 368108eb18Smrg dir=`echo "$object" | sed 's,/.*$,/,'` 378108eb18Smrg if test "$dir" = "$object"; then 388108eb18Smrg dir= 398108eb18Smrg fi 408108eb18Smrg # FIXME: should be _deps on DOS. 418108eb18Smrg depfile="$dir.deps/$base" 428108eb18Smrgfi 438108eb18Smrg 448108eb18Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 458108eb18Smrg 468108eb18Smrgrm -f "$tmpdepfile" 478108eb18Smrg 488108eb18Smrg# Some modes work just like other modes, but use different flags. We 498108eb18Smrg# parameterize here, but still list the modes in the big case below, 508108eb18Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 518108eb18Smrg# here, because this file can only contain one case statement. 528108eb18Smrgif test "$depmode" = hp; then 538108eb18Smrg # HP compiler uses -M and no extra arg. 548108eb18Smrg gccflag=-M 558108eb18Smrg depmode=gcc 568108eb18Smrgfi 578108eb18Smrg 588108eb18Smrgif test "$depmode" = dashXmstdout; then 598108eb18Smrg # This is just like dashmstdout with a different argument. 608108eb18Smrg dashmflag=-xM 618108eb18Smrg depmode=dashmstdout 628108eb18Smrgfi 638108eb18Smrg 648108eb18Smrgcase "$depmode" in 658108eb18Smrggcc3) 668108eb18Smrg## gcc 3 implements dependency tracking that does exactly what 678108eb18Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 688108eb18Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 698108eb18Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 708108eb18Smrg stat=$? 718108eb18Smrg if test $stat -eq 0; then : 728108eb18Smrg else 738108eb18Smrg rm -f "$tmpdepfile" 748108eb18Smrg exit $stat 758108eb18Smrg fi 768108eb18Smrg mv "$tmpdepfile" "$depfile" 778108eb18Smrg ;; 788108eb18Smrg 798108eb18Smrggcc) 808108eb18Smrg## There are various ways to get dependency output from gcc. Here's 818108eb18Smrg## why we pick this rather obscure method: 828108eb18Smrg## - Don't want to use -MD because we'd like the dependencies to end 838108eb18Smrg## up in a subdir. Having to rename by hand is ugly. 848108eb18Smrg## (We might end up doing this anyway to support other compilers.) 858108eb18Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 868108eb18Smrg## -MM, not -M (despite what the docs say). 878108eb18Smrg## - Using -M directly means running the compiler twice (even worse 888108eb18Smrg## than renaming). 898108eb18Smrg if test -z "$gccflag"; then 908108eb18Smrg gccflag=-MD, 918108eb18Smrg fi 928108eb18Smrg "$@" -Wp,"$gccflag$tmpdepfile" 938108eb18Smrg stat=$? 948108eb18Smrg if test $stat -eq 0; then : 958108eb18Smrg else 968108eb18Smrg rm -f "$tmpdepfile" 978108eb18Smrg exit $stat 988108eb18Smrg fi 998108eb18Smrg rm -f "$depfile" 1008108eb18Smrg echo "$object : \\" > "$depfile" 1018108eb18Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1028108eb18Smrg## The second -e expression handles DOS-style file names with drive letters. 1038108eb18Smrg sed -e 's/^[^:]*: / /' \ 1048108eb18Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1058108eb18Smrg## This next piece of magic avoids the `deleted header file' problem. 1068108eb18Smrg## The problem is that when a header file which appears in a .P file 1078108eb18Smrg## is deleted, the dependency causes make to die (because there is 1088108eb18Smrg## typically no way to rebuild the header). We avoid this by adding 1098108eb18Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1108108eb18Smrg## this for us directly. 1118108eb18Smrg tr ' ' ' 1128108eb18Smrg' < "$tmpdepfile" | 1138108eb18Smrg## Some versions of gcc put a space before the `:'. On the theory 1148108eb18Smrg## that the space means something, we add a space to the output as 1158108eb18Smrg## well. 1168108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1178108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 1188108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1198108eb18Smrg rm -f "$tmpdepfile" 1208108eb18Smrg ;; 1218108eb18Smrg 1228108eb18Smrghp) 1238108eb18Smrg # This case exists only to let depend.m4 do its work. It works by 1248108eb18Smrg # looking at the text of this script. This case will never be run, 1258108eb18Smrg # since it is checked for above. 1268108eb18Smrg exit 1 1278108eb18Smrg ;; 1288108eb18Smrg 1298108eb18Smrgsgi) 1308108eb18Smrg if test "$libtool" = yes; then 1318108eb18Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1328108eb18Smrg else 1338108eb18Smrg "$@" -MDupdate "$tmpdepfile" 1348108eb18Smrg fi 1358108eb18Smrg stat=$? 1368108eb18Smrg if test $stat -eq 0; then : 1378108eb18Smrg else 1388108eb18Smrg rm -f "$tmpdepfile" 1398108eb18Smrg exit $stat 1408108eb18Smrg fi 1418108eb18Smrg rm -f "$depfile" 1428108eb18Smrg 1438108eb18Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1448108eb18Smrg echo "$object : \\" > "$depfile" 1458108eb18Smrg 1468108eb18Smrg # Clip off the initial element (the dependent). Don't try to be 1478108eb18Smrg # clever and replace this with sed code, as IRIX sed won't handle 1488108eb18Smrg # lines with more than a fixed number of characters (4096 in 1498108eb18Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1508108eb18Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1518108eb18Smrg # dependency line. 1528108eb18Smrg tr ' ' ' 1538108eb18Smrg' < "$tmpdepfile" \ 1548108eb18Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1558108eb18Smrg tr ' 1568108eb18Smrg' ' ' >> $depfile 1578108eb18Smrg echo >> $depfile 1588108eb18Smrg 1598108eb18Smrg # The second pass generates a dummy entry for each header file. 1608108eb18Smrg tr ' ' ' 1618108eb18Smrg' < "$tmpdepfile" \ 1628108eb18Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 1638108eb18Smrg >> $depfile 1648108eb18Smrg else 1658108eb18Smrg # The sourcefile does not contain any dependencies, so just 1668108eb18Smrg # store a dummy comment line, to avoid errors with the Makefile 1678108eb18Smrg # "include basename.Plo" scheme. 1688108eb18Smrg echo "#dummy" > "$depfile" 1698108eb18Smrg fi 1708108eb18Smrg rm -f "$tmpdepfile" 1718108eb18Smrg ;; 1728108eb18Smrg 1738108eb18Smrgaix) 1748108eb18Smrg # The C for AIX Compiler uses -M and outputs the dependencies 1758108eb18Smrg # in a .u file. In older versions, this file always lives in the 1768108eb18Smrg # current directory. Also, the AIX compiler puts `$object:' at the 1778108eb18Smrg # start of each line; $object doesn't have directory information. 1788108eb18Smrg # Version 6 uses the directory in both cases. 1798108eb18Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 1808108eb18Smrg tmpdepfile="$stripped.u" 1818108eb18Smrg if test "$libtool" = yes; then 1828108eb18Smrg "$@" -Wc,-M 1838108eb18Smrg else 1848108eb18Smrg "$@" -M 1858108eb18Smrg fi 1868108eb18Smrg stat=$? 1878108eb18Smrg 1888108eb18Smrg if test -f "$tmpdepfile"; then : 1898108eb18Smrg else 1908108eb18Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 1918108eb18Smrg tmpdepfile="$stripped.u" 1928108eb18Smrg fi 1938108eb18Smrg 1948108eb18Smrg if test $stat -eq 0; then : 1958108eb18Smrg else 1968108eb18Smrg rm -f "$tmpdepfile" 1978108eb18Smrg exit $stat 1988108eb18Smrg fi 1998108eb18Smrg 2008108eb18Smrg if test -f "$tmpdepfile"; then 2018108eb18Smrg outname="$stripped.o" 2028108eb18Smrg # Each line is of the form `foo.o: dependent.h'. 2038108eb18Smrg # Do two passes, one to just change these to 2048108eb18Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2058108eb18Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 2068108eb18Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 2078108eb18Smrg else 2088108eb18Smrg # The sourcefile does not contain any dependencies, so just 2098108eb18Smrg # store a dummy comment line, to avoid errors with the Makefile 2108108eb18Smrg # "include basename.Plo" scheme. 2118108eb18Smrg echo "#dummy" > "$depfile" 2128108eb18Smrg fi 2138108eb18Smrg rm -f "$tmpdepfile" 2148108eb18Smrg ;; 2158108eb18Smrg 2168108eb18Smrgicc) 2178108eb18Smrg # Intel's C compiler understands `-MD -MF file'. However on 2188108eb18Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2198108eb18Smrg # ICC 7.0 will fill foo.d with something like 2208108eb18Smrg # foo.o: sub/foo.c 2218108eb18Smrg # foo.o: sub/foo.h 2228108eb18Smrg # which is wrong. We want: 2238108eb18Smrg # sub/foo.o: sub/foo.c 2248108eb18Smrg # sub/foo.o: sub/foo.h 2258108eb18Smrg # sub/foo.c: 2268108eb18Smrg # sub/foo.h: 2278108eb18Smrg # ICC 7.1 will output 2288108eb18Smrg # foo.o: sub/foo.c sub/foo.h 2298108eb18Smrg # and will wrap long lines using \ : 2308108eb18Smrg # foo.o: sub/foo.c ... \ 2318108eb18Smrg # sub/foo.h ... \ 2328108eb18Smrg # ... 2338108eb18Smrg 2348108eb18Smrg "$@" -MD -MF "$tmpdepfile" 2358108eb18Smrg stat=$? 2368108eb18Smrg if test $stat -eq 0; then : 2378108eb18Smrg else 2388108eb18Smrg rm -f "$tmpdepfile" 2398108eb18Smrg exit $stat 2408108eb18Smrg fi 2418108eb18Smrg rm -f "$depfile" 2428108eb18Smrg # Each line is of the form `foo.o: dependent.h', 2438108eb18Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2448108eb18Smrg # Do two passes, one to just change these to 2458108eb18Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2468108eb18Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2478108eb18Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2488108eb18Smrg # correctly. Breaking it into two sed invocations is a workaround. 2498108eb18Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2508108eb18Smrg sed -e 's/$/ :/' >> "$depfile" 2518108eb18Smrg rm -f "$tmpdepfile" 2528108eb18Smrg ;; 2538108eb18Smrg 2548108eb18Smrgtru64) 2558108eb18Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 2568108eb18Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 2578108eb18Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 2588108eb18Smrg # dependencies in `foo.d' instead, so we check for that too. 2598108eb18Smrg # Subdirectories are respected. 2608108eb18Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2618108eb18Smrg test "x$dir" = "x$object" && dir= 2628108eb18Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2638108eb18Smrg 2648108eb18Smrg if test "$libtool" = yes; then 2658108eb18Smrg tmpdepfile1="$dir.libs/$base.lo.d" 2668108eb18Smrg tmpdepfile2="$dir.libs/$base.d" 2678108eb18Smrg "$@" -Wc,-MD 2688108eb18Smrg else 2698108eb18Smrg tmpdepfile1="$dir$base.o.d" 2708108eb18Smrg tmpdepfile2="$dir$base.d" 2718108eb18Smrg "$@" -MD 2728108eb18Smrg fi 2738108eb18Smrg 2748108eb18Smrg stat=$? 2758108eb18Smrg if test $stat -eq 0; then : 2768108eb18Smrg else 2778108eb18Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 2788108eb18Smrg exit $stat 2798108eb18Smrg fi 2808108eb18Smrg 2818108eb18Smrg if test -f "$tmpdepfile1"; then 2828108eb18Smrg tmpdepfile="$tmpdepfile1" 2838108eb18Smrg else 2848108eb18Smrg tmpdepfile="$tmpdepfile2" 2858108eb18Smrg fi 2868108eb18Smrg if test -f "$tmpdepfile"; then 2878108eb18Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2888108eb18Smrg # That's a tab and a space in the []. 2898108eb18Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2908108eb18Smrg else 2918108eb18Smrg echo "#dummy" > "$depfile" 2928108eb18Smrg fi 2938108eb18Smrg rm -f "$tmpdepfile" 2948108eb18Smrg ;; 2958108eb18Smrg 2968108eb18Smrg#nosideeffect) 2978108eb18Smrg # This comment above is used by automake to tell side-effect 2988108eb18Smrg # dependency tracking mechanisms from slower ones. 2998108eb18Smrg 3008108eb18Smrgdashmstdout) 3018108eb18Smrg # Important note: in order to support this mode, a compiler *must* 3028108eb18Smrg # always write the preprocessed file to stdout, regardless of -o. 3038108eb18Smrg "$@" || exit $? 3048108eb18Smrg 3058108eb18Smrg # Remove the call to Libtool. 3068108eb18Smrg if test "$libtool" = yes; then 3078108eb18Smrg while test $1 != '--mode=compile'; do 3088108eb18Smrg shift 3098108eb18Smrg done 3108108eb18Smrg shift 3118108eb18Smrg fi 3128108eb18Smrg 3138108eb18Smrg # Remove `-o $object'. 3148108eb18Smrg IFS=" " 3158108eb18Smrg for arg 3168108eb18Smrg do 3178108eb18Smrg case $arg in 3188108eb18Smrg -o) 3198108eb18Smrg shift 3208108eb18Smrg ;; 3218108eb18Smrg $object) 3228108eb18Smrg shift 3238108eb18Smrg ;; 3248108eb18Smrg *) 3258108eb18Smrg set fnord "$@" "$arg" 3268108eb18Smrg shift # fnord 3278108eb18Smrg shift # $arg 3288108eb18Smrg ;; 3298108eb18Smrg esac 3308108eb18Smrg done 3318108eb18Smrg 3328108eb18Smrg test -z "$dashmflag" && dashmflag=-M 3338108eb18Smrg # Require at least two characters before searching for `:' 3348108eb18Smrg # in the target name. This is to cope with DOS-style filenames: 3358108eb18Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 3368108eb18Smrg "$@" $dashmflag | 3378108eb18Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 3388108eb18Smrg rm -f "$depfile" 3398108eb18Smrg cat < "$tmpdepfile" > "$depfile" 3408108eb18Smrg tr ' ' ' 3418108eb18Smrg' < "$tmpdepfile" | \ 3428108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 3438108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 3448108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3458108eb18Smrg rm -f "$tmpdepfile" 3468108eb18Smrg ;; 3478108eb18Smrg 3488108eb18SmrgdashXmstdout) 3498108eb18Smrg # This case only exists to satisfy depend.m4. It is never actually 3508108eb18Smrg # run, as this mode is specially recognized in the preamble. 3518108eb18Smrg exit 1 3528108eb18Smrg ;; 3538108eb18Smrg 3548108eb18Smrgmakedepend) 3558108eb18Smrg "$@" || exit $? 3568108eb18Smrg # Remove any Libtool call 3578108eb18Smrg if test "$libtool" = yes; then 3588108eb18Smrg while test $1 != '--mode=compile'; do 3598108eb18Smrg shift 3608108eb18Smrg done 3618108eb18Smrg shift 3628108eb18Smrg fi 3638108eb18Smrg # X makedepend 3648108eb18Smrg shift 3658108eb18Smrg cleared=no 3668108eb18Smrg for arg in "$@"; do 3678108eb18Smrg case $cleared in 3688108eb18Smrg no) 3698108eb18Smrg set ""; shift 3708108eb18Smrg cleared=yes ;; 3718108eb18Smrg esac 3728108eb18Smrg case "$arg" in 3738108eb18Smrg -D*|-I*) 3748108eb18Smrg set fnord "$@" "$arg"; shift ;; 3758108eb18Smrg # Strip any option that makedepend may not understand. Remove 3768108eb18Smrg # the object too, otherwise makedepend will parse it as a source file. 3778108eb18Smrg -*|$object) 3788108eb18Smrg ;; 3798108eb18Smrg *) 3808108eb18Smrg set fnord "$@" "$arg"; shift ;; 3818108eb18Smrg esac 3828108eb18Smrg done 3838108eb18Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 3848108eb18Smrg touch "$tmpdepfile" 3858108eb18Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 3868108eb18Smrg rm -f "$depfile" 3878108eb18Smrg cat < "$tmpdepfile" > "$depfile" 3888108eb18Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 3898108eb18Smrg' | \ 3908108eb18Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 3918108eb18Smrg## correctly. Breaking it into two sed invocations is a workaround. 3928108eb18Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3938108eb18Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 3948108eb18Smrg ;; 3958108eb18Smrg 3968108eb18Smrgcpp) 3978108eb18Smrg # Important note: in order to support this mode, a compiler *must* 3988108eb18Smrg # always write the preprocessed file to stdout. 3998108eb18Smrg "$@" || exit $? 4008108eb18Smrg 4018108eb18Smrg # Remove the call to Libtool. 4028108eb18Smrg if test "$libtool" = yes; then 4038108eb18Smrg while test $1 != '--mode=compile'; do 4048108eb18Smrg shift 4058108eb18Smrg done 4068108eb18Smrg shift 4078108eb18Smrg fi 4088108eb18Smrg 4098108eb18Smrg # Remove `-o $object'. 4108108eb18Smrg IFS=" " 4118108eb18Smrg for arg 4128108eb18Smrg do 4138108eb18Smrg case $arg in 4148108eb18Smrg -o) 4158108eb18Smrg shift 4168108eb18Smrg ;; 4178108eb18Smrg $object) 4188108eb18Smrg shift 4198108eb18Smrg ;; 4208108eb18Smrg *) 4218108eb18Smrg set fnord "$@" "$arg" 4228108eb18Smrg shift # fnord 4238108eb18Smrg shift # $arg 4248108eb18Smrg ;; 4258108eb18Smrg esac 4268108eb18Smrg done 4278108eb18Smrg 4288108eb18Smrg "$@" -E | 4298108eb18Smrg sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 4308108eb18Smrg sed '$ s: \\$::' > "$tmpdepfile" 4318108eb18Smrg rm -f "$depfile" 4328108eb18Smrg echo "$object : \\" > "$depfile" 4338108eb18Smrg cat < "$tmpdepfile" >> "$depfile" 4348108eb18Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 4358108eb18Smrg rm -f "$tmpdepfile" 4368108eb18Smrg ;; 4378108eb18Smrg 4388108eb18Smrgmsvisualcpp) 4398108eb18Smrg # Important note: in order to support this mode, a compiler *must* 4408108eb18Smrg # always write the preprocessed file to stdout, regardless of -o, 4418108eb18Smrg # because we must use -o when running libtool. 4428108eb18Smrg "$@" || exit $? 4438108eb18Smrg IFS=" " 4448108eb18Smrg for arg 4458108eb18Smrg do 4468108eb18Smrg case "$arg" in 4478108eb18Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 4488108eb18Smrg set fnord "$@" 4498108eb18Smrg shift 4508108eb18Smrg shift 4518108eb18Smrg ;; 4528108eb18Smrg *) 4538108eb18Smrg set fnord "$@" "$arg" 4548108eb18Smrg shift 4558108eb18Smrg shift 4568108eb18Smrg ;; 4578108eb18Smrg esac 4588108eb18Smrg done 4598108eb18Smrg "$@" -E | 4608108eb18Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 4618108eb18Smrg rm -f "$depfile" 4628108eb18Smrg echo "$object : \\" > "$depfile" 4638108eb18Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 4648108eb18Smrg echo " " >> "$depfile" 4658108eb18Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 4668108eb18Smrg rm -f "$tmpdepfile" 4678108eb18Smrg ;; 4688108eb18Smrg 4698108eb18Smrgnone) 4708108eb18Smrg exec "$@" 4718108eb18Smrg ;; 4728108eb18Smrg 4738108eb18Smrg*) 4748108eb18Smrg echo "Unknown depmode $depmode" 1>&2 4758108eb18Smrg exit 1 4768108eb18Smrg ;; 4778108eb18Smrgesac 4788108eb18Smrg 4798108eb18Smrgexit 0 480