depcomp revision 4963b7b6
14963b7b6Smrg#! /bin/sh 24963b7b6Smrg 34963b7b6Smrg# depcomp - compile a program generating dependencies as side-effects 44963b7b6Smrg# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. 54963b7b6Smrg 64963b7b6Smrg# This program is free software; you can redistribute it and/or modify 74963b7b6Smrg# it under the terms of the GNU General Public License as published by 84963b7b6Smrg# the Free Software Foundation; either version 2, or (at your option) 94963b7b6Smrg# any later version. 104963b7b6Smrg 114963b7b6Smrg# This program is distributed in the hope that it will be useful, 124963b7b6Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 134963b7b6Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 144963b7b6Smrg# GNU General Public License for more details. 154963b7b6Smrg 164963b7b6Smrg# You should have received a copy of the GNU General Public License 174963b7b6Smrg# along with this program; if not, write to the Free Software 184963b7b6Smrg# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 194963b7b6Smrg# 02111-1307, USA. 204963b7b6Smrg 214963b7b6Smrg# As a special exception to the GNU General Public License, if you 224963b7b6Smrg# distribute this file as part of a program that contains a 234963b7b6Smrg# configuration script generated by Autoconf, you may include it under 244963b7b6Smrg# the same distribution terms that you use for the rest of that program. 254963b7b6Smrg 264963b7b6Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 274963b7b6Smrg 284963b7b6Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 294963b7b6Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 304963b7b6Smrg exit 1 314963b7b6Smrgfi 324963b7b6Smrg# `libtool' can also be set to `yes' or `no'. 334963b7b6Smrg 344963b7b6Smrgif test -z "$depfile"; then 354963b7b6Smrg base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` 364963b7b6Smrg dir=`echo "$object" | sed 's,/.*$,/,'` 374963b7b6Smrg if test "$dir" = "$object"; then 384963b7b6Smrg dir= 394963b7b6Smrg fi 404963b7b6Smrg # FIXME: should be _deps on DOS. 414963b7b6Smrg depfile="$dir.deps/$base" 424963b7b6Smrgfi 434963b7b6Smrg 444963b7b6Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 454963b7b6Smrg 464963b7b6Smrgrm -f "$tmpdepfile" 474963b7b6Smrg 484963b7b6Smrg# Some modes work just like other modes, but use different flags. We 494963b7b6Smrg# parameterize here, but still list the modes in the big case below, 504963b7b6Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 514963b7b6Smrg# here, because this file can only contain one case statement. 524963b7b6Smrgif test "$depmode" = hp; then 534963b7b6Smrg # HP compiler uses -M and no extra arg. 544963b7b6Smrg gccflag=-M 554963b7b6Smrg depmode=gcc 564963b7b6Smrgfi 574963b7b6Smrg 584963b7b6Smrgif test "$depmode" = dashXmstdout; then 594963b7b6Smrg # This is just like dashmstdout with a different argument. 604963b7b6Smrg dashmflag=-xM 614963b7b6Smrg depmode=dashmstdout 624963b7b6Smrgfi 634963b7b6Smrg 644963b7b6Smrgcase "$depmode" in 654963b7b6Smrggcc3) 664963b7b6Smrg## gcc 3 implements dependency tracking that does exactly what 674963b7b6Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 684963b7b6Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 694963b7b6Smrg "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 704963b7b6Smrg stat=$? 714963b7b6Smrg if test $stat -eq 0; then : 724963b7b6Smrg else 734963b7b6Smrg rm -f "$tmpdepfile" 744963b7b6Smrg exit $stat 754963b7b6Smrg fi 764963b7b6Smrg mv "$tmpdepfile" "$depfile" 774963b7b6Smrg ;; 784963b7b6Smrg 794963b7b6Smrggcc) 804963b7b6Smrg## There are various ways to get dependency output from gcc. Here's 814963b7b6Smrg## why we pick this rather obscure method: 824963b7b6Smrg## - Don't want to use -MD because we'd like the dependencies to end 834963b7b6Smrg## up in a subdir. Having to rename by hand is ugly. 844963b7b6Smrg## (We might end up doing this anyway to support other compilers.) 854963b7b6Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 864963b7b6Smrg## -MM, not -M (despite what the docs say). 874963b7b6Smrg## - Using -M directly means running the compiler twice (even worse 884963b7b6Smrg## than renaming). 894963b7b6Smrg if test -z "$gccflag"; then 904963b7b6Smrg gccflag=-MD, 914963b7b6Smrg fi 924963b7b6Smrg "$@" -Wp,"$gccflag$tmpdepfile" 934963b7b6Smrg stat=$? 944963b7b6Smrg if test $stat -eq 0; then : 954963b7b6Smrg else 964963b7b6Smrg rm -f "$tmpdepfile" 974963b7b6Smrg exit $stat 984963b7b6Smrg fi 994963b7b6Smrg rm -f "$depfile" 1004963b7b6Smrg echo "$object : \\" > "$depfile" 1014963b7b6Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1024963b7b6Smrg## The second -e expression handles DOS-style file names with drive letters. 1034963b7b6Smrg sed -e 's/^[^:]*: / /' \ 1044963b7b6Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1054963b7b6Smrg## This next piece of magic avoids the `deleted header file' problem. 1064963b7b6Smrg## The problem is that when a header file which appears in a .P file 1074963b7b6Smrg## is deleted, the dependency causes make to die (because there is 1084963b7b6Smrg## typically no way to rebuild the header). We avoid this by adding 1094963b7b6Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 1104963b7b6Smrg## this for us directly. 1114963b7b6Smrg tr ' ' ' 1124963b7b6Smrg' < "$tmpdepfile" | 1134963b7b6Smrg## Some versions of gcc put a space before the `:'. On the theory 1144963b7b6Smrg## that the space means something, we add a space to the output as 1154963b7b6Smrg## well. 1164963b7b6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 1174963b7b6Smrg## correctly. Breaking it into two sed invocations is a workaround. 1184963b7b6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1194963b7b6Smrg rm -f "$tmpdepfile" 1204963b7b6Smrg ;; 1214963b7b6Smrg 1224963b7b6Smrghp) 1234963b7b6Smrg # This case exists only to let depend.m4 do its work. It works by 1244963b7b6Smrg # looking at the text of this script. This case will never be run, 1254963b7b6Smrg # since it is checked for above. 1264963b7b6Smrg exit 1 1274963b7b6Smrg ;; 1284963b7b6Smrg 1294963b7b6Smrgsgi) 1304963b7b6Smrg if test "$libtool" = yes; then 1314963b7b6Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1324963b7b6Smrg else 1334963b7b6Smrg "$@" -MDupdate "$tmpdepfile" 1344963b7b6Smrg fi 1354963b7b6Smrg stat=$? 1364963b7b6Smrg if test $stat -eq 0; then : 1374963b7b6Smrg else 1384963b7b6Smrg rm -f "$tmpdepfile" 1394963b7b6Smrg exit $stat 1404963b7b6Smrg fi 1414963b7b6Smrg rm -f "$depfile" 1424963b7b6Smrg 1434963b7b6Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1444963b7b6Smrg echo "$object : \\" > "$depfile" 1454963b7b6Smrg 1464963b7b6Smrg # Clip off the initial element (the dependent). Don't try to be 1474963b7b6Smrg # clever and replace this with sed code, as IRIX sed won't handle 1484963b7b6Smrg # lines with more than a fixed number of characters (4096 in 1494963b7b6Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1504963b7b6Smrg # the IRIX cc adds comments like `#:fec' to the end of the 1514963b7b6Smrg # dependency line. 1524963b7b6Smrg tr ' ' ' 1534963b7b6Smrg' < "$tmpdepfile" \ 1544963b7b6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 1554963b7b6Smrg tr ' 1564963b7b6Smrg' ' ' >> $depfile 1574963b7b6Smrg echo >> $depfile 1584963b7b6Smrg 1594963b7b6Smrg # The second pass generates a dummy entry for each header file. 1604963b7b6Smrg tr ' ' ' 1614963b7b6Smrg' < "$tmpdepfile" \ 1624963b7b6Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 1634963b7b6Smrg >> $depfile 1644963b7b6Smrg else 1654963b7b6Smrg # The sourcefile does not contain any dependencies, so just 1664963b7b6Smrg # store a dummy comment line, to avoid errors with the Makefile 1674963b7b6Smrg # "include basename.Plo" scheme. 1684963b7b6Smrg echo "#dummy" > "$depfile" 1694963b7b6Smrg fi 1704963b7b6Smrg rm -f "$tmpdepfile" 1714963b7b6Smrg ;; 1724963b7b6Smrg 1734963b7b6Smrgaix) 1744963b7b6Smrg # The C for AIX Compiler uses -M and outputs the dependencies 1754963b7b6Smrg # in a .u file. In older versions, this file always lives in the 1764963b7b6Smrg # current directory. Also, the AIX compiler puts `$object:' at the 1774963b7b6Smrg # start of each line; $object doesn't have directory information. 1784963b7b6Smrg # Version 6 uses the directory in both cases. 1794963b7b6Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 1804963b7b6Smrg tmpdepfile="$stripped.u" 1814963b7b6Smrg if test "$libtool" = yes; then 1824963b7b6Smrg "$@" -Wc,-M 1834963b7b6Smrg else 1844963b7b6Smrg "$@" -M 1854963b7b6Smrg fi 1864963b7b6Smrg stat=$? 1874963b7b6Smrg 1884963b7b6Smrg if test -f "$tmpdepfile"; then : 1894963b7b6Smrg else 1904963b7b6Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 1914963b7b6Smrg tmpdepfile="$stripped.u" 1924963b7b6Smrg fi 1934963b7b6Smrg 1944963b7b6Smrg if test $stat -eq 0; then : 1954963b7b6Smrg else 1964963b7b6Smrg rm -f "$tmpdepfile" 1974963b7b6Smrg exit $stat 1984963b7b6Smrg fi 1994963b7b6Smrg 2004963b7b6Smrg if test -f "$tmpdepfile"; then 2014963b7b6Smrg outname="$stripped.o" 2024963b7b6Smrg # Each line is of the form `foo.o: dependent.h'. 2034963b7b6Smrg # Do two passes, one to just change these to 2044963b7b6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2054963b7b6Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 2064963b7b6Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 2074963b7b6Smrg else 2084963b7b6Smrg # The sourcefile does not contain any dependencies, so just 2094963b7b6Smrg # store a dummy comment line, to avoid errors with the Makefile 2104963b7b6Smrg # "include basename.Plo" scheme. 2114963b7b6Smrg echo "#dummy" > "$depfile" 2124963b7b6Smrg fi 2134963b7b6Smrg rm -f "$tmpdepfile" 2144963b7b6Smrg ;; 2154963b7b6Smrg 2164963b7b6Smrgicc) 2174963b7b6Smrg # Intel's C compiler understands `-MD -MF file'. However on 2184963b7b6Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2194963b7b6Smrg # ICC 7.0 will fill foo.d with something like 2204963b7b6Smrg # foo.o: sub/foo.c 2214963b7b6Smrg # foo.o: sub/foo.h 2224963b7b6Smrg # which is wrong. We want: 2234963b7b6Smrg # sub/foo.o: sub/foo.c 2244963b7b6Smrg # sub/foo.o: sub/foo.h 2254963b7b6Smrg # sub/foo.c: 2264963b7b6Smrg # sub/foo.h: 2274963b7b6Smrg # ICC 7.1 will output 2284963b7b6Smrg # foo.o: sub/foo.c sub/foo.h 2294963b7b6Smrg # and will wrap long lines using \ : 2304963b7b6Smrg # foo.o: sub/foo.c ... \ 2314963b7b6Smrg # sub/foo.h ... \ 2324963b7b6Smrg # ... 2334963b7b6Smrg 2344963b7b6Smrg "$@" -MD -MF "$tmpdepfile" 2354963b7b6Smrg stat=$? 2364963b7b6Smrg if test $stat -eq 0; then : 2374963b7b6Smrg else 2384963b7b6Smrg rm -f "$tmpdepfile" 2394963b7b6Smrg exit $stat 2404963b7b6Smrg fi 2414963b7b6Smrg rm -f "$depfile" 2424963b7b6Smrg # Each line is of the form `foo.o: dependent.h', 2434963b7b6Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2444963b7b6Smrg # Do two passes, one to just change these to 2454963b7b6Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2464963b7b6Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2474963b7b6Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 2484963b7b6Smrg # correctly. Breaking it into two sed invocations is a workaround. 2494963b7b6Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 2504963b7b6Smrg sed -e 's/$/ :/' >> "$depfile" 2514963b7b6Smrg rm -f "$tmpdepfile" 2524963b7b6Smrg ;; 2534963b7b6Smrg 2544963b7b6Smrgtru64) 2554963b7b6Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 2564963b7b6Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 2574963b7b6Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 2584963b7b6Smrg # dependencies in `foo.d' instead, so we check for that too. 2594963b7b6Smrg # Subdirectories are respected. 2604963b7b6Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2614963b7b6Smrg test "x$dir" = "x$object" && dir= 2624963b7b6Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2634963b7b6Smrg 2644963b7b6Smrg if test "$libtool" = yes; then 2654963b7b6Smrg tmpdepfile1="$dir.libs/$base.lo.d" 2664963b7b6Smrg tmpdepfile2="$dir.libs/$base.d" 2674963b7b6Smrg "$@" -Wc,-MD 2684963b7b6Smrg else 2694963b7b6Smrg tmpdepfile1="$dir$base.o.d" 2704963b7b6Smrg tmpdepfile2="$dir$base.d" 2714963b7b6Smrg "$@" -MD 2724963b7b6Smrg fi 2734963b7b6Smrg 2744963b7b6Smrg stat=$? 2754963b7b6Smrg if test $stat -eq 0; then : 2764963b7b6Smrg else 2774963b7b6Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 2784963b7b6Smrg exit $stat 2794963b7b6Smrg fi 2804963b7b6Smrg 2814963b7b6Smrg if test -f "$tmpdepfile1"; then 2824963b7b6Smrg tmpdepfile="$tmpdepfile1" 2834963b7b6Smrg else 2844963b7b6Smrg tmpdepfile="$tmpdepfile2" 2854963b7b6Smrg fi 2864963b7b6Smrg if test -f "$tmpdepfile"; then 2874963b7b6Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2884963b7b6Smrg # That's a tab and a space in the []. 2894963b7b6Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2904963b7b6Smrg else 2914963b7b6Smrg echo "#dummy" > "$depfile" 2924963b7b6Smrg fi 2934963b7b6Smrg rm -f "$tmpdepfile" 2944963b7b6Smrg ;; 2954963b7b6Smrg 2964963b7b6Smrg#nosideeffect) 2974963b7b6Smrg # This comment above is used by automake to tell side-effect 2984963b7b6Smrg # dependency tracking mechanisms from slower ones. 2994963b7b6Smrg 3004963b7b6Smrgdashmstdout) 3014963b7b6Smrg # Important note: in order to support this mode, a compiler *must* 3024963b7b6Smrg # always write the preprocessed file to stdout, regardless of -o. 3034963b7b6Smrg "$@" || exit $? 3044963b7b6Smrg 3054963b7b6Smrg # Remove the call to Libtool. 3064963b7b6Smrg if test "$libtool" = yes; then 3074963b7b6Smrg while test $1 != '--mode=compile'; do 3084963b7b6Smrg shift 3094963b7b6Smrg done 3104963b7b6Smrg shift 3114963b7b6Smrg fi 3124963b7b6Smrg 3134963b7b6Smrg # Remove `-o $object'. 3144963b7b6Smrg IFS=" " 3154963b7b6Smrg for arg 3164963b7b6Smrg do 3174963b7b6Smrg case $arg in 3184963b7b6Smrg -o) 3194963b7b6Smrg shift 3204963b7b6Smrg ;; 3214963b7b6Smrg $object) 3224963b7b6Smrg shift 3234963b7b6Smrg ;; 3244963b7b6Smrg *) 3254963b7b6Smrg set fnord "$@" "$arg" 3264963b7b6Smrg shift # fnord 3274963b7b6Smrg shift # $arg 3284963b7b6Smrg ;; 3294963b7b6Smrg esac 3304963b7b6Smrg done 3314963b7b6Smrg 3324963b7b6Smrg test -z "$dashmflag" && dashmflag=-M 3334963b7b6Smrg # Require at least two characters before searching for `:' 3344963b7b6Smrg # in the target name. This is to cope with DOS-style filenames: 3354963b7b6Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 3364963b7b6Smrg "$@" $dashmflag | 3374963b7b6Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 3384963b7b6Smrg rm -f "$depfile" 3394963b7b6Smrg cat < "$tmpdepfile" > "$depfile" 3404963b7b6Smrg tr ' ' ' 3414963b7b6Smrg' < "$tmpdepfile" | \ 3424963b7b6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 3434963b7b6Smrg## correctly. Breaking it into two sed invocations is a workaround. 3444963b7b6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3454963b7b6Smrg rm -f "$tmpdepfile" 3464963b7b6Smrg ;; 3474963b7b6Smrg 3484963b7b6SmrgdashXmstdout) 3494963b7b6Smrg # This case only exists to satisfy depend.m4. It is never actually 3504963b7b6Smrg # run, as this mode is specially recognized in the preamble. 3514963b7b6Smrg exit 1 3524963b7b6Smrg ;; 3534963b7b6Smrg 3544963b7b6Smrgmakedepend) 3554963b7b6Smrg "$@" || exit $? 3564963b7b6Smrg # Remove any Libtool call 3574963b7b6Smrg if test "$libtool" = yes; then 3584963b7b6Smrg while test $1 != '--mode=compile'; do 3594963b7b6Smrg shift 3604963b7b6Smrg done 3614963b7b6Smrg shift 3624963b7b6Smrg fi 3634963b7b6Smrg # X makedepend 3644963b7b6Smrg shift 3654963b7b6Smrg cleared=no 3664963b7b6Smrg for arg in "$@"; do 3674963b7b6Smrg case $cleared in 3684963b7b6Smrg no) 3694963b7b6Smrg set ""; shift 3704963b7b6Smrg cleared=yes ;; 3714963b7b6Smrg esac 3724963b7b6Smrg case "$arg" in 3734963b7b6Smrg -D*|-I*) 3744963b7b6Smrg set fnord "$@" "$arg"; shift ;; 3754963b7b6Smrg # Strip any option that makedepend may not understand. Remove 3764963b7b6Smrg # the object too, otherwise makedepend will parse it as a source file. 3774963b7b6Smrg -*|$object) 3784963b7b6Smrg ;; 3794963b7b6Smrg *) 3804963b7b6Smrg set fnord "$@" "$arg"; shift ;; 3814963b7b6Smrg esac 3824963b7b6Smrg done 3834963b7b6Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 3844963b7b6Smrg touch "$tmpdepfile" 3854963b7b6Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 3864963b7b6Smrg rm -f "$depfile" 3874963b7b6Smrg cat < "$tmpdepfile" > "$depfile" 3884963b7b6Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 3894963b7b6Smrg' | \ 3904963b7b6Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 3914963b7b6Smrg## correctly. Breaking it into two sed invocations is a workaround. 3924963b7b6Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 3934963b7b6Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 3944963b7b6Smrg ;; 3954963b7b6Smrg 3964963b7b6Smrgcpp) 3974963b7b6Smrg # Important note: in order to support this mode, a compiler *must* 3984963b7b6Smrg # always write the preprocessed file to stdout. 3994963b7b6Smrg "$@" || exit $? 4004963b7b6Smrg 4014963b7b6Smrg # Remove the call to Libtool. 4024963b7b6Smrg if test "$libtool" = yes; then 4034963b7b6Smrg while test $1 != '--mode=compile'; do 4044963b7b6Smrg shift 4054963b7b6Smrg done 4064963b7b6Smrg shift 4074963b7b6Smrg fi 4084963b7b6Smrg 4094963b7b6Smrg # Remove `-o $object'. 4104963b7b6Smrg IFS=" " 4114963b7b6Smrg for arg 4124963b7b6Smrg do 4134963b7b6Smrg case $arg in 4144963b7b6Smrg -o) 4154963b7b6Smrg shift 4164963b7b6Smrg ;; 4174963b7b6Smrg $object) 4184963b7b6Smrg shift 4194963b7b6Smrg ;; 4204963b7b6Smrg *) 4214963b7b6Smrg set fnord "$@" "$arg" 4224963b7b6Smrg shift # fnord 4234963b7b6Smrg shift # $arg 4244963b7b6Smrg ;; 4254963b7b6Smrg esac 4264963b7b6Smrg done 4274963b7b6Smrg 4284963b7b6Smrg "$@" -E | 4294963b7b6Smrg sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 4304963b7b6Smrg sed '$ s: \\$::' > "$tmpdepfile" 4314963b7b6Smrg rm -f "$depfile" 4324963b7b6Smrg echo "$object : \\" > "$depfile" 4334963b7b6Smrg cat < "$tmpdepfile" >> "$depfile" 4344963b7b6Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 4354963b7b6Smrg rm -f "$tmpdepfile" 4364963b7b6Smrg ;; 4374963b7b6Smrg 4384963b7b6Smrgmsvisualcpp) 4394963b7b6Smrg # Important note: in order to support this mode, a compiler *must* 4404963b7b6Smrg # always write the preprocessed file to stdout, regardless of -o, 4414963b7b6Smrg # because we must use -o when running libtool. 4424963b7b6Smrg "$@" || exit $? 4434963b7b6Smrg IFS=" " 4444963b7b6Smrg for arg 4454963b7b6Smrg do 4464963b7b6Smrg case "$arg" in 4474963b7b6Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 4484963b7b6Smrg set fnord "$@" 4494963b7b6Smrg shift 4504963b7b6Smrg shift 4514963b7b6Smrg ;; 4524963b7b6Smrg *) 4534963b7b6Smrg set fnord "$@" "$arg" 4544963b7b6Smrg shift 4554963b7b6Smrg shift 4564963b7b6Smrg ;; 4574963b7b6Smrg esac 4584963b7b6Smrg done 4594963b7b6Smrg "$@" -E | 4604963b7b6Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 4614963b7b6Smrg rm -f "$depfile" 4624963b7b6Smrg echo "$object : \\" > "$depfile" 4634963b7b6Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 4644963b7b6Smrg echo " " >> "$depfile" 4654963b7b6Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 4664963b7b6Smrg rm -f "$tmpdepfile" 4674963b7b6Smrg ;; 4684963b7b6Smrg 4694963b7b6Smrgnone) 4704963b7b6Smrg exec "$@" 4714963b7b6Smrg ;; 4724963b7b6Smrg 4734963b7b6Smrg*) 4744963b7b6Smrg echo "Unknown depmode $depmode" 1>&2 4754963b7b6Smrg exit 1 4764963b7b6Smrg ;; 4774963b7b6Smrgesac 4784963b7b6Smrg 4794963b7b6Smrgexit 0 480