depcomp revision 909209ee
102be438aSmrg#! /bin/sh 202be438aSmrg# depcomp - compile a program generating dependencies as side-effects 302be438aSmrg 4909209eeSmrgscriptversion=2011-12-04.11; # UTC 502be438aSmrg 6909209eeSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 7909209eeSmrg# 2011 Free Software 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 2061dc2d86Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2102be438aSmrg 2202be438aSmrg# As a special exception to the GNU General Public License, if you 2302be438aSmrg# distribute this file as part of a program that contains a 2402be438aSmrg# configuration script generated by Autoconf, you may include it under 2502be438aSmrg# the same distribution terms that you use for the rest of that program. 2602be438aSmrg 2702be438aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2802be438aSmrg 2902be438aSmrgcase $1 in 3002be438aSmrg '') 3102be438aSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3202be438aSmrg exit 1; 3302be438aSmrg ;; 3402be438aSmrg -h | --h*) 3502be438aSmrg cat <<\EOF 3602be438aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3702be438aSmrg 3802be438aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3902be438aSmrgas side-effects. 4002be438aSmrg 4102be438aSmrgEnvironment variables: 4202be438aSmrg depmode Dependency tracking mode. 4302be438aSmrg source Source file read by `PROGRAMS ARGS'. 4402be438aSmrg object Object file output by `PROGRAMS ARGS'. 4502be438aSmrg DEPDIR directory where to store dependencies. 4602be438aSmrg depfile Dependency file to output. 47909209eeSmrg tmpdepfile Temporary file to use when outputting dependencies. 4802be438aSmrg libtool Whether libtool is used (yes/no). 4902be438aSmrg 5002be438aSmrgReport bugs to <bug-automake@gnu.org>. 5102be438aSmrgEOF 5202be438aSmrg exit $? 5302be438aSmrg ;; 5402be438aSmrg -v | --v*) 5502be438aSmrg echo "depcomp $scriptversion" 5602be438aSmrg exit $? 5702be438aSmrg ;; 5802be438aSmrgesac 5902be438aSmrg 6002be438aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6102be438aSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6202be438aSmrg exit 1 6302be438aSmrgfi 6402be438aSmrg 6502be438aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6602be438aSmrgdepfile=${depfile-`echo "$object" | 6702be438aSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6802be438aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6902be438aSmrg 7002be438aSmrgrm -f "$tmpdepfile" 7102be438aSmrg 7202be438aSmrg# Some modes work just like other modes, but use different flags. We 7302be438aSmrg# parameterize here, but still list the modes in the big case below, 7402be438aSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7502be438aSmrg# here, because this file can only contain one case statement. 7602be438aSmrgif test "$depmode" = hp; then 7702be438aSmrg # HP compiler uses -M and no extra arg. 7802be438aSmrg gccflag=-M 7902be438aSmrg depmode=gcc 8002be438aSmrgfi 8102be438aSmrg 8202be438aSmrgif test "$depmode" = dashXmstdout; then 8302be438aSmrg # This is just like dashmstdout with a different argument. 8402be438aSmrg dashmflag=-xM 8502be438aSmrg depmode=dashmstdout 8602be438aSmrgfi 8702be438aSmrg 8861dc2d86Smrgcygpath_u="cygpath -u -f -" 8961dc2d86Smrgif test "$depmode" = msvcmsys; then 9061dc2d86Smrg # This is just like msvisualcpp but w/o cygpath translation. 9161dc2d86Smrg # Just convert the backslash-escaped backslashes to single forward 9261dc2d86Smrg # slashes to satisfy depend.m4 93909209eeSmrg cygpath_u='sed s,\\\\,/,g' 9461dc2d86Smrg depmode=msvisualcpp 9561dc2d86Smrgfi 9661dc2d86Smrg 97909209eeSmrgif test "$depmode" = msvc7msys; then 98909209eeSmrg # This is just like msvc7 but w/o cygpath translation. 99909209eeSmrg # Just convert the backslash-escaped backslashes to single forward 100909209eeSmrg # slashes to satisfy depend.m4 101909209eeSmrg cygpath_u='sed s,\\\\,/,g' 102909209eeSmrg depmode=msvc7 103909209eeSmrgfi 104909209eeSmrg 10502be438aSmrgcase "$depmode" in 10602be438aSmrggcc3) 10702be438aSmrg## gcc 3 implements dependency tracking that does exactly what 10802be438aSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10902be438aSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 110880ed95aSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 111880ed95aSmrg## the command line argument order; so add the flags where they 112880ed95aSmrg## appear in depend2.am. Note that the slowdown incurred here 113880ed95aSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 114880ed95aSmrg for arg 115880ed95aSmrg do 116880ed95aSmrg case $arg in 117880ed95aSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 118880ed95aSmrg *) set fnord "$@" "$arg" ;; 119880ed95aSmrg esac 120880ed95aSmrg shift # fnord 121880ed95aSmrg shift # $arg 122880ed95aSmrg done 123880ed95aSmrg "$@" 12402be438aSmrg stat=$? 12502be438aSmrg if test $stat -eq 0; then : 12602be438aSmrg else 12702be438aSmrg rm -f "$tmpdepfile" 12802be438aSmrg exit $stat 12902be438aSmrg fi 13002be438aSmrg mv "$tmpdepfile" "$depfile" 13102be438aSmrg ;; 13202be438aSmrg 13302be438aSmrggcc) 13402be438aSmrg## There are various ways to get dependency output from gcc. Here's 13502be438aSmrg## why we pick this rather obscure method: 13602be438aSmrg## - Don't want to use -MD because we'd like the dependencies to end 13702be438aSmrg## up in a subdir. Having to rename by hand is ugly. 13802be438aSmrg## (We might end up doing this anyway to support other compilers.) 13902be438aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 14002be438aSmrg## -MM, not -M (despite what the docs say). 14102be438aSmrg## - Using -M directly means running the compiler twice (even worse 14202be438aSmrg## than renaming). 14302be438aSmrg if test -z "$gccflag"; then 14402be438aSmrg gccflag=-MD, 14502be438aSmrg fi 14602be438aSmrg "$@" -Wp,"$gccflag$tmpdepfile" 14702be438aSmrg stat=$? 14802be438aSmrg if test $stat -eq 0; then : 14902be438aSmrg else 15002be438aSmrg rm -f "$tmpdepfile" 15102be438aSmrg exit $stat 15202be438aSmrg fi 15302be438aSmrg rm -f "$depfile" 15402be438aSmrg echo "$object : \\" > "$depfile" 15502be438aSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 15602be438aSmrg## The second -e expression handles DOS-style file names with drive letters. 15702be438aSmrg sed -e 's/^[^:]*: / /' \ 15802be438aSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15902be438aSmrg## This next piece of magic avoids the `deleted header file' problem. 16002be438aSmrg## The problem is that when a header file which appears in a .P file 16102be438aSmrg## is deleted, the dependency causes make to die (because there is 16202be438aSmrg## typically no way to rebuild the header). We avoid this by adding 16302be438aSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 16402be438aSmrg## this for us directly. 16502be438aSmrg tr ' ' ' 16602be438aSmrg' < "$tmpdepfile" | 16702be438aSmrg## Some versions of gcc put a space before the `:'. On the theory 16802be438aSmrg## that the space means something, we add a space to the output as 169909209eeSmrg## well. hp depmode also adds that space, but also prefixes the VPATH 170909209eeSmrg## to the object. Take care to not repeat it in the output. 17102be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 17202be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 173909209eeSmrg sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 174909209eeSmrg | sed -e 's/$/ :/' >> "$depfile" 17502be438aSmrg rm -f "$tmpdepfile" 17602be438aSmrg ;; 17702be438aSmrg 17802be438aSmrghp) 17902be438aSmrg # This case exists only to let depend.m4 do its work. It works by 18002be438aSmrg # looking at the text of this script. This case will never be run, 18102be438aSmrg # since it is checked for above. 18202be438aSmrg exit 1 18302be438aSmrg ;; 18402be438aSmrg 18502be438aSmrgsgi) 18602be438aSmrg if test "$libtool" = yes; then 18702be438aSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 18802be438aSmrg else 18902be438aSmrg "$@" -MDupdate "$tmpdepfile" 19002be438aSmrg fi 19102be438aSmrg stat=$? 19202be438aSmrg if test $stat -eq 0; then : 19302be438aSmrg else 19402be438aSmrg rm -f "$tmpdepfile" 19502be438aSmrg exit $stat 19602be438aSmrg fi 19702be438aSmrg rm -f "$depfile" 19802be438aSmrg 19902be438aSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 20002be438aSmrg echo "$object : \\" > "$depfile" 20102be438aSmrg 20202be438aSmrg # Clip off the initial element (the dependent). Don't try to be 20302be438aSmrg # clever and replace this with sed code, as IRIX sed won't handle 20402be438aSmrg # lines with more than a fixed number of characters (4096 in 20502be438aSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 20602be438aSmrg # the IRIX cc adds comments like `#:fec' to the end of the 20702be438aSmrg # dependency line. 20802be438aSmrg tr ' ' ' 20902be438aSmrg' < "$tmpdepfile" \ 21002be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 21102be438aSmrg tr ' 21261dc2d86Smrg' ' ' >> "$depfile" 21361dc2d86Smrg echo >> "$depfile" 21402be438aSmrg 21502be438aSmrg # The second pass generates a dummy entry for each header file. 21602be438aSmrg tr ' ' ' 21702be438aSmrg' < "$tmpdepfile" \ 21802be438aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 21961dc2d86Smrg >> "$depfile" 22002be438aSmrg else 22102be438aSmrg # The sourcefile does not contain any dependencies, so just 22202be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 22302be438aSmrg # "include basename.Plo" scheme. 22402be438aSmrg echo "#dummy" > "$depfile" 22502be438aSmrg fi 22602be438aSmrg rm -f "$tmpdepfile" 22702be438aSmrg ;; 22802be438aSmrg 22902be438aSmrgaix) 23002be438aSmrg # The C for AIX Compiler uses -M and outputs the dependencies 23102be438aSmrg # in a .u file. In older versions, this file always lives in the 23202be438aSmrg # current directory. Also, the AIX compiler puts `$object:' at the 23302be438aSmrg # start of each line; $object doesn't have directory information. 23402be438aSmrg # Version 6 uses the directory in both cases. 235880ed95aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 236880ed95aSmrg test "x$dir" = "x$object" && dir= 237880ed95aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 23802be438aSmrg if test "$libtool" = yes; then 239880ed95aSmrg tmpdepfile1=$dir$base.u 240880ed95aSmrg tmpdepfile2=$base.u 241880ed95aSmrg tmpdepfile3=$dir.libs/$base.u 24202be438aSmrg "$@" -Wc,-M 24302be438aSmrg else 244880ed95aSmrg tmpdepfile1=$dir$base.u 245880ed95aSmrg tmpdepfile2=$dir$base.u 246880ed95aSmrg tmpdepfile3=$dir$base.u 24702be438aSmrg "$@" -M 24802be438aSmrg fi 24902be438aSmrg stat=$? 25002be438aSmrg 25102be438aSmrg if test $stat -eq 0; then : 25202be438aSmrg else 253880ed95aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 25402be438aSmrg exit $stat 25502be438aSmrg fi 25602be438aSmrg 257880ed95aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 258880ed95aSmrg do 259880ed95aSmrg test -f "$tmpdepfile" && break 260880ed95aSmrg done 26102be438aSmrg if test -f "$tmpdepfile"; then 26202be438aSmrg # Each line is of the form `foo.o: dependent.h'. 26302be438aSmrg # Do two passes, one to just change these to 26402be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 265880ed95aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 266880ed95aSmrg # That's a tab and a space in the []. 267880ed95aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 26802be438aSmrg else 26902be438aSmrg # The sourcefile does not contain any dependencies, so just 27002be438aSmrg # store a dummy comment line, to avoid errors with the Makefile 27102be438aSmrg # "include basename.Plo" scheme. 27202be438aSmrg echo "#dummy" > "$depfile" 27302be438aSmrg fi 27402be438aSmrg rm -f "$tmpdepfile" 27502be438aSmrg ;; 27602be438aSmrg 27702be438aSmrgicc) 27802be438aSmrg # Intel's C compiler understands `-MD -MF file'. However on 27902be438aSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 28002be438aSmrg # ICC 7.0 will fill foo.d with something like 28102be438aSmrg # foo.o: sub/foo.c 28202be438aSmrg # foo.o: sub/foo.h 28302be438aSmrg # which is wrong. We want: 28402be438aSmrg # sub/foo.o: sub/foo.c 28502be438aSmrg # sub/foo.o: sub/foo.h 28602be438aSmrg # sub/foo.c: 28702be438aSmrg # sub/foo.h: 28802be438aSmrg # ICC 7.1 will output 28902be438aSmrg # foo.o: sub/foo.c sub/foo.h 29002be438aSmrg # and will wrap long lines using \ : 29102be438aSmrg # foo.o: sub/foo.c ... \ 29202be438aSmrg # sub/foo.h ... \ 29302be438aSmrg # ... 29402be438aSmrg 29502be438aSmrg "$@" -MD -MF "$tmpdepfile" 29602be438aSmrg stat=$? 29702be438aSmrg if test $stat -eq 0; then : 29802be438aSmrg else 29902be438aSmrg rm -f "$tmpdepfile" 30002be438aSmrg exit $stat 30102be438aSmrg fi 30202be438aSmrg rm -f "$depfile" 30302be438aSmrg # Each line is of the form `foo.o: dependent.h', 30402be438aSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 30502be438aSmrg # Do two passes, one to just change these to 30602be438aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 30702be438aSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 30802be438aSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 30902be438aSmrg # correctly. Breaking it into two sed invocations is a workaround. 31002be438aSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 31102be438aSmrg sed -e 's/$/ :/' >> "$depfile" 31202be438aSmrg rm -f "$tmpdepfile" 31302be438aSmrg ;; 31402be438aSmrg 315880ed95aSmrghp2) 316880ed95aSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 317880ed95aSmrg # compilers, which have integrated preprocessors. The correct option 318880ed95aSmrg # to use with these is +Maked; it writes dependencies to a file named 319880ed95aSmrg # 'foo.d', which lands next to the object file, wherever that 320880ed95aSmrg # happens to be. 321880ed95aSmrg # Much of this is similar to the tru64 case; see comments there. 322880ed95aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 323880ed95aSmrg test "x$dir" = "x$object" && dir= 324880ed95aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 325880ed95aSmrg if test "$libtool" = yes; then 326880ed95aSmrg tmpdepfile1=$dir$base.d 327880ed95aSmrg tmpdepfile2=$dir.libs/$base.d 328880ed95aSmrg "$@" -Wc,+Maked 329880ed95aSmrg else 330880ed95aSmrg tmpdepfile1=$dir$base.d 331880ed95aSmrg tmpdepfile2=$dir$base.d 332880ed95aSmrg "$@" +Maked 333880ed95aSmrg fi 334880ed95aSmrg stat=$? 335880ed95aSmrg if test $stat -eq 0; then : 336880ed95aSmrg else 337880ed95aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 338880ed95aSmrg exit $stat 339880ed95aSmrg fi 340880ed95aSmrg 341880ed95aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 342880ed95aSmrg do 343880ed95aSmrg test -f "$tmpdepfile" && break 344880ed95aSmrg done 345880ed95aSmrg if test -f "$tmpdepfile"; then 346880ed95aSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 347880ed95aSmrg # Add `dependent.h:' lines. 34861dc2d86Smrg sed -ne '2,${ 34961dc2d86Smrg s/^ *// 35061dc2d86Smrg s/ \\*$// 35161dc2d86Smrg s/$/:/ 35261dc2d86Smrg p 35361dc2d86Smrg }' "$tmpdepfile" >> "$depfile" 354880ed95aSmrg else 355880ed95aSmrg echo "#dummy" > "$depfile" 356880ed95aSmrg fi 357880ed95aSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 358880ed95aSmrg ;; 359880ed95aSmrg 36002be438aSmrgtru64) 36102be438aSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 36202be438aSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 36302be438aSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 36402be438aSmrg # dependencies in `foo.d' instead, so we check for that too. 36502be438aSmrg # Subdirectories are respected. 36602be438aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 36702be438aSmrg test "x$dir" = "x$object" && dir= 36802be438aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 36902be438aSmrg 37002be438aSmrg if test "$libtool" = yes; then 37102be438aSmrg # With Tru64 cc, shared objects can also be used to make a 372880ed95aSmrg # static library. This mechanism is used in libtool 1.4 series to 37302be438aSmrg # handle both shared and static libraries in a single compilation. 37402be438aSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 37502be438aSmrg # 37602be438aSmrg # With libtool 1.5 this exception was removed, and libtool now 37702be438aSmrg # generates 2 separate objects for the 2 libraries. These two 378880ed95aSmrg # compilations output dependencies in $dir.libs/$base.o.d and 37902be438aSmrg # in $dir$base.o.d. We have to check for both files, because 38002be438aSmrg # one of the two compilations can be disabled. We should prefer 38102be438aSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 38202be438aSmrg # automatically cleaned when .libs/ is deleted, while ignoring 38302be438aSmrg # the former would cause a distcleancheck panic. 38402be438aSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 38502be438aSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 38602be438aSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 38702be438aSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 38802be438aSmrg "$@" -Wc,-MD 38902be438aSmrg else 39002be438aSmrg tmpdepfile1=$dir$base.o.d 39102be438aSmrg tmpdepfile2=$dir$base.d 39202be438aSmrg tmpdepfile3=$dir$base.d 39302be438aSmrg tmpdepfile4=$dir$base.d 39402be438aSmrg "$@" -MD 39502be438aSmrg fi 39602be438aSmrg 39702be438aSmrg stat=$? 39802be438aSmrg if test $stat -eq 0; then : 39902be438aSmrg else 40002be438aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40102be438aSmrg exit $stat 40202be438aSmrg fi 40302be438aSmrg 40402be438aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 40502be438aSmrg do 40602be438aSmrg test -f "$tmpdepfile" && break 40702be438aSmrg done 40802be438aSmrg if test -f "$tmpdepfile"; then 40902be438aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 41002be438aSmrg # That's a tab and a space in the []. 41102be438aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 41202be438aSmrg else 41302be438aSmrg echo "#dummy" > "$depfile" 41402be438aSmrg fi 41502be438aSmrg rm -f "$tmpdepfile" 41602be438aSmrg ;; 41702be438aSmrg 418909209eeSmrgmsvc7) 419909209eeSmrg if test "$libtool" = yes; then 420909209eeSmrg showIncludes=-Wc,-showIncludes 421909209eeSmrg else 422909209eeSmrg showIncludes=-showIncludes 423909209eeSmrg fi 424909209eeSmrg "$@" $showIncludes > "$tmpdepfile" 425909209eeSmrg stat=$? 426909209eeSmrg grep -v '^Note: including file: ' "$tmpdepfile" 427909209eeSmrg if test "$stat" = 0; then : 428909209eeSmrg else 429909209eeSmrg rm -f "$tmpdepfile" 430909209eeSmrg exit $stat 431909209eeSmrg fi 432909209eeSmrg rm -f "$depfile" 433909209eeSmrg echo "$object : \\" > "$depfile" 434909209eeSmrg # The first sed program below extracts the file names and escapes 435909209eeSmrg # backslashes for cygpath. The second sed program outputs the file 436909209eeSmrg # name when reading, but also accumulates all include files in the 437909209eeSmrg # hold buffer in order to output them again at the end. This only 438909209eeSmrg # works with sed implementations that can handle large buffers. 439909209eeSmrg sed < "$tmpdepfile" -n ' 440909209eeSmrg/^Note: including file: *\(.*\)/ { 441909209eeSmrg s//\1/ 442909209eeSmrg s/\\/\\\\/g 443909209eeSmrg p 444909209eeSmrg}' | $cygpath_u | sort -u | sed -n ' 445909209eeSmrgs/ /\\ /g 446909209eeSmrgs/\(.*\)/ \1 \\/p 447909209eeSmrgs/.\(.*\) \\/\1:/ 448909209eeSmrgH 449909209eeSmrg$ { 450909209eeSmrg s/.*/ / 451909209eeSmrg G 452909209eeSmrg p 453909209eeSmrg}' >> "$depfile" 454909209eeSmrg rm -f "$tmpdepfile" 455909209eeSmrg ;; 456909209eeSmrg 457909209eeSmrgmsvc7msys) 458909209eeSmrg # This case exists only to let depend.m4 do its work. It works by 459909209eeSmrg # looking at the text of this script. This case will never be run, 460909209eeSmrg # since it is checked for above. 461909209eeSmrg exit 1 462909209eeSmrg ;; 463909209eeSmrg 46402be438aSmrg#nosideeffect) 46502be438aSmrg # This comment above is used by automake to tell side-effect 46602be438aSmrg # dependency tracking mechanisms from slower ones. 46702be438aSmrg 46802be438aSmrgdashmstdout) 46902be438aSmrg # Important note: in order to support this mode, a compiler *must* 47002be438aSmrg # always write the preprocessed file to stdout, regardless of -o. 47102be438aSmrg "$@" || exit $? 47202be438aSmrg 47302be438aSmrg # Remove the call to Libtool. 47402be438aSmrg if test "$libtool" = yes; then 47561dc2d86Smrg while test "X$1" != 'X--mode=compile'; do 47602be438aSmrg shift 47702be438aSmrg done 47802be438aSmrg shift 47902be438aSmrg fi 48002be438aSmrg 48102be438aSmrg # Remove `-o $object'. 48202be438aSmrg IFS=" " 48302be438aSmrg for arg 48402be438aSmrg do 48502be438aSmrg case $arg in 48602be438aSmrg -o) 48702be438aSmrg shift 48802be438aSmrg ;; 48902be438aSmrg $object) 49002be438aSmrg shift 49102be438aSmrg ;; 49202be438aSmrg *) 49302be438aSmrg set fnord "$@" "$arg" 49402be438aSmrg shift # fnord 49502be438aSmrg shift # $arg 49602be438aSmrg ;; 49702be438aSmrg esac 49802be438aSmrg done 49902be438aSmrg 50002be438aSmrg test -z "$dashmflag" && dashmflag=-M 50102be438aSmrg # Require at least two characters before searching for `:' 50202be438aSmrg # in the target name. This is to cope with DOS-style filenames: 50302be438aSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 50402be438aSmrg "$@" $dashmflag | 50502be438aSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 50602be438aSmrg rm -f "$depfile" 50702be438aSmrg cat < "$tmpdepfile" > "$depfile" 50802be438aSmrg tr ' ' ' 50902be438aSmrg' < "$tmpdepfile" | \ 51002be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 51102be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 51202be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51302be438aSmrg rm -f "$tmpdepfile" 51402be438aSmrg ;; 51502be438aSmrg 51602be438aSmrgdashXmstdout) 51702be438aSmrg # This case only exists to satisfy depend.m4. It is never actually 51802be438aSmrg # run, as this mode is specially recognized in the preamble. 51902be438aSmrg exit 1 52002be438aSmrg ;; 52102be438aSmrg 52202be438aSmrgmakedepend) 52302be438aSmrg "$@" || exit $? 52402be438aSmrg # Remove any Libtool call 52502be438aSmrg if test "$libtool" = yes; then 52661dc2d86Smrg while test "X$1" != 'X--mode=compile'; do 52702be438aSmrg shift 52802be438aSmrg done 52902be438aSmrg shift 53002be438aSmrg fi 53102be438aSmrg # X makedepend 53202be438aSmrg shift 53361dc2d86Smrg cleared=no eat=no 53461dc2d86Smrg for arg 53561dc2d86Smrg do 53602be438aSmrg case $cleared in 53702be438aSmrg no) 53802be438aSmrg set ""; shift 53902be438aSmrg cleared=yes ;; 54002be438aSmrg esac 54161dc2d86Smrg if test $eat = yes; then 54261dc2d86Smrg eat=no 54361dc2d86Smrg continue 54461dc2d86Smrg fi 54502be438aSmrg case "$arg" in 54602be438aSmrg -D*|-I*) 54702be438aSmrg set fnord "$@" "$arg"; shift ;; 54802be438aSmrg # Strip any option that makedepend may not understand. Remove 54902be438aSmrg # the object too, otherwise makedepend will parse it as a source file. 55061dc2d86Smrg -arch) 55161dc2d86Smrg eat=yes ;; 55202be438aSmrg -*|$object) 55302be438aSmrg ;; 55402be438aSmrg *) 55502be438aSmrg set fnord "$@" "$arg"; shift ;; 55602be438aSmrg esac 55702be438aSmrg done 55861dc2d86Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 55902be438aSmrg touch "$tmpdepfile" 56002be438aSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 56102be438aSmrg rm -f "$depfile" 562909209eeSmrg # makedepend may prepend the VPATH from the source file name to the object. 563909209eeSmrg # No need to regex-escape $object, excess matching of '.' is harmless. 564909209eeSmrg sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 56502be438aSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 56602be438aSmrg' | \ 56702be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 56802be438aSmrg## correctly. Breaking it into two sed invocations is a workaround. 56902be438aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 57002be438aSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 57102be438aSmrg ;; 57202be438aSmrg 57302be438aSmrgcpp) 57402be438aSmrg # Important note: in order to support this mode, a compiler *must* 57502be438aSmrg # always write the preprocessed file to stdout. 57602be438aSmrg "$@" || exit $? 57702be438aSmrg 57802be438aSmrg # Remove the call to Libtool. 57902be438aSmrg if test "$libtool" = yes; then 58061dc2d86Smrg while test "X$1" != 'X--mode=compile'; do 58102be438aSmrg shift 58202be438aSmrg done 58302be438aSmrg shift 58402be438aSmrg fi 58502be438aSmrg 58602be438aSmrg # Remove `-o $object'. 58702be438aSmrg IFS=" " 58802be438aSmrg for arg 58902be438aSmrg do 59002be438aSmrg case $arg in 59102be438aSmrg -o) 59202be438aSmrg shift 59302be438aSmrg ;; 59402be438aSmrg $object) 59502be438aSmrg shift 59602be438aSmrg ;; 59702be438aSmrg *) 59802be438aSmrg set fnord "$@" "$arg" 59902be438aSmrg shift # fnord 60002be438aSmrg shift # $arg 60102be438aSmrg ;; 60202be438aSmrg esac 60302be438aSmrg done 60402be438aSmrg 60502be438aSmrg "$@" -E | 60602be438aSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 60702be438aSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 60802be438aSmrg sed '$ s: \\$::' > "$tmpdepfile" 60902be438aSmrg rm -f "$depfile" 61002be438aSmrg echo "$object : \\" > "$depfile" 61102be438aSmrg cat < "$tmpdepfile" >> "$depfile" 61202be438aSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 61302be438aSmrg rm -f "$tmpdepfile" 61402be438aSmrg ;; 61502be438aSmrg 61602be438aSmrgmsvisualcpp) 61702be438aSmrg # Important note: in order to support this mode, a compiler *must* 61861dc2d86Smrg # always write the preprocessed file to stdout. 61902be438aSmrg "$@" || exit $? 62061dc2d86Smrg 62161dc2d86Smrg # Remove the call to Libtool. 62261dc2d86Smrg if test "$libtool" = yes; then 62361dc2d86Smrg while test "X$1" != 'X--mode=compile'; do 62461dc2d86Smrg shift 62561dc2d86Smrg done 62661dc2d86Smrg shift 62761dc2d86Smrg fi 62861dc2d86Smrg 62902be438aSmrg IFS=" " 63002be438aSmrg for arg 63102be438aSmrg do 63202be438aSmrg case "$arg" in 63361dc2d86Smrg -o) 63461dc2d86Smrg shift 63561dc2d86Smrg ;; 63661dc2d86Smrg $object) 63761dc2d86Smrg shift 63861dc2d86Smrg ;; 63902be438aSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 64002be438aSmrg set fnord "$@" 64102be438aSmrg shift 64202be438aSmrg shift 64302be438aSmrg ;; 64402be438aSmrg *) 64502be438aSmrg set fnord "$@" "$arg" 64602be438aSmrg shift 64702be438aSmrg shift 64802be438aSmrg ;; 64902be438aSmrg esac 65002be438aSmrg done 65161dc2d86Smrg "$@" -E 2>/dev/null | 65261dc2d86Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 65302be438aSmrg rm -f "$depfile" 65402be438aSmrg echo "$object : \\" > "$depfile" 65561dc2d86Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 65602be438aSmrg echo " " >> "$depfile" 65761dc2d86Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 65802be438aSmrg rm -f "$tmpdepfile" 65902be438aSmrg ;; 66002be438aSmrg 66161dc2d86Smrgmsvcmsys) 66261dc2d86Smrg # This case exists only to let depend.m4 do its work. It works by 66361dc2d86Smrg # looking at the text of this script. This case will never be run, 66461dc2d86Smrg # since it is checked for above. 66561dc2d86Smrg exit 1 66661dc2d86Smrg ;; 66761dc2d86Smrg 66802be438aSmrgnone) 66902be438aSmrg exec "$@" 67002be438aSmrg ;; 67102be438aSmrg 67202be438aSmrg*) 67302be438aSmrg echo "Unknown depmode $depmode" 1>&2 67402be438aSmrg exit 1 67502be438aSmrg ;; 67602be438aSmrgesac 67702be438aSmrg 67802be438aSmrgexit 0 67902be438aSmrg 68002be438aSmrg# Local Variables: 68102be438aSmrg# mode: shell-script 68202be438aSmrg# sh-indentation: 2 68302be438aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 68402be438aSmrg# time-stamp-start: "scriptversion=" 68502be438aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 68661dc2d86Smrg# time-stamp-time-zone: "UTC" 68761dc2d86Smrg# time-stamp-end: "; # UTC" 68802be438aSmrg# End: 689