depcomp revision f40e0d56
1c95b42baSmrg#! /bin/sh 2c95b42baSmrg# depcomp - compile a program generating dependencies as side-effects 3c95b42baSmrg 4f40e0d56Smrgscriptversion=2009-04-28.21; # UTC 5c95b42baSmrg 6f40e0d56Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7f40e0d56Smrg# Software Foundation, Inc. 8c95b42baSmrg 9c95b42baSmrg# This program is free software; you can redistribute it and/or modify 10c95b42baSmrg# it under the terms of the GNU General Public License as published by 11c95b42baSmrg# the Free Software Foundation; either version 2, or (at your option) 12c95b42baSmrg# any later version. 13c95b42baSmrg 14c95b42baSmrg# This program is distributed in the hope that it will be useful, 15c95b42baSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16c95b42baSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17c95b42baSmrg# GNU General Public License for more details. 18c95b42baSmrg 19c95b42baSmrg# You should have received a copy of the GNU General Public License 20f40e0d56Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21c95b42baSmrg 22c95b42baSmrg# As a special exception to the GNU General Public License, if you 23c95b42baSmrg# distribute this file as part of a program that contains a 24c95b42baSmrg# configuration script generated by Autoconf, you may include it under 25c95b42baSmrg# the same distribution terms that you use for the rest of that program. 26c95b42baSmrg 27c95b42baSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28c95b42baSmrg 29c95b42baSmrgcase $1 in 30c95b42baSmrg '') 31c95b42baSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 32c95b42baSmrg exit 1; 33c95b42baSmrg ;; 34c95b42baSmrg -h | --h*) 35c95b42baSmrg cat <<\EOF 36c95b42baSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 37c95b42baSmrg 38c95b42baSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 39c95b42baSmrgas side-effects. 40c95b42baSmrg 41c95b42baSmrgEnvironment variables: 42c95b42baSmrg depmode Dependency tracking mode. 43c95b42baSmrg source Source file read by `PROGRAMS ARGS'. 44c95b42baSmrg object Object file output by `PROGRAMS ARGS'. 45c95b42baSmrg DEPDIR directory where to store dependencies. 46c95b42baSmrg depfile Dependency file to output. 47c95b42baSmrg tmpdepfile Temporary file to use when outputing dependencies. 48c95b42baSmrg libtool Whether libtool is used (yes/no). 49c95b42baSmrg 50c95b42baSmrgReport bugs to <bug-automake@gnu.org>. 51c95b42baSmrgEOF 52c95b42baSmrg exit $? 53c95b42baSmrg ;; 54c95b42baSmrg -v | --v*) 55c95b42baSmrg echo "depcomp $scriptversion" 56c95b42baSmrg exit $? 57c95b42baSmrg ;; 58c95b42baSmrgesac 59c95b42baSmrg 60c95b42baSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61c95b42baSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62c95b42baSmrg exit 1 63c95b42baSmrgfi 64c95b42baSmrg 65c95b42baSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 66c95b42baSmrgdepfile=${depfile-`echo "$object" | 67c95b42baSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68c95b42baSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69c95b42baSmrg 70c95b42baSmrgrm -f "$tmpdepfile" 71c95b42baSmrg 72c95b42baSmrg# Some modes work just like other modes, but use different flags. We 73c95b42baSmrg# parameterize here, but still list the modes in the big case below, 74c95b42baSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75c95b42baSmrg# here, because this file can only contain one case statement. 76c95b42baSmrgif test "$depmode" = hp; then 77c95b42baSmrg # HP compiler uses -M and no extra arg. 78c95b42baSmrg gccflag=-M 79c95b42baSmrg depmode=gcc 80c95b42baSmrgfi 81c95b42baSmrg 82c95b42baSmrgif test "$depmode" = dashXmstdout; then 83c95b42baSmrg # This is just like dashmstdout with a different argument. 84c95b42baSmrg dashmflag=-xM 85c95b42baSmrg depmode=dashmstdout 86c95b42baSmrgfi 87c95b42baSmrg 88f40e0d56Smrgcygpath_u="cygpath -u -f -" 89f40e0d56Smrgif test "$depmode" = msvcmsys; then 90f40e0d56Smrg # This is just like msvisualcpp but w/o cygpath translation. 91f40e0d56Smrg # Just convert the backslash-escaped backslashes to single forward 92f40e0d56Smrg # slashes to satisfy depend.m4 93f40e0d56Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94f40e0d56Smrg depmode=msvisualcpp 95f40e0d56Smrgfi 96f40e0d56Smrg 97c95b42baSmrgcase "$depmode" in 98c95b42baSmrggcc3) 99c95b42baSmrg## gcc 3 implements dependency tracking that does exactly what 100c95b42baSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101c95b42baSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 102f40e0d56Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 103f40e0d56Smrg## the command line argument order; so add the flags where they 104f40e0d56Smrg## appear in depend2.am. Note that the slowdown incurred here 105f40e0d56Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 106f40e0d56Smrg for arg 107f40e0d56Smrg do 108f40e0d56Smrg case $arg in 109f40e0d56Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 110f40e0d56Smrg *) set fnord "$@" "$arg" ;; 111f40e0d56Smrg esac 112f40e0d56Smrg shift # fnord 113f40e0d56Smrg shift # $arg 114f40e0d56Smrg done 115f40e0d56Smrg "$@" 116c95b42baSmrg stat=$? 117c95b42baSmrg if test $stat -eq 0; then : 118c95b42baSmrg else 119c95b42baSmrg rm -f "$tmpdepfile" 120c95b42baSmrg exit $stat 121c95b42baSmrg fi 122c95b42baSmrg mv "$tmpdepfile" "$depfile" 123c95b42baSmrg ;; 124c95b42baSmrg 125c95b42baSmrggcc) 126c95b42baSmrg## There are various ways to get dependency output from gcc. Here's 127c95b42baSmrg## why we pick this rather obscure method: 128c95b42baSmrg## - Don't want to use -MD because we'd like the dependencies to end 129c95b42baSmrg## up in a subdir. Having to rename by hand is ugly. 130c95b42baSmrg## (We might end up doing this anyway to support other compilers.) 131c95b42baSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132c95b42baSmrg## -MM, not -M (despite what the docs say). 133c95b42baSmrg## - Using -M directly means running the compiler twice (even worse 134c95b42baSmrg## than renaming). 135c95b42baSmrg if test -z "$gccflag"; then 136c95b42baSmrg gccflag=-MD, 137c95b42baSmrg fi 138c95b42baSmrg "$@" -Wp,"$gccflag$tmpdepfile" 139c95b42baSmrg stat=$? 140c95b42baSmrg if test $stat -eq 0; then : 141c95b42baSmrg else 142c95b42baSmrg rm -f "$tmpdepfile" 143c95b42baSmrg exit $stat 144c95b42baSmrg fi 145c95b42baSmrg rm -f "$depfile" 146c95b42baSmrg echo "$object : \\" > "$depfile" 147c95b42baSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148c95b42baSmrg## The second -e expression handles DOS-style file names with drive letters. 149c95b42baSmrg sed -e 's/^[^:]*: / /' \ 150c95b42baSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151c95b42baSmrg## This next piece of magic avoids the `deleted header file' problem. 152c95b42baSmrg## The problem is that when a header file which appears in a .P file 153c95b42baSmrg## is deleted, the dependency causes make to die (because there is 154c95b42baSmrg## typically no way to rebuild the header). We avoid this by adding 155c95b42baSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 156c95b42baSmrg## this for us directly. 157c95b42baSmrg tr ' ' ' 158c95b42baSmrg' < "$tmpdepfile" | 159c95b42baSmrg## Some versions of gcc put a space before the `:'. On the theory 160c95b42baSmrg## that the space means something, we add a space to the output as 161c95b42baSmrg## well. 162c95b42baSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 163c95b42baSmrg## correctly. Breaking it into two sed invocations is a workaround. 164c95b42baSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165c95b42baSmrg rm -f "$tmpdepfile" 166c95b42baSmrg ;; 167c95b42baSmrg 168c95b42baSmrghp) 169c95b42baSmrg # This case exists only to let depend.m4 do its work. It works by 170c95b42baSmrg # looking at the text of this script. This case will never be run, 171c95b42baSmrg # since it is checked for above. 172c95b42baSmrg exit 1 173c95b42baSmrg ;; 174c95b42baSmrg 175c95b42baSmrgsgi) 176c95b42baSmrg if test "$libtool" = yes; then 177c95b42baSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178c95b42baSmrg else 179c95b42baSmrg "$@" -MDupdate "$tmpdepfile" 180c95b42baSmrg fi 181c95b42baSmrg stat=$? 182c95b42baSmrg if test $stat -eq 0; then : 183c95b42baSmrg else 184c95b42baSmrg rm -f "$tmpdepfile" 185c95b42baSmrg exit $stat 186c95b42baSmrg fi 187c95b42baSmrg rm -f "$depfile" 188c95b42baSmrg 189c95b42baSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190c95b42baSmrg echo "$object : \\" > "$depfile" 191c95b42baSmrg 192c95b42baSmrg # Clip off the initial element (the dependent). Don't try to be 193c95b42baSmrg # clever and replace this with sed code, as IRIX sed won't handle 194c95b42baSmrg # lines with more than a fixed number of characters (4096 in 195c95b42baSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196c95b42baSmrg # the IRIX cc adds comments like `#:fec' to the end of the 197c95b42baSmrg # dependency line. 198c95b42baSmrg tr ' ' ' 199c95b42baSmrg' < "$tmpdepfile" \ 200c95b42baSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201c95b42baSmrg tr ' 202f40e0d56Smrg' ' ' >> "$depfile" 203f40e0d56Smrg echo >> "$depfile" 204c95b42baSmrg 205c95b42baSmrg # The second pass generates a dummy entry for each header file. 206c95b42baSmrg tr ' ' ' 207c95b42baSmrg' < "$tmpdepfile" \ 208c95b42baSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209f40e0d56Smrg >> "$depfile" 210c95b42baSmrg else 211c95b42baSmrg # The sourcefile does not contain any dependencies, so just 212c95b42baSmrg # store a dummy comment line, to avoid errors with the Makefile 213c95b42baSmrg # "include basename.Plo" scheme. 214c95b42baSmrg echo "#dummy" > "$depfile" 215c95b42baSmrg fi 216c95b42baSmrg rm -f "$tmpdepfile" 217c95b42baSmrg ;; 218c95b42baSmrg 219c95b42baSmrgaix) 220c95b42baSmrg # The C for AIX Compiler uses -M and outputs the dependencies 221c95b42baSmrg # in a .u file. In older versions, this file always lives in the 222c95b42baSmrg # current directory. Also, the AIX compiler puts `$object:' at the 223c95b42baSmrg # start of each line; $object doesn't have directory information. 224c95b42baSmrg # Version 6 uses the directory in both cases. 225f40e0d56Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226f40e0d56Smrg test "x$dir" = "x$object" && dir= 227f40e0d56Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228c95b42baSmrg if test "$libtool" = yes; then 229f40e0d56Smrg tmpdepfile1=$dir$base.u 230f40e0d56Smrg tmpdepfile2=$base.u 231f40e0d56Smrg tmpdepfile3=$dir.libs/$base.u 232c95b42baSmrg "$@" -Wc,-M 233c95b42baSmrg else 234f40e0d56Smrg tmpdepfile1=$dir$base.u 235f40e0d56Smrg tmpdepfile2=$dir$base.u 236f40e0d56Smrg tmpdepfile3=$dir$base.u 237c95b42baSmrg "$@" -M 238c95b42baSmrg fi 239c95b42baSmrg stat=$? 240c95b42baSmrg 241c95b42baSmrg if test $stat -eq 0; then : 242c95b42baSmrg else 243f40e0d56Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244c95b42baSmrg exit $stat 245c95b42baSmrg fi 246c95b42baSmrg 247f40e0d56Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248f40e0d56Smrg do 249f40e0d56Smrg test -f "$tmpdepfile" && break 250f40e0d56Smrg done 251c95b42baSmrg if test -f "$tmpdepfile"; then 252c95b42baSmrg # Each line is of the form `foo.o: dependent.h'. 253c95b42baSmrg # Do two passes, one to just change these to 254c95b42baSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 255f40e0d56Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256f40e0d56Smrg # That's a tab and a space in the []. 257f40e0d56Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258c95b42baSmrg else 259c95b42baSmrg # The sourcefile does not contain any dependencies, so just 260c95b42baSmrg # store a dummy comment line, to avoid errors with the Makefile 261c95b42baSmrg # "include basename.Plo" scheme. 262c95b42baSmrg echo "#dummy" > "$depfile" 263c95b42baSmrg fi 264c95b42baSmrg rm -f "$tmpdepfile" 265c95b42baSmrg ;; 266c95b42baSmrg 267c95b42baSmrgicc) 268c95b42baSmrg # Intel's C compiler understands `-MD -MF file'. However on 269c95b42baSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270c95b42baSmrg # ICC 7.0 will fill foo.d with something like 271c95b42baSmrg # foo.o: sub/foo.c 272c95b42baSmrg # foo.o: sub/foo.h 273c95b42baSmrg # which is wrong. We want: 274c95b42baSmrg # sub/foo.o: sub/foo.c 275c95b42baSmrg # sub/foo.o: sub/foo.h 276c95b42baSmrg # sub/foo.c: 277c95b42baSmrg # sub/foo.h: 278c95b42baSmrg # ICC 7.1 will output 279c95b42baSmrg # foo.o: sub/foo.c sub/foo.h 280c95b42baSmrg # and will wrap long lines using \ : 281c95b42baSmrg # foo.o: sub/foo.c ... \ 282c95b42baSmrg # sub/foo.h ... \ 283c95b42baSmrg # ... 284c95b42baSmrg 285c95b42baSmrg "$@" -MD -MF "$tmpdepfile" 286c95b42baSmrg stat=$? 287c95b42baSmrg if test $stat -eq 0; then : 288c95b42baSmrg else 289c95b42baSmrg rm -f "$tmpdepfile" 290c95b42baSmrg exit $stat 291c95b42baSmrg fi 292c95b42baSmrg rm -f "$depfile" 293c95b42baSmrg # Each line is of the form `foo.o: dependent.h', 294c95b42baSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295c95b42baSmrg # Do two passes, one to just change these to 296c95b42baSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 297c95b42baSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298c95b42baSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 299c95b42baSmrg # correctly. Breaking it into two sed invocations is a workaround. 300c95b42baSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301c95b42baSmrg sed -e 's/$/ :/' >> "$depfile" 302c95b42baSmrg rm -f "$tmpdepfile" 303c95b42baSmrg ;; 304c95b42baSmrg 305f40e0d56Smrghp2) 306f40e0d56Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 307f40e0d56Smrg # compilers, which have integrated preprocessors. The correct option 308f40e0d56Smrg # to use with these is +Maked; it writes dependencies to a file named 309f40e0d56Smrg # 'foo.d', which lands next to the object file, wherever that 310f40e0d56Smrg # happens to be. 311f40e0d56Smrg # Much of this is similar to the tru64 case; see comments there. 312f40e0d56Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 313f40e0d56Smrg test "x$dir" = "x$object" && dir= 314f40e0d56Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 315f40e0d56Smrg if test "$libtool" = yes; then 316f40e0d56Smrg tmpdepfile1=$dir$base.d 317f40e0d56Smrg tmpdepfile2=$dir.libs/$base.d 318f40e0d56Smrg "$@" -Wc,+Maked 319f40e0d56Smrg else 320f40e0d56Smrg tmpdepfile1=$dir$base.d 321f40e0d56Smrg tmpdepfile2=$dir$base.d 322f40e0d56Smrg "$@" +Maked 323f40e0d56Smrg fi 324f40e0d56Smrg stat=$? 325f40e0d56Smrg if test $stat -eq 0; then : 326f40e0d56Smrg else 327f40e0d56Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 328f40e0d56Smrg exit $stat 329f40e0d56Smrg fi 330f40e0d56Smrg 331f40e0d56Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 332f40e0d56Smrg do 333f40e0d56Smrg test -f "$tmpdepfile" && break 334f40e0d56Smrg done 335f40e0d56Smrg if test -f "$tmpdepfile"; then 336f40e0d56Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 337f40e0d56Smrg # Add `dependent.h:' lines. 338f40e0d56Smrg sed -ne '2,${ 339f40e0d56Smrg s/^ *// 340f40e0d56Smrg s/ \\*$// 341f40e0d56Smrg s/$/:/ 342f40e0d56Smrg p 343f40e0d56Smrg }' "$tmpdepfile" >> "$depfile" 344f40e0d56Smrg else 345f40e0d56Smrg echo "#dummy" > "$depfile" 346f40e0d56Smrg fi 347f40e0d56Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 348f40e0d56Smrg ;; 349f40e0d56Smrg 350c95b42baSmrgtru64) 351c95b42baSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 352c95b42baSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353c95b42baSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354c95b42baSmrg # dependencies in `foo.d' instead, so we check for that too. 355c95b42baSmrg # Subdirectories are respected. 356c95b42baSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357c95b42baSmrg test "x$dir" = "x$object" && dir= 358c95b42baSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359c95b42baSmrg 360c95b42baSmrg if test "$libtool" = yes; then 361c95b42baSmrg # With Tru64 cc, shared objects can also be used to make a 362f40e0d56Smrg # static library. This mechanism is used in libtool 1.4 series to 363c95b42baSmrg # handle both shared and static libraries in a single compilation. 364c95b42baSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 365c95b42baSmrg # 366c95b42baSmrg # With libtool 1.5 this exception was removed, and libtool now 367c95b42baSmrg # generates 2 separate objects for the 2 libraries. These two 368f40e0d56Smrg # compilations output dependencies in $dir.libs/$base.o.d and 369c95b42baSmrg # in $dir$base.o.d. We have to check for both files, because 370c95b42baSmrg # one of the two compilations can be disabled. We should prefer 371c95b42baSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 372c95b42baSmrg # automatically cleaned when .libs/ is deleted, while ignoring 373c95b42baSmrg # the former would cause a distcleancheck panic. 374c95b42baSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 375c95b42baSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 376c95b42baSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 377c95b42baSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378c95b42baSmrg "$@" -Wc,-MD 379c95b42baSmrg else 380c95b42baSmrg tmpdepfile1=$dir$base.o.d 381c95b42baSmrg tmpdepfile2=$dir$base.d 382c95b42baSmrg tmpdepfile3=$dir$base.d 383c95b42baSmrg tmpdepfile4=$dir$base.d 384c95b42baSmrg "$@" -MD 385c95b42baSmrg fi 386c95b42baSmrg 387c95b42baSmrg stat=$? 388c95b42baSmrg if test $stat -eq 0; then : 389c95b42baSmrg else 390c95b42baSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391c95b42baSmrg exit $stat 392c95b42baSmrg fi 393c95b42baSmrg 394c95b42baSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 395c95b42baSmrg do 396c95b42baSmrg test -f "$tmpdepfile" && break 397c95b42baSmrg done 398c95b42baSmrg if test -f "$tmpdepfile"; then 399c95b42baSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400c95b42baSmrg # That's a tab and a space in the []. 401c95b42baSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402c95b42baSmrg else 403c95b42baSmrg echo "#dummy" > "$depfile" 404c95b42baSmrg fi 405c95b42baSmrg rm -f "$tmpdepfile" 406c95b42baSmrg ;; 407c95b42baSmrg 408c95b42baSmrg#nosideeffect) 409c95b42baSmrg # This comment above is used by automake to tell side-effect 410c95b42baSmrg # dependency tracking mechanisms from slower ones. 411c95b42baSmrg 412c95b42baSmrgdashmstdout) 413c95b42baSmrg # Important note: in order to support this mode, a compiler *must* 414c95b42baSmrg # always write the preprocessed file to stdout, regardless of -o. 415c95b42baSmrg "$@" || exit $? 416c95b42baSmrg 417c95b42baSmrg # Remove the call to Libtool. 418c95b42baSmrg if test "$libtool" = yes; then 419f40e0d56Smrg while test "X$1" != 'X--mode=compile'; do 420c95b42baSmrg shift 421c95b42baSmrg done 422c95b42baSmrg shift 423c95b42baSmrg fi 424c95b42baSmrg 425c95b42baSmrg # Remove `-o $object'. 426c95b42baSmrg IFS=" " 427c95b42baSmrg for arg 428c95b42baSmrg do 429c95b42baSmrg case $arg in 430c95b42baSmrg -o) 431c95b42baSmrg shift 432c95b42baSmrg ;; 433c95b42baSmrg $object) 434c95b42baSmrg shift 435c95b42baSmrg ;; 436c95b42baSmrg *) 437c95b42baSmrg set fnord "$@" "$arg" 438c95b42baSmrg shift # fnord 439c95b42baSmrg shift # $arg 440c95b42baSmrg ;; 441c95b42baSmrg esac 442c95b42baSmrg done 443c95b42baSmrg 444c95b42baSmrg test -z "$dashmflag" && dashmflag=-M 445c95b42baSmrg # Require at least two characters before searching for `:' 446c95b42baSmrg # in the target name. This is to cope with DOS-style filenames: 447c95b42baSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448c95b42baSmrg "$@" $dashmflag | 449c95b42baSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450c95b42baSmrg rm -f "$depfile" 451c95b42baSmrg cat < "$tmpdepfile" > "$depfile" 452c95b42baSmrg tr ' ' ' 453c95b42baSmrg' < "$tmpdepfile" | \ 454c95b42baSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 455c95b42baSmrg## correctly. Breaking it into two sed invocations is a workaround. 456c95b42baSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457c95b42baSmrg rm -f "$tmpdepfile" 458c95b42baSmrg ;; 459c95b42baSmrg 460c95b42baSmrgdashXmstdout) 461c95b42baSmrg # This case only exists to satisfy depend.m4. It is never actually 462c95b42baSmrg # run, as this mode is specially recognized in the preamble. 463c95b42baSmrg exit 1 464c95b42baSmrg ;; 465c95b42baSmrg 466c95b42baSmrgmakedepend) 467c95b42baSmrg "$@" || exit $? 468c95b42baSmrg # Remove any Libtool call 469c95b42baSmrg if test "$libtool" = yes; then 470f40e0d56Smrg while test "X$1" != 'X--mode=compile'; do 471c95b42baSmrg shift 472c95b42baSmrg done 473c95b42baSmrg shift 474c95b42baSmrg fi 475c95b42baSmrg # X makedepend 476c95b42baSmrg shift 477f40e0d56Smrg cleared=no eat=no 478f40e0d56Smrg for arg 479f40e0d56Smrg do 480c95b42baSmrg case $cleared in 481c95b42baSmrg no) 482c95b42baSmrg set ""; shift 483c95b42baSmrg cleared=yes ;; 484c95b42baSmrg esac 485f40e0d56Smrg if test $eat = yes; then 486f40e0d56Smrg eat=no 487f40e0d56Smrg continue 488f40e0d56Smrg fi 489c95b42baSmrg case "$arg" in 490c95b42baSmrg -D*|-I*) 491c95b42baSmrg set fnord "$@" "$arg"; shift ;; 492c95b42baSmrg # Strip any option that makedepend may not understand. Remove 493c95b42baSmrg # the object too, otherwise makedepend will parse it as a source file. 494f40e0d56Smrg -arch) 495f40e0d56Smrg eat=yes ;; 496c95b42baSmrg -*|$object) 497c95b42baSmrg ;; 498c95b42baSmrg *) 499c95b42baSmrg set fnord "$@" "$arg"; shift ;; 500c95b42baSmrg esac 501c95b42baSmrg done 502f40e0d56Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503c95b42baSmrg touch "$tmpdepfile" 504c95b42baSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505c95b42baSmrg rm -f "$depfile" 506c95b42baSmrg cat < "$tmpdepfile" > "$depfile" 507c95b42baSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508c95b42baSmrg' | \ 509c95b42baSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 510c95b42baSmrg## correctly. Breaking it into two sed invocations is a workaround. 511c95b42baSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512c95b42baSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513c95b42baSmrg ;; 514c95b42baSmrg 515c95b42baSmrgcpp) 516c95b42baSmrg # Important note: in order to support this mode, a compiler *must* 517c95b42baSmrg # always write the preprocessed file to stdout. 518c95b42baSmrg "$@" || exit $? 519c95b42baSmrg 520c95b42baSmrg # Remove the call to Libtool. 521c95b42baSmrg if test "$libtool" = yes; then 522f40e0d56Smrg while test "X$1" != 'X--mode=compile'; do 523c95b42baSmrg shift 524c95b42baSmrg done 525c95b42baSmrg shift 526c95b42baSmrg fi 527c95b42baSmrg 528c95b42baSmrg # Remove `-o $object'. 529c95b42baSmrg IFS=" " 530c95b42baSmrg for arg 531c95b42baSmrg do 532c95b42baSmrg case $arg in 533c95b42baSmrg -o) 534c95b42baSmrg shift 535c95b42baSmrg ;; 536c95b42baSmrg $object) 537c95b42baSmrg shift 538c95b42baSmrg ;; 539c95b42baSmrg *) 540c95b42baSmrg set fnord "$@" "$arg" 541c95b42baSmrg shift # fnord 542c95b42baSmrg shift # $arg 543c95b42baSmrg ;; 544c95b42baSmrg esac 545c95b42baSmrg done 546c95b42baSmrg 547c95b42baSmrg "$@" -E | 548c95b42baSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 549c95b42baSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550c95b42baSmrg sed '$ s: \\$::' > "$tmpdepfile" 551c95b42baSmrg rm -f "$depfile" 552c95b42baSmrg echo "$object : \\" > "$depfile" 553c95b42baSmrg cat < "$tmpdepfile" >> "$depfile" 554c95b42baSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555c95b42baSmrg rm -f "$tmpdepfile" 556c95b42baSmrg ;; 557c95b42baSmrg 558c95b42baSmrgmsvisualcpp) 559c95b42baSmrg # Important note: in order to support this mode, a compiler *must* 560f40e0d56Smrg # always write the preprocessed file to stdout. 561c95b42baSmrg "$@" || exit $? 562f40e0d56Smrg 563f40e0d56Smrg # Remove the call to Libtool. 564f40e0d56Smrg if test "$libtool" = yes; then 565f40e0d56Smrg while test "X$1" != 'X--mode=compile'; do 566f40e0d56Smrg shift 567f40e0d56Smrg done 568f40e0d56Smrg shift 569f40e0d56Smrg fi 570f40e0d56Smrg 571c95b42baSmrg IFS=" " 572c95b42baSmrg for arg 573c95b42baSmrg do 574c95b42baSmrg case "$arg" in 575f40e0d56Smrg -o) 576f40e0d56Smrg shift 577f40e0d56Smrg ;; 578f40e0d56Smrg $object) 579f40e0d56Smrg shift 580f40e0d56Smrg ;; 581c95b42baSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582c95b42baSmrg set fnord "$@" 583c95b42baSmrg shift 584c95b42baSmrg shift 585c95b42baSmrg ;; 586c95b42baSmrg *) 587c95b42baSmrg set fnord "$@" "$arg" 588c95b42baSmrg shift 589c95b42baSmrg shift 590c95b42baSmrg ;; 591c95b42baSmrg esac 592c95b42baSmrg done 593f40e0d56Smrg "$@" -E 2>/dev/null | 594f40e0d56Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595c95b42baSmrg rm -f "$depfile" 596c95b42baSmrg echo "$object : \\" > "$depfile" 597f40e0d56Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598c95b42baSmrg echo " " >> "$depfile" 599f40e0d56Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600c95b42baSmrg rm -f "$tmpdepfile" 601c95b42baSmrg ;; 602c95b42baSmrg 603f40e0d56Smrgmsvcmsys) 604f40e0d56Smrg # This case exists only to let depend.m4 do its work. It works by 605f40e0d56Smrg # looking at the text of this script. This case will never be run, 606f40e0d56Smrg # since it is checked for above. 607f40e0d56Smrg exit 1 608f40e0d56Smrg ;; 609f40e0d56Smrg 610c95b42baSmrgnone) 611c95b42baSmrg exec "$@" 612c95b42baSmrg ;; 613c95b42baSmrg 614c95b42baSmrg*) 615c95b42baSmrg echo "Unknown depmode $depmode" 1>&2 616c95b42baSmrg exit 1 617c95b42baSmrg ;; 618c95b42baSmrgesac 619c95b42baSmrg 620c95b42baSmrgexit 0 621c95b42baSmrg 622c95b42baSmrg# Local Variables: 623c95b42baSmrg# mode: shell-script 624c95b42baSmrg# sh-indentation: 2 625c95b42baSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 626c95b42baSmrg# time-stamp-start: "scriptversion=" 627c95b42baSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628f40e0d56Smrg# time-stamp-time-zone: "UTC" 629f40e0d56Smrg# time-stamp-end: "; # UTC" 630c95b42baSmrg# End: 631