depcomp revision 266e564d
1266e564dSmrg#! /bin/sh 2266e564dSmrg# depcomp - compile a program generating dependencies as side-effects 3266e564dSmrg 4266e564dSmrgscriptversion=2006-10-15.18 5266e564dSmrg 6266e564dSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software 7266e564dSmrg# Foundation, Inc. 8266e564dSmrg 9266e564dSmrg# This program is free software; you can redistribute it and/or modify 10266e564dSmrg# it under the terms of the GNU General Public License as published by 11266e564dSmrg# the Free Software Foundation; either version 2, or (at your option) 12266e564dSmrg# any later version. 13266e564dSmrg 14266e564dSmrg# This program is distributed in the hope that it will be useful, 15266e564dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16266e564dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17266e564dSmrg# GNU General Public License for more details. 18266e564dSmrg 19266e564dSmrg# You should have received a copy of the GNU General Public License 20266e564dSmrg# along with this program; if not, write to the Free Software 21266e564dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 22266e564dSmrg# 02110-1301, USA. 23266e564dSmrg 24266e564dSmrg# As a special exception to the GNU General Public License, if you 25266e564dSmrg# distribute this file as part of a program that contains a 26266e564dSmrg# configuration script generated by Autoconf, you may include it under 27266e564dSmrg# the same distribution terms that you use for the rest of that program. 28266e564dSmrg 29266e564dSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 30266e564dSmrg 31266e564dSmrgcase $1 in 32266e564dSmrg '') 33266e564dSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 34266e564dSmrg exit 1; 35266e564dSmrg ;; 36266e564dSmrg -h | --h*) 37266e564dSmrg cat <<\EOF 38266e564dSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 39266e564dSmrg 40266e564dSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 41266e564dSmrgas side-effects. 42266e564dSmrg 43266e564dSmrgEnvironment variables: 44266e564dSmrg depmode Dependency tracking mode. 45266e564dSmrg source Source file read by `PROGRAMS ARGS'. 46266e564dSmrg object Object file output by `PROGRAMS ARGS'. 47266e564dSmrg DEPDIR directory where to store dependencies. 48266e564dSmrg depfile Dependency file to output. 49266e564dSmrg tmpdepfile Temporary file to use when outputing dependencies. 50266e564dSmrg libtool Whether libtool is used (yes/no). 51266e564dSmrg 52266e564dSmrgReport bugs to <bug-automake@gnu.org>. 53266e564dSmrgEOF 54266e564dSmrg exit $? 55266e564dSmrg ;; 56266e564dSmrg -v | --v*) 57266e564dSmrg echo "depcomp $scriptversion" 58266e564dSmrg exit $? 59266e564dSmrg ;; 60266e564dSmrgesac 61266e564dSmrg 62266e564dSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 63266e564dSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 64266e564dSmrg exit 1 65266e564dSmrgfi 66266e564dSmrg 67266e564dSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 68266e564dSmrgdepfile=${depfile-`echo "$object" | 69266e564dSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 70266e564dSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 71266e564dSmrg 72266e564dSmrgrm -f "$tmpdepfile" 73266e564dSmrg 74266e564dSmrg# Some modes work just like other modes, but use different flags. We 75266e564dSmrg# parameterize here, but still list the modes in the big case below, 76266e564dSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 77266e564dSmrg# here, because this file can only contain one case statement. 78266e564dSmrgif test "$depmode" = hp; then 79266e564dSmrg # HP compiler uses -M and no extra arg. 80266e564dSmrg gccflag=-M 81266e564dSmrg depmode=gcc 82266e564dSmrgfi 83266e564dSmrg 84266e564dSmrgif test "$depmode" = dashXmstdout; then 85266e564dSmrg # This is just like dashmstdout with a different argument. 86266e564dSmrg dashmflag=-xM 87266e564dSmrg depmode=dashmstdout 88266e564dSmrgfi 89266e564dSmrg 90266e564dSmrgcase "$depmode" in 91266e564dSmrggcc3) 92266e564dSmrg## gcc 3 implements dependency tracking that does exactly what 93266e564dSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 94266e564dSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 95266e564dSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 96266e564dSmrg## the command line argument order; so add the flags where they 97266e564dSmrg## appear in depend2.am. Note that the slowdown incurred here 98266e564dSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 99266e564dSmrg for arg 100266e564dSmrg do 101266e564dSmrg case $arg in 102266e564dSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 103266e564dSmrg *) set fnord "$@" "$arg" ;; 104266e564dSmrg esac 105266e564dSmrg shift # fnord 106266e564dSmrg shift # $arg 107266e564dSmrg done 108266e564dSmrg "$@" 109266e564dSmrg stat=$? 110266e564dSmrg if test $stat -eq 0; then : 111266e564dSmrg else 112266e564dSmrg rm -f "$tmpdepfile" 113266e564dSmrg exit $stat 114266e564dSmrg fi 115266e564dSmrg mv "$tmpdepfile" "$depfile" 116266e564dSmrg ;; 117266e564dSmrg 118266e564dSmrggcc) 119266e564dSmrg## There are various ways to get dependency output from gcc. Here's 120266e564dSmrg## why we pick this rather obscure method: 121266e564dSmrg## - Don't want to use -MD because we'd like the dependencies to end 122266e564dSmrg## up in a subdir. Having to rename by hand is ugly. 123266e564dSmrg## (We might end up doing this anyway to support other compilers.) 124266e564dSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 125266e564dSmrg## -MM, not -M (despite what the docs say). 126266e564dSmrg## - Using -M directly means running the compiler twice (even worse 127266e564dSmrg## than renaming). 128266e564dSmrg if test -z "$gccflag"; then 129266e564dSmrg gccflag=-MD, 130266e564dSmrg fi 131266e564dSmrg "$@" -Wp,"$gccflag$tmpdepfile" 132266e564dSmrg stat=$? 133266e564dSmrg if test $stat -eq 0; then : 134266e564dSmrg else 135266e564dSmrg rm -f "$tmpdepfile" 136266e564dSmrg exit $stat 137266e564dSmrg fi 138266e564dSmrg rm -f "$depfile" 139266e564dSmrg echo "$object : \\" > "$depfile" 140266e564dSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 141266e564dSmrg## The second -e expression handles DOS-style file names with drive letters. 142266e564dSmrg sed -e 's/^[^:]*: / /' \ 143266e564dSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 144266e564dSmrg## This next piece of magic avoids the `deleted header file' problem. 145266e564dSmrg## The problem is that when a header file which appears in a .P file 146266e564dSmrg## is deleted, the dependency causes make to die (because there is 147266e564dSmrg## typically no way to rebuild the header). We avoid this by adding 148266e564dSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 149266e564dSmrg## this for us directly. 150266e564dSmrg tr ' ' ' 151266e564dSmrg' < "$tmpdepfile" | 152266e564dSmrg## Some versions of gcc put a space before the `:'. On the theory 153266e564dSmrg## that the space means something, we add a space to the output as 154266e564dSmrg## well. 155266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 156266e564dSmrg## correctly. Breaking it into two sed invocations is a workaround. 157266e564dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 158266e564dSmrg rm -f "$tmpdepfile" 159266e564dSmrg ;; 160266e564dSmrg 161266e564dSmrghp) 162266e564dSmrg # This case exists only to let depend.m4 do its work. It works by 163266e564dSmrg # looking at the text of this script. This case will never be run, 164266e564dSmrg # since it is checked for above. 165266e564dSmrg exit 1 166266e564dSmrg ;; 167266e564dSmrg 168266e564dSmrgsgi) 169266e564dSmrg if test "$libtool" = yes; then 170266e564dSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 171266e564dSmrg else 172266e564dSmrg "$@" -MDupdate "$tmpdepfile" 173266e564dSmrg fi 174266e564dSmrg stat=$? 175266e564dSmrg if test $stat -eq 0; then : 176266e564dSmrg else 177266e564dSmrg rm -f "$tmpdepfile" 178266e564dSmrg exit $stat 179266e564dSmrg fi 180266e564dSmrg rm -f "$depfile" 181266e564dSmrg 182266e564dSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 183266e564dSmrg echo "$object : \\" > "$depfile" 184266e564dSmrg 185266e564dSmrg # Clip off the initial element (the dependent). Don't try to be 186266e564dSmrg # clever and replace this with sed code, as IRIX sed won't handle 187266e564dSmrg # lines with more than a fixed number of characters (4096 in 188266e564dSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 189266e564dSmrg # the IRIX cc adds comments like `#:fec' to the end of the 190266e564dSmrg # dependency line. 191266e564dSmrg tr ' ' ' 192266e564dSmrg' < "$tmpdepfile" \ 193266e564dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 194266e564dSmrg tr ' 195266e564dSmrg' ' ' >> $depfile 196266e564dSmrg echo >> $depfile 197266e564dSmrg 198266e564dSmrg # The second pass generates a dummy entry for each header file. 199266e564dSmrg tr ' ' ' 200266e564dSmrg' < "$tmpdepfile" \ 201266e564dSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 202266e564dSmrg >> $depfile 203266e564dSmrg else 204266e564dSmrg # The sourcefile does not contain any dependencies, so just 205266e564dSmrg # store a dummy comment line, to avoid errors with the Makefile 206266e564dSmrg # "include basename.Plo" scheme. 207266e564dSmrg echo "#dummy" > "$depfile" 208266e564dSmrg fi 209266e564dSmrg rm -f "$tmpdepfile" 210266e564dSmrg ;; 211266e564dSmrg 212266e564dSmrgaix) 213266e564dSmrg # The C for AIX Compiler uses -M and outputs the dependencies 214266e564dSmrg # in a .u file. In older versions, this file always lives in the 215266e564dSmrg # current directory. Also, the AIX compiler puts `$object:' at the 216266e564dSmrg # start of each line; $object doesn't have directory information. 217266e564dSmrg # Version 6 uses the directory in both cases. 218266e564dSmrg stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 219266e564dSmrg tmpdepfile="$stripped.u" 220266e564dSmrg if test "$libtool" = yes; then 221266e564dSmrg "$@" -Wc,-M 222266e564dSmrg else 223266e564dSmrg "$@" -M 224266e564dSmrg fi 225266e564dSmrg stat=$? 226266e564dSmrg 227266e564dSmrg if test -f "$tmpdepfile"; then : 228266e564dSmrg else 229266e564dSmrg stripped=`echo "$stripped" | sed 's,^.*/,,'` 230266e564dSmrg tmpdepfile="$stripped.u" 231266e564dSmrg fi 232266e564dSmrg 233266e564dSmrg if test $stat -eq 0; then : 234266e564dSmrg else 235266e564dSmrg rm -f "$tmpdepfile" 236266e564dSmrg exit $stat 237266e564dSmrg fi 238266e564dSmrg 239266e564dSmrg if test -f "$tmpdepfile"; then 240266e564dSmrg outname="$stripped.o" 241266e564dSmrg # Each line is of the form `foo.o: dependent.h'. 242266e564dSmrg # Do two passes, one to just change these to 243266e564dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 244266e564dSmrg sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 245266e564dSmrg sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 246266e564dSmrg else 247266e564dSmrg # The sourcefile does not contain any dependencies, so just 248266e564dSmrg # store a dummy comment line, to avoid errors with the Makefile 249266e564dSmrg # "include basename.Plo" scheme. 250266e564dSmrg echo "#dummy" > "$depfile" 251266e564dSmrg fi 252266e564dSmrg rm -f "$tmpdepfile" 253266e564dSmrg ;; 254266e564dSmrg 255266e564dSmrgicc) 256266e564dSmrg # Intel's C compiler understands `-MD -MF file'. However on 257266e564dSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 258266e564dSmrg # ICC 7.0 will fill foo.d with something like 259266e564dSmrg # foo.o: sub/foo.c 260266e564dSmrg # foo.o: sub/foo.h 261266e564dSmrg # which is wrong. We want: 262266e564dSmrg # sub/foo.o: sub/foo.c 263266e564dSmrg # sub/foo.o: sub/foo.h 264266e564dSmrg # sub/foo.c: 265266e564dSmrg # sub/foo.h: 266266e564dSmrg # ICC 7.1 will output 267266e564dSmrg # foo.o: sub/foo.c sub/foo.h 268266e564dSmrg # and will wrap long lines using \ : 269266e564dSmrg # foo.o: sub/foo.c ... \ 270266e564dSmrg # sub/foo.h ... \ 271266e564dSmrg # ... 272266e564dSmrg 273266e564dSmrg "$@" -MD -MF "$tmpdepfile" 274266e564dSmrg stat=$? 275266e564dSmrg if test $stat -eq 0; then : 276266e564dSmrg else 277266e564dSmrg rm -f "$tmpdepfile" 278266e564dSmrg exit $stat 279266e564dSmrg fi 280266e564dSmrg rm -f "$depfile" 281266e564dSmrg # Each line is of the form `foo.o: dependent.h', 282266e564dSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 283266e564dSmrg # Do two passes, one to just change these to 284266e564dSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 285266e564dSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 286266e564dSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 287266e564dSmrg # correctly. Breaking it into two sed invocations is a workaround. 288266e564dSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 289266e564dSmrg sed -e 's/$/ :/' >> "$depfile" 290266e564dSmrg rm -f "$tmpdepfile" 291266e564dSmrg ;; 292266e564dSmrg 293266e564dSmrghp2) 294266e564dSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 295266e564dSmrg # compilers, which have integrated preprocessors. The correct option 296266e564dSmrg # to use with these is +Maked; it writes dependencies to a file named 297266e564dSmrg # 'foo.d', which lands next to the object file, wherever that 298266e564dSmrg # happens to be. 299266e564dSmrg # Much of this is similar to the tru64 case; see comments there. 300266e564dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 301266e564dSmrg test "x$dir" = "x$object" && dir= 302266e564dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 303266e564dSmrg if test "$libtool" = yes; then 304266e564dSmrg tmpdepfile1=$dir$base.d 305266e564dSmrg tmpdepfile2=$dir.libs/$base.d 306266e564dSmrg "$@" -Wc,+Maked 307266e564dSmrg else 308266e564dSmrg tmpdepfile1=$dir$base.d 309266e564dSmrg tmpdepfile2=$dir$base.d 310266e564dSmrg "$@" +Maked 311266e564dSmrg fi 312266e564dSmrg stat=$? 313266e564dSmrg if test $stat -eq 0; then : 314266e564dSmrg else 315266e564dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 316266e564dSmrg exit $stat 317266e564dSmrg fi 318266e564dSmrg 319266e564dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 320266e564dSmrg do 321266e564dSmrg test -f "$tmpdepfile" && break 322266e564dSmrg done 323266e564dSmrg if test -f "$tmpdepfile"; then 324266e564dSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 325266e564dSmrg # Add `dependent.h:' lines. 326266e564dSmrg sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" 327266e564dSmrg else 328266e564dSmrg echo "#dummy" > "$depfile" 329266e564dSmrg fi 330266e564dSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 331266e564dSmrg ;; 332266e564dSmrg 333266e564dSmrgtru64) 334266e564dSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 335266e564dSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 336266e564dSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 337266e564dSmrg # dependencies in `foo.d' instead, so we check for that too. 338266e564dSmrg # Subdirectories are respected. 339266e564dSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 340266e564dSmrg test "x$dir" = "x$object" && dir= 341266e564dSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 342266e564dSmrg 343266e564dSmrg if test "$libtool" = yes; then 344266e564dSmrg # With Tru64 cc, shared objects can also be used to make a 345266e564dSmrg # static library. This mechanism is used in libtool 1.4 series to 346266e564dSmrg # handle both shared and static libraries in a single compilation. 347266e564dSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 348266e564dSmrg # 349266e564dSmrg # With libtool 1.5 this exception was removed, and libtool now 350266e564dSmrg # generates 2 separate objects for the 2 libraries. These two 351266e564dSmrg # compilations output dependencies in $dir.libs/$base.o.d and 352266e564dSmrg # in $dir$base.o.d. We have to check for both files, because 353266e564dSmrg # one of the two compilations can be disabled. We should prefer 354266e564dSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 355266e564dSmrg # automatically cleaned when .libs/ is deleted, while ignoring 356266e564dSmrg # the former would cause a distcleancheck panic. 357266e564dSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 358266e564dSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 359266e564dSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 360266e564dSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 361266e564dSmrg "$@" -Wc,-MD 362266e564dSmrg else 363266e564dSmrg tmpdepfile1=$dir$base.o.d 364266e564dSmrg tmpdepfile2=$dir$base.d 365266e564dSmrg tmpdepfile3=$dir$base.d 366266e564dSmrg tmpdepfile4=$dir$base.d 367266e564dSmrg "$@" -MD 368266e564dSmrg fi 369266e564dSmrg 370266e564dSmrg stat=$? 371266e564dSmrg if test $stat -eq 0; then : 372266e564dSmrg else 373266e564dSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 374266e564dSmrg exit $stat 375266e564dSmrg fi 376266e564dSmrg 377266e564dSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 378266e564dSmrg do 379266e564dSmrg test -f "$tmpdepfile" && break 380266e564dSmrg done 381266e564dSmrg if test -f "$tmpdepfile"; then 382266e564dSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 383266e564dSmrg # That's a tab and a space in the []. 384266e564dSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 385266e564dSmrg else 386266e564dSmrg echo "#dummy" > "$depfile" 387266e564dSmrg fi 388266e564dSmrg rm -f "$tmpdepfile" 389266e564dSmrg ;; 390266e564dSmrg 391266e564dSmrg#nosideeffect) 392266e564dSmrg # This comment above is used by automake to tell side-effect 393266e564dSmrg # dependency tracking mechanisms from slower ones. 394266e564dSmrg 395266e564dSmrgdashmstdout) 396266e564dSmrg # Important note: in order to support this mode, a compiler *must* 397266e564dSmrg # always write the preprocessed file to stdout, regardless of -o. 398266e564dSmrg "$@" || exit $? 399266e564dSmrg 400266e564dSmrg # Remove the call to Libtool. 401266e564dSmrg if test "$libtool" = yes; then 402266e564dSmrg while test $1 != '--mode=compile'; do 403266e564dSmrg shift 404266e564dSmrg done 405266e564dSmrg shift 406266e564dSmrg fi 407266e564dSmrg 408266e564dSmrg # Remove `-o $object'. 409266e564dSmrg IFS=" " 410266e564dSmrg for arg 411266e564dSmrg do 412266e564dSmrg case $arg in 413266e564dSmrg -o) 414266e564dSmrg shift 415266e564dSmrg ;; 416266e564dSmrg $object) 417266e564dSmrg shift 418266e564dSmrg ;; 419266e564dSmrg *) 420266e564dSmrg set fnord "$@" "$arg" 421266e564dSmrg shift # fnord 422266e564dSmrg shift # $arg 423266e564dSmrg ;; 424266e564dSmrg esac 425266e564dSmrg done 426266e564dSmrg 427266e564dSmrg test -z "$dashmflag" && dashmflag=-M 428266e564dSmrg # Require at least two characters before searching for `:' 429266e564dSmrg # in the target name. This is to cope with DOS-style filenames: 430266e564dSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 431266e564dSmrg "$@" $dashmflag | 432266e564dSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 433266e564dSmrg rm -f "$depfile" 434266e564dSmrg cat < "$tmpdepfile" > "$depfile" 435266e564dSmrg tr ' ' ' 436266e564dSmrg' < "$tmpdepfile" | \ 437266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 438266e564dSmrg## correctly. Breaking it into two sed invocations is a workaround. 439266e564dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 440266e564dSmrg rm -f "$tmpdepfile" 441266e564dSmrg ;; 442266e564dSmrg 443266e564dSmrgdashXmstdout) 444266e564dSmrg # This case only exists to satisfy depend.m4. It is never actually 445266e564dSmrg # run, as this mode is specially recognized in the preamble. 446266e564dSmrg exit 1 447266e564dSmrg ;; 448266e564dSmrg 449266e564dSmrgmakedepend) 450266e564dSmrg "$@" || exit $? 451266e564dSmrg # Remove any Libtool call 452266e564dSmrg if test "$libtool" = yes; then 453266e564dSmrg while test $1 != '--mode=compile'; do 454266e564dSmrg shift 455266e564dSmrg done 456266e564dSmrg shift 457266e564dSmrg fi 458266e564dSmrg # X makedepend 459266e564dSmrg shift 460266e564dSmrg cleared=no 461266e564dSmrg for arg in "$@"; do 462266e564dSmrg case $cleared in 463266e564dSmrg no) 464266e564dSmrg set ""; shift 465266e564dSmrg cleared=yes ;; 466266e564dSmrg esac 467266e564dSmrg case "$arg" in 468266e564dSmrg -D*|-I*) 469266e564dSmrg set fnord "$@" "$arg"; shift ;; 470266e564dSmrg # Strip any option that makedepend may not understand. Remove 471266e564dSmrg # the object too, otherwise makedepend will parse it as a source file. 472266e564dSmrg -*|$object) 473266e564dSmrg ;; 474266e564dSmrg *) 475266e564dSmrg set fnord "$@" "$arg"; shift ;; 476266e564dSmrg esac 477266e564dSmrg done 478266e564dSmrg obj_suffix="`echo $object | sed 's/^.*\././'`" 479266e564dSmrg touch "$tmpdepfile" 480266e564dSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 481266e564dSmrg rm -f "$depfile" 482266e564dSmrg cat < "$tmpdepfile" > "$depfile" 483266e564dSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 484266e564dSmrg' | \ 485266e564dSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 486266e564dSmrg## correctly. Breaking it into two sed invocations is a workaround. 487266e564dSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 488266e564dSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 489266e564dSmrg ;; 490266e564dSmrg 491266e564dSmrgcpp) 492266e564dSmrg # Important note: in order to support this mode, a compiler *must* 493266e564dSmrg # always write the preprocessed file to stdout. 494266e564dSmrg "$@" || exit $? 495266e564dSmrg 496266e564dSmrg # Remove the call to Libtool. 497266e564dSmrg if test "$libtool" = yes; then 498266e564dSmrg while test $1 != '--mode=compile'; do 499266e564dSmrg shift 500266e564dSmrg done 501266e564dSmrg shift 502266e564dSmrg fi 503266e564dSmrg 504266e564dSmrg # Remove `-o $object'. 505266e564dSmrg IFS=" " 506266e564dSmrg for arg 507266e564dSmrg do 508266e564dSmrg case $arg in 509266e564dSmrg -o) 510266e564dSmrg shift 511266e564dSmrg ;; 512266e564dSmrg $object) 513266e564dSmrg shift 514266e564dSmrg ;; 515266e564dSmrg *) 516266e564dSmrg set fnord "$@" "$arg" 517266e564dSmrg shift # fnord 518266e564dSmrg shift # $arg 519266e564dSmrg ;; 520266e564dSmrg esac 521266e564dSmrg done 522266e564dSmrg 523266e564dSmrg "$@" -E | 524266e564dSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 525266e564dSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 526266e564dSmrg sed '$ s: \\$::' > "$tmpdepfile" 527266e564dSmrg rm -f "$depfile" 528266e564dSmrg echo "$object : \\" > "$depfile" 529266e564dSmrg cat < "$tmpdepfile" >> "$depfile" 530266e564dSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 531266e564dSmrg rm -f "$tmpdepfile" 532266e564dSmrg ;; 533266e564dSmrg 534266e564dSmrgmsvisualcpp) 535266e564dSmrg # Important note: in order to support this mode, a compiler *must* 536266e564dSmrg # always write the preprocessed file to stdout, regardless of -o, 537266e564dSmrg # because we must use -o when running libtool. 538266e564dSmrg "$@" || exit $? 539266e564dSmrg IFS=" " 540266e564dSmrg for arg 541266e564dSmrg do 542266e564dSmrg case "$arg" in 543266e564dSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 544266e564dSmrg set fnord "$@" 545266e564dSmrg shift 546266e564dSmrg shift 547266e564dSmrg ;; 548266e564dSmrg *) 549266e564dSmrg set fnord "$@" "$arg" 550266e564dSmrg shift 551266e564dSmrg shift 552266e564dSmrg ;; 553266e564dSmrg esac 554266e564dSmrg done 555266e564dSmrg "$@" -E | 556266e564dSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 557266e564dSmrg rm -f "$depfile" 558266e564dSmrg echo "$object : \\" > "$depfile" 559266e564dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 560266e564dSmrg echo " " >> "$depfile" 561266e564dSmrg . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 562266e564dSmrg rm -f "$tmpdepfile" 563266e564dSmrg ;; 564266e564dSmrg 565266e564dSmrgnone) 566266e564dSmrg exec "$@" 567266e564dSmrg ;; 568266e564dSmrg 569266e564dSmrg*) 570266e564dSmrg echo "Unknown depmode $depmode" 1>&2 571266e564dSmrg exit 1 572266e564dSmrg ;; 573266e564dSmrgesac 574266e564dSmrg 575266e564dSmrgexit 0 576266e564dSmrg 577266e564dSmrg# Local Variables: 578266e564dSmrg# mode: shell-script 579266e564dSmrg# sh-indentation: 2 580266e564dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 581266e564dSmrg# time-stamp-start: "scriptversion=" 582266e564dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 583266e564dSmrg# time-stamp-end: "$" 584266e564dSmrg# End: 585