depcomp revision 880ed95a
102be438aSmrg#! /bin/sh 202be438aSmrg# depcomp - compile a program generating dependencies as side-effects 302be438aSmrg 4880ed95aSmrgscriptversion=2007-03-29.01 502be438aSmrg 6880ed95aSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software 7880ed95aSmrg# Foundation, Inc. 802be438aSmrg 902be438aSmrg# This program is free software; you can redistribute it and/or modify 1002be438aSmrg# it under the terms of the GNU General Public License as published by 1102be438aSmrg# the Free Software Foundation; either version 2, or (at your option) 1202be438aSmrg# any later version. 1302be438aSmrg 1402be438aSmrg# This program is distributed in the hope that it will be useful, 1502be438aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1602be438aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1702be438aSmrg# GNU General Public License for more details. 1802be438aSmrg 1902be438aSmrg# You should have received a copy of the GNU General Public License 2002be438aSmrg# along with this program; if not, write to the Free Software 2102be438aSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2202be438aSmrg# 02110-1301, USA. 2302be438aSmrg 2402be438aSmrg# As a special exception to the GNU General Public License, if you 2502be438aSmrg# distribute this file as part of a program that contains a 2602be438aSmrg# configuration script generated by Autoconf, you may include it under 2702be438aSmrg# the same distribution terms that you use for the rest of that program. 2802be438aSmrg 2902be438aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 3002be438aSmrg 3102be438aSmrgcase $1 in 3202be438aSmrg '') 3302be438aSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3402be438aSmrg exit 1; 3502be438aSmrg ;; 3602be438aSmrg -h | --h*) 3702be438aSmrg cat <<\EOF 3802be438aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3902be438aSmrg 4002be438aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 4102be438aSmrgas side-effects. 4202be438aSmrg 4302be438aSmrgEnvironment variables: 4402be438aSmrg depmode Dependency tracking mode. 4502be438aSmrg source Source file read by `PROGRAMS ARGS'. 4602be438aSmrg object Object file output by `PROGRAMS ARGS'. 4702be438aSmrg DEPDIR directory where to store dependencies. 4802be438aSmrg depfile Dependency file to output. 4902be438aSmrg tmpdepfile Temporary file to use when outputing dependencies. 5002be438aSmrg libtool Whether libtool is used (yes/no). 5102be438aSmrg 5202be438aSmrgReport bugs to <bug-automake@gnu.org>. 5302be438aSmrgEOF 5402be438aSmrg exit $? 5502be438aSmrg ;; 5602be438aSmrg -v | --v*) 5702be438aSmrg echo "depcomp $scriptversion" 5802be438aSmrg exit $? 5902be438aSmrg ;; 6002be438aSmrgesac 6102be438aSmrg 6202be438aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6302be438aSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6402be438aSmrg exit 1 6502be438aSmrgfi 6602be438aSmrg 6702be438aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6802be438aSmrgdepfile=${depfile-`echo "$object" | 6902be438aSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 7002be438aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 7102be438aSmrg 7202be438aSmrgrm -f "$tmpdepfile" 7302be438aSmrg 7402be438aSmrg# Some modes work just like other modes, but use different flags. We 7502be438aSmrg# parameterize here, but still list the modes in the big case below, 7602be438aSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7702be438aSmrg# here, because this file can only contain one case statement. 7802be438aSmrgif test "$depmode" = hp; then 7902be438aSmrg # HP compiler uses -M and no extra arg. 8002be438aSmrg gccflag=-M 8102be438aSmrg depmode=gcc 8202be438aSmrgfi 8302be438aSmrg 8402be438aSmrgif test "$depmode" = dashXmstdout; then 8502be438aSmrg # This is just like dashmstdout with a different argument. 8602be438aSmrg dashmflag=-xM 8702be438aSmrg depmode=dashmstdout 8802be438aSmrgfi 8902be438aSmrg 9002be438aSmrgcase "$depmode" in 9102be438aSmrggcc3) 9202be438aSmrg## gcc 3 implements dependency tracking that does exactly what 9302be438aSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 9402be438aSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 95880ed95aSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 96880ed95aSmrg## the command line argument order; so add the flags where they 97880ed95aSmrg## appear in depend2.am. Note that the slowdown incurred here 98880ed95aSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 99880ed95aSmrg for arg 100880ed95aSmrg do 101880ed95aSmrg case $arg in 102880ed95aSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 103880ed95aSmrg *) set fnord "$@" "$arg" ;; 104880ed95aSmrg esac 105880ed95aSmrg shift # fnord 106880ed95aSmrg shift # $arg 107880ed95aSmrg done 108880ed95aSmrg "$@" 10902be438aSmrg stat=$? 11002be438aSmrg if test $stat -eq 0; then : 11102be438aSmrg else 11202be438aSmrg rm -f "$tmpdepfile" 11302be438aSmrg exit $stat 11402be438aSmrg fi 11502be438aSmrg mv "$tmpdepfile" "$depfile" 11602be438aSmrg ;; 11702be438aSmrg 11802be438aSmrggcc) 11902be438aSmrg## There are various ways to get dependency output from gcc. Here's 12002be438aSmrg## why we pick this rather obscure method: 12102be438aSmrg## - Don't want to use -MD because we'd like the dependencies to end 12202be438aSmrg## up in a subdir. Having to rename by hand is ugly. 12302be438aSmrg## (We might end up doing this anyway to support other compilers.) 12402be438aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 12502be438aSmrg## -MM, not -M (despite what the docs say). 12602be438aSmrg## - Using -M directly means running the compiler twice (even worse 12702be438aSmrg## than renaming). 12802be438aSmrg if test -z "$gccflag"; then 12902be438aSmrg gccflag=-MD, 13002be438aSmrg fi 13102be438aSmrg "$@" -Wp,"$gccflag$tmpdepfile" 13202be438aSmrg stat=$? 13302be438aSmrg if test $stat -eq 0; then : 13402be438aSmrg else 13502be438aSmrg rm -f "$tmpdepfile" 13602be438aSmrg exit $stat 13702be438aSmrg fi 13802be438aSmrg rm -f "$depfile" 13902be438aSmrg echo "$object : \\" > "$depfile" 14002be438aSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14102be438aSmrg## The second -e expression handles DOS-style file names with drive letters. 14202be438aSmrg sed -e 's/^[^:]*: / /' \ 14302be438aSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 14402be438aSmrg## This next piece of magic avoids the `deleted header file' problem. 14502be438aSmrg## The problem is that when a header file which appears in a .P file 14602be438aSmrg## is deleted, the dependency causes make to die (because there is 14702be438aSmrg## typically no way to rebuild the header). We avoid this by adding 14802be438aSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 14902be438aSmrg## this for us directly. 15002be438aSmrg tr ' ' ' 15102be438aSmrg' < "$tmpdepfile" | 15202be438aSmrg## Some versions of gcc put a space before the `:'. On the theory 15302be438aSmrg## that the space means something, we add a space to the output as 15402be438aSmrg## well. 15502be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 15602be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 15702be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 15802be438aSmrg rm -f "$tmpdepfile" 15902be438aSmrg ;; 16002be438aSmrg 16102be438aSmrghp) 16202be438aSmrg # This case exists only to let depend.m4 do its work. It works by 16302be438aSmrg # looking at the text of this script. This case will never be run, 16402be438aSmrg # since it is checked for above. 16502be438aSmrg exit 1 16602be438aSmrg ;; 16702be438aSmrg 16802be438aSmrgsgi) 16902be438aSmrg if test "$libtool" = yes; then 17002be438aSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17102be438aSmrg else 17202be438aSmrg "$@" -MDupdate "$tmpdepfile" 17302be438aSmrg fi 17402be438aSmrg stat=$? 17502be438aSmrg if test $stat -eq 0; then : 17602be438aSmrg else 17702be438aSmrg rm -f "$tmpdepfile" 17802be438aSmrg exit $stat 17902be438aSmrg fi 18002be438aSmrg rm -f "$depfile" 18102be438aSmrg 18202be438aSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 18302be438aSmrg echo "$object : \\" > "$depfile" 18402be438aSmrg 18502be438aSmrg # Clip off the initial element (the dependent). Don't try to be 18602be438aSmrg # clever and replace this with sed code, as IRIX sed won't handle 18702be438aSmrg # lines with more than a fixed number of characters (4096 in 18802be438aSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 18902be438aSmrg # the IRIX cc adds comments like `#:fec' to the end of the 19002be438aSmrg # dependency line. 19102be438aSmrg tr ' ' ' 19202be438aSmrg' < "$tmpdepfile" \ 19302be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 19402be438aSmrg tr ' 19502be438aSmrg' ' ' >> $depfile 19602be438aSmrg echo >> $depfile 19702be438aSmrg 19802be438aSmrg # The second pass generates a dummy entry for each header file. 19902be438aSmrg tr ' ' ' 20002be438aSmrg' < "$tmpdepfile" \ 20102be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 20202be438aSmrg >> $depfile 20302be438aSmrg else 20402be438aSmrg # The sourcefile does not contain any dependencies, so just 20502be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 20602be438aSmrg # "include basename.Plo" scheme. 20702be438aSmrg echo "#dummy" > "$depfile" 20802be438aSmrg fi 20902be438aSmrg rm -f "$tmpdepfile" 21002be438aSmrg ;; 21102be438aSmrg 21202be438aSmrgaix) 21302be438aSmrg # The C for AIX Compiler uses -M and outputs the dependencies 21402be438aSmrg # in a .u file. In older versions, this file always lives in the 21502be438aSmrg # current directory. Also, the AIX compiler puts `$object:' at the 21602be438aSmrg # start of each line; $object doesn't have directory information. 21702be438aSmrg # Version 6 uses the directory in both cases. 218880ed95aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 219880ed95aSmrg test "x$dir" = "x$object" && dir= 220880ed95aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22102be438aSmrg if test "$libtool" = yes; then 222880ed95aSmrg tmpdepfile1=$dir$base.u 223880ed95aSmrg tmpdepfile2=$base.u 224880ed95aSmrg tmpdepfile3=$dir.libs/$base.u 22502be438aSmrg "$@" -Wc,-M 22602be438aSmrg else 227880ed95aSmrg tmpdepfile1=$dir$base.u 228880ed95aSmrg tmpdepfile2=$dir$base.u 229880ed95aSmrg tmpdepfile3=$dir$base.u 23002be438aSmrg "$@" -M 23102be438aSmrg fi 23202be438aSmrg stat=$? 23302be438aSmrg 23402be438aSmrg if test $stat -eq 0; then : 23502be438aSmrg else 236880ed95aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 23702be438aSmrg exit $stat 23802be438aSmrg fi 23902be438aSmrg 240880ed95aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 241880ed95aSmrg do 242880ed95aSmrg test -f "$tmpdepfile" && break 243880ed95aSmrg done 24402be438aSmrg if test -f "$tmpdepfile"; then 24502be438aSmrg # Each line is of the form `foo.o: dependent.h'. 24602be438aSmrg # Do two passes, one to just change these to 24702be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 248880ed95aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 249880ed95aSmrg # That's a tab and a space in the []. 250880ed95aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25102be438aSmrg else 25202be438aSmrg # The sourcefile does not contain any dependencies, so just 25302be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 25402be438aSmrg # "include basename.Plo" scheme. 25502be438aSmrg echo "#dummy" > "$depfile" 25602be438aSmrg fi 25702be438aSmrg rm -f "$tmpdepfile" 25802be438aSmrg ;; 25902be438aSmrg 26002be438aSmrgicc) 26102be438aSmrg # Intel's C compiler understands `-MD -MF file'. However on 26202be438aSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 26302be438aSmrg # ICC 7.0 will fill foo.d with something like 26402be438aSmrg # foo.o: sub/foo.c 26502be438aSmrg # foo.o: sub/foo.h 26602be438aSmrg # which is wrong. We want: 26702be438aSmrg # sub/foo.o: sub/foo.c 26802be438aSmrg # sub/foo.o: sub/foo.h 26902be438aSmrg # sub/foo.c: 27002be438aSmrg # sub/foo.h: 27102be438aSmrg # ICC 7.1 will output 27202be438aSmrg # foo.o: sub/foo.c sub/foo.h 27302be438aSmrg # and will wrap long lines using \ : 27402be438aSmrg # foo.o: sub/foo.c ... \ 27502be438aSmrg # sub/foo.h ... \ 27602be438aSmrg # ... 27702be438aSmrg 27802be438aSmrg "$@" -MD -MF "$tmpdepfile" 27902be438aSmrg stat=$? 28002be438aSmrg if test $stat -eq 0; then : 28102be438aSmrg else 28202be438aSmrg rm -f "$tmpdepfile" 28302be438aSmrg exit $stat 28402be438aSmrg fi 28502be438aSmrg rm -f "$depfile" 28602be438aSmrg # Each line is of the form `foo.o: dependent.h', 28702be438aSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 28802be438aSmrg # Do two passes, one to just change these to 28902be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 29002be438aSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29102be438aSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 29202be438aSmrg # correctly. Breaking it into two sed invocations is a workaround. 29302be438aSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 29402be438aSmrg sed -e 's/$/ :/' >> "$depfile" 29502be438aSmrg rm -f "$tmpdepfile" 29602be438aSmrg ;; 29702be438aSmrg 298880ed95aSmrghp2) 299880ed95aSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 300880ed95aSmrg # compilers, which have integrated preprocessors. The correct option 301880ed95aSmrg # to use with these is +Maked; it writes dependencies to a file named 302880ed95aSmrg # 'foo.d', which lands next to the object file, wherever that 303880ed95aSmrg # happens to be. 304880ed95aSmrg # Much of this is similar to the tru64 case; see comments there. 305880ed95aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 306880ed95aSmrg test "x$dir" = "x$object" && dir= 307880ed95aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 308880ed95aSmrg if test "$libtool" = yes; then 309880ed95aSmrg tmpdepfile1=$dir$base.d 310880ed95aSmrg tmpdepfile2=$dir.libs/$base.d 311880ed95aSmrg "$@" -Wc,+Maked 312880ed95aSmrg else 313880ed95aSmrg tmpdepfile1=$dir$base.d 314880ed95aSmrg tmpdepfile2=$dir$base.d 315880ed95aSmrg "$@" +Maked 316880ed95aSmrg fi 317880ed95aSmrg stat=$? 318880ed95aSmrg if test $stat -eq 0; then : 319880ed95aSmrg else 320880ed95aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 321880ed95aSmrg exit $stat 322880ed95aSmrg fi 323880ed95aSmrg 324880ed95aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 325880ed95aSmrg do 326880ed95aSmrg test -f "$tmpdepfile" && break 327880ed95aSmrg done 328880ed95aSmrg if test -f "$tmpdepfile"; then 329880ed95aSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 330880ed95aSmrg # Add `dependent.h:' lines. 331880ed95aSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 332880ed95aSmrg else 333880ed95aSmrg echo "#dummy" > "$depfile" 334880ed95aSmrg fi 335880ed95aSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 336880ed95aSmrg ;; 337880ed95aSmrg 33802be438aSmrgtru64) 33902be438aSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 34002be438aSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 34102be438aSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 34202be438aSmrg # dependencies in `foo.d' instead, so we check for that too. 34302be438aSmrg # Subdirectories are respected. 34402be438aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 34502be438aSmrg test "x$dir" = "x$object" && dir= 34602be438aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 34702be438aSmrg 34802be438aSmrg if test "$libtool" = yes; then 34902be438aSmrg # With Tru64 cc, shared objects can also be used to make a 350880ed95aSmrg # static library. This mechanism is used in libtool 1.4 series to 35102be438aSmrg # handle both shared and static libraries in a single compilation. 35202be438aSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 35302be438aSmrg # 35402be438aSmrg # With libtool 1.5 this exception was removed, and libtool now 35502be438aSmrg # generates 2 separate objects for the 2 libraries. These two 356880ed95aSmrg # compilations output dependencies in $dir.libs/$base.o.d and 35702be438aSmrg # in $dir$base.o.d. We have to check for both files, because 35802be438aSmrg # one of the two compilations can be disabled. We should prefer 35902be438aSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 36002be438aSmrg # automatically cleaned when .libs/ is deleted, while ignoring 36102be438aSmrg # the former would cause a distcleancheck panic. 36202be438aSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 36302be438aSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 36402be438aSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 36502be438aSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 36602be438aSmrg "$@" -Wc,-MD 36702be438aSmrg else 36802be438aSmrg tmpdepfile1=$dir$base.o.d 36902be438aSmrg tmpdepfile2=$dir$base.d 37002be438aSmrg tmpdepfile3=$dir$base.d 37102be438aSmrg tmpdepfile4=$dir$base.d 37202be438aSmrg "$@" -MD 37302be438aSmrg fi 37402be438aSmrg 37502be438aSmrg stat=$? 37602be438aSmrg if test $stat -eq 0; then : 37702be438aSmrg else 37802be438aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 37902be438aSmrg exit $stat 38002be438aSmrg fi 38102be438aSmrg 38202be438aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 38302be438aSmrg do 38402be438aSmrg test -f "$tmpdepfile" && break 38502be438aSmrg done 38602be438aSmrg if test -f "$tmpdepfile"; then 38702be438aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 38802be438aSmrg # That's a tab and a space in the []. 38902be438aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 39002be438aSmrg else 39102be438aSmrg echo "#dummy" > "$depfile" 39202be438aSmrg fi 39302be438aSmrg rm -f "$tmpdepfile" 39402be438aSmrg ;; 39502be438aSmrg 39602be438aSmrg#nosideeffect) 39702be438aSmrg # This comment above is used by automake to tell side-effect 39802be438aSmrg # dependency tracking mechanisms from slower ones. 39902be438aSmrg 40002be438aSmrgdashmstdout) 40102be438aSmrg # Important note: in order to support this mode, a compiler *must* 40202be438aSmrg # always write the preprocessed file to stdout, regardless of -o. 40302be438aSmrg "$@" || exit $? 40402be438aSmrg 40502be438aSmrg # Remove the call to Libtool. 40602be438aSmrg if test "$libtool" = yes; then 40702be438aSmrg while test $1 != '--mode=compile'; do 40802be438aSmrg shift 40902be438aSmrg done 41002be438aSmrg shift 41102be438aSmrg fi 41202be438aSmrg 41302be438aSmrg # Remove `-o $object'. 41402be438aSmrg IFS=" " 41502be438aSmrg for arg 41602be438aSmrg do 41702be438aSmrg case $arg in 41802be438aSmrg -o) 41902be438aSmrg shift 42002be438aSmrg ;; 42102be438aSmrg $object) 42202be438aSmrg shift 42302be438aSmrg ;; 42402be438aSmrg *) 42502be438aSmrg set fnord "$@" "$arg" 42602be438aSmrg shift # fnord 42702be438aSmrg shift # $arg 42802be438aSmrg ;; 42902be438aSmrg esac 43002be438aSmrg done 43102be438aSmrg 43202be438aSmrg test -z "$dashmflag" && dashmflag=-M 43302be438aSmrg # Require at least two characters before searching for `:' 43402be438aSmrg # in the target name. This is to cope with DOS-style filenames: 43502be438aSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 43602be438aSmrg "$@" $dashmflag | 43702be438aSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 43802be438aSmrg rm -f "$depfile" 43902be438aSmrg cat < "$tmpdepfile" > "$depfile" 44002be438aSmrg tr ' ' ' 44102be438aSmrg' < "$tmpdepfile" | \ 44202be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 44302be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 44402be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 44502be438aSmrg rm -f "$tmpdepfile" 44602be438aSmrg ;; 44702be438aSmrg 44802be438aSmrgdashXmstdout) 44902be438aSmrg # This case only exists to satisfy depend.m4. It is never actually 45002be438aSmrg # run, as this mode is specially recognized in the preamble. 45102be438aSmrg exit 1 45202be438aSmrg ;; 45302be438aSmrg 45402be438aSmrgmakedepend) 45502be438aSmrg "$@" || exit $? 45602be438aSmrg # Remove any Libtool call 45702be438aSmrg if test "$libtool" = yes; then 45802be438aSmrg while test $1 != '--mode=compile'; do 45902be438aSmrg shift 46002be438aSmrg done 46102be438aSmrg shift 46202be438aSmrg fi 46302be438aSmrg # X makedepend 46402be438aSmrg shift 46502be438aSmrg cleared=no 46602be438aSmrg for arg in "$@"; do 46702be438aSmrg case $cleared in 46802be438aSmrg no) 46902be438aSmrg set ""; shift 47002be438aSmrg cleared=yes ;; 47102be438aSmrg esac 47202be438aSmrg case "$arg" in 47302be438aSmrg -D*|-I*) 47402be438aSmrg set fnord "$@" "$arg"; shift ;; 47502be438aSmrg # Strip any option that makedepend may not understand. Remove 47602be438aSmrg # the object too, otherwise makedepend will parse it as a source file. 47702be438aSmrg -*|$object) 47802be438aSmrg ;; 47902be438aSmrg *) 48002be438aSmrg set fnord "$@" "$arg"; shift ;; 48102be438aSmrg esac 48202be438aSmrg done 48302be438aSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 48402be438aSmrg touch "$tmpdepfile" 48502be438aSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 48602be438aSmrg rm -f "$depfile" 48702be438aSmrg cat < "$tmpdepfile" > "$depfile" 48802be438aSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 48902be438aSmrg' | \ 49002be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 49102be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 49202be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 49302be438aSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 49402be438aSmrg ;; 49502be438aSmrg 49602be438aSmrgcpp) 49702be438aSmrg # Important note: in order to support this mode, a compiler *must* 49802be438aSmrg # always write the preprocessed file to stdout. 49902be438aSmrg "$@" || exit $? 50002be438aSmrg 50102be438aSmrg # Remove the call to Libtool. 50202be438aSmrg if test "$libtool" = yes; then 50302be438aSmrg while test $1 != '--mode=compile'; do 50402be438aSmrg shift 50502be438aSmrg done 50602be438aSmrg shift 50702be438aSmrg fi 50802be438aSmrg 50902be438aSmrg # Remove `-o $object'. 51002be438aSmrg IFS=" " 51102be438aSmrg for arg 51202be438aSmrg do 51302be438aSmrg case $arg in 51402be438aSmrg -o) 51502be438aSmrg shift 51602be438aSmrg ;; 51702be438aSmrg $object) 51802be438aSmrg shift 51902be438aSmrg ;; 52002be438aSmrg *) 52102be438aSmrg set fnord "$@" "$arg" 52202be438aSmrg shift # fnord 52302be438aSmrg shift # $arg 52402be438aSmrg ;; 52502be438aSmrg esac 52602be438aSmrg done 52702be438aSmrg 52802be438aSmrg "$@" -E | 52902be438aSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 53002be438aSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 53102be438aSmrg sed '$ s: \\$::' > "$tmpdepfile" 53202be438aSmrg rm -f "$depfile" 53302be438aSmrg echo "$object : \\" > "$depfile" 53402be438aSmrg cat < "$tmpdepfile" >> "$depfile" 53502be438aSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 53602be438aSmrg rm -f "$tmpdepfile" 53702be438aSmrg ;; 53802be438aSmrg 53902be438aSmrgmsvisualcpp) 54002be438aSmrg # Important note: in order to support this mode, a compiler *must* 54102be438aSmrg # always write the preprocessed file to stdout, regardless of -o, 54202be438aSmrg # because we must use -o when running libtool. 54302be438aSmrg "$@" || exit $? 54402be438aSmrg IFS=" " 54502be438aSmrg for arg 54602be438aSmrg do 54702be438aSmrg case "$arg" in 54802be438aSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 54902be438aSmrg set fnord "$@" 55002be438aSmrg shift 55102be438aSmrg shift 55202be438aSmrg ;; 55302be438aSmrg *) 55402be438aSmrg set fnord "$@" "$arg" 55502be438aSmrg shift 55602be438aSmrg shift 55702be438aSmrg ;; 55802be438aSmrg esac 55902be438aSmrg done 56002be438aSmrg "$@" -E | 56102be438aSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 56202be438aSmrg rm -f "$depfile" 56302be438aSmrg echo "$object : \\" > "$depfile" 56402be438aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 56502be438aSmrg echo " " >> "$depfile" 56602be438aSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 56702be438aSmrg rm -f "$tmpdepfile" 56802be438aSmrg ;; 56902be438aSmrg 57002be438aSmrgnone) 57102be438aSmrg exec "$@" 57202be438aSmrg ;; 57302be438aSmrg 57402be438aSmrg*) 57502be438aSmrg echo "Unknown depmode $depmode" 1>&2 57602be438aSmrg exit 1 57702be438aSmrg ;; 57802be438aSmrgesac 57902be438aSmrg 58002be438aSmrgexit 0 58102be438aSmrg 58202be438aSmrg# Local Variables: 58302be438aSmrg# mode: shell-script 58402be438aSmrg# sh-indentation: 2 58502be438aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 58602be438aSmrg# time-stamp-start: "scriptversion=" 58702be438aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 58802be438aSmrg# time-stamp-end: "$" 58902be438aSmrg# End: 590