depcomp revision 518bcf38
1c35d236eSmrg#! /bin/sh 2c35d236eSmrg# depcomp - compile a program generating dependencies as side-effects 3c35d236eSmrg 4518bcf38Smrgscriptversion=2009-04-28.21; # UTC 5c35d236eSmrg 6518bcf38Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 7518bcf38Smrg# Software Foundation, Inc. 8c35d236eSmrg 9c35d236eSmrg# This program is free software; you can redistribute it and/or modify 10c35d236eSmrg# it under the terms of the GNU General Public License as published by 11c35d236eSmrg# the Free Software Foundation; either version 2, or (at your option) 12c35d236eSmrg# any later version. 13c35d236eSmrg 14c35d236eSmrg# This program is distributed in the hope that it will be useful, 15c35d236eSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16c35d236eSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17c35d236eSmrg# GNU General Public License for more details. 18c35d236eSmrg 19c35d236eSmrg# You should have received a copy of the GNU General Public License 20518bcf38Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21c35d236eSmrg 22c35d236eSmrg# As a special exception to the GNU General Public License, if you 23c35d236eSmrg# distribute this file as part of a program that contains a 24c35d236eSmrg# configuration script generated by Autoconf, you may include it under 25c35d236eSmrg# the same distribution terms that you use for the rest of that program. 26c35d236eSmrg 27c35d236eSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28c35d236eSmrg 29c35d236eSmrgcase $1 in 30c35d236eSmrg '') 31c35d236eSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 32c35d236eSmrg exit 1; 33c35d236eSmrg ;; 34c35d236eSmrg -h | --h*) 35c35d236eSmrg cat <<\EOF 36c35d236eSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 37c35d236eSmrg 38c35d236eSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 39c35d236eSmrgas side-effects. 40c35d236eSmrg 41c35d236eSmrgEnvironment variables: 42c35d236eSmrg depmode Dependency tracking mode. 43c35d236eSmrg source Source file read by `PROGRAMS ARGS'. 44c35d236eSmrg object Object file output by `PROGRAMS ARGS'. 45c35d236eSmrg DEPDIR directory where to store dependencies. 46c35d236eSmrg depfile Dependency file to output. 47c35d236eSmrg tmpdepfile Temporary file to use when outputing dependencies. 48c35d236eSmrg libtool Whether libtool is used (yes/no). 49c35d236eSmrg 50c35d236eSmrgReport bugs to <bug-automake@gnu.org>. 51c35d236eSmrgEOF 52c35d236eSmrg exit $? 53c35d236eSmrg ;; 54c35d236eSmrg -v | --v*) 55c35d236eSmrg echo "depcomp $scriptversion" 56c35d236eSmrg exit $? 57c35d236eSmrg ;; 58c35d236eSmrgesac 59c35d236eSmrg 60c35d236eSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61c35d236eSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62c35d236eSmrg exit 1 63c35d236eSmrgfi 64c35d236eSmrg 65c35d236eSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 66c35d236eSmrgdepfile=${depfile-`echo "$object" | 67c35d236eSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68c35d236eSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69c35d236eSmrg 70c35d236eSmrgrm -f "$tmpdepfile" 71c35d236eSmrg 72c35d236eSmrg# Some modes work just like other modes, but use different flags. We 73c35d236eSmrg# parameterize here, but still list the modes in the big case below, 74c35d236eSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75c35d236eSmrg# here, because this file can only contain one case statement. 76c35d236eSmrgif test "$depmode" = hp; then 77c35d236eSmrg # HP compiler uses -M and no extra arg. 78c35d236eSmrg gccflag=-M 79c35d236eSmrg depmode=gcc 80c35d236eSmrgfi 81c35d236eSmrg 82c35d236eSmrgif test "$depmode" = dashXmstdout; then 83c35d236eSmrg # This is just like dashmstdout with a different argument. 84c35d236eSmrg dashmflag=-xM 85c35d236eSmrg depmode=dashmstdout 86c35d236eSmrgfi 87c35d236eSmrg 88518bcf38Smrgcygpath_u="cygpath -u -f -" 89518bcf38Smrgif test "$depmode" = msvcmsys; then 90518bcf38Smrg # This is just like msvisualcpp but w/o cygpath translation. 91518bcf38Smrg # Just convert the backslash-escaped backslashes to single forward 92518bcf38Smrg # slashes to satisfy depend.m4 93518bcf38Smrg cygpath_u="sed s,\\\\\\\\,/,g" 94518bcf38Smrg depmode=msvisualcpp 95518bcf38Smrgfi 96518bcf38Smrg 97c35d236eSmrgcase "$depmode" in 98c35d236eSmrggcc3) 99c35d236eSmrg## gcc 3 implements dependency tracking that does exactly what 100c35d236eSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101c35d236eSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 1024f6cd06fSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1034f6cd06fSmrg## the command line argument order; so add the flags where they 1044f6cd06fSmrg## appear in depend2.am. Note that the slowdown incurred here 1054f6cd06fSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1064f6cd06fSmrg for arg 1074f6cd06fSmrg do 1084f6cd06fSmrg case $arg in 1094f6cd06fSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1104f6cd06fSmrg *) set fnord "$@" "$arg" ;; 1114f6cd06fSmrg esac 1124f6cd06fSmrg shift # fnord 1134f6cd06fSmrg shift # $arg 1144f6cd06fSmrg done 1154f6cd06fSmrg "$@" 116c35d236eSmrg stat=$? 117c35d236eSmrg if test $stat -eq 0; then : 118c35d236eSmrg else 119c35d236eSmrg rm -f "$tmpdepfile" 120c35d236eSmrg exit $stat 121c35d236eSmrg fi 122c35d236eSmrg mv "$tmpdepfile" "$depfile" 123c35d236eSmrg ;; 124c35d236eSmrg 125c35d236eSmrggcc) 126c35d236eSmrg## There are various ways to get dependency output from gcc. Here's 127c35d236eSmrg## why we pick this rather obscure method: 128c35d236eSmrg## - Don't want to use -MD because we'd like the dependencies to end 129c35d236eSmrg## up in a subdir. Having to rename by hand is ugly. 130c35d236eSmrg## (We might end up doing this anyway to support other compilers.) 131c35d236eSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132c35d236eSmrg## -MM, not -M (despite what the docs say). 133c35d236eSmrg## - Using -M directly means running the compiler twice (even worse 134c35d236eSmrg## than renaming). 135c35d236eSmrg if test -z "$gccflag"; then 136c35d236eSmrg gccflag=-MD, 137c35d236eSmrg fi 138c35d236eSmrg "$@" -Wp,"$gccflag$tmpdepfile" 139c35d236eSmrg stat=$? 140c35d236eSmrg if test $stat -eq 0; then : 141c35d236eSmrg else 142c35d236eSmrg rm -f "$tmpdepfile" 143c35d236eSmrg exit $stat 144c35d236eSmrg fi 145c35d236eSmrg rm -f "$depfile" 146c35d236eSmrg echo "$object : \\" > "$depfile" 147c35d236eSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148c35d236eSmrg## The second -e expression handles DOS-style file names with drive letters. 149c35d236eSmrg sed -e 's/^[^:]*: / /' \ 150c35d236eSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151c35d236eSmrg## This next piece of magic avoids the `deleted header file' problem. 152c35d236eSmrg## The problem is that when a header file which appears in a .P file 153c35d236eSmrg## is deleted, the dependency causes make to die (because there is 154c35d236eSmrg## typically no way to rebuild the header). We avoid this by adding 155c35d236eSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 156c35d236eSmrg## this for us directly. 157c35d236eSmrg tr ' ' ' 158c35d236eSmrg' < "$tmpdepfile" | 159c35d236eSmrg## Some versions of gcc put a space before the `:'. On the theory 160c35d236eSmrg## that the space means something, we add a space to the output as 161c35d236eSmrg## well. 162c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 163c35d236eSmrg## correctly. Breaking it into two sed invocations is a workaround. 164c35d236eSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165c35d236eSmrg rm -f "$tmpdepfile" 166c35d236eSmrg ;; 167c35d236eSmrg 168c35d236eSmrghp) 169c35d236eSmrg # This case exists only to let depend.m4 do its work. It works by 170c35d236eSmrg # looking at the text of this script. This case will never be run, 171c35d236eSmrg # since it is checked for above. 172c35d236eSmrg exit 1 173c35d236eSmrg ;; 174c35d236eSmrg 175c35d236eSmrgsgi) 176c35d236eSmrg if test "$libtool" = yes; then 177c35d236eSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178c35d236eSmrg else 179c35d236eSmrg "$@" -MDupdate "$tmpdepfile" 180c35d236eSmrg fi 181c35d236eSmrg stat=$? 182c35d236eSmrg if test $stat -eq 0; then : 183c35d236eSmrg else 184c35d236eSmrg rm -f "$tmpdepfile" 185c35d236eSmrg exit $stat 186c35d236eSmrg fi 187c35d236eSmrg rm -f "$depfile" 188c35d236eSmrg 189c35d236eSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190c35d236eSmrg echo "$object : \\" > "$depfile" 191c35d236eSmrg 192c35d236eSmrg # Clip off the initial element (the dependent). Don't try to be 193c35d236eSmrg # clever and replace this with sed code, as IRIX sed won't handle 194c35d236eSmrg # lines with more than a fixed number of characters (4096 in 195c35d236eSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196c35d236eSmrg # the IRIX cc adds comments like `#:fec' to the end of the 197c35d236eSmrg # dependency line. 198c35d236eSmrg tr ' ' ' 199c35d236eSmrg' < "$tmpdepfile" \ 200c35d236eSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201c35d236eSmrg tr ' 202518bcf38Smrg' ' ' >> "$depfile" 203518bcf38Smrg echo >> "$depfile" 204c35d236eSmrg 205c35d236eSmrg # The second pass generates a dummy entry for each header file. 206c35d236eSmrg tr ' ' ' 207c35d236eSmrg' < "$tmpdepfile" \ 208c35d236eSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 209518bcf38Smrg >> "$depfile" 210c35d236eSmrg else 211c35d236eSmrg # The sourcefile does not contain any dependencies, so just 212c35d236eSmrg # store a dummy comment line, to avoid errors with the Makefile 213c35d236eSmrg # "include basename.Plo" scheme. 214c35d236eSmrg echo "#dummy" > "$depfile" 215c35d236eSmrg fi 216c35d236eSmrg rm -f "$tmpdepfile" 217c35d236eSmrg ;; 218c35d236eSmrg 219c35d236eSmrgaix) 220c35d236eSmrg # The C for AIX Compiler uses -M and outputs the dependencies 221c35d236eSmrg # in a .u file. In older versions, this file always lives in the 222c35d236eSmrg # current directory. Also, the AIX compiler puts `$object:' at the 223c35d236eSmrg # start of each line; $object doesn't have directory information. 224c35d236eSmrg # Version 6 uses the directory in both cases. 225f55e6a01Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 226f55e6a01Smrg test "x$dir" = "x$object" && dir= 227f55e6a01Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228c35d236eSmrg if test "$libtool" = yes; then 229f55e6a01Smrg tmpdepfile1=$dir$base.u 230f55e6a01Smrg tmpdepfile2=$base.u 231f55e6a01Smrg tmpdepfile3=$dir.libs/$base.u 232c35d236eSmrg "$@" -Wc,-M 233c35d236eSmrg else 234f55e6a01Smrg tmpdepfile1=$dir$base.u 235f55e6a01Smrg tmpdepfile2=$dir$base.u 236f55e6a01Smrg tmpdepfile3=$dir$base.u 237c35d236eSmrg "$@" -M 238c35d236eSmrg fi 239c35d236eSmrg stat=$? 240c35d236eSmrg 241c35d236eSmrg if test $stat -eq 0; then : 242c35d236eSmrg else 243f55e6a01Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244c35d236eSmrg exit $stat 245c35d236eSmrg fi 246c35d236eSmrg 247f55e6a01Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 248f55e6a01Smrg do 249f55e6a01Smrg test -f "$tmpdepfile" && break 250f55e6a01Smrg done 251c35d236eSmrg if test -f "$tmpdepfile"; then 252c35d236eSmrg # Each line is of the form `foo.o: dependent.h'. 253c35d236eSmrg # Do two passes, one to just change these to 254c35d236eSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 255f55e6a01Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 256f55e6a01Smrg # That's a tab and a space in the []. 257f55e6a01Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258c35d236eSmrg else 259c35d236eSmrg # The sourcefile does not contain any dependencies, so just 260c35d236eSmrg # store a dummy comment line, to avoid errors with the Makefile 261c35d236eSmrg # "include basename.Plo" scheme. 262c35d236eSmrg echo "#dummy" > "$depfile" 263c35d236eSmrg fi 264c35d236eSmrg rm -f "$tmpdepfile" 265c35d236eSmrg ;; 266c35d236eSmrg 267c35d236eSmrgicc) 268c35d236eSmrg # Intel's C compiler understands `-MD -MF file'. However on 269c35d236eSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270c35d236eSmrg # ICC 7.0 will fill foo.d with something like 271c35d236eSmrg # foo.o: sub/foo.c 272c35d236eSmrg # foo.o: sub/foo.h 273c35d236eSmrg # which is wrong. We want: 274c35d236eSmrg # sub/foo.o: sub/foo.c 275c35d236eSmrg # sub/foo.o: sub/foo.h 276c35d236eSmrg # sub/foo.c: 277c35d236eSmrg # sub/foo.h: 278c35d236eSmrg # ICC 7.1 will output 279c35d236eSmrg # foo.o: sub/foo.c sub/foo.h 280c35d236eSmrg # and will wrap long lines using \ : 281c35d236eSmrg # foo.o: sub/foo.c ... \ 282c35d236eSmrg # sub/foo.h ... \ 283c35d236eSmrg # ... 284c35d236eSmrg 285c35d236eSmrg "$@" -MD -MF "$tmpdepfile" 286c35d236eSmrg stat=$? 287c35d236eSmrg if test $stat -eq 0; then : 288c35d236eSmrg else 289c35d236eSmrg rm -f "$tmpdepfile" 290c35d236eSmrg exit $stat 291c35d236eSmrg fi 292c35d236eSmrg rm -f "$depfile" 293c35d236eSmrg # Each line is of the form `foo.o: dependent.h', 294c35d236eSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295c35d236eSmrg # Do two passes, one to just change these to 296c35d236eSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 297c35d236eSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298c35d236eSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 299c35d236eSmrg # correctly. Breaking it into two sed invocations is a workaround. 300c35d236eSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301c35d236eSmrg sed -e 's/$/ :/' >> "$depfile" 302c35d236eSmrg rm -f "$tmpdepfile" 303c35d236eSmrg ;; 304c35d236eSmrg 3054f6cd06fSmrghp2) 3064f6cd06fSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3074f6cd06fSmrg # compilers, which have integrated preprocessors. The correct option 3084f6cd06fSmrg # to use with these is +Maked; it writes dependencies to a file named 3094f6cd06fSmrg # 'foo.d', which lands next to the object file, wherever that 3104f6cd06fSmrg # happens to be. 3114f6cd06fSmrg # Much of this is similar to the tru64 case; see comments there. 3124f6cd06fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3134f6cd06fSmrg test "x$dir" = "x$object" && dir= 3144f6cd06fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3154f6cd06fSmrg if test "$libtool" = yes; then 3164f6cd06fSmrg tmpdepfile1=$dir$base.d 3174f6cd06fSmrg tmpdepfile2=$dir.libs/$base.d 3184f6cd06fSmrg "$@" -Wc,+Maked 3194f6cd06fSmrg else 3204f6cd06fSmrg tmpdepfile1=$dir$base.d 3214f6cd06fSmrg tmpdepfile2=$dir$base.d 3224f6cd06fSmrg "$@" +Maked 3234f6cd06fSmrg fi 3244f6cd06fSmrg stat=$? 3254f6cd06fSmrg if test $stat -eq 0; then : 3264f6cd06fSmrg else 3274f6cd06fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3284f6cd06fSmrg exit $stat 3294f6cd06fSmrg fi 3304f6cd06fSmrg 3314f6cd06fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3324f6cd06fSmrg do 3334f6cd06fSmrg test -f "$tmpdepfile" && break 3344f6cd06fSmrg done 3354f6cd06fSmrg if test -f "$tmpdepfile"; then 3364f6cd06fSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3374f6cd06fSmrg # Add `dependent.h:' lines. 338518bcf38Smrg sed -ne '2,${ 339518bcf38Smrg s/^ *// 340518bcf38Smrg s/ \\*$// 341518bcf38Smrg s/$/:/ 342518bcf38Smrg p 343518bcf38Smrg }' "$tmpdepfile" >> "$depfile" 3444f6cd06fSmrg else 3454f6cd06fSmrg echo "#dummy" > "$depfile" 3464f6cd06fSmrg fi 3474f6cd06fSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3484f6cd06fSmrg ;; 3494f6cd06fSmrg 350c35d236eSmrgtru64) 351c35d236eSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 352c35d236eSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353c35d236eSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354c35d236eSmrg # dependencies in `foo.d' instead, so we check for that too. 355c35d236eSmrg # Subdirectories are respected. 356c35d236eSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357c35d236eSmrg test "x$dir" = "x$object" && dir= 358c35d236eSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359c35d236eSmrg 360c35d236eSmrg if test "$libtool" = yes; then 361c35d236eSmrg # With Tru64 cc, shared objects can also be used to make a 3624f6cd06fSmrg # static library. This mechanism is used in libtool 1.4 series to 363c35d236eSmrg # handle both shared and static libraries in a single compilation. 364c35d236eSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 365c35d236eSmrg # 366c35d236eSmrg # With libtool 1.5 this exception was removed, and libtool now 367c35d236eSmrg # generates 2 separate objects for the 2 libraries. These two 3684f6cd06fSmrg # compilations output dependencies in $dir.libs/$base.o.d and 369c35d236eSmrg # in $dir$base.o.d. We have to check for both files, because 370c35d236eSmrg # one of the two compilations can be disabled. We should prefer 371c35d236eSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 372c35d236eSmrg # automatically cleaned when .libs/ is deleted, while ignoring 373c35d236eSmrg # the former would cause a distcleancheck panic. 374c35d236eSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 375c35d236eSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 376c35d236eSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 377c35d236eSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378c35d236eSmrg "$@" -Wc,-MD 379c35d236eSmrg else 380c35d236eSmrg tmpdepfile1=$dir$base.o.d 381c35d236eSmrg tmpdepfile2=$dir$base.d 382c35d236eSmrg tmpdepfile3=$dir$base.d 383c35d236eSmrg tmpdepfile4=$dir$base.d 384c35d236eSmrg "$@" -MD 385c35d236eSmrg fi 386c35d236eSmrg 387c35d236eSmrg stat=$? 388c35d236eSmrg if test $stat -eq 0; then : 389c35d236eSmrg else 390c35d236eSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391c35d236eSmrg exit $stat 392c35d236eSmrg fi 393c35d236eSmrg 394c35d236eSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 395c35d236eSmrg do 396c35d236eSmrg test -f "$tmpdepfile" && break 397c35d236eSmrg done 398c35d236eSmrg if test -f "$tmpdepfile"; then 399c35d236eSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400c35d236eSmrg # That's a tab and a space in the []. 401c35d236eSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402c35d236eSmrg else 403c35d236eSmrg echo "#dummy" > "$depfile" 404c35d236eSmrg fi 405c35d236eSmrg rm -f "$tmpdepfile" 406c35d236eSmrg ;; 407c35d236eSmrg 408c35d236eSmrg#nosideeffect) 409c35d236eSmrg # This comment above is used by automake to tell side-effect 410c35d236eSmrg # dependency tracking mechanisms from slower ones. 411c35d236eSmrg 412c35d236eSmrgdashmstdout) 413c35d236eSmrg # Important note: in order to support this mode, a compiler *must* 414c35d236eSmrg # always write the preprocessed file to stdout, regardless of -o. 415c35d236eSmrg "$@" || exit $? 416c35d236eSmrg 417c35d236eSmrg # Remove the call to Libtool. 418c35d236eSmrg if test "$libtool" = yes; then 419518bcf38Smrg while test "X$1" != 'X--mode=compile'; do 420c35d236eSmrg shift 421c35d236eSmrg done 422c35d236eSmrg shift 423c35d236eSmrg fi 424c35d236eSmrg 425c35d236eSmrg # Remove `-o $object'. 426c35d236eSmrg IFS=" " 427c35d236eSmrg for arg 428c35d236eSmrg do 429c35d236eSmrg case $arg in 430c35d236eSmrg -o) 431c35d236eSmrg shift 432c35d236eSmrg ;; 433c35d236eSmrg $object) 434c35d236eSmrg shift 435c35d236eSmrg ;; 436c35d236eSmrg *) 437c35d236eSmrg set fnord "$@" "$arg" 438c35d236eSmrg shift # fnord 439c35d236eSmrg shift # $arg 440c35d236eSmrg ;; 441c35d236eSmrg esac 442c35d236eSmrg done 443c35d236eSmrg 444c35d236eSmrg test -z "$dashmflag" && dashmflag=-M 445c35d236eSmrg # Require at least two characters before searching for `:' 446c35d236eSmrg # in the target name. This is to cope with DOS-style filenames: 447c35d236eSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448c35d236eSmrg "$@" $dashmflag | 449c35d236eSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450c35d236eSmrg rm -f "$depfile" 451c35d236eSmrg cat < "$tmpdepfile" > "$depfile" 452c35d236eSmrg tr ' ' ' 453c35d236eSmrg' < "$tmpdepfile" | \ 454c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 455c35d236eSmrg## correctly. Breaking it into two sed invocations is a workaround. 456c35d236eSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457c35d236eSmrg rm -f "$tmpdepfile" 458c35d236eSmrg ;; 459c35d236eSmrg 460c35d236eSmrgdashXmstdout) 461c35d236eSmrg # This case only exists to satisfy depend.m4. It is never actually 462c35d236eSmrg # run, as this mode is specially recognized in the preamble. 463c35d236eSmrg exit 1 464c35d236eSmrg ;; 465c35d236eSmrg 466c35d236eSmrgmakedepend) 467c35d236eSmrg "$@" || exit $? 468c35d236eSmrg # Remove any Libtool call 469c35d236eSmrg if test "$libtool" = yes; then 470518bcf38Smrg while test "X$1" != 'X--mode=compile'; do 471c35d236eSmrg shift 472c35d236eSmrg done 473c35d236eSmrg shift 474c35d236eSmrg fi 475c35d236eSmrg # X makedepend 476c35d236eSmrg shift 477518bcf38Smrg cleared=no eat=no 478518bcf38Smrg for arg 479518bcf38Smrg do 480c35d236eSmrg case $cleared in 481c35d236eSmrg no) 482c35d236eSmrg set ""; shift 483c35d236eSmrg cleared=yes ;; 484c35d236eSmrg esac 485518bcf38Smrg if test $eat = yes; then 486518bcf38Smrg eat=no 487518bcf38Smrg continue 488518bcf38Smrg fi 489c35d236eSmrg case "$arg" in 490c35d236eSmrg -D*|-I*) 491c35d236eSmrg set fnord "$@" "$arg"; shift ;; 492c35d236eSmrg # Strip any option that makedepend may not understand. Remove 493c35d236eSmrg # the object too, otherwise makedepend will parse it as a source file. 494518bcf38Smrg -arch) 495518bcf38Smrg eat=yes ;; 496c35d236eSmrg -*|$object) 497c35d236eSmrg ;; 498c35d236eSmrg *) 499c35d236eSmrg set fnord "$@" "$arg"; shift ;; 500c35d236eSmrg esac 501c35d236eSmrg done 502518bcf38Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503c35d236eSmrg touch "$tmpdepfile" 504c35d236eSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505c35d236eSmrg rm -f "$depfile" 506c35d236eSmrg cat < "$tmpdepfile" > "$depfile" 507c35d236eSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508c35d236eSmrg' | \ 509c35d236eSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 510c35d236eSmrg## correctly. Breaking it into two sed invocations is a workaround. 511c35d236eSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512c35d236eSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513c35d236eSmrg ;; 514c35d236eSmrg 515c35d236eSmrgcpp) 516c35d236eSmrg # Important note: in order to support this mode, a compiler *must* 517c35d236eSmrg # always write the preprocessed file to stdout. 518c35d236eSmrg "$@" || exit $? 519c35d236eSmrg 520c35d236eSmrg # Remove the call to Libtool. 521c35d236eSmrg if test "$libtool" = yes; then 522518bcf38Smrg while test "X$1" != 'X--mode=compile'; do 523c35d236eSmrg shift 524c35d236eSmrg done 525c35d236eSmrg shift 526c35d236eSmrg fi 527c35d236eSmrg 528c35d236eSmrg # Remove `-o $object'. 529c35d236eSmrg IFS=" " 530c35d236eSmrg for arg 531c35d236eSmrg do 532c35d236eSmrg case $arg in 533c35d236eSmrg -o) 534c35d236eSmrg shift 535c35d236eSmrg ;; 536c35d236eSmrg $object) 537c35d236eSmrg shift 538c35d236eSmrg ;; 539c35d236eSmrg *) 540c35d236eSmrg set fnord "$@" "$arg" 541c35d236eSmrg shift # fnord 542c35d236eSmrg shift # $arg 543c35d236eSmrg ;; 544c35d236eSmrg esac 545c35d236eSmrg done 546c35d236eSmrg 547c35d236eSmrg "$@" -E | 548c35d236eSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 549c35d236eSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550c35d236eSmrg sed '$ s: \\$::' > "$tmpdepfile" 551c35d236eSmrg rm -f "$depfile" 552c35d236eSmrg echo "$object : \\" > "$depfile" 553c35d236eSmrg cat < "$tmpdepfile" >> "$depfile" 554c35d236eSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555c35d236eSmrg rm -f "$tmpdepfile" 556c35d236eSmrg ;; 557c35d236eSmrg 558c35d236eSmrgmsvisualcpp) 559c35d236eSmrg # Important note: in order to support this mode, a compiler *must* 560518bcf38Smrg # always write the preprocessed file to stdout. 561c35d236eSmrg "$@" || exit $? 562518bcf38Smrg 563518bcf38Smrg # Remove the call to Libtool. 564518bcf38Smrg if test "$libtool" = yes; then 565518bcf38Smrg while test "X$1" != 'X--mode=compile'; do 566518bcf38Smrg shift 567518bcf38Smrg done 568518bcf38Smrg shift 569518bcf38Smrg fi 570518bcf38Smrg 571c35d236eSmrg IFS=" " 572c35d236eSmrg for arg 573c35d236eSmrg do 574c35d236eSmrg case "$arg" in 575518bcf38Smrg -o) 576518bcf38Smrg shift 577518bcf38Smrg ;; 578518bcf38Smrg $object) 579518bcf38Smrg shift 580518bcf38Smrg ;; 581c35d236eSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582c35d236eSmrg set fnord "$@" 583c35d236eSmrg shift 584c35d236eSmrg shift 585c35d236eSmrg ;; 586c35d236eSmrg *) 587c35d236eSmrg set fnord "$@" "$arg" 588c35d236eSmrg shift 589c35d236eSmrg shift 590c35d236eSmrg ;; 591c35d236eSmrg esac 592c35d236eSmrg done 593518bcf38Smrg "$@" -E 2>/dev/null | 594518bcf38Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595c35d236eSmrg rm -f "$depfile" 596c35d236eSmrg echo "$object : \\" > "$depfile" 597518bcf38Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598c35d236eSmrg echo " " >> "$depfile" 599518bcf38Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600c35d236eSmrg rm -f "$tmpdepfile" 601c35d236eSmrg ;; 602c35d236eSmrg 603518bcf38Smrgmsvcmsys) 604518bcf38Smrg # This case exists only to let depend.m4 do its work. It works by 605518bcf38Smrg # looking at the text of this script. This case will never be run, 606518bcf38Smrg # since it is checked for above. 607518bcf38Smrg exit 1 608518bcf38Smrg ;; 609518bcf38Smrg 610c35d236eSmrgnone) 611c35d236eSmrg exec "$@" 612c35d236eSmrg ;; 613c35d236eSmrg 614c35d236eSmrg*) 615c35d236eSmrg echo "Unknown depmode $depmode" 1>&2 616c35d236eSmrg exit 1 617c35d236eSmrg ;; 618c35d236eSmrgesac 619c35d236eSmrg 620c35d236eSmrgexit 0 621c35d236eSmrg 622c35d236eSmrg# Local Variables: 623c35d236eSmrg# mode: shell-script 624c35d236eSmrg# sh-indentation: 2 625c35d236eSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 626c35d236eSmrg# time-stamp-start: "scriptversion=" 627c35d236eSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 628518bcf38Smrg# time-stamp-time-zone: "UTC" 629518bcf38Smrg# time-stamp-end: "; # UTC" 630c35d236eSmrg# End: 631