depcomp revision f67b85aa
1943345d3Smrg#! /bin/sh 2943345d3Smrg# depcomp - compile a program generating dependencies as side-effects 3943345d3Smrg 4f67b85aaSmrgscriptversion=2006-10-15.18 5943345d3Smrg 6f67b85aaSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software 7f67b85aaSmrg# Foundation, Inc. 8943345d3Smrg 9943345d3Smrg# This program is free software; you can redistribute it and/or modify 10943345d3Smrg# it under the terms of the GNU General Public License as published by 11943345d3Smrg# the Free Software Foundation; either version 2, or (at your option) 12943345d3Smrg# any later version. 13943345d3Smrg 14943345d3Smrg# This program is distributed in the hope that it will be useful, 15943345d3Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16943345d3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17943345d3Smrg# GNU General Public License for more details. 18943345d3Smrg 19943345d3Smrg# You should have received a copy of the GNU General Public License 20943345d3Smrg# along with this program; if not, write to the Free Software 21943345d3Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 22943345d3Smrg# 02110-1301, USA. 23943345d3Smrg 24943345d3Smrg# As a special exception to the GNU General Public License, if you 25943345d3Smrg# distribute this file as part of a program that contains a 26943345d3Smrg# configuration script generated by Autoconf, you may include it under 27943345d3Smrg# the same distribution terms that you use for the rest of that program. 28943345d3Smrg 29943345d3Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 30943345d3Smrg 31943345d3Smrgcase $1 in 32943345d3Smrg '') 33943345d3Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 34943345d3Smrg exit 1; 35943345d3Smrg ;; 36943345d3Smrg -h | --h*) 37943345d3Smrg cat <<\EOF 38943345d3SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 39943345d3Smrg 40943345d3SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 41943345d3Smrgas side-effects. 42943345d3Smrg 43943345d3SmrgEnvironment variables: 44943345d3Smrg depmode Dependency tracking mode. 45943345d3Smrg source Source file read by `PROGRAMS ARGS'. 46943345d3Smrg object Object file output by `PROGRAMS ARGS'. 47943345d3Smrg DEPDIR directory where to store dependencies. 48943345d3Smrg depfile Dependency file to output. 49943345d3Smrg tmpdepfile Temporary file to use when outputing dependencies. 50943345d3Smrg libtool Whether libtool is used (yes/no). 51943345d3Smrg 52943345d3SmrgReport bugs to <bug-automake@gnu.org>. 53943345d3SmrgEOF 54943345d3Smrg exit $? 55943345d3Smrg ;; 56943345d3Smrg -v | --v*) 57943345d3Smrg echo "depcomp $scriptversion" 58943345d3Smrg exit $? 59943345d3Smrg ;; 60943345d3Smrgesac 61943345d3Smrg 62943345d3Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 63943345d3Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 64943345d3Smrg exit 1 65943345d3Smrgfi 66943345d3Smrg 67943345d3Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 68943345d3Smrgdepfile=${depfile-`echo "$object" | 69943345d3Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 70943345d3Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 71943345d3Smrg 72943345d3Smrgrm -f "$tmpdepfile" 73943345d3Smrg 74943345d3Smrg# Some modes work just like other modes, but use different flags. We 75943345d3Smrg# parameterize here, but still list the modes in the big case below, 76943345d3Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 77943345d3Smrg# here, because this file can only contain one case statement. 78943345d3Smrgif test "$depmode" = hp; then 79943345d3Smrg # HP compiler uses -M and no extra arg. 80943345d3Smrg gccflag=-M 81943345d3Smrg depmode=gcc 82943345d3Smrgfi 83943345d3Smrg 84943345d3Smrgif test "$depmode" = dashXmstdout; then 85943345d3Smrg # This is just like dashmstdout with a different argument. 86943345d3Smrg dashmflag=-xM 87943345d3Smrg depmode=dashmstdout 88943345d3Smrgfi 89943345d3Smrg 90943345d3Smrgcase "$depmode" in 91943345d3Smrggcc3) 92943345d3Smrg## gcc 3 implements dependency tracking that does exactly what 93943345d3Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 94943345d3Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 95f67b85aaSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 96f67b85aaSmrg## the command line argument order; so add the flags where they 97f67b85aaSmrg## appear in depend2.am. Note that the slowdown incurred here 98f67b85aaSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 99f67b85aaSmrg for arg 100f67b85aaSmrg do 101f67b85aaSmrg case $arg in 102f67b85aaSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 103f67b85aaSmrg *) set fnord "$@" "$arg" ;; 104f67b85aaSmrg esac 105f67b85aaSmrg shift # fnord 106f67b85aaSmrg shift # $arg 107f67b85aaSmrg done 108f67b85aaSmrg "$@" 109943345d3Smrg stat=$? 110943345d3Smrg if test $stat -eq 0; then : 111943345d3Smrg else 112943345d3Smrg rm -f "$tmpdepfile" 113943345d3Smrg exit $stat 114943345d3Smrg fi 115943345d3Smrg mv "$tmpdepfile" "$depfile" 116943345d3Smrg ;; 117943345d3Smrg 118943345d3Smrggcc) 119943345d3Smrg## There are various ways to get dependency output from gcc. Here's 120943345d3Smrg## why we pick this rather obscure method: 121943345d3Smrg## - Don't want to use -MD because we'd like the dependencies to end 122943345d3Smrg## up in a subdir. Having to rename by hand is ugly. 123943345d3Smrg## (We might end up doing this anyway to support other compilers.) 124943345d3Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 125943345d3Smrg## -MM, not -M (despite what the docs say). 126943345d3Smrg## - Using -M directly means running the compiler twice (even worse 127943345d3Smrg## than renaming). 128943345d3Smrg if test -z "$gccflag"; then 129943345d3Smrg gccflag=-MD, 130943345d3Smrg fi 131943345d3Smrg "$@" -Wp,"$gccflag$tmpdepfile" 132943345d3Smrg stat=$? 133943345d3Smrg if test $stat -eq 0; then : 134943345d3Smrg else 135943345d3Smrg rm -f "$tmpdepfile" 136943345d3Smrg exit $stat 137943345d3Smrg fi 138943345d3Smrg rm -f "$depfile" 139943345d3Smrg echo "$object : \\" > "$depfile" 140943345d3Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 141943345d3Smrg## The second -e expression handles DOS-style file names with drive letters. 142943345d3Smrg sed -e 's/^[^:]*: / /' \ 143943345d3Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 144943345d3Smrg## This next piece of magic avoids the `deleted header file' problem. 145943345d3Smrg## The problem is that when a header file which appears in a .P file 146943345d3Smrg## is deleted, the dependency causes make to die (because there is 147943345d3Smrg## typically no way to rebuild the header). We avoid this by adding 148943345d3Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 149943345d3Smrg## this for us directly. 150943345d3Smrg tr ' ' ' 151943345d3Smrg' < "$tmpdepfile" | 152943345d3Smrg## Some versions of gcc put a space before the `:'. On the theory 153943345d3Smrg## that the space means something, we add a space to the output as 154943345d3Smrg## well. 155943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 156943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 157943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 158943345d3Smrg rm -f "$tmpdepfile" 159943345d3Smrg ;; 160943345d3Smrg 161943345d3Smrghp) 162943345d3Smrg # This case exists only to let depend.m4 do its work. It works by 163943345d3Smrg # looking at the text of this script. This case will never be run, 164943345d3Smrg # since it is checked for above. 165943345d3Smrg exit 1 166943345d3Smrg ;; 167943345d3Smrg 168943345d3Smrgsgi) 169943345d3Smrg if test "$libtool" = yes; then 170943345d3Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 171943345d3Smrg else 172943345d3Smrg "$@" -MDupdate "$tmpdepfile" 173943345d3Smrg fi 174943345d3Smrg stat=$? 175943345d3Smrg if test $stat -eq 0; then : 176943345d3Smrg else 177943345d3Smrg rm -f "$tmpdepfile" 178943345d3Smrg exit $stat 179943345d3Smrg fi 180943345d3Smrg rm -f "$depfile" 181943345d3Smrg 182943345d3Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 183943345d3Smrg echo "$object : \\" > "$depfile" 184943345d3Smrg 185943345d3Smrg # Clip off the initial element (the dependent). Don't try to be 186943345d3Smrg # clever and replace this with sed code, as IRIX sed won't handle 187943345d3Smrg # lines with more than a fixed number of characters (4096 in 188943345d3Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 189943345d3Smrg # the IRIX cc adds comments like `#:fec' to the end of the 190943345d3Smrg # dependency line. 191943345d3Smrg tr ' ' ' 192943345d3Smrg' < "$tmpdepfile" \ 193943345d3Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 194943345d3Smrg tr ' 195943345d3Smrg' ' ' >> $depfile 196943345d3Smrg echo >> $depfile 197943345d3Smrg 198943345d3Smrg # The second pass generates a dummy entry for each header file. 199943345d3Smrg tr ' ' ' 200943345d3Smrg' < "$tmpdepfile" \ 201943345d3Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 202943345d3Smrg >> $depfile 203943345d3Smrg else 204943345d3Smrg # The sourcefile does not contain any dependencies, so just 205943345d3Smrg # store a dummy comment line, to avoid errors with the Makefile 206943345d3Smrg # "include basename.Plo" scheme. 207943345d3Smrg echo "#dummy" > "$depfile" 208943345d3Smrg fi 209943345d3Smrg rm -f "$tmpdepfile" 210943345d3Smrg ;; 211943345d3Smrg 212943345d3Smrgaix) 213943345d3Smrg # The C for AIX Compiler uses -M and outputs the dependencies 214943345d3Smrg # in a .u file. In older versions, this file always lives in the 215943345d3Smrg # current directory. Also, the AIX compiler puts `$object:' at the 216943345d3Smrg # start of each line; $object doesn't have directory information. 217943345d3Smrg # Version 6 uses the directory in both cases. 218943345d3Smrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 219943345d3Smrg tmpdepfile="$stripped.u" 220943345d3Smrg if test "$libtool" = yes; then 221943345d3Smrg "$@" -Wc,-M 222943345d3Smrg else 223943345d3Smrg "$@" -M 224943345d3Smrg fi 225943345d3Smrg stat=$? 226943345d3Smrg 227943345d3Smrg if test -f "$tmpdepfile"; then : 228943345d3Smrg else 229943345d3Smrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 230943345d3Smrg tmpdepfile="$stripped.u" 231943345d3Smrg fi 232943345d3Smrg 233943345d3Smrg if test $stat -eq 0; then : 234943345d3Smrg else 235943345d3Smrg rm -f "$tmpdepfile" 236943345d3Smrg exit $stat 237943345d3Smrg fi 238943345d3Smrg 239943345d3Smrg if test -f "$tmpdepfile"; then 240943345d3Smrg outname="$stripped.o" 241943345d3Smrg # Each line is of the form `foo.o: dependent.h'. 242943345d3Smrg # Do two passes, one to just change these to 243943345d3Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 244943345d3Smrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 245943345d3Smrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 246943345d3Smrg else 247943345d3Smrg # The sourcefile does not contain any dependencies, so just 248943345d3Smrg # store a dummy comment line, to avoid errors with the Makefile 249943345d3Smrg # "include basename.Plo" scheme. 250943345d3Smrg echo "#dummy" > "$depfile" 251943345d3Smrg fi 252943345d3Smrg rm -f "$tmpdepfile" 253943345d3Smrg ;; 254943345d3Smrg 255943345d3Smrgicc) 256943345d3Smrg # Intel's C compiler understands `-MD -MF file'. However on 257943345d3Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 258943345d3Smrg # ICC 7.0 will fill foo.d with something like 259943345d3Smrg # foo.o: sub/foo.c 260943345d3Smrg # foo.o: sub/foo.h 261943345d3Smrg # which is wrong. We want: 262943345d3Smrg # sub/foo.o: sub/foo.c 263943345d3Smrg # sub/foo.o: sub/foo.h 264943345d3Smrg # sub/foo.c: 265943345d3Smrg # sub/foo.h: 266943345d3Smrg # ICC 7.1 will output 267943345d3Smrg # foo.o: sub/foo.c sub/foo.h 268943345d3Smrg # and will wrap long lines using \ : 269943345d3Smrg # foo.o: sub/foo.c ... \ 270943345d3Smrg # sub/foo.h ... \ 271943345d3Smrg # ... 272943345d3Smrg 273943345d3Smrg "$@" -MD -MF "$tmpdepfile" 274943345d3Smrg stat=$? 275943345d3Smrg if test $stat -eq 0; then : 276943345d3Smrg else 277943345d3Smrg rm -f "$tmpdepfile" 278943345d3Smrg exit $stat 279943345d3Smrg fi 280943345d3Smrg rm -f "$depfile" 281943345d3Smrg # Each line is of the form `foo.o: dependent.h', 282943345d3Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 283943345d3Smrg # Do two passes, one to just change these to 284943345d3Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 285943345d3Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 286943345d3Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 287943345d3Smrg # correctly. Breaking it into two sed invocations is a workaround. 288943345d3Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 289943345d3Smrg sed -e 's/$/ :/' >> "$depfile" 290943345d3Smrg rm -f "$tmpdepfile" 291943345d3Smrg ;; 292943345d3Smrg 293f67b85aaSmrghp2) 294f67b85aaSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 295f67b85aaSmrg # compilers, which have integrated preprocessors. The correct option 296f67b85aaSmrg # to use with these is +Maked; it writes dependencies to a file named 297f67b85aaSmrg # 'foo.d', which lands next to the object file, wherever that 298f67b85aaSmrg # happens to be. 299f67b85aaSmrg # Much of this is similar to the tru64 case; see comments there. 300f67b85aaSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 301f67b85aaSmrg test "x$dir" = "x$object" && dir= 302f67b85aaSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 303f67b85aaSmrg if test "$libtool" = yes; then 304f67b85aaSmrg tmpdepfile1=$dir$base.d 305f67b85aaSmrg tmpdepfile2=$dir.libs/$base.d 306f67b85aaSmrg "$@" -Wc,+Maked 307f67b85aaSmrg else 308f67b85aaSmrg tmpdepfile1=$dir$base.d 309f67b85aaSmrg tmpdepfile2=$dir$base.d 310f67b85aaSmrg "$@" +Maked 311f67b85aaSmrg fi 312f67b85aaSmrg stat=$? 313f67b85aaSmrg if test $stat -eq 0; then : 314f67b85aaSmrg else 315f67b85aaSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 316f67b85aaSmrg exit $stat 317f67b85aaSmrg fi 318f67b85aaSmrg 319f67b85aaSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 320f67b85aaSmrg do 321f67b85aaSmrg test -f "$tmpdepfile" && break 322f67b85aaSmrg done 323f67b85aaSmrg if test -f "$tmpdepfile"; then 324f67b85aaSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 325f67b85aaSmrg # Add `dependent.h:' lines. 326f67b85aaSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 327f67b85aaSmrg else 328f67b85aaSmrg echo "#dummy" > "$depfile" 329f67b85aaSmrg fi 330f67b85aaSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 331f67b85aaSmrg ;; 332f67b85aaSmrg 333943345d3Smrgtru64) 334943345d3Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 335943345d3Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 336943345d3Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 337943345d3Smrg # dependencies in `foo.d' instead, so we check for that too. 338943345d3Smrg # Subdirectories are respected. 339943345d3Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 340943345d3Smrg test "x$dir" = "x$object" && dir= 341943345d3Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 342943345d3Smrg 343943345d3Smrg if test "$libtool" = yes; then 344943345d3Smrg # With Tru64 cc, shared objects can also be used to make a 345f67b85aaSmrg # static library. This mechanism is used in libtool 1.4 series to 346943345d3Smrg # handle both shared and static libraries in a single compilation. 347943345d3Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 348943345d3Smrg # 349943345d3Smrg # With libtool 1.5 this exception was removed, and libtool now 350943345d3Smrg # generates 2 separate objects for the 2 libraries. These two 351f67b85aaSmrg # compilations output dependencies in $dir.libs/$base.o.d and 352943345d3Smrg # in $dir$base.o.d. We have to check for both files, because 353943345d3Smrg # one of the two compilations can be disabled. We should prefer 354943345d3Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 355943345d3Smrg # automatically cleaned when .libs/ is deleted, while ignoring 356943345d3Smrg # the former would cause a distcleancheck panic. 357943345d3Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 358943345d3Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 359943345d3Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 360943345d3Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 361943345d3Smrg "$@" -Wc,-MD 362943345d3Smrg else 363943345d3Smrg tmpdepfile1=$dir$base.o.d 364943345d3Smrg tmpdepfile2=$dir$base.d 365943345d3Smrg tmpdepfile3=$dir$base.d 366943345d3Smrg tmpdepfile4=$dir$base.d 367943345d3Smrg "$@" -MD 368943345d3Smrg fi 369943345d3Smrg 370943345d3Smrg stat=$? 371943345d3Smrg if test $stat -eq 0; then : 372943345d3Smrg else 373943345d3Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 374943345d3Smrg exit $stat 375943345d3Smrg fi 376943345d3Smrg 377943345d3Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 378943345d3Smrg do 379943345d3Smrg test -f "$tmpdepfile" && break 380943345d3Smrg done 381943345d3Smrg if test -f "$tmpdepfile"; then 382943345d3Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 383943345d3Smrg # That's a tab and a space in the []. 384943345d3Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 385943345d3Smrg else 386943345d3Smrg echo "#dummy" > "$depfile" 387943345d3Smrg fi 388943345d3Smrg rm -f "$tmpdepfile" 389943345d3Smrg ;; 390943345d3Smrg 391943345d3Smrg#nosideeffect) 392943345d3Smrg # This comment above is used by automake to tell side-effect 393943345d3Smrg # dependency tracking mechanisms from slower ones. 394943345d3Smrg 395943345d3Smrgdashmstdout) 396943345d3Smrg # Important note: in order to support this mode, a compiler *must* 397943345d3Smrg # always write the preprocessed file to stdout, regardless of -o. 398943345d3Smrg "$@" || exit $? 399943345d3Smrg 400943345d3Smrg # Remove the call to Libtool. 401943345d3Smrg if test "$libtool" = yes; then 402943345d3Smrg while test $1 != '--mode=compile'; do 403943345d3Smrg shift 404943345d3Smrg done 405943345d3Smrg shift 406943345d3Smrg fi 407943345d3Smrg 408943345d3Smrg # Remove `-o $object'. 409943345d3Smrg IFS=" " 410943345d3Smrg for arg 411943345d3Smrg do 412943345d3Smrg case $arg in 413943345d3Smrg -o) 414943345d3Smrg shift 415943345d3Smrg ;; 416943345d3Smrg $object) 417943345d3Smrg shift 418943345d3Smrg ;; 419943345d3Smrg *) 420943345d3Smrg set fnord "$@" "$arg" 421943345d3Smrg shift # fnord 422943345d3Smrg shift # $arg 423943345d3Smrg ;; 424943345d3Smrg esac 425943345d3Smrg done 426943345d3Smrg 427943345d3Smrg test -z "$dashmflag" && dashmflag=-M 428943345d3Smrg # Require at least two characters before searching for `:' 429943345d3Smrg # in the target name. This is to cope with DOS-style filenames: 430943345d3Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 431943345d3Smrg "$@" $dashmflag | 432943345d3Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 433943345d3Smrg rm -f "$depfile" 434943345d3Smrg cat < "$tmpdepfile" > "$depfile" 435943345d3Smrg tr ' ' ' 436943345d3Smrg' < "$tmpdepfile" | \ 437943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 438943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 439943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 440943345d3Smrg rm -f "$tmpdepfile" 441943345d3Smrg ;; 442943345d3Smrg 443943345d3SmrgdashXmstdout) 444943345d3Smrg # This case only exists to satisfy depend.m4. It is never actually 445943345d3Smrg # run, as this mode is specially recognized in the preamble. 446943345d3Smrg exit 1 447943345d3Smrg ;; 448943345d3Smrg 449943345d3Smrgmakedepend) 450943345d3Smrg "$@" || exit $? 451943345d3Smrg # Remove any Libtool call 452943345d3Smrg if test "$libtool" = yes; then 453943345d3Smrg while test $1 != '--mode=compile'; do 454943345d3Smrg shift 455943345d3Smrg done 456943345d3Smrg shift 457943345d3Smrg fi 458943345d3Smrg # X makedepend 459943345d3Smrg shift 460943345d3Smrg cleared=no 461943345d3Smrg for arg in "$@"; do 462943345d3Smrg case $cleared in 463943345d3Smrg no) 464943345d3Smrg set ""; shift 465943345d3Smrg cleared=yes ;; 466943345d3Smrg esac 467943345d3Smrg case "$arg" in 468943345d3Smrg -D*|-I*) 469943345d3Smrg set fnord "$@" "$arg"; shift ;; 470943345d3Smrg # Strip any option that makedepend may not understand. Remove 471943345d3Smrg # the object too, otherwise makedepend will parse it as a source file. 472943345d3Smrg -*|$object) 473943345d3Smrg ;; 474943345d3Smrg *) 475943345d3Smrg set fnord "$@" "$arg"; shift ;; 476943345d3Smrg esac 477943345d3Smrg done 478943345d3Smrg obj_suffix="`echo $object | sed 's/^.*\././'`" 479943345d3Smrg touch "$tmpdepfile" 480943345d3Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 481943345d3Smrg rm -f "$depfile" 482943345d3Smrg cat < "$tmpdepfile" > "$depfile" 483943345d3Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 484943345d3Smrg' | \ 485943345d3Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 486943345d3Smrg## correctly. Breaking it into two sed invocations is a workaround. 487943345d3Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 488943345d3Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 489943345d3Smrg ;; 490943345d3Smrg 491943345d3Smrgcpp) 492943345d3Smrg # Important note: in order to support this mode, a compiler *must* 493943345d3Smrg # always write the preprocessed file to stdout. 494943345d3Smrg "$@" || exit $? 495943345d3Smrg 496943345d3Smrg # Remove the call to Libtool. 497943345d3Smrg if test "$libtool" = yes; then 498943345d3Smrg while test $1 != '--mode=compile'; do 499943345d3Smrg shift 500943345d3Smrg done 501943345d3Smrg shift 502943345d3Smrg fi 503943345d3Smrg 504943345d3Smrg # Remove `-o $object'. 505943345d3Smrg IFS=" " 506943345d3Smrg for arg 507943345d3Smrg do 508943345d3Smrg case $arg in 509943345d3Smrg -o) 510943345d3Smrg shift 511943345d3Smrg ;; 512943345d3Smrg $object) 513943345d3Smrg shift 514943345d3Smrg ;; 515943345d3Smrg *) 516943345d3Smrg set fnord "$@" "$arg" 517943345d3Smrg shift # fnord 518943345d3Smrg shift # $arg 519943345d3Smrg ;; 520943345d3Smrg esac 521943345d3Smrg done 522943345d3Smrg 523943345d3Smrg "$@" -E | 524943345d3Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 525943345d3Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 526943345d3Smrg sed '$ s: \\$::' > "$tmpdepfile" 527943345d3Smrg rm -f "$depfile" 528943345d3Smrg echo "$object : \\" > "$depfile" 529943345d3Smrg cat < "$tmpdepfile" >> "$depfile" 530943345d3Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 531943345d3Smrg rm -f "$tmpdepfile" 532943345d3Smrg ;; 533943345d3Smrg 534943345d3Smrgmsvisualcpp) 535943345d3Smrg # Important note: in order to support this mode, a compiler *must* 536943345d3Smrg # always write the preprocessed file to stdout, regardless of -o, 537943345d3Smrg # because we must use -o when running libtool. 538943345d3Smrg "$@" || exit $? 539943345d3Smrg IFS=" " 540943345d3Smrg for arg 541943345d3Smrg do 542943345d3Smrg case "$arg" in 543943345d3Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 544943345d3Smrg set fnord "$@" 545943345d3Smrg shift 546943345d3Smrg shift 547943345d3Smrg ;; 548943345d3Smrg *) 549943345d3Smrg set fnord "$@" "$arg" 550943345d3Smrg shift 551943345d3Smrg shift 552943345d3Smrg ;; 553943345d3Smrg esac 554943345d3Smrg done 555943345d3Smrg "$@" -E | 556943345d3Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 557943345d3Smrg rm -f "$depfile" 558943345d3Smrg echo "$object : \\" > "$depfile" 559943345d3Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 560943345d3Smrg echo " " >> "$depfile" 561943345d3Smrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 562943345d3Smrg rm -f "$tmpdepfile" 563943345d3Smrg ;; 564943345d3Smrg 565943345d3Smrgnone) 566943345d3Smrg exec "$@" 567943345d3Smrg ;; 568943345d3Smrg 569943345d3Smrg*) 570943345d3Smrg echo "Unknown depmode $depmode" 1>&2 571943345d3Smrg exit 1 572943345d3Smrg ;; 573943345d3Smrgesac 574943345d3Smrg 575943345d3Smrgexit 0 576943345d3Smrg 577943345d3Smrg# Local Variables: 578943345d3Smrg# mode: shell-script 579943345d3Smrg# sh-indentation: 2 580943345d3Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 581943345d3Smrg# time-stamp-start: "scriptversion=" 582943345d3Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 583943345d3Smrg# time-stamp-end: "$" 584943345d3Smrg# End: 585