depcomp revision 42d69509
14456fccdSmrg#! /bin/sh 24456fccdSmrg# depcomp - compile a program generating dependencies as side-effects 34456fccdSmrg 442d69509Smrgscriptversion=2009-04-28.21; # UTC 54456fccdSmrg 642d69509Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 742d69509Smrg# Software Foundation, Inc. 84456fccdSmrg 94456fccdSmrg# This program is free software; you can redistribute it and/or modify 104456fccdSmrg# it under the terms of the GNU General Public License as published by 114456fccdSmrg# the Free Software Foundation; either version 2, or (at your option) 124456fccdSmrg# any later version. 134456fccdSmrg 144456fccdSmrg# This program is distributed in the hope that it will be useful, 154456fccdSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 164456fccdSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 174456fccdSmrg# GNU General Public License for more details. 184456fccdSmrg 194456fccdSmrg# You should have received a copy of the GNU General Public License 2042d69509Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 214456fccdSmrg 224456fccdSmrg# As a special exception to the GNU General Public License, if you 234456fccdSmrg# distribute this file as part of a program that contains a 244456fccdSmrg# configuration script generated by Autoconf, you may include it under 254456fccdSmrg# the same distribution terms that you use for the rest of that program. 264456fccdSmrg 274456fccdSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 284456fccdSmrg 294456fccdSmrgcase $1 in 304456fccdSmrg '') 314456fccdSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 324456fccdSmrg exit 1; 334456fccdSmrg ;; 344456fccdSmrg -h | --h*) 354456fccdSmrg cat <<\EOF 364456fccdSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 374456fccdSmrg 384456fccdSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 394456fccdSmrgas side-effects. 404456fccdSmrg 414456fccdSmrgEnvironment variables: 424456fccdSmrg depmode Dependency tracking mode. 434456fccdSmrg source Source file read by `PROGRAMS ARGS'. 444456fccdSmrg object Object file output by `PROGRAMS ARGS'. 454456fccdSmrg DEPDIR directory where to store dependencies. 464456fccdSmrg depfile Dependency file to output. 474456fccdSmrg tmpdepfile Temporary file to use when outputing dependencies. 484456fccdSmrg libtool Whether libtool is used (yes/no). 494456fccdSmrg 504456fccdSmrgReport bugs to <bug-automake@gnu.org>. 514456fccdSmrgEOF 524456fccdSmrg exit $? 534456fccdSmrg ;; 544456fccdSmrg -v | --v*) 554456fccdSmrg echo "depcomp $scriptversion" 564456fccdSmrg exit $? 574456fccdSmrg ;; 584456fccdSmrgesac 594456fccdSmrg 604456fccdSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 614456fccdSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 624456fccdSmrg exit 1 634456fccdSmrgfi 644456fccdSmrg 654456fccdSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 664456fccdSmrgdepfile=${depfile-`echo "$object" | 674456fccdSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 684456fccdSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 694456fccdSmrg 704456fccdSmrgrm -f "$tmpdepfile" 714456fccdSmrg 724456fccdSmrg# Some modes work just like other modes, but use different flags. We 734456fccdSmrg# parameterize here, but still list the modes in the big case below, 744456fccdSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 754456fccdSmrg# here, because this file can only contain one case statement. 764456fccdSmrgif test "$depmode" = hp; then 774456fccdSmrg # HP compiler uses -M and no extra arg. 784456fccdSmrg gccflag=-M 794456fccdSmrg depmode=gcc 804456fccdSmrgfi 814456fccdSmrg 824456fccdSmrgif test "$depmode" = dashXmstdout; then 834456fccdSmrg # This is just like dashmstdout with a different argument. 844456fccdSmrg dashmflag=-xM 854456fccdSmrg depmode=dashmstdout 864456fccdSmrgfi 874456fccdSmrg 8842d69509Smrgcygpath_u="cygpath -u -f -" 8942d69509Smrgif test "$depmode" = msvcmsys; then 9042d69509Smrg # This is just like msvisualcpp but w/o cygpath translation. 9142d69509Smrg # Just convert the backslash-escaped backslashes to single forward 9242d69509Smrg # slashes to satisfy depend.m4 9342d69509Smrg cygpath_u="sed s,\\\\\\\\,/,g" 9442d69509Smrg depmode=msvisualcpp 9542d69509Smrgfi 9642d69509Smrg 974456fccdSmrgcase "$depmode" in 984456fccdSmrggcc3) 994456fccdSmrg## gcc 3 implements dependency tracking that does exactly what 1004456fccdSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1014456fccdSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 10242d69509Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 10342d69509Smrg## the command line argument order; so add the flags where they 10442d69509Smrg## appear in depend2.am. Note that the slowdown incurred here 10542d69509Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 10642d69509Smrg for arg 10742d69509Smrg do 10842d69509Smrg case $arg in 10942d69509Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 11042d69509Smrg *) set fnord "$@" "$arg" ;; 11142d69509Smrg esac 11242d69509Smrg shift # fnord 11342d69509Smrg shift # $arg 11442d69509Smrg done 11542d69509Smrg "$@" 1164456fccdSmrg stat=$? 1174456fccdSmrg if test $stat -eq 0; then : 1184456fccdSmrg else 1194456fccdSmrg rm -f "$tmpdepfile" 1204456fccdSmrg exit $stat 1214456fccdSmrg fi 1224456fccdSmrg mv "$tmpdepfile" "$depfile" 1234456fccdSmrg ;; 1244456fccdSmrg 1254456fccdSmrggcc) 1264456fccdSmrg## There are various ways to get dependency output from gcc. Here's 1274456fccdSmrg## why we pick this rather obscure method: 1284456fccdSmrg## - Don't want to use -MD because we'd like the dependencies to end 1294456fccdSmrg## up in a subdir. Having to rename by hand is ugly. 1304456fccdSmrg## (We might end up doing this anyway to support other compilers.) 1314456fccdSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1324456fccdSmrg## -MM, not -M (despite what the docs say). 1334456fccdSmrg## - Using -M directly means running the compiler twice (even worse 1344456fccdSmrg## than renaming). 1354456fccdSmrg if test -z "$gccflag"; then 1364456fccdSmrg gccflag=-MD, 1374456fccdSmrg fi 1384456fccdSmrg "$@" -Wp,"$gccflag$tmpdepfile" 1394456fccdSmrg stat=$? 1404456fccdSmrg if test $stat -eq 0; then : 1414456fccdSmrg else 1424456fccdSmrg rm -f "$tmpdepfile" 1434456fccdSmrg exit $stat 1444456fccdSmrg fi 1454456fccdSmrg rm -f "$depfile" 1464456fccdSmrg echo "$object : \\" > "$depfile" 1474456fccdSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1484456fccdSmrg## The second -e expression handles DOS-style file names with drive letters. 1494456fccdSmrg sed -e 's/^[^:]*: / /' \ 1504456fccdSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1514456fccdSmrg## This next piece of magic avoids the `deleted header file' problem. 1524456fccdSmrg## The problem is that when a header file which appears in a .P file 1534456fccdSmrg## is deleted, the dependency causes make to die (because there is 1544456fccdSmrg## typically no way to rebuild the header). We avoid this by adding 1554456fccdSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 1564456fccdSmrg## this for us directly. 1574456fccdSmrg tr ' ' ' 1584456fccdSmrg' < "$tmpdepfile" | 1594456fccdSmrg## Some versions of gcc put a space before the `:'. On the theory 1604456fccdSmrg## that the space means something, we add a space to the output as 1614456fccdSmrg## well. 1624456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 1634456fccdSmrg## correctly. Breaking it into two sed invocations is a workaround. 1644456fccdSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1654456fccdSmrg rm -f "$tmpdepfile" 1664456fccdSmrg ;; 1674456fccdSmrg 1684456fccdSmrghp) 1694456fccdSmrg # This case exists only to let depend.m4 do its work. It works by 1704456fccdSmrg # looking at the text of this script. This case will never be run, 1714456fccdSmrg # since it is checked for above. 1724456fccdSmrg exit 1 1734456fccdSmrg ;; 1744456fccdSmrg 1754456fccdSmrgsgi) 1764456fccdSmrg if test "$libtool" = yes; then 1774456fccdSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1784456fccdSmrg else 1794456fccdSmrg "$@" -MDupdate "$tmpdepfile" 1804456fccdSmrg fi 1814456fccdSmrg stat=$? 1824456fccdSmrg if test $stat -eq 0; then : 1834456fccdSmrg else 1844456fccdSmrg rm -f "$tmpdepfile" 1854456fccdSmrg exit $stat 1864456fccdSmrg fi 1874456fccdSmrg rm -f "$depfile" 1884456fccdSmrg 1894456fccdSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1904456fccdSmrg echo "$object : \\" > "$depfile" 1914456fccdSmrg 1924456fccdSmrg # Clip off the initial element (the dependent). Don't try to be 1934456fccdSmrg # clever and replace this with sed code, as IRIX sed won't handle 1944456fccdSmrg # lines with more than a fixed number of characters (4096 in 1954456fccdSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1964456fccdSmrg # the IRIX cc adds comments like `#:fec' to the end of the 1974456fccdSmrg # dependency line. 1984456fccdSmrg tr ' ' ' 1994456fccdSmrg' < "$tmpdepfile" \ 2004456fccdSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2014456fccdSmrg tr ' 20242d69509Smrg' ' ' >> "$depfile" 20342d69509Smrg echo >> "$depfile" 2044456fccdSmrg 2054456fccdSmrg # The second pass generates a dummy entry for each header file. 2064456fccdSmrg tr ' ' ' 2074456fccdSmrg' < "$tmpdepfile" \ 2084456fccdSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 20942d69509Smrg >> "$depfile" 2104456fccdSmrg else 2114456fccdSmrg # The sourcefile does not contain any dependencies, so just 2124456fccdSmrg # store a dummy comment line, to avoid errors with the Makefile 2134456fccdSmrg # "include basename.Plo" scheme. 2144456fccdSmrg echo "#dummy" > "$depfile" 2154456fccdSmrg fi 2164456fccdSmrg rm -f "$tmpdepfile" 2174456fccdSmrg ;; 2184456fccdSmrg 2194456fccdSmrgaix) 2204456fccdSmrg # The C for AIX Compiler uses -M and outputs the dependencies 2214456fccdSmrg # in a .u file. In older versions, this file always lives in the 2224456fccdSmrg # current directory. Also, the AIX compiler puts `$object:' at the 2234456fccdSmrg # start of each line; $object doesn't have directory information. 2244456fccdSmrg # Version 6 uses the directory in both cases. 22542d69509Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 22642d69509Smrg test "x$dir" = "x$object" && dir= 22742d69509Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2284456fccdSmrg if test "$libtool" = yes; then 22942d69509Smrg tmpdepfile1=$dir$base.u 23042d69509Smrg tmpdepfile2=$base.u 23142d69509Smrg tmpdepfile3=$dir.libs/$base.u 2324456fccdSmrg "$@" -Wc,-M 2334456fccdSmrg else 23442d69509Smrg tmpdepfile1=$dir$base.u 23542d69509Smrg tmpdepfile2=$dir$base.u 23642d69509Smrg tmpdepfile3=$dir$base.u 2374456fccdSmrg "$@" -M 2384456fccdSmrg fi 2394456fccdSmrg stat=$? 2404456fccdSmrg 2414456fccdSmrg if test $stat -eq 0; then : 2424456fccdSmrg else 24342d69509Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2444456fccdSmrg exit $stat 2454456fccdSmrg fi 2464456fccdSmrg 24742d69509Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24842d69509Smrg do 24942d69509Smrg test -f "$tmpdepfile" && break 25042d69509Smrg done 2514456fccdSmrg if test -f "$tmpdepfile"; then 2524456fccdSmrg # Each line is of the form `foo.o: dependent.h'. 2534456fccdSmrg # Do two passes, one to just change these to 2544456fccdSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 25542d69509Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 25642d69509Smrg # That's a tab and a space in the []. 25742d69509Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2584456fccdSmrg else 2594456fccdSmrg # The sourcefile does not contain any dependencies, so just 2604456fccdSmrg # store a dummy comment line, to avoid errors with the Makefile 2614456fccdSmrg # "include basename.Plo" scheme. 2624456fccdSmrg echo "#dummy" > "$depfile" 2634456fccdSmrg fi 2644456fccdSmrg rm -f "$tmpdepfile" 2654456fccdSmrg ;; 2664456fccdSmrg 2674456fccdSmrgicc) 2684456fccdSmrg # Intel's C compiler understands `-MD -MF file'. However on 2694456fccdSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2704456fccdSmrg # ICC 7.0 will fill foo.d with something like 2714456fccdSmrg # foo.o: sub/foo.c 2724456fccdSmrg # foo.o: sub/foo.h 2734456fccdSmrg # which is wrong. We want: 2744456fccdSmrg # sub/foo.o: sub/foo.c 2754456fccdSmrg # sub/foo.o: sub/foo.h 2764456fccdSmrg # sub/foo.c: 2774456fccdSmrg # sub/foo.h: 2784456fccdSmrg # ICC 7.1 will output 2794456fccdSmrg # foo.o: sub/foo.c sub/foo.h 2804456fccdSmrg # and will wrap long lines using \ : 2814456fccdSmrg # foo.o: sub/foo.c ... \ 2824456fccdSmrg # sub/foo.h ... \ 2834456fccdSmrg # ... 2844456fccdSmrg 2854456fccdSmrg "$@" -MD -MF "$tmpdepfile" 2864456fccdSmrg stat=$? 2874456fccdSmrg if test $stat -eq 0; then : 2884456fccdSmrg else 2894456fccdSmrg rm -f "$tmpdepfile" 2904456fccdSmrg exit $stat 2914456fccdSmrg fi 2924456fccdSmrg rm -f "$depfile" 2934456fccdSmrg # Each line is of the form `foo.o: dependent.h', 2944456fccdSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2954456fccdSmrg # Do two passes, one to just change these to 2964456fccdSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2974456fccdSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2984456fccdSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 2994456fccdSmrg # correctly. Breaking it into two sed invocations is a workaround. 3004456fccdSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3014456fccdSmrg sed -e 's/$/ :/' >> "$depfile" 3024456fccdSmrg rm -f "$tmpdepfile" 3034456fccdSmrg ;; 3044456fccdSmrg 30542d69509Smrghp2) 30642d69509Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 30742d69509Smrg # compilers, which have integrated preprocessors. The correct option 30842d69509Smrg # to use with these is +Maked; it writes dependencies to a file named 30942d69509Smrg # 'foo.d', which lands next to the object file, wherever that 31042d69509Smrg # happens to be. 31142d69509Smrg # Much of this is similar to the tru64 case; see comments there. 31242d69509Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 31342d69509Smrg test "x$dir" = "x$object" && dir= 31442d69509Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 31542d69509Smrg if test "$libtool" = yes; then 31642d69509Smrg tmpdepfile1=$dir$base.d 31742d69509Smrg tmpdepfile2=$dir.libs/$base.d 31842d69509Smrg "$@" -Wc,+Maked 31942d69509Smrg else 32042d69509Smrg tmpdepfile1=$dir$base.d 32142d69509Smrg tmpdepfile2=$dir$base.d 32242d69509Smrg "$@" +Maked 32342d69509Smrg fi 32442d69509Smrg stat=$? 32542d69509Smrg if test $stat -eq 0; then : 32642d69509Smrg else 32742d69509Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 32842d69509Smrg exit $stat 32942d69509Smrg fi 33042d69509Smrg 33142d69509Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 33242d69509Smrg do 33342d69509Smrg test -f "$tmpdepfile" && break 33442d69509Smrg done 33542d69509Smrg if test -f "$tmpdepfile"; then 33642d69509Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 33742d69509Smrg # Add `dependent.h:' lines. 33842d69509Smrg sed -ne '2,${ 33942d69509Smrg s/^ *// 34042d69509Smrg s/ \\*$// 34142d69509Smrg s/$/:/ 34242d69509Smrg p 34342d69509Smrg }' "$tmpdepfile" >> "$depfile" 34442d69509Smrg else 34542d69509Smrg echo "#dummy" > "$depfile" 34642d69509Smrg fi 34742d69509Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 34842d69509Smrg ;; 34942d69509Smrg 3504456fccdSmrgtru64) 3514456fccdSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 3524456fccdSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3534456fccdSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3544456fccdSmrg # dependencies in `foo.d' instead, so we check for that too. 3554456fccdSmrg # Subdirectories are respected. 3564456fccdSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3574456fccdSmrg test "x$dir" = "x$object" && dir= 3584456fccdSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3594456fccdSmrg 3604456fccdSmrg if test "$libtool" = yes; then 3614456fccdSmrg # With Tru64 cc, shared objects can also be used to make a 36242d69509Smrg # static library. This mechanism is used in libtool 1.4 series to 3634456fccdSmrg # handle both shared and static libraries in a single compilation. 3644456fccdSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3654456fccdSmrg # 3664456fccdSmrg # With libtool 1.5 this exception was removed, and libtool now 3674456fccdSmrg # generates 2 separate objects for the 2 libraries. These two 36842d69509Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3694456fccdSmrg # in $dir$base.o.d. We have to check for both files, because 3704456fccdSmrg # one of the two compilations can be disabled. We should prefer 3714456fccdSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3724456fccdSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3734456fccdSmrg # the former would cause a distcleancheck panic. 3744456fccdSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3754456fccdSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3764456fccdSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3774456fccdSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3784456fccdSmrg "$@" -Wc,-MD 3794456fccdSmrg else 3804456fccdSmrg tmpdepfile1=$dir$base.o.d 3814456fccdSmrg tmpdepfile2=$dir$base.d 3824456fccdSmrg tmpdepfile3=$dir$base.d 3834456fccdSmrg tmpdepfile4=$dir$base.d 3844456fccdSmrg "$@" -MD 3854456fccdSmrg fi 3864456fccdSmrg 3874456fccdSmrg stat=$? 3884456fccdSmrg if test $stat -eq 0; then : 3894456fccdSmrg else 3904456fccdSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3914456fccdSmrg exit $stat 3924456fccdSmrg fi 3934456fccdSmrg 3944456fccdSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3954456fccdSmrg do 3964456fccdSmrg test -f "$tmpdepfile" && break 3974456fccdSmrg done 3984456fccdSmrg if test -f "$tmpdepfile"; then 3994456fccdSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4004456fccdSmrg # That's a tab and a space in the []. 4014456fccdSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4024456fccdSmrg else 4034456fccdSmrg echo "#dummy" > "$depfile" 4044456fccdSmrg fi 4054456fccdSmrg rm -f "$tmpdepfile" 4064456fccdSmrg ;; 4074456fccdSmrg 4084456fccdSmrg#nosideeffect) 4094456fccdSmrg # This comment above is used by automake to tell side-effect 4104456fccdSmrg # dependency tracking mechanisms from slower ones. 4114456fccdSmrg 4124456fccdSmrgdashmstdout) 4134456fccdSmrg # Important note: in order to support this mode, a compiler *must* 4144456fccdSmrg # always write the preprocessed file to stdout, regardless of -o. 4154456fccdSmrg "$@" || exit $? 4164456fccdSmrg 4174456fccdSmrg # Remove the call to Libtool. 4184456fccdSmrg if test "$libtool" = yes; then 41942d69509Smrg while test "X$1" != 'X--mode=compile'; do 4204456fccdSmrg shift 4214456fccdSmrg done 4224456fccdSmrg shift 4234456fccdSmrg fi 4244456fccdSmrg 4254456fccdSmrg # Remove `-o $object'. 4264456fccdSmrg IFS=" " 4274456fccdSmrg for arg 4284456fccdSmrg do 4294456fccdSmrg case $arg in 4304456fccdSmrg -o) 4314456fccdSmrg shift 4324456fccdSmrg ;; 4334456fccdSmrg $object) 4344456fccdSmrg shift 4354456fccdSmrg ;; 4364456fccdSmrg *) 4374456fccdSmrg set fnord "$@" "$arg" 4384456fccdSmrg shift # fnord 4394456fccdSmrg shift # $arg 4404456fccdSmrg ;; 4414456fccdSmrg esac 4424456fccdSmrg done 4434456fccdSmrg 4444456fccdSmrg test -z "$dashmflag" && dashmflag=-M 4454456fccdSmrg # Require at least two characters before searching for `:' 4464456fccdSmrg # in the target name. This is to cope with DOS-style filenames: 4474456fccdSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4484456fccdSmrg "$@" $dashmflag | 4494456fccdSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4504456fccdSmrg rm -f "$depfile" 4514456fccdSmrg cat < "$tmpdepfile" > "$depfile" 4524456fccdSmrg tr ' ' ' 4534456fccdSmrg' < "$tmpdepfile" | \ 4544456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4554456fccdSmrg## correctly. Breaking it into two sed invocations is a workaround. 4564456fccdSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4574456fccdSmrg rm -f "$tmpdepfile" 4584456fccdSmrg ;; 4594456fccdSmrg 4604456fccdSmrgdashXmstdout) 4614456fccdSmrg # This case only exists to satisfy depend.m4. It is never actually 4624456fccdSmrg # run, as this mode is specially recognized in the preamble. 4634456fccdSmrg exit 1 4644456fccdSmrg ;; 4654456fccdSmrg 4664456fccdSmrgmakedepend) 4674456fccdSmrg "$@" || exit $? 4684456fccdSmrg # Remove any Libtool call 4694456fccdSmrg if test "$libtool" = yes; then 47042d69509Smrg while test "X$1" != 'X--mode=compile'; do 4714456fccdSmrg shift 4724456fccdSmrg done 4734456fccdSmrg shift 4744456fccdSmrg fi 4754456fccdSmrg # X makedepend 4764456fccdSmrg shift 47742d69509Smrg cleared=no eat=no 47842d69509Smrg for arg 47942d69509Smrg do 4804456fccdSmrg case $cleared in 4814456fccdSmrg no) 4824456fccdSmrg set ""; shift 4834456fccdSmrg cleared=yes ;; 4844456fccdSmrg esac 48542d69509Smrg if test $eat = yes; then 48642d69509Smrg eat=no 48742d69509Smrg continue 48842d69509Smrg fi 4894456fccdSmrg case "$arg" in 4904456fccdSmrg -D*|-I*) 4914456fccdSmrg set fnord "$@" "$arg"; shift ;; 4924456fccdSmrg # Strip any option that makedepend may not understand. Remove 4934456fccdSmrg # the object too, otherwise makedepend will parse it as a source file. 49442d69509Smrg -arch) 49542d69509Smrg eat=yes ;; 4964456fccdSmrg -*|$object) 4974456fccdSmrg ;; 4984456fccdSmrg *) 4994456fccdSmrg set fnord "$@" "$arg"; shift ;; 5004456fccdSmrg esac 5014456fccdSmrg done 50242d69509Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5034456fccdSmrg touch "$tmpdepfile" 5044456fccdSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5054456fccdSmrg rm -f "$depfile" 5064456fccdSmrg cat < "$tmpdepfile" > "$depfile" 5074456fccdSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5084456fccdSmrg' | \ 5094456fccdSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 5104456fccdSmrg## correctly. Breaking it into two sed invocations is a workaround. 5114456fccdSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5124456fccdSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5134456fccdSmrg ;; 5144456fccdSmrg 5154456fccdSmrgcpp) 5164456fccdSmrg # Important note: in order to support this mode, a compiler *must* 5174456fccdSmrg # always write the preprocessed file to stdout. 5184456fccdSmrg "$@" || exit $? 5194456fccdSmrg 5204456fccdSmrg # Remove the call to Libtool. 5214456fccdSmrg if test "$libtool" = yes; then 52242d69509Smrg while test "X$1" != 'X--mode=compile'; do 5234456fccdSmrg shift 5244456fccdSmrg done 5254456fccdSmrg shift 5264456fccdSmrg fi 5274456fccdSmrg 5284456fccdSmrg # Remove `-o $object'. 5294456fccdSmrg IFS=" " 5304456fccdSmrg for arg 5314456fccdSmrg do 5324456fccdSmrg case $arg in 5334456fccdSmrg -o) 5344456fccdSmrg shift 5354456fccdSmrg ;; 5364456fccdSmrg $object) 5374456fccdSmrg shift 5384456fccdSmrg ;; 5394456fccdSmrg *) 5404456fccdSmrg set fnord "$@" "$arg" 5414456fccdSmrg shift # fnord 5424456fccdSmrg shift # $arg 5434456fccdSmrg ;; 5444456fccdSmrg esac 5454456fccdSmrg done 5464456fccdSmrg 5474456fccdSmrg "$@" -E | 5484456fccdSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5494456fccdSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5504456fccdSmrg sed '$ s: \\$::' > "$tmpdepfile" 5514456fccdSmrg rm -f "$depfile" 5524456fccdSmrg echo "$object : \\" > "$depfile" 5534456fccdSmrg cat < "$tmpdepfile" >> "$depfile" 5544456fccdSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5554456fccdSmrg rm -f "$tmpdepfile" 5564456fccdSmrg ;; 5574456fccdSmrg 5584456fccdSmrgmsvisualcpp) 5594456fccdSmrg # Important note: in order to support this mode, a compiler *must* 56042d69509Smrg # always write the preprocessed file to stdout. 5614456fccdSmrg "$@" || exit $? 56242d69509Smrg 56342d69509Smrg # Remove the call to Libtool. 56442d69509Smrg if test "$libtool" = yes; then 56542d69509Smrg while test "X$1" != 'X--mode=compile'; do 56642d69509Smrg shift 56742d69509Smrg done 56842d69509Smrg shift 56942d69509Smrg fi 57042d69509Smrg 5714456fccdSmrg IFS=" " 5724456fccdSmrg for arg 5734456fccdSmrg do 5744456fccdSmrg case "$arg" in 57542d69509Smrg -o) 57642d69509Smrg shift 57742d69509Smrg ;; 57842d69509Smrg $object) 57942d69509Smrg shift 58042d69509Smrg ;; 5814456fccdSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5824456fccdSmrg set fnord "$@" 5834456fccdSmrg shift 5844456fccdSmrg shift 5854456fccdSmrg ;; 5864456fccdSmrg *) 5874456fccdSmrg set fnord "$@" "$arg" 5884456fccdSmrg shift 5894456fccdSmrg shift 5904456fccdSmrg ;; 5914456fccdSmrg esac 5924456fccdSmrg done 59342d69509Smrg "$@" -E 2>/dev/null | 59442d69509Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5954456fccdSmrg rm -f "$depfile" 5964456fccdSmrg echo "$object : \\" > "$depfile" 59742d69509Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5984456fccdSmrg echo " " >> "$depfile" 59942d69509Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6004456fccdSmrg rm -f "$tmpdepfile" 6014456fccdSmrg ;; 6024456fccdSmrg 60342d69509Smrgmsvcmsys) 60442d69509Smrg # This case exists only to let depend.m4 do its work. It works by 60542d69509Smrg # looking at the text of this script. This case will never be run, 60642d69509Smrg # since it is checked for above. 60742d69509Smrg exit 1 60842d69509Smrg ;; 60942d69509Smrg 6104456fccdSmrgnone) 6114456fccdSmrg exec "$@" 6124456fccdSmrg ;; 6134456fccdSmrg 6144456fccdSmrg*) 6154456fccdSmrg echo "Unknown depmode $depmode" 1>&2 6164456fccdSmrg exit 1 6174456fccdSmrg ;; 6184456fccdSmrgesac 6194456fccdSmrg 6204456fccdSmrgexit 0 6214456fccdSmrg 6224456fccdSmrg# Local Variables: 6234456fccdSmrg# mode: shell-script 6244456fccdSmrg# sh-indentation: 2 6254456fccdSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6264456fccdSmrg# time-stamp-start: "scriptversion=" 6274456fccdSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 62842d69509Smrg# time-stamp-time-zone: "UTC" 62942d69509Smrg# time-stamp-end: "; # UTC" 6304456fccdSmrg# End: 631