depcomp revision dd77ae96
172b4363aSmrg#! /bin/sh 272b4363aSmrg# depcomp - compile a program generating dependencies as side-effects 372b4363aSmrg 4dd77ae96Smrgscriptversion=2009-04-28.21; # UTC 572b4363aSmrg 6dd77ae96Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7dd77ae96Smrg# Software Foundation, Inc. 872b4363aSmrg 972b4363aSmrg# This program is free software; you can redistribute it and/or modify 1072b4363aSmrg# it under the terms of the GNU General Public License as published by 1172b4363aSmrg# the Free Software Foundation; either version 2, or (at your option) 1272b4363aSmrg# any later version. 1372b4363aSmrg 1472b4363aSmrg# This program is distributed in the hope that it will be useful, 1572b4363aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 1672b4363aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1772b4363aSmrg# GNU General Public License for more details. 1872b4363aSmrg 1972b4363aSmrg# You should have received a copy of the GNU General Public License 20dd77ae96Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 2172b4363aSmrg 2272b4363aSmrg# As a special exception to the GNU General Public License, if you 2372b4363aSmrg# distribute this file as part of a program that contains a 2472b4363aSmrg# configuration script generated by Autoconf, you may include it under 2572b4363aSmrg# the same distribution terms that you use for the rest of that program. 2672b4363aSmrg 2772b4363aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 2872b4363aSmrg 2972b4363aSmrgcase $1 in 3072b4363aSmrg '') 3172b4363aSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 3272b4363aSmrg exit 1; 3372b4363aSmrg ;; 3472b4363aSmrg -h | --h*) 3572b4363aSmrg cat <<\EOF 3672b4363aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 3772b4363aSmrg 3872b4363aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 3972b4363aSmrgas side-effects. 4072b4363aSmrg 4172b4363aSmrgEnvironment variables: 4272b4363aSmrg depmode Dependency tracking mode. 4372b4363aSmrg source Source file read by `PROGRAMS ARGS'. 4472b4363aSmrg object Object file output by `PROGRAMS ARGS'. 4572b4363aSmrg DEPDIR directory where to store dependencies. 4672b4363aSmrg depfile Dependency file to output. 4772b4363aSmrg tmpdepfile Temporary file to use when outputing dependencies. 4872b4363aSmrg libtool Whether libtool is used (yes/no). 4972b4363aSmrg 5072b4363aSmrgReport bugs to <bug-automake@gnu.org>. 5172b4363aSmrgEOF 5272b4363aSmrg exit $? 5372b4363aSmrg ;; 5472b4363aSmrg -v | --v*) 5572b4363aSmrg echo "depcomp $scriptversion" 5672b4363aSmrg exit $? 5772b4363aSmrg ;; 5872b4363aSmrgesac 5972b4363aSmrg 6072b4363aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 6172b4363aSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 6272b4363aSmrg exit 1 6372b4363aSmrgfi 6472b4363aSmrg 6572b4363aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 6672b4363aSmrgdepfile=${depfile-`echo "$object" | 6772b4363aSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 6872b4363aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 6972b4363aSmrg 7072b4363aSmrgrm -f "$tmpdepfile" 7172b4363aSmrg 7272b4363aSmrg# Some modes work just like other modes, but use different flags. We 7372b4363aSmrg# parameterize here, but still list the modes in the big case below, 7472b4363aSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 7572b4363aSmrg# here, because this file can only contain one case statement. 7672b4363aSmrgif test "$depmode" = hp; then 7772b4363aSmrg # HP compiler uses -M and no extra arg. 7872b4363aSmrg gccflag=-M 7972b4363aSmrg depmode=gcc 8072b4363aSmrgfi 8172b4363aSmrg 8272b4363aSmrgif test "$depmode" = dashXmstdout; then 8372b4363aSmrg # This is just like dashmstdout with a different argument. 8472b4363aSmrg dashmflag=-xM 8572b4363aSmrg depmode=dashmstdout 8672b4363aSmrgfi 8772b4363aSmrg 88dd77ae96Smrgcygpath_u="cygpath -u -f -" 89dd77ae96Smrgif test "$depmode" = msvcmsys; then 90dd77ae96Smrg # This is just like msvisualcpp but w/o cygpath translation. 91dd77ae96Smrg # Just convert the backslash-escaped backslashes to single forward 92dd77ae96Smrg # slashes to satisfy depend.m4 93dd77ae96Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94dd77ae96Smrg depmode=msvisualcpp 95dd77ae96Smrgfi 96dd77ae96Smrg 9772b4363aSmrgcase "$depmode" in 9872b4363aSmrggcc3) 9972b4363aSmrg## gcc 3 implements dependency tracking that does exactly what 10072b4363aSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 10172b4363aSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 10272b4363aSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 10372b4363aSmrg## the command line argument order; so add the flags where they 10472b4363aSmrg## appear in depend2.am. Note that the slowdown incurred here 10572b4363aSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 10672b4363aSmrg for arg 10772b4363aSmrg do 10872b4363aSmrg case $arg in 10972b4363aSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 11072b4363aSmrg *) set fnord "$@" "$arg" ;; 11172b4363aSmrg esac 11272b4363aSmrg shift # fnord 11372b4363aSmrg shift # $arg 11472b4363aSmrg done 11572b4363aSmrg "$@" 11672b4363aSmrg stat=$? 11772b4363aSmrg if test $stat -eq 0; then : 11872b4363aSmrg else 11972b4363aSmrg rm -f "$tmpdepfile" 12072b4363aSmrg exit $stat 12172b4363aSmrg fi 12272b4363aSmrg mv "$tmpdepfile" "$depfile" 12372b4363aSmrg ;; 12472b4363aSmrg 12572b4363aSmrggcc) 12672b4363aSmrg## There are various ways to get dependency output from gcc. Here's 12772b4363aSmrg## why we pick this rather obscure method: 12872b4363aSmrg## - Don't want to use -MD because we'd like the dependencies to end 12972b4363aSmrg## up in a subdir. Having to rename by hand is ugly. 13072b4363aSmrg## (We might end up doing this anyway to support other compilers.) 13172b4363aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 13272b4363aSmrg## -MM, not -M (despite what the docs say). 13372b4363aSmrg## - Using -M directly means running the compiler twice (even worse 13472b4363aSmrg## than renaming). 13572b4363aSmrg if test -z "$gccflag"; then 13672b4363aSmrg gccflag=-MD, 13772b4363aSmrg fi 13872b4363aSmrg "$@" -Wp,"$gccflag$tmpdepfile" 13972b4363aSmrg stat=$? 14072b4363aSmrg if test $stat -eq 0; then : 14172b4363aSmrg else 14272b4363aSmrg rm -f "$tmpdepfile" 14372b4363aSmrg exit $stat 14472b4363aSmrg fi 14572b4363aSmrg rm -f "$depfile" 14672b4363aSmrg echo "$object : \\" > "$depfile" 14772b4363aSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 14872b4363aSmrg## The second -e expression handles DOS-style file names with drive letters. 14972b4363aSmrg sed -e 's/^[^:]*: / /' \ 15072b4363aSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 15172b4363aSmrg## This next piece of magic avoids the `deleted header file' problem. 15272b4363aSmrg## The problem is that when a header file which appears in a .P file 15372b4363aSmrg## is deleted, the dependency causes make to die (because there is 15472b4363aSmrg## typically no way to rebuild the header). We avoid this by adding 15572b4363aSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 15672b4363aSmrg## this for us directly. 15772b4363aSmrg tr ' ' ' 15872b4363aSmrg' < "$tmpdepfile" | 15972b4363aSmrg## Some versions of gcc put a space before the `:'. On the theory 16072b4363aSmrg## that the space means something, we add a space to the output as 16172b4363aSmrg## well. 16272b4363aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 16372b4363aSmrg## correctly. Breaking it into two sed invocations is a workaround. 16472b4363aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 16572b4363aSmrg rm -f "$tmpdepfile" 16672b4363aSmrg ;; 16772b4363aSmrg 16872b4363aSmrghp) 16972b4363aSmrg # This case exists only to let depend.m4 do its work. It works by 17072b4363aSmrg # looking at the text of this script. This case will never be run, 17172b4363aSmrg # since it is checked for above. 17272b4363aSmrg exit 1 17372b4363aSmrg ;; 17472b4363aSmrg 17572b4363aSmrgsgi) 17672b4363aSmrg if test "$libtool" = yes; then 17772b4363aSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 17872b4363aSmrg else 17972b4363aSmrg "$@" -MDupdate "$tmpdepfile" 18072b4363aSmrg fi 18172b4363aSmrg stat=$? 18272b4363aSmrg if test $stat -eq 0; then : 18372b4363aSmrg else 18472b4363aSmrg rm -f "$tmpdepfile" 18572b4363aSmrg exit $stat 18672b4363aSmrg fi 18772b4363aSmrg rm -f "$depfile" 18872b4363aSmrg 18972b4363aSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 19072b4363aSmrg echo "$object : \\" > "$depfile" 19172b4363aSmrg 19272b4363aSmrg # Clip off the initial element (the dependent). Don't try to be 19372b4363aSmrg # clever and replace this with sed code, as IRIX sed won't handle 19472b4363aSmrg # lines with more than a fixed number of characters (4096 in 19572b4363aSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 19672b4363aSmrg # the IRIX cc adds comments like `#:fec' to the end of the 19772b4363aSmrg # dependency line. 19872b4363aSmrg tr ' ' ' 19972b4363aSmrg' < "$tmpdepfile" \ 20072b4363aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 20172b4363aSmrg tr ' 202dd77ae96Smrg' ' ' >> "$depfile" 203dd77ae96Smrg echo >> "$depfile" 20472b4363aSmrg 20572b4363aSmrg # The second pass generates a dummy entry for each header file. 20672b4363aSmrg tr ' ' ' 20772b4363aSmrg' < "$tmpdepfile" \ 20872b4363aSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209dd77ae96Smrg >> "$depfile" 21072b4363aSmrg else 21172b4363aSmrg # The sourcefile does not contain any dependencies, so just 21272b4363aSmrg # store a dummy comment line, to avoid errors with the Makefile 21372b4363aSmrg # "include basename.Plo" scheme. 21472b4363aSmrg echo "#dummy" > "$depfile" 21572b4363aSmrg fi 21672b4363aSmrg rm -f "$tmpdepfile" 21772b4363aSmrg ;; 21872b4363aSmrg 21972b4363aSmrgaix) 22072b4363aSmrg # The C for AIX Compiler uses -M and outputs the dependencies 22172b4363aSmrg # in a .u file. In older versions, this file always lives in the 22272b4363aSmrg # current directory. Also, the AIX compiler puts `$object:' at the 22372b4363aSmrg # start of each line; $object doesn't have directory information. 22472b4363aSmrg # Version 6 uses the directory in both cases. 225dd77ae96Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226dd77ae96Smrg test "x$dir" = "x$object" && dir= 227dd77ae96Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 22872b4363aSmrg if test "$libtool" = yes; then 229dd77ae96Smrg tmpdepfile1=$dir$base.u 230dd77ae96Smrg tmpdepfile2=$base.u 231dd77ae96Smrg tmpdepfile3=$dir.libs/$base.u 23272b4363aSmrg "$@" -Wc,-M 23372b4363aSmrg else 234dd77ae96Smrg tmpdepfile1=$dir$base.u 235dd77ae96Smrg tmpdepfile2=$dir$base.u 236dd77ae96Smrg tmpdepfile3=$dir$base.u 23772b4363aSmrg "$@" -M 23872b4363aSmrg fi 23972b4363aSmrg stat=$? 24072b4363aSmrg 24172b4363aSmrg if test $stat -eq 0; then : 24272b4363aSmrg else 243dd77ae96Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 24472b4363aSmrg exit $stat 24572b4363aSmrg fi 24672b4363aSmrg 247dd77ae96Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248dd77ae96Smrg do 249dd77ae96Smrg test -f "$tmpdepfile" && break 250dd77ae96Smrg done 25172b4363aSmrg if test -f "$tmpdepfile"; then 25272b4363aSmrg # Each line is of the form `foo.o: dependent.h'. 25372b4363aSmrg # Do two passes, one to just change these to 25472b4363aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 255dd77ae96Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256dd77ae96Smrg # That's a tab and a space in the []. 257dd77ae96Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 25872b4363aSmrg else 25972b4363aSmrg # The sourcefile does not contain any dependencies, so just 26072b4363aSmrg # store a dummy comment line, to avoid errors with the Makefile 26172b4363aSmrg # "include basename.Plo" scheme. 26272b4363aSmrg echo "#dummy" > "$depfile" 26372b4363aSmrg fi 26472b4363aSmrg rm -f "$tmpdepfile" 26572b4363aSmrg ;; 26672b4363aSmrg 26772b4363aSmrgicc) 26872b4363aSmrg # Intel's C compiler understands `-MD -MF file'. However on 26972b4363aSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 27072b4363aSmrg # ICC 7.0 will fill foo.d with something like 27172b4363aSmrg # foo.o: sub/foo.c 27272b4363aSmrg # foo.o: sub/foo.h 27372b4363aSmrg # which is wrong. We want: 27472b4363aSmrg # sub/foo.o: sub/foo.c 27572b4363aSmrg # sub/foo.o: sub/foo.h 27672b4363aSmrg # sub/foo.c: 27772b4363aSmrg # sub/foo.h: 27872b4363aSmrg # ICC 7.1 will output 27972b4363aSmrg # foo.o: sub/foo.c sub/foo.h 28072b4363aSmrg # and will wrap long lines using \ : 28172b4363aSmrg # foo.o: sub/foo.c ... \ 28272b4363aSmrg # sub/foo.h ... \ 28372b4363aSmrg # ... 28472b4363aSmrg 28572b4363aSmrg "$@" -MD -MF "$tmpdepfile" 28672b4363aSmrg stat=$? 28772b4363aSmrg if test $stat -eq 0; then : 28872b4363aSmrg else 28972b4363aSmrg rm -f "$tmpdepfile" 29072b4363aSmrg exit $stat 29172b4363aSmrg fi 29272b4363aSmrg rm -f "$depfile" 29372b4363aSmrg # Each line is of the form `foo.o: dependent.h', 29472b4363aSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 29572b4363aSmrg # Do two passes, one to just change these to 29672b4363aSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 29772b4363aSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 29872b4363aSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 29972b4363aSmrg # correctly. Breaking it into two sed invocations is a workaround. 30072b4363aSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 30172b4363aSmrg sed -e 's/$/ :/' >> "$depfile" 30272b4363aSmrg rm -f "$tmpdepfile" 30372b4363aSmrg ;; 30472b4363aSmrg 30572b4363aSmrghp2) 30672b4363aSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 30772b4363aSmrg # compilers, which have integrated preprocessors. The correct option 30872b4363aSmrg # to use with these is +Maked; it writes dependencies to a file named 30972b4363aSmrg # 'foo.d', which lands next to the object file, wherever that 31072b4363aSmrg # happens to be. 31172b4363aSmrg # Much of this is similar to the tru64 case; see comments there. 31272b4363aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 31372b4363aSmrg test "x$dir" = "x$object" && dir= 31472b4363aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 31572b4363aSmrg if test "$libtool" = yes; then 31672b4363aSmrg tmpdepfile1=$dir$base.d 31772b4363aSmrg tmpdepfile2=$dir.libs/$base.d 31872b4363aSmrg "$@" -Wc,+Maked 31972b4363aSmrg else 32072b4363aSmrg tmpdepfile1=$dir$base.d 32172b4363aSmrg tmpdepfile2=$dir$base.d 32272b4363aSmrg "$@" +Maked 32372b4363aSmrg fi 32472b4363aSmrg stat=$? 32572b4363aSmrg if test $stat -eq 0; then : 32672b4363aSmrg else 32772b4363aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 32872b4363aSmrg exit $stat 32972b4363aSmrg fi 33072b4363aSmrg 33172b4363aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 33272b4363aSmrg do 33372b4363aSmrg test -f "$tmpdepfile" && break 33472b4363aSmrg done 33572b4363aSmrg if test -f "$tmpdepfile"; then 33672b4363aSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 33772b4363aSmrg # Add `dependent.h:' lines. 338dd77ae96Smrg sed -ne '2,${ 339dd77ae96Smrg s/^ *// 340dd77ae96Smrg s/ \\*$// 341dd77ae96Smrg s/$/:/ 342dd77ae96Smrg p 343dd77ae96Smrg }' "$tmpdepfile" >> "$depfile" 34472b4363aSmrg else 34572b4363aSmrg echo "#dummy" > "$depfile" 34672b4363aSmrg fi 34772b4363aSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 34872b4363aSmrg ;; 34972b4363aSmrg 35072b4363aSmrgtru64) 35172b4363aSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 35272b4363aSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 35372b4363aSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 35472b4363aSmrg # dependencies in `foo.d' instead, so we check for that too. 35572b4363aSmrg # Subdirectories are respected. 35672b4363aSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 35772b4363aSmrg test "x$dir" = "x$object" && dir= 35872b4363aSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 35972b4363aSmrg 36072b4363aSmrg if test "$libtool" = yes; then 36172b4363aSmrg # With Tru64 cc, shared objects can also be used to make a 36272b4363aSmrg # static library. This mechanism is used in libtool 1.4 series to 36372b4363aSmrg # handle both shared and static libraries in a single compilation. 36472b4363aSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 36572b4363aSmrg # 36672b4363aSmrg # With libtool 1.5 this exception was removed, and libtool now 36772b4363aSmrg # generates 2 separate objects for the 2 libraries. These two 36872b4363aSmrg # compilations output dependencies in $dir.libs/$base.o.d and 36972b4363aSmrg # in $dir$base.o.d. We have to check for both files, because 37072b4363aSmrg # one of the two compilations can be disabled. We should prefer 37172b4363aSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 37272b4363aSmrg # automatically cleaned when .libs/ is deleted, while ignoring 37372b4363aSmrg # the former would cause a distcleancheck panic. 37472b4363aSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 37572b4363aSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 37672b4363aSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 37772b4363aSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 37872b4363aSmrg "$@" -Wc,-MD 37972b4363aSmrg else 38072b4363aSmrg tmpdepfile1=$dir$base.o.d 38172b4363aSmrg tmpdepfile2=$dir$base.d 38272b4363aSmrg tmpdepfile3=$dir$base.d 38372b4363aSmrg tmpdepfile4=$dir$base.d 38472b4363aSmrg "$@" -MD 38572b4363aSmrg fi 38672b4363aSmrg 38772b4363aSmrg stat=$? 38872b4363aSmrg if test $stat -eq 0; then : 38972b4363aSmrg else 39072b4363aSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39172b4363aSmrg exit $stat 39272b4363aSmrg fi 39372b4363aSmrg 39472b4363aSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 39572b4363aSmrg do 39672b4363aSmrg test -f "$tmpdepfile" && break 39772b4363aSmrg done 39872b4363aSmrg if test -f "$tmpdepfile"; then 39972b4363aSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 40072b4363aSmrg # That's a tab and a space in the []. 40172b4363aSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 40272b4363aSmrg else 40372b4363aSmrg echo "#dummy" > "$depfile" 40472b4363aSmrg fi 40572b4363aSmrg rm -f "$tmpdepfile" 40672b4363aSmrg ;; 40772b4363aSmrg 40872b4363aSmrg#nosideeffect) 40972b4363aSmrg # This comment above is used by automake to tell side-effect 41072b4363aSmrg # dependency tracking mechanisms from slower ones. 41172b4363aSmrg 41272b4363aSmrgdashmstdout) 41372b4363aSmrg # Important note: in order to support this mode, a compiler *must* 41472b4363aSmrg # always write the preprocessed file to stdout, regardless of -o. 41572b4363aSmrg "$@" || exit $? 41672b4363aSmrg 41772b4363aSmrg # Remove the call to Libtool. 41872b4363aSmrg if test "$libtool" = yes; then 419dd77ae96Smrg while test "X$1" != 'X--mode=compile'; do 42072b4363aSmrg shift 42172b4363aSmrg done 42272b4363aSmrg shift 42372b4363aSmrg fi 42472b4363aSmrg 42572b4363aSmrg # Remove `-o $object'. 42672b4363aSmrg IFS=" " 42772b4363aSmrg for arg 42872b4363aSmrg do 42972b4363aSmrg case $arg in 43072b4363aSmrg -o) 43172b4363aSmrg shift 43272b4363aSmrg ;; 43372b4363aSmrg $object) 43472b4363aSmrg shift 43572b4363aSmrg ;; 43672b4363aSmrg *) 43772b4363aSmrg set fnord "$@" "$arg" 43872b4363aSmrg shift # fnord 43972b4363aSmrg shift # $arg 44072b4363aSmrg ;; 44172b4363aSmrg esac 44272b4363aSmrg done 44372b4363aSmrg 44472b4363aSmrg test -z "$dashmflag" && dashmflag=-M 44572b4363aSmrg # Require at least two characters before searching for `:' 44672b4363aSmrg # in the target name. This is to cope with DOS-style filenames: 44772b4363aSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 44872b4363aSmrg "$@" $dashmflag | 44972b4363aSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 45072b4363aSmrg rm -f "$depfile" 45172b4363aSmrg cat < "$tmpdepfile" > "$depfile" 45272b4363aSmrg tr ' ' ' 45372b4363aSmrg' < "$tmpdepfile" | \ 45472b4363aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 45572b4363aSmrg## correctly. Breaking it into two sed invocations is a workaround. 45672b4363aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 45772b4363aSmrg rm -f "$tmpdepfile" 45872b4363aSmrg ;; 45972b4363aSmrg 46072b4363aSmrgdashXmstdout) 46172b4363aSmrg # This case only exists to satisfy depend.m4. It is never actually 46272b4363aSmrg # run, as this mode is specially recognized in the preamble. 46372b4363aSmrg exit 1 46472b4363aSmrg ;; 46572b4363aSmrg 46672b4363aSmrgmakedepend) 46772b4363aSmrg "$@" || exit $? 46872b4363aSmrg # Remove any Libtool call 46972b4363aSmrg if test "$libtool" = yes; then 470dd77ae96Smrg while test "X$1" != 'X--mode=compile'; do 47172b4363aSmrg shift 47272b4363aSmrg done 47372b4363aSmrg shift 47472b4363aSmrg fi 47572b4363aSmrg # X makedepend 47672b4363aSmrg shift 477dd77ae96Smrg cleared=no eat=no 478dd77ae96Smrg for arg 479dd77ae96Smrg do 48072b4363aSmrg case $cleared in 48172b4363aSmrg no) 48272b4363aSmrg set ""; shift 48372b4363aSmrg cleared=yes ;; 48472b4363aSmrg esac 485dd77ae96Smrg if test $eat = yes; then 486dd77ae96Smrg eat=no 487dd77ae96Smrg continue 488dd77ae96Smrg fi 48972b4363aSmrg case "$arg" in 49072b4363aSmrg -D*|-I*) 49172b4363aSmrg set fnord "$@" "$arg"; shift ;; 49272b4363aSmrg # Strip any option that makedepend may not understand. Remove 49372b4363aSmrg # the object too, otherwise makedepend will parse it as a source file. 494dd77ae96Smrg -arch) 495dd77ae96Smrg eat=yes ;; 49672b4363aSmrg -*|$object) 49772b4363aSmrg ;; 49872b4363aSmrg *) 49972b4363aSmrg set fnord "$@" "$arg"; shift ;; 50072b4363aSmrg esac 50172b4363aSmrg done 502dd77ae96Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 50372b4363aSmrg touch "$tmpdepfile" 50472b4363aSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 50572b4363aSmrg rm -f "$depfile" 50672b4363aSmrg cat < "$tmpdepfile" > "$depfile" 50772b4363aSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 50872b4363aSmrg' | \ 50972b4363aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 51072b4363aSmrg## correctly. Breaking it into two sed invocations is a workaround. 51172b4363aSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 51272b4363aSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 51372b4363aSmrg ;; 51472b4363aSmrg 51572b4363aSmrgcpp) 51672b4363aSmrg # Important note: in order to support this mode, a compiler *must* 51772b4363aSmrg # always write the preprocessed file to stdout. 51872b4363aSmrg "$@" || exit $? 51972b4363aSmrg 52072b4363aSmrg # Remove the call to Libtool. 52172b4363aSmrg if test "$libtool" = yes; then 522dd77ae96Smrg while test "X$1" != 'X--mode=compile'; do 52372b4363aSmrg shift 52472b4363aSmrg done 52572b4363aSmrg shift 52672b4363aSmrg fi 52772b4363aSmrg 52872b4363aSmrg # Remove `-o $object'. 52972b4363aSmrg IFS=" " 53072b4363aSmrg for arg 53172b4363aSmrg do 53272b4363aSmrg case $arg in 53372b4363aSmrg -o) 53472b4363aSmrg shift 53572b4363aSmrg ;; 53672b4363aSmrg $object) 53772b4363aSmrg shift 53872b4363aSmrg ;; 53972b4363aSmrg *) 54072b4363aSmrg set fnord "$@" "$arg" 54172b4363aSmrg shift # fnord 54272b4363aSmrg shift # $arg 54372b4363aSmrg ;; 54472b4363aSmrg esac 54572b4363aSmrg done 54672b4363aSmrg 54772b4363aSmrg "$@" -E | 54872b4363aSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 54972b4363aSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 55072b4363aSmrg sed '$ s: \\$::' > "$tmpdepfile" 55172b4363aSmrg rm -f "$depfile" 55272b4363aSmrg echo "$object : \\" > "$depfile" 55372b4363aSmrg cat < "$tmpdepfile" >> "$depfile" 55472b4363aSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 55572b4363aSmrg rm -f "$tmpdepfile" 55672b4363aSmrg ;; 55772b4363aSmrg 55872b4363aSmrgmsvisualcpp) 55972b4363aSmrg # Important note: in order to support this mode, a compiler *must* 560dd77ae96Smrg # always write the preprocessed file to stdout. 56172b4363aSmrg "$@" || exit $? 562dd77ae96Smrg 563dd77ae96Smrg # Remove the call to Libtool. 564dd77ae96Smrg if test "$libtool" = yes; then 565dd77ae96Smrg while test "X$1" != 'X--mode=compile'; do 566dd77ae96Smrg shift 567dd77ae96Smrg done 568dd77ae96Smrg shift 569dd77ae96Smrg fi 570dd77ae96Smrg 57172b4363aSmrg IFS=" " 57272b4363aSmrg for arg 57372b4363aSmrg do 57472b4363aSmrg case "$arg" in 575dd77ae96Smrg -o) 576dd77ae96Smrg shift 577dd77ae96Smrg ;; 578dd77ae96Smrg $object) 579dd77ae96Smrg shift 580dd77ae96Smrg ;; 58172b4363aSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 58272b4363aSmrg set fnord "$@" 58372b4363aSmrg shift 58472b4363aSmrg shift 58572b4363aSmrg ;; 58672b4363aSmrg *) 58772b4363aSmrg set fnord "$@" "$arg" 58872b4363aSmrg shift 58972b4363aSmrg shift 59072b4363aSmrg ;; 59172b4363aSmrg esac 59272b4363aSmrg done 593dd77ae96Smrg "$@" -E 2>/dev/null | 594dd77ae96Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 59572b4363aSmrg rm -f "$depfile" 59672b4363aSmrg echo "$object : \\" > "$depfile" 597dd77ae96Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 59872b4363aSmrg echo " " >> "$depfile" 599dd77ae96Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 60072b4363aSmrg rm -f "$tmpdepfile" 60172b4363aSmrg ;; 60272b4363aSmrg 603dd77ae96Smrgmsvcmsys) 604dd77ae96Smrg # This case exists only to let depend.m4 do its work. It works by 605dd77ae96Smrg # looking at the text of this script. This case will never be run, 606dd77ae96Smrg # since it is checked for above. 607dd77ae96Smrg exit 1 608dd77ae96Smrg ;; 609dd77ae96Smrg 61072b4363aSmrgnone) 61172b4363aSmrg exec "$@" 61272b4363aSmrg ;; 61372b4363aSmrg 61472b4363aSmrg*) 61572b4363aSmrg echo "Unknown depmode $depmode" 1>&2 61672b4363aSmrg exit 1 61772b4363aSmrg ;; 61872b4363aSmrgesac 61972b4363aSmrg 62072b4363aSmrgexit 0 62172b4363aSmrg 62272b4363aSmrg# Local Variables: 62372b4363aSmrg# mode: shell-script 62472b4363aSmrg# sh-indentation: 2 62572b4363aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 62672b4363aSmrg# time-stamp-start: "scriptversion=" 62772b4363aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628dd77ae96Smrg# time-stamp-time-zone: "UTC" 629dd77ae96Smrg# time-stamp-end: "; # UTC" 63072b4363aSmrg# End: 631