depcomp revision 7d17d341
1c06b6b69Smrg#! /bin/sh 2c06b6b69Smrg# depcomp - compile a program generating dependencies as side-effects 3c06b6b69Smrg 47d17d341Smrgscriptversion=2009-04-28.21; # UTC 5c06b6b69Smrg 67d17d341Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 77d17d341Smrg# Software Foundation, Inc. 8c06b6b69Smrg 9c06b6b69Smrg# This program is free software; you can redistribute it and/or modify 10c06b6b69Smrg# it under the terms of the GNU General Public License as published by 11c06b6b69Smrg# the Free Software Foundation; either version 2, or (at your option) 12c06b6b69Smrg# any later version. 13c06b6b69Smrg 14c06b6b69Smrg# This program is distributed in the hope that it will be useful, 15c06b6b69Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16c06b6b69Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17c06b6b69Smrg# GNU General Public License for more details. 18c06b6b69Smrg 19c06b6b69Smrg# You should have received a copy of the GNU General Public License 207d17d341Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21c06b6b69Smrg 22c06b6b69Smrg# As a special exception to the GNU General Public License, if you 23c06b6b69Smrg# distribute this file as part of a program that contains a 24c06b6b69Smrg# configuration script generated by Autoconf, you may include it under 25c06b6b69Smrg# the same distribution terms that you use for the rest of that program. 26c06b6b69Smrg 27c06b6b69Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28c06b6b69Smrg 29c06b6b69Smrgcase $1 in 30c06b6b69Smrg '') 31c06b6b69Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 32c06b6b69Smrg exit 1; 33c06b6b69Smrg ;; 34c06b6b69Smrg -h | --h*) 35c06b6b69Smrg cat <<\EOF 36c06b6b69SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 37c06b6b69Smrg 38c06b6b69SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 39c06b6b69Smrgas side-effects. 40c06b6b69Smrg 41c06b6b69SmrgEnvironment variables: 42c06b6b69Smrg depmode Dependency tracking mode. 43c06b6b69Smrg source Source file read by `PROGRAMS ARGS'. 44c06b6b69Smrg object Object file output by `PROGRAMS ARGS'. 45c06b6b69Smrg DEPDIR directory where to store dependencies. 46c06b6b69Smrg depfile Dependency file to output. 47c06b6b69Smrg tmpdepfile Temporary file to use when outputing dependencies. 48c06b6b69Smrg libtool Whether libtool is used (yes/no). 49c06b6b69Smrg 50c06b6b69SmrgReport bugs to <bug-automake@gnu.org>. 51c06b6b69SmrgEOF 52c06b6b69Smrg exit $? 53c06b6b69Smrg ;; 54c06b6b69Smrg -v | --v*) 55c06b6b69Smrg echo "depcomp $scriptversion" 56c06b6b69Smrg exit $? 57c06b6b69Smrg ;; 58c06b6b69Smrgesac 59c06b6b69Smrg 60c06b6b69Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61c06b6b69Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62c06b6b69Smrg exit 1 63c06b6b69Smrgfi 64c06b6b69Smrg 65c06b6b69Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 66c06b6b69Smrgdepfile=${depfile-`echo "$object" | 67c06b6b69Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68c06b6b69Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69c06b6b69Smrg 70c06b6b69Smrgrm -f "$tmpdepfile" 71c06b6b69Smrg 72c06b6b69Smrg# Some modes work just like other modes, but use different flags. We 73c06b6b69Smrg# parameterize here, but still list the modes in the big case below, 74c06b6b69Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75c06b6b69Smrg# here, because this file can only contain one case statement. 76c06b6b69Smrgif test "$depmode" = hp; then 77c06b6b69Smrg # HP compiler uses -M and no extra arg. 78c06b6b69Smrg gccflag=-M 79c06b6b69Smrg depmode=gcc 80c06b6b69Smrgfi 81c06b6b69Smrg 82c06b6b69Smrgif test "$depmode" = dashXmstdout; then 83c06b6b69Smrg # This is just like dashmstdout with a different argument. 84c06b6b69Smrg dashmflag=-xM 85c06b6b69Smrg depmode=dashmstdout 86c06b6b69Smrgfi 87c06b6b69Smrg 887d17d341Smrgcygpath_u="cygpath -u -f -" 897d17d341Smrgif test "$depmode" = msvcmsys; then 907d17d341Smrg # This is just like msvisualcpp but w/o cygpath translation. 917d17d341Smrg # Just convert the backslash-escaped backslashes to single forward 927d17d341Smrg # slashes to satisfy depend.m4 937d17d341Smrg cygpath_u="sed s,\\\\\\\\,/,g" 947d17d341Smrg depmode=msvisualcpp 957d17d341Smrgfi 967d17d341Smrg 97c06b6b69Smrgcase "$depmode" in 98c06b6b69Smrggcc3) 99c06b6b69Smrg## gcc 3 implements dependency tracking that does exactly what 100c06b6b69Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101c06b6b69Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1029f4658d1Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1039f4658d1Smrg## the command line argument order; so add the flags where they 1049f4658d1Smrg## appear in depend2.am. Note that the slowdown incurred here 1059f4658d1Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1069f4658d1Smrg for arg 1079f4658d1Smrg do 1089f4658d1Smrg case $arg in 1099f4658d1Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1109f4658d1Smrg *) set fnord "$@" "$arg" ;; 1119f4658d1Smrg esac 1129f4658d1Smrg shift # fnord 1139f4658d1Smrg shift # $arg 1149f4658d1Smrg done 1159f4658d1Smrg "$@" 116c06b6b69Smrg stat=$? 117c06b6b69Smrg if test $stat -eq 0; then : 118c06b6b69Smrg else 119c06b6b69Smrg rm -f "$tmpdepfile" 120c06b6b69Smrg exit $stat 121c06b6b69Smrg fi 122c06b6b69Smrg mv "$tmpdepfile" "$depfile" 123c06b6b69Smrg ;; 124c06b6b69Smrg 125c06b6b69Smrggcc) 126c06b6b69Smrg## There are various ways to get dependency output from gcc. Here's 127c06b6b69Smrg## why we pick this rather obscure method: 128c06b6b69Smrg## - Don't want to use -MD because we'd like the dependencies to end 129c06b6b69Smrg## up in a subdir. Having to rename by hand is ugly. 130c06b6b69Smrg## (We might end up doing this anyway to support other compilers.) 131c06b6b69Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132c06b6b69Smrg## -MM, not -M (despite what the docs say). 133c06b6b69Smrg## - Using -M directly means running the compiler twice (even worse 134c06b6b69Smrg## than renaming). 135c06b6b69Smrg if test -z "$gccflag"; then 136c06b6b69Smrg gccflag=-MD, 137c06b6b69Smrg fi 138c06b6b69Smrg "$@" -Wp,"$gccflag$tmpdepfile" 139c06b6b69Smrg stat=$? 140c06b6b69Smrg if test $stat -eq 0; then : 141c06b6b69Smrg else 142c06b6b69Smrg rm -f "$tmpdepfile" 143c06b6b69Smrg exit $stat 144c06b6b69Smrg fi 145c06b6b69Smrg rm -f "$depfile" 146c06b6b69Smrg echo "$object : \\" > "$depfile" 147c06b6b69Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148c06b6b69Smrg## The second -e expression handles DOS-style file names with drive letters. 149c06b6b69Smrg sed -e 's/^[^:]*: / /' \ 150c06b6b69Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151c06b6b69Smrg## This next piece of magic avoids the `deleted header file' problem. 152c06b6b69Smrg## The problem is that when a header file which appears in a .P file 153c06b6b69Smrg## is deleted, the dependency causes make to die (because there is 154c06b6b69Smrg## typically no way to rebuild the header). We avoid this by adding 155c06b6b69Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 156c06b6b69Smrg## this for us directly. 157c06b6b69Smrg tr ' ' ' 158c06b6b69Smrg' < "$tmpdepfile" | 159c06b6b69Smrg## Some versions of gcc put a space before the `:'. On the theory 160c06b6b69Smrg## that the space means something, we add a space to the output as 161c06b6b69Smrg## well. 162c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 163c06b6b69Smrg## correctly. Breaking it into two sed invocations is a workaround. 164c06b6b69Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165c06b6b69Smrg rm -f "$tmpdepfile" 166c06b6b69Smrg ;; 167c06b6b69Smrg 168c06b6b69Smrghp) 169c06b6b69Smrg # This case exists only to let depend.m4 do its work. It works by 170c06b6b69Smrg # looking at the text of this script. This case will never be run, 171c06b6b69Smrg # since it is checked for above. 172c06b6b69Smrg exit 1 173c06b6b69Smrg ;; 174c06b6b69Smrg 175c06b6b69Smrgsgi) 176c06b6b69Smrg if test "$libtool" = yes; then 177c06b6b69Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178c06b6b69Smrg else 179c06b6b69Smrg "$@" -MDupdate "$tmpdepfile" 180c06b6b69Smrg fi 181c06b6b69Smrg stat=$? 182c06b6b69Smrg if test $stat -eq 0; then : 183c06b6b69Smrg else 184c06b6b69Smrg rm -f "$tmpdepfile" 185c06b6b69Smrg exit $stat 186c06b6b69Smrg fi 187c06b6b69Smrg rm -f "$depfile" 188c06b6b69Smrg 189c06b6b69Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190c06b6b69Smrg echo "$object : \\" > "$depfile" 191c06b6b69Smrg 192c06b6b69Smrg # Clip off the initial element (the dependent). Don't try to be 193c06b6b69Smrg # clever and replace this with sed code, as IRIX sed won't handle 194c06b6b69Smrg # lines with more than a fixed number of characters (4096 in 195c06b6b69Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196c06b6b69Smrg # the IRIX cc adds comments like `#:fec' to the end of the 197c06b6b69Smrg # dependency line. 198c06b6b69Smrg tr ' ' ' 199c06b6b69Smrg' < "$tmpdepfile" \ 200c06b6b69Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201c06b6b69Smrg tr ' 2027d17d341Smrg' ' ' >> "$depfile" 2037d17d341Smrg echo >> "$depfile" 204c06b6b69Smrg 205c06b6b69Smrg # The second pass generates a dummy entry for each header file. 206c06b6b69Smrg tr ' ' ' 207c06b6b69Smrg' < "$tmpdepfile" \ 208c06b6b69Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2097d17d341Smrg >> "$depfile" 210c06b6b69Smrg else 211c06b6b69Smrg # The sourcefile does not contain any dependencies, so just 212c06b6b69Smrg # store a dummy comment line, to avoid errors with the Makefile 213c06b6b69Smrg # "include basename.Plo" scheme. 214c06b6b69Smrg echo "#dummy" > "$depfile" 215c06b6b69Smrg fi 216c06b6b69Smrg rm -f "$tmpdepfile" 217c06b6b69Smrg ;; 218c06b6b69Smrg 219c06b6b69Smrgaix) 220c06b6b69Smrg # The C for AIX Compiler uses -M and outputs the dependencies 221c06b6b69Smrg # in a .u file. In older versions, this file always lives in the 222c06b6b69Smrg # current directory. Also, the AIX compiler puts `$object:' at the 223c06b6b69Smrg # start of each line; $object doesn't have directory information. 224c06b6b69Smrg # Version 6 uses the directory in both cases. 2259f4658d1Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2269f4658d1Smrg test "x$dir" = "x$object" && dir= 2279f4658d1Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228c06b6b69Smrg if test "$libtool" = yes; then 2299f4658d1Smrg tmpdepfile1=$dir$base.u 2309f4658d1Smrg tmpdepfile2=$base.u 2319f4658d1Smrg tmpdepfile3=$dir.libs/$base.u 232c06b6b69Smrg "$@" -Wc,-M 233c06b6b69Smrg else 2349f4658d1Smrg tmpdepfile1=$dir$base.u 2359f4658d1Smrg tmpdepfile2=$dir$base.u 2369f4658d1Smrg tmpdepfile3=$dir$base.u 237c06b6b69Smrg "$@" -M 238c06b6b69Smrg fi 239c06b6b69Smrg stat=$? 240c06b6b69Smrg 241c06b6b69Smrg if test $stat -eq 0; then : 242c06b6b69Smrg else 2439f4658d1Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244c06b6b69Smrg exit $stat 245c06b6b69Smrg fi 246c06b6b69Smrg 2479f4658d1Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2489f4658d1Smrg do 2499f4658d1Smrg test -f "$tmpdepfile" && break 2509f4658d1Smrg done 251c06b6b69Smrg if test -f "$tmpdepfile"; then 252c06b6b69Smrg # Each line is of the form `foo.o: dependent.h'. 253c06b6b69Smrg # Do two passes, one to just change these to 254c06b6b69Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2559f4658d1Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2569f4658d1Smrg # That's a tab and a space in the []. 2579f4658d1Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258c06b6b69Smrg else 259c06b6b69Smrg # The sourcefile does not contain any dependencies, so just 260c06b6b69Smrg # store a dummy comment line, to avoid errors with the Makefile 261c06b6b69Smrg # "include basename.Plo" scheme. 262c06b6b69Smrg echo "#dummy" > "$depfile" 263c06b6b69Smrg fi 264c06b6b69Smrg rm -f "$tmpdepfile" 265c06b6b69Smrg ;; 266c06b6b69Smrg 267c06b6b69Smrgicc) 268c06b6b69Smrg # Intel's C compiler understands `-MD -MF file'. However on 269c06b6b69Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270c06b6b69Smrg # ICC 7.0 will fill foo.d with something like 271c06b6b69Smrg # foo.o: sub/foo.c 272c06b6b69Smrg # foo.o: sub/foo.h 273c06b6b69Smrg # which is wrong. We want: 274c06b6b69Smrg # sub/foo.o: sub/foo.c 275c06b6b69Smrg # sub/foo.o: sub/foo.h 276c06b6b69Smrg # sub/foo.c: 277c06b6b69Smrg # sub/foo.h: 278c06b6b69Smrg # ICC 7.1 will output 279c06b6b69Smrg # foo.o: sub/foo.c sub/foo.h 280c06b6b69Smrg # and will wrap long lines using \ : 281c06b6b69Smrg # foo.o: sub/foo.c ... \ 282c06b6b69Smrg # sub/foo.h ... \ 283c06b6b69Smrg # ... 284c06b6b69Smrg 285c06b6b69Smrg "$@" -MD -MF "$tmpdepfile" 286c06b6b69Smrg stat=$? 287c06b6b69Smrg if test $stat -eq 0; then : 288c06b6b69Smrg else 289c06b6b69Smrg rm -f "$tmpdepfile" 290c06b6b69Smrg exit $stat 291c06b6b69Smrg fi 292c06b6b69Smrg rm -f "$depfile" 293c06b6b69Smrg # Each line is of the form `foo.o: dependent.h', 294c06b6b69Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295c06b6b69Smrg # Do two passes, one to just change these to 296c06b6b69Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 297c06b6b69Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298c06b6b69Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 299c06b6b69Smrg # correctly. Breaking it into two sed invocations is a workaround. 300c06b6b69Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301c06b6b69Smrg sed -e 's/$/ :/' >> "$depfile" 302c06b6b69Smrg rm -f "$tmpdepfile" 303c06b6b69Smrg ;; 304c06b6b69Smrg 3059f4658d1Smrghp2) 3069f4658d1Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3079f4658d1Smrg # compilers, which have integrated preprocessors. The correct option 3089f4658d1Smrg # to use with these is +Maked; it writes dependencies to a file named 3099f4658d1Smrg # 'foo.d', which lands next to the object file, wherever that 3109f4658d1Smrg # happens to be. 3119f4658d1Smrg # Much of this is similar to the tru64 case; see comments there. 3129f4658d1Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3139f4658d1Smrg test "x$dir" = "x$object" && dir= 3149f4658d1Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3159f4658d1Smrg if test "$libtool" = yes; then 3169f4658d1Smrg tmpdepfile1=$dir$base.d 3179f4658d1Smrg tmpdepfile2=$dir.libs/$base.d 3189f4658d1Smrg "$@" -Wc,+Maked 3199f4658d1Smrg else 3209f4658d1Smrg tmpdepfile1=$dir$base.d 3219f4658d1Smrg tmpdepfile2=$dir$base.d 3229f4658d1Smrg "$@" +Maked 3239f4658d1Smrg fi 3249f4658d1Smrg stat=$? 3259f4658d1Smrg if test $stat -eq 0; then : 3269f4658d1Smrg else 3279f4658d1Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3289f4658d1Smrg exit $stat 3299f4658d1Smrg fi 3309f4658d1Smrg 3319f4658d1Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3329f4658d1Smrg do 3339f4658d1Smrg test -f "$tmpdepfile" && break 3349f4658d1Smrg done 3359f4658d1Smrg if test -f "$tmpdepfile"; then 3369f4658d1Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3379f4658d1Smrg # Add `dependent.h:' lines. 3387d17d341Smrg sed -ne '2,${ 3397d17d341Smrg s/^ *// 3407d17d341Smrg s/ \\*$// 3417d17d341Smrg s/$/:/ 3427d17d341Smrg p 3437d17d341Smrg }' "$tmpdepfile" >> "$depfile" 3449f4658d1Smrg else 3459f4658d1Smrg echo "#dummy" > "$depfile" 3469f4658d1Smrg fi 3479f4658d1Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3489f4658d1Smrg ;; 3499f4658d1Smrg 350c06b6b69Smrgtru64) 351c06b6b69Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 352c06b6b69Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353c06b6b69Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354c06b6b69Smrg # dependencies in `foo.d' instead, so we check for that too. 355c06b6b69Smrg # Subdirectories are respected. 356c06b6b69Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357c06b6b69Smrg test "x$dir" = "x$object" && dir= 358c06b6b69Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359c06b6b69Smrg 360c06b6b69Smrg if test "$libtool" = yes; then 361c06b6b69Smrg # With Tru64 cc, shared objects can also be used to make a 3629f4658d1Smrg # static library. This mechanism is used in libtool 1.4 series to 363c06b6b69Smrg # handle both shared and static libraries in a single compilation. 364c06b6b69Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 365c06b6b69Smrg # 366c06b6b69Smrg # With libtool 1.5 this exception was removed, and libtool now 367c06b6b69Smrg # generates 2 separate objects for the 2 libraries. These two 3689f4658d1Smrg # compilations output dependencies in $dir.libs/$base.o.d and 369c06b6b69Smrg # in $dir$base.o.d. We have to check for both files, because 370c06b6b69Smrg # one of the two compilations can be disabled. We should prefer 371c06b6b69Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 372c06b6b69Smrg # automatically cleaned when .libs/ is deleted, while ignoring 373c06b6b69Smrg # the former would cause a distcleancheck panic. 374c06b6b69Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 375c06b6b69Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 376c06b6b69Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 377c06b6b69Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378c06b6b69Smrg "$@" -Wc,-MD 379c06b6b69Smrg else 380c06b6b69Smrg tmpdepfile1=$dir$base.o.d 381c06b6b69Smrg tmpdepfile2=$dir$base.d 382c06b6b69Smrg tmpdepfile3=$dir$base.d 383c06b6b69Smrg tmpdepfile4=$dir$base.d 384c06b6b69Smrg "$@" -MD 385c06b6b69Smrg fi 386c06b6b69Smrg 387c06b6b69Smrg stat=$? 388c06b6b69Smrg if test $stat -eq 0; then : 389c06b6b69Smrg else 390c06b6b69Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391c06b6b69Smrg exit $stat 392c06b6b69Smrg fi 393c06b6b69Smrg 394c06b6b69Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 395c06b6b69Smrg do 396c06b6b69Smrg test -f "$tmpdepfile" && break 397c06b6b69Smrg done 398c06b6b69Smrg if test -f "$tmpdepfile"; then 399c06b6b69Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400c06b6b69Smrg # That's a tab and a space in the []. 401c06b6b69Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402c06b6b69Smrg else 403c06b6b69Smrg echo "#dummy" > "$depfile" 404c06b6b69Smrg fi 405c06b6b69Smrg rm -f "$tmpdepfile" 406c06b6b69Smrg ;; 407c06b6b69Smrg 408c06b6b69Smrg#nosideeffect) 409c06b6b69Smrg # This comment above is used by automake to tell side-effect 410c06b6b69Smrg # dependency tracking mechanisms from slower ones. 411c06b6b69Smrg 412c06b6b69Smrgdashmstdout) 413c06b6b69Smrg # Important note: in order to support this mode, a compiler *must* 414c06b6b69Smrg # always write the preprocessed file to stdout, regardless of -o. 415c06b6b69Smrg "$@" || exit $? 416c06b6b69Smrg 417c06b6b69Smrg # Remove the call to Libtool. 418c06b6b69Smrg if test "$libtool" = yes; then 4197d17d341Smrg while test "X$1" != 'X--mode=compile'; do 420c06b6b69Smrg shift 421c06b6b69Smrg done 422c06b6b69Smrg shift 423c06b6b69Smrg fi 424c06b6b69Smrg 425c06b6b69Smrg # Remove `-o $object'. 426c06b6b69Smrg IFS=" " 427c06b6b69Smrg for arg 428c06b6b69Smrg do 429c06b6b69Smrg case $arg in 430c06b6b69Smrg -o) 431c06b6b69Smrg shift 432c06b6b69Smrg ;; 433c06b6b69Smrg $object) 434c06b6b69Smrg shift 435c06b6b69Smrg ;; 436c06b6b69Smrg *) 437c06b6b69Smrg set fnord "$@" "$arg" 438c06b6b69Smrg shift # fnord 439c06b6b69Smrg shift # $arg 440c06b6b69Smrg ;; 441c06b6b69Smrg esac 442c06b6b69Smrg done 443c06b6b69Smrg 444c06b6b69Smrg test -z "$dashmflag" && dashmflag=-M 445c06b6b69Smrg # Require at least two characters before searching for `:' 446c06b6b69Smrg # in the target name. This is to cope with DOS-style filenames: 447c06b6b69Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448c06b6b69Smrg "$@" $dashmflag | 449c06b6b69Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450c06b6b69Smrg rm -f "$depfile" 451c06b6b69Smrg cat < "$tmpdepfile" > "$depfile" 452c06b6b69Smrg tr ' ' ' 453c06b6b69Smrg' < "$tmpdepfile" | \ 454c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 455c06b6b69Smrg## correctly. Breaking it into two sed invocations is a workaround. 456c06b6b69Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457c06b6b69Smrg rm -f "$tmpdepfile" 458c06b6b69Smrg ;; 459c06b6b69Smrg 460c06b6b69SmrgdashXmstdout) 461c06b6b69Smrg # This case only exists to satisfy depend.m4. It is never actually 462c06b6b69Smrg # run, as this mode is specially recognized in the preamble. 463c06b6b69Smrg exit 1 464c06b6b69Smrg ;; 465c06b6b69Smrg 466c06b6b69Smrgmakedepend) 467c06b6b69Smrg "$@" || exit $? 468c06b6b69Smrg # Remove any Libtool call 469c06b6b69Smrg if test "$libtool" = yes; then 4707d17d341Smrg while test "X$1" != 'X--mode=compile'; do 471c06b6b69Smrg shift 472c06b6b69Smrg done 473c06b6b69Smrg shift 474c06b6b69Smrg fi 475c06b6b69Smrg # X makedepend 476c06b6b69Smrg shift 4777d17d341Smrg cleared=no eat=no 4787d17d341Smrg for arg 4797d17d341Smrg do 480c06b6b69Smrg case $cleared in 481c06b6b69Smrg no) 482c06b6b69Smrg set ""; shift 483c06b6b69Smrg cleared=yes ;; 484c06b6b69Smrg esac 4857d17d341Smrg if test $eat = yes; then 4867d17d341Smrg eat=no 4877d17d341Smrg continue 4887d17d341Smrg fi 489c06b6b69Smrg case "$arg" in 490c06b6b69Smrg -D*|-I*) 491c06b6b69Smrg set fnord "$@" "$arg"; shift ;; 492c06b6b69Smrg # Strip any option that makedepend may not understand. Remove 493c06b6b69Smrg # the object too, otherwise makedepend will parse it as a source file. 4947d17d341Smrg -arch) 4957d17d341Smrg eat=yes ;; 496c06b6b69Smrg -*|$object) 497c06b6b69Smrg ;; 498c06b6b69Smrg *) 499c06b6b69Smrg set fnord "$@" "$arg"; shift ;; 500c06b6b69Smrg esac 501c06b6b69Smrg done 5027d17d341Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503c06b6b69Smrg touch "$tmpdepfile" 504c06b6b69Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505c06b6b69Smrg rm -f "$depfile" 506c06b6b69Smrg cat < "$tmpdepfile" > "$depfile" 507c06b6b69Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508c06b6b69Smrg' | \ 509c06b6b69Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 510c06b6b69Smrg## correctly. Breaking it into two sed invocations is a workaround. 511c06b6b69Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512c06b6b69Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513c06b6b69Smrg ;; 514c06b6b69Smrg 515c06b6b69Smrgcpp) 516c06b6b69Smrg # Important note: in order to support this mode, a compiler *must* 517c06b6b69Smrg # always write the preprocessed file to stdout. 518c06b6b69Smrg "$@" || exit $? 519c06b6b69Smrg 520c06b6b69Smrg # Remove the call to Libtool. 521c06b6b69Smrg if test "$libtool" = yes; then 5227d17d341Smrg while test "X$1" != 'X--mode=compile'; do 523c06b6b69Smrg shift 524c06b6b69Smrg done 525c06b6b69Smrg shift 526c06b6b69Smrg fi 527c06b6b69Smrg 528c06b6b69Smrg # Remove `-o $object'. 529c06b6b69Smrg IFS=" " 530c06b6b69Smrg for arg 531c06b6b69Smrg do 532c06b6b69Smrg case $arg in 533c06b6b69Smrg -o) 534c06b6b69Smrg shift 535c06b6b69Smrg ;; 536c06b6b69Smrg $object) 537c06b6b69Smrg shift 538c06b6b69Smrg ;; 539c06b6b69Smrg *) 540c06b6b69Smrg set fnord "$@" "$arg" 541c06b6b69Smrg shift # fnord 542c06b6b69Smrg shift # $arg 543c06b6b69Smrg ;; 544c06b6b69Smrg esac 545c06b6b69Smrg done 546c06b6b69Smrg 547c06b6b69Smrg "$@" -E | 548c06b6b69Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 549c06b6b69Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550c06b6b69Smrg sed '$ s: \\$::' > "$tmpdepfile" 551c06b6b69Smrg rm -f "$depfile" 552c06b6b69Smrg echo "$object : \\" > "$depfile" 553c06b6b69Smrg cat < "$tmpdepfile" >> "$depfile" 554c06b6b69Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555c06b6b69Smrg rm -f "$tmpdepfile" 556c06b6b69Smrg ;; 557c06b6b69Smrg 558c06b6b69Smrgmsvisualcpp) 559c06b6b69Smrg # Important note: in order to support this mode, a compiler *must* 5607d17d341Smrg # always write the preprocessed file to stdout. 561c06b6b69Smrg "$@" || exit $? 5627d17d341Smrg 5637d17d341Smrg # Remove the call to Libtool. 5647d17d341Smrg if test "$libtool" = yes; then 5657d17d341Smrg while test "X$1" != 'X--mode=compile'; do 5667d17d341Smrg shift 5677d17d341Smrg done 5687d17d341Smrg shift 5697d17d341Smrg fi 5707d17d341Smrg 571c06b6b69Smrg IFS=" " 572c06b6b69Smrg for arg 573c06b6b69Smrg do 574c06b6b69Smrg case "$arg" in 5757d17d341Smrg -o) 5767d17d341Smrg shift 5777d17d341Smrg ;; 5787d17d341Smrg $object) 5797d17d341Smrg shift 5807d17d341Smrg ;; 581c06b6b69Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582c06b6b69Smrg set fnord "$@" 583c06b6b69Smrg shift 584c06b6b69Smrg shift 585c06b6b69Smrg ;; 586c06b6b69Smrg *) 587c06b6b69Smrg set fnord "$@" "$arg" 588c06b6b69Smrg shift 589c06b6b69Smrg shift 590c06b6b69Smrg ;; 591c06b6b69Smrg esac 592c06b6b69Smrg done 5937d17d341Smrg "$@" -E 2>/dev/null | 5947d17d341Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595c06b6b69Smrg rm -f "$depfile" 596c06b6b69Smrg echo "$object : \\" > "$depfile" 5977d17d341Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598c06b6b69Smrg echo " " >> "$depfile" 5997d17d341Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600c06b6b69Smrg rm -f "$tmpdepfile" 601c06b6b69Smrg ;; 602c06b6b69Smrg 6037d17d341Smrgmsvcmsys) 6047d17d341Smrg # This case exists only to let depend.m4 do its work. It works by 6057d17d341Smrg # looking at the text of this script. This case will never be run, 6067d17d341Smrg # since it is checked for above. 6077d17d341Smrg exit 1 6087d17d341Smrg ;; 6097d17d341Smrg 610c06b6b69Smrgnone) 611c06b6b69Smrg exec "$@" 612c06b6b69Smrg ;; 613c06b6b69Smrg 614c06b6b69Smrg*) 615c06b6b69Smrg echo "Unknown depmode $depmode" 1>&2 616c06b6b69Smrg exit 1 617c06b6b69Smrg ;; 618c06b6b69Smrgesac 619c06b6b69Smrg 620c06b6b69Smrgexit 0 621c06b6b69Smrg 622c06b6b69Smrg# Local Variables: 623c06b6b69Smrg# mode: shell-script 624c06b6b69Smrg# sh-indentation: 2 625c06b6b69Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 626c06b6b69Smrg# time-stamp-start: "scriptversion=" 627c06b6b69Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6287d17d341Smrg# time-stamp-time-zone: "UTC" 6297d17d341Smrg# time-stamp-end: "; # UTC" 630c06b6b69Smrg# End: 631